nginx模板
前提环境:打开nginx服务器安装zabbix-agent,修改配置文件指向zabbix服务器。
1. 开启监控页面并访问测试
1. [root@node1 ~]# vim /etc/nginx/conf.d/default.conf //添加nginx状态模块 2. location /nginx_status { 3. stub_status on; 4. access_log off; 5. } 6. [root@node1 ~]# systemctl restart nginx
使用下面两种方式其一验证。
2. 准备nginx监控状态脚本
1. [root@node1 ~]# cd /etc/zabbix/zabbix_agentd.d/ 2. [root@node1 zabbix_agentd.d]# vim nginx_monitor.sh 3. #!/bin/bash 4. NGINX_COMMAND=$1 5. CACHEFILE="/tmp/nginx_status.txt" 6. CMD="/usr/bin/curl http://127.0.0.1/nginx_status/" 7. if [ ! -f $CACHEFILE ];then 8. $CMD >$CACHEFILE 2>/dev/null 9. fi 10. # Check and run the script 11. TIMEFLM=`stat -c %Y $CACHEFILE` 12. TIMENOW=`date +%s` 13. 14. if [ `expr $TIMENOW - $TIMEFLM` -gt 60 ]; then 15. rm -f $CACHEFILE 16. fi 17. if [ ! -f $CACHEFILE ];then 18. $CMD >$CACHEFILE 2>/dev/null 19. fi 20. 21. nginx_active(){ 22. grep 'Active' $CACHEFILE| awk '{print $NF}' 23. exit 0; 24. } 25. nginx_reading(){ 26. grep 'Reading' $CACHEFILE| awk '{print $2}' 27. exit 0; 28. } 29. nginx_writing(){ 30. grep 'Writing' $CACHEFILE | awk '{print $4}' 31. exit 0; 32. } 33. nginx_waiting(){ 34. grep 'Waiting' $CACHEFILE| awk '{print $6}' 35. exit 0; 36. } 37. nginx_accepts(){ 38. awk NR==3 $CACHEFILE| awk '{print $1}' 39. exit 0; 40. } 41. nginx_handled(){ 42. awk NR==3 $CACHEFILE| awk '{print $2}' 43. exit 0; 44. } 45. nginx_requests(){ 46. awk NR==3 $CACHEFILE| awk '{print $3}' 47. exit 0; 48. } 49. case $NGINX_COMMAND in 50. active) 51. nginx_active; 52. ;; 53. reading) 54. nginx_reading; 55. ;; 56. writing) 57. nginx_writing; 58. ;; 59. waiting) 60. nginx_waiting; 61. ;; 62. accepts) 63. nginx_accepts; 64. ;; 65. handled) 66. nginx_handled; 67. ;; 68. requests) 69. nginx_requests; 70. ;; 71. *) 72. echo 'Invalid credentials'; 73. exit 2; 74. esac 75. [root@node1 zabbix_agentd.d]# chmod +x nginx_monitor.sh 76. [root@node1 zabbix_agentd.d]# sh nginx_monitor.sh
3. 编写zabbix监控配置文件
1. [root@node1 zabbix_agentd.d]# vim nginx_status.conf 2. 3. UserParameter=nginx_status[*],/bin/bash /etc/zabbix/zabbix_agentd.d/nginx_monitor.sh $1 4. 5. [root@node1 zabbix_agentd.d]# systemctl restart zabbix-agent 6. 7. [root@node1 zabbix_agentd.d]# chown zabbix:zabbix /tmp/nginx_status.txt
4. 在服务端(192.168.1.4)使用zabbix_get取值
[root@zabbix ~]# zabbix_get -s 192.168.1.5 -k nginx_status[accepts]
5. 导入模版
配置→模板→导入→选择文件→根据需求勾选聚合图形→导入。
6. 使用模板
配置→主机→选择nginx主机→模板→选择Template App NGINX→添加→更新/添加。
此时两个新添加的模板都链接成功了。
7. 查看数据
使用mysql服务器安装ab工具测试
1. [root@mysql ~]# yum -y install httpd-tools 2. [root@mysql ~]# ab -c 1000 -n 10000 http://192.168.1.5/index.html
监测→最新数据→选择nginx主机→查看访问。
克隆主机
在生产环境中的主机非常多,如果一台一台添加非常消耗时间。此刻就需要到克隆,配置玩一个nignx服务器或mysql服务器,直接克隆出多台,模板等都不需要配置,只需要修改主机名称和客户端IP。
此刻需要在添加一台nginx服务器,安装zabbix-agent修改配置文件指向zabbix服务器。
拓扑图如下:
node1添加其他nginx服务器
配置→主机→node1→克隆。
修改主机名称和代理端IP后点击添加即可。
稍等刷新界面,可以看到node2的各项都和node1相同,模板也链接成功。
网络发现
网络发现的作用:加快Zabbix部署,简化管理,无需过多管理,也能在快速变化的环境中使用Zabbix,一般通过网络ip范围自动发现agent主机。
拓扑图如下:
如跟着上面做的实验,需要先全部删除客户端主机,如下图所示。
1. 客户端安装三台客户端主机需要安装zabbix-agent,配置文件Server指向zabbix-server服务器。下面以node1为例,mysql和node2配置相同。
1. [root@node1 ~]# vim /etc/zabbix/zabbix_agentd.conf 2. 3. Server=192.168.1.4 4. 5. [root@node1 ~]# systemctl start zabbix-agent
2. web自动发现
(1)配置→自动发现→修改Local Network→添加主机网段(agent端范围,IP数越多时间越久)→修改间隔→更新。
(2)配置→动作→事件源(自动发现)→修改现有自动发现→修改触发条件(agent端IP)→操作→添加标题→添加主机,根据需求添加群组、模板→更新。
稍等片刻查看主机,可以看到三台主机都自动添加成功。
自动注册
自动注册:Zabbix Active agent可以实现自动注册,进而服务器对其进行监控。通过这种方式,无需在服务器上进行手动配置便可直接启动对新host的监控。例如:手动指定node1,它会自动创建包含node的主机,如node1、node2。但不会自动创建mysql主机。
1. 环境要求
添加前需要删除前面创建的主机,禁用自动发现功能。
web页面删除三台agent主机,客户端安装zabbix-agent,配置文件Server,ServerActive指向zabbix-server,Hostname修改本机主机名。
本次目标根据主机名node实现node1、node2的自动创建主机,修改两台node服务器文件。以node1为例。
1. [root@node1 ~]# vim /etc/zabbix/zabbix_agentd.conf 2. Server=192.168.1.4 3. ServerActive=192.168.1.4 4. Hostname=node1 5. [root@node1 ~]# systemctl restart zabbix-agent
2. web自动注册
配置→动作→事件源(自动注册)→创建动作→填写名称→触发条件主机名→操作(主机、群组、模板)。
下面就可以看到主机名包含node的两台主机都已经添加成功了。
主被动模式
被动模式:默认模式,由服务器向客户端发起监控项请求,每个监控项发一个请求,效率低。
主动模式:由客户端主动向服务器申请监控项清单,一起发送给服务器,效率高,不占服务器太多资源。