zabbix上自带的监控想模板及项目很少,所以很多时候我们需要自己制定一些项目及操作。
这里我只说明了如何来获取zabbix需要监控的一些数据方式。web界面的添加及自定义项目的位子这些网上很多文档,所以没有写出来。
工作流程
1、常见监控:
主机的性能监控、网络设备性能监控、数据库性能监控、FTP等通用协议监控、多种告警方式、详细的报表图表绘制;(监控细节需注意的事项下面会详细描述)
2、Zabbix监控数据流程
Zabbix是C/S架构的监控产品,他有2种工作模式(主动和被动)
如上图,主动模式适用在特殊场景。如云主机等,因为server端由于某种原因不能探测到agent端的端口问题(kfgzt现在就是主动模式)。这种情况需要事先写清楚。
3、采集数据的频率问题
采集数据的方式等下具体描述,频率问题应该充分考虑到需求。通常一些数据的频率为60秒,提交需求的时候应当把频率给交代清楚。另外被动模式可以设定时间段来采集数据(如12点到20点频率为200秒,20点到12点的频率为100秒)。
报警流程
1、报警流程
首先报警的先决条件是触发器,他存在于项目(采集数据)中。然后当触发器被触发后会有2个分支,他会产生一个事件,存放在web中可以用来查看。然后另外一个分支就是产生动作,动作中定义了报警的方式等等。
2、分级报警
Zabbix是享受分级报警的。用步骤来划分(10个步骤)。
大概可以理解为报警先报1然后2然后3,中间可以有步骤的时间间隔。这样可以做到如果报到1级别的时候没人操作就往上级报。
3、报警方式
a) 短信(提短信需求的时候,尽量选择关键字来报警,字数限制问题显示不全)
b) 邮件
采集数据的问题
如果官方给的模板上没相应的采集数据的项目及触发器,那么就需要手动添加了
1、zabbix采集数据的反应形式
a) 数字形式,
b) 0 1 2 .. 脚本传递出来的参数,触发器可以判断
c) 字符串触发器可以判断
2、采集数据的方式
a) 命令行形式,可以直接拉取到的。如 cat /proc/meminfo | grep "MemTotal" |awk '{print $2}'
b) 运行脚本形式,通过脚本传递出 0 1 2 3 4等参数:如判断某个文件是否发生了改变,脚本中判断,因为zabbix不具备这样的判断功能。所以让这个脚本传递出来参数,如未改变就返回0改变就返回1,然后zabbix是可以抓取到0 或1 的,然后触发器设定抓取到0或1就发生某种操作。
c) 通过crontab任务把一些总体数据打到1个文件中。然后cat grep参数出来。(这样可以节省将一些问题中的数据集中采集,分别拉取)
3、触发器的判断类型(其实很多函数,只做稍微列举)
a) 次数或时间段内的数据大于等于小于多少
b) 对字符串判断(判断一样或不一样。)
例子
1、采集方式:命令行直接采集数据的形式
需求:需获取到mysql中processlist除去Sleep之外的连接数,对此做统计。
分析:统计这样的数据,只需要一条shell命令即可搞定,所以无需脚本。
结果:/usr/local/mysql_percona5.5.25/bin/mysql -uccmsckdata -pdatayun_123! -sNe "show full processlist" | egrep -v "Sleep|Id|show full processlist" | wc -l
这样 就可以采集到mysql的连接数了。
然后提交issue的时候,需要把主动还是被动模式、采集数据的时间间隔、报警联系人、方式、短信报警内容提交给运维组即可。
2、采集方式:脚本形式,通过传递 0 1 2 3 4等参数
需求:判断1个文件是否在当天是否生成及是否为空,做出相应的报警
分析:这类不能通过1个命令直接获取出结果。并且用脚本需要在逻辑中进行判断等操作。
结果:由于zabbix是可以运行脚本的,但是脚本运行完出来字符串的形式并不能在web界面中直接的观察结果,所以可以参考如下脚本:
#!/bin/bash
#
source /etc/profile
FILE="/data/opsscripts/resin_log/data/customer.data"
FTIME=`stat /data/opsscripts/resin_log/data/customer.data | grep "^Modify" |awk '{print $2}'`
DATE=`date +%F`
if [ -s $FILE ]
then
if [ $FTIME = $DATE ]
then
echo 0
else
echo 1
fi
else
echo 2
fi
# 0 检查ok
# 1 文件存在但日期不一样
# 2 文件不存在
切记提交脚本的时候请把相应的逻辑写在脚本后边,以便进行触发器的添加。
3、采集方式:通过crontab任务把一些总体数据打到1个文件中。然后cat grep参数出来。
需求:需要对系统中内存的各项指标进行测取并监控
分析:cat /proc/meminfo 可以取得内存的完整指标,但是用命令行去拉取未免有些麻烦(仅此作为参考的例子,难免有些不规范)
结果:做了一个crontab任务,每一分钟就cat /proc/meminfo然后覆盖到1个文件中。然后在用命令行的形式去cat/grep这个文件。然后获取相应的值。
好了。大致上就这些吧,大致想了一些,如果有不全的地方请大家指出来。我直接加上来。