目的
- 使用zabbix监控nginx,通常可以添加自定义监控项,主要监控nginx活动连接和当前状态等具体内容。
nginx主要自定义监控项的取值
通过curl nginx的自带状态页,获得
- Active connections当前处于活动状态的客户端连接数
- accepts 已接受到的请求数
- handled 已处理完成的请求数,通常等于accepts,除非超了排队
- requests 客户发过来的请求项
- Reading 正在读取的请求报文,值越大表示排队严重
- Writing 正在返回的响应报文,值越大表示访问量越大
- Waiting 等待响应客户的空连接数
口述自定义添加监控项步骤
- 首先使用命令测试获取到监控项的特定值,将命令放到脚本中,
- 再通过脚本测试可以获取到监控项的值,
- 而后在zabbix agent修改配置文件,添加UserParameter调用写好的脚本,保存修改后重启agent服务
- 接着在zabbix server使用zabbix_get命令测试一下自定义监控项能不能获取到zabbix agent的自定义监控值
zabbix_get -s 指定主机IP -p 指定端口默认10050 -k 指定要传哪个监控项,如果没问题就能拿到自定义监控项的值了 - 最后就可以在zabbixServer界面添加模板,并在模板中添加自定义监控项,等到自定义监控项取到值了,就可以进行画图或者触发器了。
至此,zabbix添加自定义监控项完成
shell或者python脚本,增加nginx?定义指标做监控
通常使用shell或者python脚本,在zabbix增加对nginx的活动连接和当前状态等运行状态进行?定义指标做监控
1.通过shell或者python脚本获取到监控项的值 2.配置zabbix agent调?脚本获取监控项的数据,重启zabbix agent
300 UserParameter=nginx_status[*],/etc/zabbix/zabbix_agentd.d/nginx_status.sh "$1" "$2" "$3"
3.在zabbix server使?zabbix get测试监控项能否获取数据
zabbix_get -s 172.31.0.104 -p 10050 -k "reids_monitor["reids_monitor","6379","bytes"]"
4.在zabbix web创建模板,并在模板添加监控项、图形和触发器 5.将模板关联到主机,稍等?分钟,然后验证监控项数据
补充资料
通过curl nginx状态页 分析网站当前访问量
curl http://sun:123456@www.sunmy.pro/nginx_status 2> /dev/null |awk '/Reading/{print $2,$4,$6}'
0 1 15
nginx 自带状态页基本信息
Active connections: 291
server accepts handled requests
16630948 16630948 31070465
Reading: 6 Writing: 179 Waiting: 106
- Active connections: #当前处于活动状态的客户端连接数,包括连接等待空闲连接数=reading+writing+waiting
- accepts:#统计总值,Nginx自启动后已经接受的客户端请求连接的总数。
- handled:#统计总值,Nginx自启动后已经处理完成的客户端请求连接总数,通常等于accepts,除非有因worker_connections限制等被拒绝的连接
- requests:#统计总值,Nginx自启动后客户端发来的总的请求数。
- Reading:#当前状态,正在读取客户端请求报文首部的连接的连接数,数值越大,说明排队现象严重,性能不足
- Writing:#当前状态,正在向客户端发送响应报文过程中的连接数,数值越大,说明访问量很大
- Waiting:#当前状态,正在等待客户端发出请求的空闲连接数,开启 keep-alive的情况下,这个值等于active – (reading+writing)
|