共计 2770 个字符,预计需要花费 7 分钟才能阅读完成。
目前的 zabbix 监控了 900 台左右服务器,大概有 11 万 items,zabbix 在工作时根据 agent 的工作特点分为主动模式和被动模式,实际上一般开启兼容模式。在 items 多了后,有一些速度慢的 items 如果不采用主动模式,会把 server 端拖死,而 zabbix_sender 其实是一种变相的主动模式,配合计划任务,主动将 k / v 上传到 zabbix,现将 nginx 日志 zabbix_sender 实现状态码的监控抛砖引玉做下介绍。
一、agent 端编写脚本和计划任务
需求是监控 nginx 日志的 200、400、401、403、404、499、502、503、504 状态码,按分钟进行数量统计上报。编写脚本入下:
#!/bin/bash
#writer:gaolixu
log_dir=/data1/ms/comos/logs/access.log #log 目录
log_tmp_dir=/tmp/last_min_log #过滤出最后 1 分钟的日志做临时存放
senderfile=/tmp/sender_file #用 zabbix_sender 发送的 k / v 文件
Hostname=`hostname` #获取主机名,与 server 端主机名会有验证
last_min=`date -d “1 minute ago” ‘+%Y:%H:%M’` #nginx 里的时间,1 分钟之前
tail -60000 ${log_dir} |grep “${last_min}” > ${log_tmp_dir} #qps 在 500 到 800 之间,增加性能,tail 结尾 60000 条取出最后一分钟日志。
cat /tmp/last_min_log |awk -F'”‘ ‘{print $3}’ |awk ‘{print $1}’ |sort |uniq -c > /tmp/stat #将状态码去重统计
>$senderfile #清零 zabbix_sender 的发送文件
c_200=`awk ‘$2==200{print $1}’ /tmp/stat`;[-z $c_200] && c_200=0 #取出数量,如果没有此状态码,数量初始化为 0
c_400=`awk ‘$2==400{print $1}’ /tmp/stat`;[-z $c_400] && c_400=0
c_401=`awk ‘$2==401{print $1}’ /tmp/stat`;[-z $c_401] && c_401=0
c_403=`awk ‘$2==403{print $1}’ /tmp/stat`;[-z $c_403] && c_403=0
c_404=`awk ‘$2==404{print $1}’ /tmp/stat`;[-z $c_404] && c_404=0
c_499=`awk ‘$2==499{print $1}’ /tmp/stat`;[-z $c_499] && c_499=0
c_502=`awk ‘$2==502{print $1}’ /tmp/stat`;[-z $c_502] && c_502=0
c_503=`awk ‘$2==503{print $1}’ /tmp/stat`;[-z $c_503] && c_503=0
c_504=`awk ‘$2==504{print $1}’ /tmp/stat`;[-z $c_504] && c_504=0
echo “$Hostname nginx_stat200 $c_200” >> $senderfile #将 k / v 写入 zabbix_sender 的发送文件,注意写法,主机名、key、value
echo “$Hostname nginx_stat400 $c_400” >> $senderfile
echo “$Hostname nginx_stat401 $c_401” >> $senderfile
echo “$Hostname nginx_stat403 $c_403” >> $senderfile
echo “$Hostname nginx_stat404 $c_404” >> $senderfile
echo “$Hostname nginx_stat499 $c_499” >> $senderfile
echo “$Hostname nginx_stat502 $c_502” >> $senderfile
echo “$Hostname nginx_stat503 $c_503” >> $senderfile
echo “$Hostname nginx_stat504 $c_504” >> $senderfile
/usr/local/zabbix/bin/zabbix_sender -c /usr/local/zabbix/etc/zabbix_agentd.conf -i $senderfile #最终的向 server 发送
添加到计划任务:
*/1 * * * * /usr/local/zabbix/script/nginxlog.sh 2>&1
二、配置 server 端和 grafana 进行绘图
配置项如下,将 type 设置为 Zabbix trapper
设置完毕后执行下脚本,结果如下:
最后将展示放在 grafana 里, 效果如下:
一些 Zabbix 相关教程集合:
Ubuntu 14.04 下 Zabbix2.4.5 源码编译安装 http://www.linuxidc.com/Linux/2015-05/117657.htm
CentOS 7 LNMP 环境搭建 Zabbix3.0 http://www.linuxidc.com/Linux/2017-02/140134.htm
Ubuntu 16.04 安装部署监控系统 Zabbix2.4 http://www.linuxidc.com/Linux/2017-03/141436.htm
Zabbix 监控安装部署及警报配置 http://www.linuxidc.com/Linux/2017-03/141611.htm
Ubuntu 16.04 下安装部署 Zabbix3.0 http://www.linuxidc.com/Linux/2017-02/140395.htm
CentOS 6.3 下 Zabbix 监控 apache server-status http://www.linuxidc.com/Linux/2013-05/84740.htm
CentOS 7 下 Zabbix 3.0 安装详解 http://www.linuxidc.com/Linux/2017-03/141716.htm
64 位 CentOS 6.2 下安装 Zabbix 2.0.6 http://www.linuxidc.com/Linux/2014-11/109541.htm
ZABBIX 的详细介绍:请点这里
ZABBIX 的下载地址:请点这里
本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-03/142232.htm