简述
zabbix是一种开源的,能够监视各种网络参数以保证服务器正常运行的监控工具。zabbix具有灵活的通知机制,可以帮助管理者快速确定问题出在哪,并且zabbix可以提供分布式系统监控,使得大量主机的集成监控也成为了可能。
zabbix相当于cacti和nagios的集合,它集两款工具的优势于一身,在开源软件中,zabbix可以称得上最好用的监控工具了。
zabbix的agent端被安装在需要监控的主机上,它定时收集各种数据并发送到server端,server端将数据存储在数据库中,httpd则将数据在前端展示为报表和图表供管理人员查看。
组件 | |
---|---|
zabbix server | 负责接收agent发送的数据,是zabbix的核心组件。zabbix配置,数据统计均在此进行 |
database storage | 存储zabbix配置信息和收集到的数据 |
web interface | zabbix的GUI接口,通常会与server运行在一台主机上 |
proxy | 用于部署分布式监控环境,作为server端的代理接收agent来的数据 |
agent | 部署在需要监控的主机上,收集本机的数据 |
部署zabbix server
下载所需软件
yum -y install MariaDB zabbix-server-mysql zabbix-web-mysql zabbix-agent
systemctl enable mariadb
systemctl restart mariadb
登录mariadb
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by '123';
修改mariadb配置文件/etc/my.cnf.d/server.cnf并重启mariadb
[mysqld]
innodb_strict_mode = 0
修改server组件的配置文件/etc/zabbix/zabbix_server.conf
添加用户zabbix的数据库登录密码
修改web组件的配置文件/etc/httpd/conf.d/zabbix.conf
把时区修改为上海
DBPassword=123
php_value date.timezone Asia/Shanghai
导入zabbix数据库需要的表和数据
zcat /usr/share/doc/zabbix-server-mysql-4.0.12/create.sql.gz | mysql -uzabbix -p123 zabbix
开启防火墙,重启服务
firewall-cmd --add-port=10050/tcp
firewall-cmd --add-port=10051/tcp
firewall-cmd --add-port=10050/tcp --permanent
firewall-cmd --add-port=10051/tcp --permanent
systemctl enable zabbix-server zabbix-agent httpd
systemctl restart zabbix-server zabbix-agent httpd
当使用zabbix的中文界面时经常会出现乱码,这时需要找一个中文字体文件放到zabbix的字体目录下替换原有的字体文件
cp simsun.ttc /usr/share/zabbix/fonts
mv graphfont.ttf graphfont.ttf.bak
mv simsun.ttc graphfont.ttf
部署zabbix agent
agent端只需安装agent组件
yum -y install zabbix-agent
修改agent组件的配置文件/etc/zabbix/zabbix_agentd.conf
Server=192.168.10.101
ServerActive=192.168.10.101
Hostname=192.168.10.102
关闭防火墙,重启服务
firewall-cmd --add-port=10050/tcp
firewall-cmd --add-port=10050/tcp --permanent
systemctl enable zabbix-agent
systemctl restart zabbix-agent
部署zabbix proxy
下载所需软件
yum -y install MariaDB zabbix-proxy
修改proxy的配置文件/etc/zabbix/zabbix_proxy.conf
Server=192.168.10.101
Hostname=proxy1
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=123
创建数据库和用户zabbix
create database zabbix_proxy character set utf8 collate utf8_bin;
grant all privileges on zabbix_proxy.* to zabbix@localhost identified by '123';
导入数据库需要的表和数据
zcat /usr/share/doc/zabbix-proxy-mysql-4.0.12/schema.sql.gz | mysql -uzabbix -p123 zabbix_proxy
开启防火墙,重启服务
firewall-cmd --add-port=10051/tcp
firewall-cmd --add-port=10051/tcp --permanent
systemctl enable zabbix-proxy
systemctl restart zabbix-proxy
自定义监控
创建一个自定义监控脚本的存放目录
mkdir /zabbix
修改属主属组为zabbix
chown -R zabbix.zabbix /zabbix
修改客户端配置文件
cat >> /etc/zabbix_agentd.conf <<EOF
UnsafeUserParameters=1
UserParameter=<key_name>, <shell command>
EOF
重启zabbix
systemctl restart zabbix-agent
这个UserParameter后面加的是类似键值对的数据,键可以随便写,值要写执行的命令或脚本
举几个例子
检测mysql状态
UserParameter=mysql.status, mysqladmin -uroot -p123456 ping | grep alive
检测网站连通性
UserParameter=curl.hsadmin,curl -i -s www.baidu.com| grep HTTP | grep 200 | wc -l
UserParameter=curl.hsapi,curl -i -s www.baidu.com| grep HTTP | grep 404 | wc -l
UserParameter=curl.jpush,curl -kis 'www.baidu.com' -X POST -d ''|grep HTTP |grep 401 | wc -l
检测nginx服务状态
cat >> /etc/zabbix_agentd.conf <<EOF
UnsafeUserParameters=1
UserParameter=ps_nginx,/bin/bash /zabbix/ps_nginx.sh
EOF
cat >> /zabbix/ps_nginx.sh <<EOF
#!/bin/bash
failed=`systemctl status nginx |grep failed`
error=`systemctl status nginx |grep error`
if [ -n $failed ] || [ -n $error ]
do
echo '你Apache炸了'|mail -s "报警" ********@163.com
done
EOF