zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。
zabbix由zabbix server与可选组件zabbix agent两部门组成。
zabbix server可以通过SNMP,zabbix agent,ping,端口监视等方法提供对远程服务器/网络状态的监视。
zabbix agent需要安装在被监视的目标服务器上,它主要完成对硬件信息或与操作系统有关的内存,CPU等信息的收集。
- 安装与配置简单,学习成本低
- 支持多语言(包括中文)
- 免费开源
- 自动发现服务器与网络设备
- 分布式监视以及WEB集中管理功能
- 可以无agent监视
- 用户安全认证和柔软的授权方式
- 通过WEB界面设置或查看监视结果
- email等通知功能
- CPU负荷
- 内存使用
- 磁盘使用
- 网络状况
- 端口监视
- 日志监视
zabbix agent:部署在被监控主机上,负责被监控主机的数据,并将数据发送给zabbix server。
zabbix server:负责接收agent发送的报告信息,并且负责组织配置信息、统计信息、操作数据等。
zabbix database:用于存储所有zabbix的配置信息、监控数据的数据库。
zabbix web:zabbix的web界面,管理员通过web界面管理zabbix配置以及查看zabbix相关监控信息,可以单独部署在独立的服务器上。
zabbix proxy:可选组件,用于分布式监控环境中,zabbix proxy代表server端,完成局部区域内的信息收集,最终统一发往server端。
连接centos 系统后,首先关闭防火墙和SELINUX,如不关闭会各种拦截,网页访问等故障,容易造成蛋疼哦.
# systemctl stop firewalld.service #关闭防火墙服务
# systemctl disable firewalld.service #开机不启动
# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config #替换文本参数
# grep SELINUX=disabled /etc/selinux/config #查文本状态
# setenforce 0 #关闭当前SELINUX
备注:必须关闭selinux监控,否则zabbix服务端没有权限访问zabbix客户端文件。
安装mysql数据库
# yum -y install mariadb mariadb-devel mariadb-server # centos7下安装的是mariadb
# systemctl enable mariadb # 设置开机自启动
# systemctl start mariadb # 启动
# systemctl status mariadb # 查看状态
设置mysql的root密码
# mysqladmin -u root -h localhost password 'xxxxxxxx'
创建数据库 zabbix 并授权
# mysql -uroot -pxxxxxx
create database zabbix character set utf8 collate utf8_bin;
grant all privileges on zabbix.* to zabbix@localhost identified by ‘xxxxxxxx’;
quit
安装zabbix-server,因为mysql初始化数据的脚本通过安装zabbix-server下载的
备份本地yum 源
# cp -r /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup #
下载3.4.1 rpm
# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-1.el7.centos.noarch.rpm
Zabbix-server
在3.X版本中,没有单独的zabbix-server安装包,安装了zabbix-server-mysql即为安装了server端包。
同时,我们可以在服务端安装zabbix_get包,以便向agent端发起测试。
# yum install zabbix-server-mysql zabbix-get
导入zabbix初始化数据
# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -pxxxxxxxx Zabbix
配置zabbix_server的配置文件
# vim /etc/zabbix/zabbix_server.conf
37:LogFile=/var/log/zabbix/zabbix_server.log
48:LogFileSize=0
71:PidFile=/var/run/zabbix/zabbix_server.pid
81:SocketDir=/var/run/zabbix
90:DBHost=localhost
99:DBName=zabbix
115:DBUser=zabbix
123:DBPassword=123456
130:DBSocket=/var/lib/mysql/mysql.sock
138:DBPort=3306
328:SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
445:Timeout=4
487:AlertScriptsPath=/usr/lib/zabbix/alertscripts
497:ExternalScripts=/usr/lib/zabbix/externalscripts
533:LogSlowQueries=3000
启动zabbix-server
# systemctl start zabbix-server
查看状态
# systemctl status zabbix-server
安装
# yum install zabbix-web-mysql
编辑Zabbix前端的PHP配置
Zabbix前端的Apache配置文件位于 /etc/httpd/conf.d/zabbix.conf 。一些PHP设置已经完成了配置,重点是调整时区的配置,修改为亚洲上海。
# vim /etc/httpd/conf.d/zabbix.conf
php_value date.timezone Asia/Shanghai
修改zabbix server访问端口:
编辑httpd.conf文件 :
#vim /etc/httpd/conf/httpd.conf
修改默认的侦听端口和ServerName
136 Listen 8383
重启apache服务,使配置生效:
# service httpd restart
添加防火墙规则,允许端口访问 (前边防火墙关了,这里可以不用管)
# vim /etc/sysconfig/iptables
zabbix web -A INPUT -m state --state NEW -m tcp -p tcp --dport 8008 -j ACCEPT
重启防火墙:service iptables restart
浏览器访问http://IP:8383/zabbix 测试是否修改成功
访问Zabbix Web页面,http://IP:8383/zabbix,默认的用户名/密码为 Admin/zabbix
确保PHP所有项目都OK,然后点击“Next step”
此处为连接mysql的配置,请按照前面安装时的配置填写,然后点击“Next step”
Name处可以填写网站的名称,然后点击“Next step”
根据提示可以看到下面图形界面的操作都写到一个配置文件中,/etc/zabbix/web/zabbix.conf.php,确认无误后,点击“Finish”
登陆zabbix前端,默认账号为 Admin,默认密码为zabbix
配置zabbix中文界面
#修改PHP配置文件
确认zabbix是否开启了中文件支持功能,
# vim /usr/share/zabbix/include/locales.inc.php
浏览器登陆zabbix前端,设置语言为Chinese(zh_CN),然后点击“Update”,刷新页面就可以看到中文了。
安装zabbix-agent
# rpm -ivh http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-agent-3.4.4-2.el7.x86_64.rpm
# yum install -y zabbix-agent zabbix-get
配置zabbix-agent
# vim /etc/zabbix/zabbix_agentd.conf # 修改agent配置文件
Server=172.18.0.113 # zabbix服务端内网IP
ServerActive=172.18.0.113 # zabbix服务端内网IP,Active表示agent主动推送
Hostname=172.18.0.106 # zabbix客户端主机名称,需要和web端添加的名称一致,一般写自己ip
Include=/etc/zabbix/zabbix_agentd.d/*.conf
启动zabbix-agent
# systemctl start zabbix-agent
Web端添加Linux主机
配置-主机-创建主机,按下图配置好后点击“更新”
配置-主机-监控项-创建监控项
名称随意,其他看图片,配置完点“更新“,键值:vfs.fs.size[/,pused]
定时触发器:
表达式
{192.168.0.111:net.tcp.port[,8000].last()}=0 and {192.168.0.111:net.tcp.port[,8000].time()}>=033000 and {192.168.0.111:net.tcp.port[,8000].time()}<=213000
监控8000端口使用情况,每天03:30~21:30期间触发器生效
以redis(port:6379)为例,键值:net.tcp.port[,6379]
键值:{172.18.0.106:net.tcp.port[,6379].last()}=0
键值:system.cpu.util[,idle]
超过85%报警,表达式:{172.18.0.113:system.cpu.util[,idle].avg(1m)}<15
思想
通过自定义键值,引入脚本,根据脚本实现服务的日志监控
vim /etc/zabbix/zabbix_agentd.conf
Include=/etc/zabbix/zabbix_agentd.d/*.conf
cd /etc/zabbix/zabbix_agentd.d/
userparameter_jvm.conf userparameter_log.conf userparameter_mysql.conf
配置文件内容
UserParameter=test_log,/etc/zabbix/script/logs/log_usercenter-service.sh
UserParameter=usercenter_count,/etc/zabbix/script/logs/count_eq-usercenter-service.sh
/etc/zabbix/script/logs/log_usercenter-service.sh
#!/bin/bash
source /etc/zabbix/log.conf
logdate=$(date "+%Y-%m-%d")
msg=`tail -n "$row" /service1/usercenter-service1/logs/usercenter-service."$logdate"-*.log |grep -E "${logtype_02}"|grep -E "${logtype_01}"`
#msg=`grep -E "${logtype_01}" /usr/service/usercenter-service/logs/usercenter-service."$logdate"-0.log `
count=`echo "$msg" | wc -l`
if [ ! -n "$msg" ];then
echo "OK"
exit 0
fi
if [ $count -gt 0 ];then
echo "$msg"
exit 1
else
echo "OK"
exit 0
fi
监控日志中出现的error数量
/etc/zabbix/script/logs/count_eq-usercenter-service.sh
#!/bin/bash
source /etc/zabbix/log.conf
logdate=$(date "+%Y-%m-%d")
msg=`tail -n "$row" /zyqservice1/eq-usercenter-service1/logs/eq-usercenter-service."$logdate"-*.log |grep -E "${logtype_02}"|grep -E "${logtype_01}"`
#msg=`grep -E "${logtype_01}" /usr/zeqservice/eq-usercenter-service/logs/eq-usercenter-service."$logdate"-0.log `
count=`echo "$msg" | wc -l`
if [ ! -n "$msg" ];then
echo "0"
exit 0
fi
if [ $count -gt 0 ];then
echo "$count"
exit 1
else
echo "OK"
exit 0
fi
注意:(给脚本设置权限)chmod 777 *.sh
wc -l : 统计行
wc -c: 统计字节数
wc -m:统计字符数,不能与-c同时使用
wc -w:统计字数
wc -L:打印最长长度
vim /etc/zabbix/log.conf
logtype_01=ERROR
logtype_02=Exception
row=10000
脚本存放位置
/etc/zabbix/script/logs/
报错超过50个示警
表达式:{172.18.0.106:usercenter_count.last()}>50
查看监控结果
监控中 - 仪表盘
监控项达到触发器设置的提示点,会在仪表盘中显示错误信息,需要确认后信息才会消失。
监控中 - 最新数据
看数据
yum install mailx # 安装
cp /etc/mail.rc /etc/mailrc.bak # 备份原来配置文件
vi /etc/mail.rc # 修改配置文件内容,添加发送邮件的邮箱信息
set [email protected]
set smtp=smtp.qq.com:25
set [email protected]
set smtp-auth-password= # 邮箱密码使用SMTP授权码
set smtp-auth=login
systemctl restart postfix.service #重启服务
echo hello word | mail -s " title" …@qq.com # 接收的邮箱,测试一下
/etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
/usr/lib/zabbix/alertscripts/sendmail.sh
内容:
#!/bin/bash
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/sendmail.log 2>&1
管理 – 报警媒介类型 – 创建媒体类型
脚本名称与引入的文件名称一直
新增三个脚本参数:
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
配置 – 动作 – 创建动作
动作页面:触发条件选择触发器,选择中选择你要选择的触发器,最后添加,更新
标题:
警报:{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
消息内容:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
触发器触发时,仪表板上如下显示,动作下不为空,点击后可看mail发送状态
官方文档:https://www.zabbix.com/documentation/
zabbix报错排错大全
https://www.cnblogs.com/dbslinux/p/9465803.html
日志文件: vi /var/log/zabbix/zabbix-agentd.log
1.系统提示zabbix共享内存报错
zabbix_agentd [5922]: cannot open log: cannot create semaphore set: [28] No space left on device
解决:
修改 vim /etc/sysctl.conf
kernel.sem =500 64000 64 256
sysctl -p /etc/sysctl.conf
后便能够正常启动了。(报错原因:kernel.sem参数设置过小 ,原先系统默认设置的为 250 32000 32 128)
2.数据库问题
浏览器打开zabbix页面报Error connecting to database: Access denied for user ‘zabbix’ @ ‘localhost’ to databas
/etc/zabbix/web/zabbix.conf.php
手写不易,有用请点赞!
有问题请留言!