很多同行都推荐了一个运维系统zabbix,我也开始将服务器监控逐渐迁移到zabbix上了,越使用越觉得zabbix好用,特别是discovery功能,真是好东东啊! 起因是部署服务的同事,发给我了一份监控需求,总共有13个redis、9个memcache、30+个tomcat、8个nginx需要监控,看着长长的单子,我觉得这就是个杯具啊!特别是某些机器上装了2~4个redis,用过cacti监控redis的都知道,除了第一个能多选,后面的只能一个个添加图形,这要是挨个点下来,手都得断了,当然会用cacti脚本的牛人是能搞定的,可惜我不是牛人啊! 果断转移到zabbix,用discovery创建监控。不废话了,以监控nginx为例,跟大家分享下。 第一步:建Template
图片其他部分都是默认,而且涉及公司信息,就不贴出来了
第二步:建discovery
第三步:建item prototypes
这是其中一个数值,其余的类似,没贴的部分都是默认 第四步:加trigger、加graph,和加item都类似,我就偷个懒,不贴图了 第五版:把要监控的nginx所在的服务器link刚才的Template,也不用我贴图了吧
页面上的操作就这些了,下面就该写脚本了。因为要给公司服务器信息保密,我就不贴脚本了。其实脚本都很简单,大家分分钟就能写出来。 第一个脚本:既然是要通过traps添加,肯定得有个发送traps的脚本喽,这个脚本很简单:先产生这样的输出: {
"data":[
{"{#NGX_PORT}":"12001"}, {"{#NGX_PORT}":"12002"} ]
}' 再用zabbix_sender发送到zabbix server /usr/local/zabbix/bin/zabbix_sender -c /usr/local/zabbix/etc/zabbix_agentd.conf -k nginx.port.discovery -v -s $nginxhost -o $portstr 第二个脚本:获得nginx status数据,并用zabbix_sender发送 curl $nginxsta_url获得数据,并生成这样一个txt: hostname nginx.write[12001] values
..... 再用zabbix_sender 发送这个txt即可。这样发送数据的效率比较高,当监控项多的时候就很明显了。
贴上两个模版,希望对大家有用
|