zabbix 监控

  • zabbix简介

1.1 zabbix 介绍

    Zabbix项目由Alexei Vladishev创建,是一个高度集成的网络监控解决方案,可以提供企业级的开源分布式监控解决方案,软件可以自由下载使用,运作团队靠提供收费的技术支持赢利。

 

Zabbix具有如下特点:

  1. Zabbix是一个企业级的、开源的、分布式的监控套件;
  2. Zabbix可以监控网络和服务的监控状况. Zabbix利用灵活的告警机制,允许用户对事件发送基于Email的告警. 这样可以保证快速的对问题作出相应. Zabbix可以利用存储数据提供杰出的报告及图形化方式. 这一特性将帮助用户完成容量规划;
  3. Zabbix支持pollingtrapping两种方式. 所有的Zabbix报告都可以通过配置参数在WEB前端进行访问.Web前端将帮助你在任何区域都能够迅速获得你的网络及服务状况. Zabbix可以通过尽可能的配置来扮演监控你的IT基础框架的角色,而不管你是来自于小型组织还是大规模的公司;

官方网站:http://www.zabbix.com

 

1.2 zabbix 功能

具备常见的商业监控软件所具备的功能(主机的性能监控、网络设备性能监控、数据库性能监控、FTP 等通用协议监控、 多种告警方式、详细的报表图表绘制)等;

    支持自动发现网络设备和服务器(可以通过配置自动发现服务器规则来实现)

    支持自动发现(low discoverykey 实现动态监控项的批量监控(需写脚本)

    支持分布式,能集中展示、管理分布式的监控点

    扩展性强,server 提供通用接口(api 功能),可以自己开发完善各类监控(根据相关接口编写程序实现)

    编写插件容易,可以自定义监控项,报警级别的设置。

    收据收集(可用和性能检测、支持snmp(包括trapping and polling)IPMIJMXSSHTELNET自定义的检测、自定义收集数据的频率、服务器/代理和客户端模式等)

实时的绘图功能(监控项实时的将数据绘制在图形上面)

WEB 监控能力

ZABBIX 可以模拟鼠标点击了一个网站,并检查返回值和响应时间

Api 功能

应用api 功能,可以方便的和其他系统结合,包括手机客户端的使用。

1.3 zabbix 组件

zabbix进程组成结构,默认情况zabbix包含如下5个程序:

 

  1. zabbix_agentd

客户端守护进程,此进程收集客户端数据,例如cpu负载、内存、硬盘使用情况等;

 

  1. Zabbix_get

单独使用的命令,通常在server或者proxy端执行获取远程客户端信息的命令。通常用户排错。例如在server端获取不到客户端的内存数据,我们可以使用zabbix_get获取客户端的内容的方式来做故障排查;

 

  1. zabbix_sender

用于发送数据给server或者proxy,通常用于耗时比较长的检查。很多检查非常耗时间,导致zabbix超时。于是我们在脚本执行完毕之后,使用sender主动提交数据;

  1. zabbix_server

服务端护程zabbix_agentdzabbix_getzabbix_senderzabbix_proxyzabbix_java_gateway的数据最终提交到server;

备注:当然不是数据都是主动提交给zabbix_server,也有的是server主动去取数据。

  1. zabbix_proxy

zabbix代理守护进程。功能类似于server,唯一不同的是它只一个中转站,它需要把收集到的数据提交到server里;

  1. zabbix_java_gateway

zabbix2.0之后引入的一个功能。顾名思义:Java网关,类似agentd,但是只用于Java方面。需要特别注意的是,它只能主动去获取数据,而不能被动获取数据。它的数据最终会给到server或者proxy。(需要额外安装)

  • 安装zabbix

2.1 安装前准备

2.1.1 解决相关环境

###修改主机名

hostname zabbix_server

sed -i 's#HOSTNAME=centos_01#HOSTNAME=zabbix_server#g' /etc/sysconfig/network

###创建用户和组

groupadd zabbix

useradd -g zabbix zabbix

###下载软件

wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/2.4.6/zabbix-2.4.6.tar.gz

###同步时间

ntpdate us.pool.ntp.org                                                         

echo '*/10 * * * *  /usr/sbin/ntpdate us.pool.ntp.org >/dev/null 2>&1' >> /var/spool/cron/root

crontab -l

###解决依赖以及安装LAMP环境

yum -y install gcc gcc-c++ autoconf httpd php mysql mysql-server php-mysql httpd-manual mod_ssl mod_perl mod_auth_mysql php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc php-bcmath mysql-connector-odbc mysql-devel libdbi-dbd-mysql net-snmp-devel curl-devel unixODBC-devel OpenIPMI-devel java-devel libssh2-devel openldap openldap-devel

2.1.2 配置LAMP环境(不修改无法正常运行zabbix,所以还是动手吧)

sed -i "s/;date.timezone =/date.timezone = Asia\/Shanghai/g" /etc/php.ini

sed -i "s#max_execution_time = 30#max_execution_time = 300#g" /etc/php.ini

sed -i "s#post_max_size = 8M#post_max_size = 32M#g" /etc/php.ini

sed -i "s#max_input_time = 60#max_input_time = 300#g" /etc/php.ini

sed -i "s#memory_limit = 128M#memory_limit = 128M#g" /etc/php.ini

sed -i "/;mbstring.func_overload = 0/ambstring.func_overload = 0\n" /etc/php.ini (默认就好)

检查是否更改:

egrep 'date.timezone|max_execution_time|post_max_size|max_input_time|memory_limit|mbstring.func_overload' /etc/php.ini |grep -v ";"

2.1.3 启动LAMP服务

/etc/init.d/httpd start

/etc/init.d/mysqld start

chkconfig httpd on

chkconfig mysqld on

chkconfig --list httpd

chkconfig --list mysqld

2.2 安装配置zabbix

2.2.1 编译安装zabbix

tar zxf zabbix-2.4.6.tar.gz

cd zabbix-2.4.6

./configure --prefix=/usr/local/zabbix-2.4.6 --sysconfdir=/etc/zabbix --enable-server --enable-proxy --enable-agent --enable-ipv6 --with-mysql=/usr/bin/mysql_config --with-net-snmp --with-libcurl --with-openipmi --with-unixodbc --with-ldap --with-ssh2 --enable-java

make && make install

2.2.2 导入数据库(MySQL数据库)

cd zabbix-2.4.6

mysqladmin -uroot password 'redhat@123'

mysql -uroot -predhat@123

mysql> create database zabbix character set utf8;

mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'zabbix@123';

mysql> flush privileges;

###测试登录

mysql -uzabbix -pzabbix@123

###导入数据库

[root@centos_01 zabbix-2.4.6]# pwd

/root/zabbix-2.4.6

mysql -uzabbix -pzabbix@123 zabbix < ./database/mysql/schema.sql

mysql -uzabbix -pzabbix@123 zabbix < ./database/mysql/images.sql

mysql -uzabbix -pzabbix@123 zabbix < ./database/mysql/data.sql

###创建zabbix相关目录

mkdir /var/log/zabbix

chown zabbix.zabbix /var/log/zabbix

2.2.3 拷贝启动脚本

cp misc/init.d/fedora/core/zabbix_* /etc/init.d/

chmod 755 /etc/init.d/zabbix_*

[root@centos_01 zabbix-2.4.6]# grep 'BASEDIR=' /etc/init.d/zabbix_server

        BASEDIR=/usr/local

注:确保该目录是您的安装目录;

2.2.4 配置zabbix_server.conf服务端配置文件

sed -i "s/DBUser\=root/DBUser\=zabbix/g" /etc/zabbix/zabbix_server.conf

sed -i "/# DBPassword=/aDBPassword=zabbix@123\n" /etc/zabbix/zabbix_server.conf

sed -i "s#tmp/zabbix_server.log#var/log/zabbix/zabbix_server.log#g" /etc/zabbix/zabbix_server.conf

###确认参数是否正常修改;

egrep -v "(#|^$)" /etc/zabbix/zabbix_server.conf

2.2.5 配置zabbix_agentd.conf 文件

sed -i "s/Server\=127.0.0.1/Server\=127.0.0.1,10.190.147.123/g" /etc/zabbix/zabbix_agentd.conf

sed -i "s/ServerActive\=127.0.0.1/ServerActive\=10.190.147.123:10051/g" /etc/zabbix/zabbix_agentd.conf

sed -i "s#tmp/zabbix_agentd.log#var/log/zabbix/zabbix_agentd.log#g" /etc/zabbix/zabbix_agentd.conf

sed -i "#UnsafeUserParameters=0#aUnsafeUserParameters=1\n" /etc/zabbix/zabbix_agentd.conf

sed -i 's#Hostname=Zabbix server#Hostname=zabbix_server#g' /etc/zabbix/zabbix_agentd.conf

###确认参数是否正常修改;

[root@zabbix_server ~]# egrep -v "(#|^$)" /etc/zabbix/zabbix_agentd.conf

LogFile=/var/log/zabbix/zabbix_agentd.log

Server=127.0.0.1,10.190.147.123

ServerActive=10.190.147.123:10051

Hostname=zabbix_server

2.2.6  拷贝网页到apache目录并启动服务

###拷贝网页到apache目录

cp -r ./frontends/php/ /var/www/html/zabbix

chown -R apache.apache /var/www/html/zabbix

###启动相关服务

chkconfig zabbix_server on

chkconfig zabbix_agentd on

ln -s /usr/local/zabbix-2.4.6/sbin/* /usr/local/sbin/

service zabbix_server start

service zabbix_agentd start

2.2.6 网页访问zabbix页面

提示:确保防火墙、selinux正常!(测试环境最好关闭)

http://203.195.132.107/zabbix/setup.php

根据提示,安装完成即可;(默认用户名admin,密码zabbix

  • 客户端agent安装

3.1 Linux安装、配置agent客户端

3.1.1 安装agent客户端

###创建用户和组

groupadd zabbix -g 201

useradd -g zabbix -u 201 -m  -s /sbin/nologin zabbix

###安装agent

tar zxf zabbix-2.4.6.tar.gz

cd zabbix-2.4.6

./configure --prefix=/usr/local/zabbix-2.4.6 --sysconfdir=/etc/zabbix --enable-agent

make && make install

###创建日志目录

mkdir /var/log/zabbix

chown zabbix.zabbix /var/log/zabbix

###拷贝服务脚本

cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/

chmod 755 /etc/init.d/zabbix_agentd

3.1.2 配置zabbix_agentd.conf文件

[root@localhost ~]# egrep -v "^#|^$" /etc/zabbix/zabbix_agentd.conf

LogFile=/var/log/zabbix/zabbix_agentd.log

EnableRemoteCommands=1

Server=10.124.140.253,223.202.119.185                               ####zabbix_server_IP

ServerActive=10.124.140.253:10050,223.202.119.185:10050              ####zabbix_server_IP

Hostname=Zabbix server

Timeout=20

UnsafeUserParameters=1

3.1.3 启动agent服务

ln -s /usr/local/zabbix-2.4.6/sbin/* /usr/local/sbin/

service zabbix_agentd start

3.2 SNMP监控方式

3.2.1 安装、配置SNMP服务

###安装

yum -y install net-snmp

###配置SNMP服务

mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak01

cat > /etc/snmp/snmpd.conf << EOF

com2sec mynetwork 10.190.147.123 public_monitor            

com2sec mynetwork 127.0.0.1 public

group MyROGroup v2c mynetwork

access MyROGroup "" any noauth prefix all none none

view all included .1 80

> EOF

3.2.2 启动SNMP服务

chkconfig snmpd on

/etc/init.d/snmpd start

  • 配置zabbix简单监控主机

Host Groups(设备组)->Hosts(设备)->Applications(监控项组)->Items(监控项)->Triggers(触发器)->Actions(告警动作)->Medias(告警方式)->User Group(用户组)->Users(用户)对于实际使用的时候,一般都是采用模板进行监控配置。

注:使用过cacti的都知道,可以先添加主机,然后选择对应模板即可,zabbix 中同样存在此功能。

4.1 zabbix 服务监控

4.1.1 创建主机

Host 是Zabbix 监控的基本载体,所有的监控项都是基于host 的。通过Configuration->Hosts->Create Host 来创建监控设备:

4.1.2 将相关模板链接到新建主机

4.1.3 查看监控数据

4.1.4 查看图表数据

4.2 如何自定义监控?

在自定义监控之前,需要了解几个概念

Items:创建监控项,这里会运用到自定义的key 值

Triggers:创建触发器,这里是监控项达到报警的阈值

Graphs:添加图形

自定义监控,可以在单台机器上面添加,也可以先定义成模板再把模板应用到主机上

面。

首先是创建key 值,

比如我想监控/etc/passwd 文件的行数,则,首先定义key。

4.2.1 Key的创建

客户端配置文件如下:

[root@centos_02 ~]# grep -v "#" /etc/zabbix/zabbix_agentd.conf|grep -v "^$"

LogFile=/var/log/zabbix/zabbix_agentd.log

EnableRemoteCommands=0

Server=127.0.0.1,10.190.147.123

StartAgents=8

ServerActive=10.190.147.123:10051

Hostname=Zabbix server

Include=/etc/zabbix/zabbix_agentd.conf.d/

UnsafeUserParameters=1

 

echo "UserParameter=count.line.passwd,wc -l /etc/passwd|awk '{print $1}'" > /etc/zabbix/zabbix_agentd.conf.d/count_line_passwd.conf

cat /etc/zabbix/zabbix_agentd.conf.d/count_line_passwd.conf

###重启zabbix_agentd服务

service zabbix_agentd restart

Key 值创建后是否成功,可以用命令行来检测

/usr/local/zabbix-2.4.6/bin/zabbix_get -s 127.0.0.1 -k count.line.passwd

4.2.2 WEB页面创建模板

注:创建模板过程太过复杂,这里暂时不讲解;

4.2.3 导入模板并添加到主机中

注:导入模板太简单,不写操作步骤;

4.3 监控应用服务

4.3.1 监控MySQL服务

导入模板

修改配置

vim /etc/zabbix/zabbix_agentd.conf

...

# Include=/usr/local/etc/zabbix_agentd.userparams.conf

# Include=/usr/local/etc/zabbix_agentd.conf.d/

# Include=/usr/local/etc/zabbix_agentd.conf.d/*.conf

Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf

...

创建Key

cp /root/zabbix-2.4.6/conf/zabbix_agentd/userparameter_mysql.conf /etc/zabbix/zabbix_agentd.conf.d/

ls /etc/zabbix/zabbix_agentd.conf.d/

cat /etc/zabbix/zabbix_agentd.conf.d/userparameter_mysql.conf

重启服务

/etc/init.d/zabbix_agentd restart

验证效果

 

4.3.2 监控Nginx服务

导入模板(略)

创建监控脚本

[root@localhost ~]# cat /etc/zabbix/scripts/nginx_status.sh

#!/bin/bash

# DateTime: 2015-10-25

# Description:zabbix监控nginx性能以及进程状态

 

HOST="10.125.56.251"

PORT="8080"

 

# 检测nginx进程是否存在

function ping {

    /sbin/pidof nginx | wc -l

}

# 检测nginx性能

function active {

    /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'

}

function reading {

    /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'

}

function writing {

    /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'

}

function waiting {

    /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'

}

function accepts {

    /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'

}

function handled {

    /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'

}

function requests {

    /usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'

}

# 执行function

$1

Zabbix 客户端配置

[root@localhost ~]# egrep -v "^#|^$" /etc/zabbix/zabbix_agentd.conf

LogFile=/var/log/zabbix/zabbix_agentd.log

EnableRemoteCommands=1

Server=10.124.140.253,223.202.119.185

StartAgents=8

ServerActive=10.124.140.253

Hostname=zxtweb03

Timeout=30

Include=/etc/zabbix/zabbix_agentd.conf.d/*.conf

UserParameter=nginx.status[*],/etc/zabbix/scripts/nginx_status.sh $1

Zabbix Server 测试

/usr/local/zabbix/bin/zabbix_get -s 10.125.56.251 -k 'nginx.status[accepts]'

 

效果展示

提示:分别表示活动连接数、读连接数、写连接数、等待连接数;

提示:分别表示接受连接数、处理连接数、请求数;

 

4.3.3 监控 HAproxy 服务

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值