热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

zabbix_sender主动上传k/v监控nginx日志状态码

目前的zabbix监控了900台左右服务器,大概有11万items,zabbix在工作时根据agent的工作特点分为主动模式和被动模式,实际上一般开启兼容模式。在items多了后,有一

  目前的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

wKioL1jAxfegr4qDAABcKC_dSv8549.png


设置完毕后执行下脚本,结果如下:

wKiom1jAxnLxyBjNAAAWkDgvAvc074.png

最后将展示放在grafana里,效果如下:

wKioL1jAy16Tu8TvAAB7sNyly-w932.png

自建个人原创站运维网咖社(www.net-add.com),新的博文会在网咖社更新,欢迎浏览

本文出自 “奔跑的linux” 博客,请务必保留此出处http://benpaozhe.blog.51cto.com/10239098/1904654


推荐阅读
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文详细介绍了在Linux虚拟化部署中进行VLAN配置的方法。首先要确认Linux系统内核是否已经支持VLAN功能,然后配置物理网卡、子网卡和虚拟VLAN网卡的关系。接着介绍了在Linux配置VLAN Trunk的步骤,包括将物理网卡添加到VLAN、检查添加的VLAN虚拟网卡信息以及重启网络服务等。最后,通过验证连通性来确认配置是否成功。 ... [详细]
  • 第四讲ApacheLAMP服务器基本配置Apache的编译安装从Apache的官方网站下载源码包:http:httpd.apache.orgdownload.cgi今 ... [详细]
  • ZABBIX 3.0 配置监控NGINX性能【OK】
    1.在agent端查看配置:nginx-V查看编辑时是否加入状态监控模块:--with-http_stub_status_module--with-http_gzip_stat ... [详细]
  • zabbix中文乱码的问题
    在使用zabbix时,有时候会出现中文乱码的问题,如下:因为zabbix自身对中文简体的支持不完善,需要我们手动的去上传新的字体进行替换:1、在windows获取字体库文件在Windows上的 ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • 三、寻找恶意IP并用iptables禁止掉找出恶意连接你的服务器80端口的IP,直接用iptables来drop掉它;这里建议写脚本来运行, ... [详细]
  • LVS-DR直接路由实现负载均衡示例
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • Redis API
    安装启动最简启动命令行输入验证动态参数启动配置文件启动常用配置通用命令keysbdsize计算key的总数exists判断是否存在delkeyvalue删除指定的keyvalue成 ... [详细]
  • 动手写一个OpenVPN的wrapper来优化OpenVPN性能
    动手写一个OpenVPN的wrapper来优化OpenVPN性能 ... [详细]
  • 一、生产服务器netstattcp连接状态 ... [详细]
  • 1.判断磁盘使用空间df-h|grep-vFile|seds%g|awk{if($580)print使用空间超过了80%:,$6}或#!binbash#Filename:di ... [详细]
author-avatar
忧伤的嫖客
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有