nginx编译安装 zabbix自定义监控nginx

简介:

#

#zabbix自定义监控项监控Nginx

#

#

#系统版本:

[root@zabbix_2 ~]# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core)
主机名:zabbix_1 角色:zabbix-server IP地址:192.168.174.136
主机名:zabbix_2 角色:zabbix-agent

IP地址:192.168.174.137

#                                      均关闭防火墙和selinux


#编译安装Nginx    

#Nginx 下载地址:http://mirrors.sohu.com/nginx/  pcre :http://down.linuxprobe.com/Tools/pcre-8.35.tar.gz

#上传nginx 和pcre 到zabbix_2主机上

#编译安装依赖包

[root@zabbix_2 ~]# ls
anaconda-ks.cfg  nginx-1.8.1.tar.gz  pcre-8.35.tar.gz
[root@zabbix_2 ~]# yum install -y gcc-c++  openssl-devel  zlib-devel
[root@zabbix_2 ~]# tar -xf pcre-8.35.tar.gz 
[root@zabbix_2 ~]# cd pcre-8.35/
[root@zabbix_2 pcre-8.35]# ./configure  --prefix=/usr/local/pcre/
[root@zabbix_2 pcre-8.35]# make && make install


#编译安装 Nginx

[root@zabbix_2 nginx-1.8.1]# useradd -s /sbin/nologin -M nginx
[root@zabbix_2 nginx-1.8.1]# cd nginx-1.8.1/
[root@zabbix_2 nginx-1.8.1]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_ssl_module  --with-http_stub_status_module
[root@zabbix_2 nginx-1.8.1]# make && make install
#./configure --help  查看参数
#启动nginx 
[root@zabbix_2 ~]# /usr/local/nginx/sbin/nginx


#启动成功,如图所示

wKioL1jtfpfBxTxFAABmEPPH_40726.png

#修改 nginx.conf

[root@zabbix_2 ~]# vim /usr/local/nginx/conf/nginx.conf 
#添加如下内容
[root@zabbix_2 ~]# sed -n '47,52p' /usr/local/nginx/conf/nginx.conf
location /status {
stub_status on;
access_log off;
allow 192.168.174.0/24;
deny all;
}

#测试配置文件是否正确

[root@zabbix_2 ~]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

#重启nginx

[root@zabbix_2 ~]# /usr/local/nginx/sbin/nginx -s reload

#访问

wKioL1jtlG3jbnCTAAAYYHFIKLU455.png



#zabbix自定义监控项

 

#编写脚本

[root@zabbix_2 ~]# cd /etc/zabbix/zabbix_agentd.d/
[root@zabbix_2 zabbix_agentd.d]# vim nginx_status.conf 
[root@zabbix_2 zabbix_agentd.d]# cat nginx_status.conf 
UserParameter=nginx.active, /usr/bin/curl -s  http://192.168.174.137/status | grep -i Active | awk -F" " '{print $3}'
#UserParameter 为关键字    /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf里面有案例
#naginx.active 为key   ,后面为获取数据脚本
[root@zabbix_2 zabbix_agentd.d]# /usr/bin/curl -s  http://192.168.174.137/status | grep -i Active | awk -F" " '{print $3}'
1
[root@zabbix_2 zabbix_agentd.d]# systemctl restart zabbix-agent.service


#在zabbix_1上测试

[root@zabbix_1 ~]# yum install -y zabbix-get
[root@zabbix_1 ~]# zabbix_get -s 192.168.174.137 -p 10050 -k "nginx.active"

1

#找到zabbix_2


wKiom1juG6DCDSxyAADkeY0tzXk934.png


#创建监控项

wKioL1juG6HwqCEXAADH0wrW7wI565.png


#添加监控项内容(注意此处的键值至关重要,千万不能错

wKiom1juG6GCh0JJAAC2VUq0HD8163.png


#监控项添加成功

wKioL1juG6KR56dUAAC8l-yvM1E872.png


#创建图形

wKiom1juG6LhbqobAACWjaRnuqM906.png


#选择所要表示的监控项

wKioL1juG6PQfFnyAAIwTQtcmO4161.png


#图形添加成功

wKiom1juG6PTgEmxAADEpSymDzs116.png



#查看图形wKioL1juG6SSET4SAAFxTlhTuKM001.png



#测试监控是否成功(在zabbix_1上使用ab 测试工具

[root@zabbix_1 ~]# ab -c 1000 -n 100000 http://192.168.174.137/status


wKiom1juG6SCB7BoAAGKNliGbT4252.png

#可以看到图形发生了变化,自定义监控项添加成功




#自定义监控项 监控nginx状态  监控TCP状态

#编写脚本内容如下

[root@zabbix_2 ~]# cat /opt/nginx_TCP_status.sh 
#!/bin/bash
tcp_status_fun(){
TCP_STAT=$1
#netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,state[key]}' > /tmp/netstat.tmp
ss -ant | awk 'NR>1 {++s[$1]} END {for(k in s) print k,s[k]}' > /tmp/netstat.tmp
TCP_STAT_VALUE=$(grep "$TCP_STAT" /tmp/netstat.tmp | cut -d ' ' -f2)
if [ -z $TCP_STAT_VALUE ];then
TCP_STAT_VALUE=0
fi
echo $TCP_STAT_VALUE
}
nginx_status_fun(){
NGINX_PORT=$1
NGINX_COMMAND=$2
nginx_active(){
        /usr/bin/curl "http://192.168.174.137:"$NGINX_PORT"/status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
        }
nginx_reading(){
        /usr/bin/curl "http://192.168.174.137:"$NGINX_PORT"/status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
       }
nginx_writing(){
        /usr/bin/curl "http://192.168.174.137:"$NGINX_PORT"/status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
       }
nginx_waiting(){
        /usr/bin/curl "http://192.168.174.137:"$NGINX_PORT"/status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
       }
nginx_accepts(){
        /usr/bin/curl "http://192.168.174.137:"$NGINX_PORT"/status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
       }
nginx_handled(){
        /usr/bin/curl "http://192.168.174.137:"$NGINX_PORT"/status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
       }
nginx_requests(){
        /usr/bin/curl "http://192.168.174.137:"$NGINX_PORT"/status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
       }
  case $NGINX_COMMAND in
active)
nginx_active;
;;
reading)
nginx_reading;
;;
writing)
nginx_writing;
;;
waiting)
nginx_waiting;
;;
accepts)
nginx_accepts;
;;
handled)
nginx_handled;
;;
requests)
nginx_requests;
esac 
}
main(){
case $1 in
tcp_status)
tcp_status_fun $2;
;;
nginx_status)
nginx_status_fun $2 $3;
;;
*)
echo $"Usage: $0 {tcp_status key|nginx_status key}"
esac
}
main $1 $2 $3
[root@zabbix_2 ~]# cd /etc/zabbix/zabbix_agentd.d/
#修改配置文件
[root@zabbix_2 zabbix_agentd.d]# cat nginx_status.conf 
UserParameter=nginx.active, /usr/bin/curl -s  http://192.168.174.137/status | grep -i Active | awk -F" " '{print $3}'
UserParameter=nginx.status[*],/opt/nginx_TCP_status.sh "$1" "$2" "$3"

#重启zabbix-agent服务

[root@zabbix_2 zabbix_agentd.d]# systemctl restart zabbix-agent.service



#测试key

[root@zabbix_1 ~]# zabbix_get -s 192.168.174.137 -p 10050 -k nginx.status[nginx_status,80,handled]
44


#添加监控项

wKioL1jvQ7bgYNvEAAClGcWxFiI503.png

wKioL1jvQ7WiCuuWAACOImGW574795.png

#将所有的都添加好后

wKiom1jvQ7bSshZgAADlFYqz9UI918.png


#创建图形

wKioL1jvQ7fggS3sAAC6HBwwAZ0599.png


#添加监控项

wKioL1jvQ7jSQlz9AADfJEtRDfY843.png


#查看最新数据

wKiom1jvQ7fA6H_YAAEN148digE005.png


#查看图形

wKiom1jvQ7nBzATLAADirCTM5is161.png


(注意:由于我们把所以的监控行全放在一个图形里面,而每个监控项的数据大小差距太大,导致数据很小的监控项已经与X轴重合了,)






#导入TCP模板(模板由abcdocker提供)


#模板下载地址:http://pan.baidu.com/s/1i54ULjJ 密码:25lh 


#修改配置文件

[root@zabbix_2 zabbix_agentd.d]# vim nginx_status.conf


#添加一行

[root@zabbix_2 zabbix_agentd.d]# cat nginx_status.conf 
UserParameter=nginx.active, /usr/bin/curl -s  http://192.168.174.137/status | grep -i Active | awk -F" " '{print $3}'
UserParameter=nginx.status[*],/opt/nginx_TCP_status.sh "$1" "$2" "$3" 
UserParameter=linux_status[*],/opt/nginx_TCP_status.sh "$1" "$2" "$3"


#重启zabbix-agent服务

[root@zabbix_2 zabbix_agentd.d]# systemctl restart zabbix-agent.service


#测试key

[root@zabbix_1 ~]# zabbix_get -s 192.168.174.137 -p 10050 -k linux_status[tcp_status,LISTEN]
7


#导入模板

wKioL1jvQ7nzQaD1AAD7nHQdPDo709.png


#选择文件(文件从上面的链接地址下载)


wKioL1jvQ7ridvv2AAB_pUb7NNE298.png



#选择主机中添加模板

wKiom1jvQ7qArJnoAAD4OIf-rfk620.png


#添加模板

wKioL1jvQ7vS8jMNAAD_b0iF7oA146.png



#查看最新数据

wKiom1jvRcPgItj5AAEZLICrfFs791.png


#查看图形

wKiom1jvQ7uTWvVwAAHED6pGz6E339.png










本文转自 chaunceyjiang  51CTO博客,原文链接:http://blog.51cto.com/cqwujiang/1915365,如需转载请自行联系原作者
目录
相关文章
|
9月前
|
监控 应用服务中间件 nginx
基于Zabbix的SLA监控体系构建与实践
本文由Zabbix社区专家褚凤彬分享,详解SLA在Zabbix中的应用。通过Trigger与Service联动,构建Web应用的多层级监控体系,并介绍SLA计算规则、维护期处理及升级注意事项,助力企业精准掌控服务可用性。
675 36
|
自然语言处理 大数据 应用服务中间件
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
412 5
|
监控 安全 Linux
在Linux中,zabbix如何监控脑裂?
在Linux中,zabbix如何监控脑裂?
|
运维 监控 安全
【案例分享】中国通号卡斯柯公司:ZABBIX如何破解轨道交通监控难题
本文根据2023上海峰会上朱林贤的演讲整理,聚焦中国通号卡斯柯公司如何借助Zabbix实现轨道交通信号系统的智能化管理。作为中外合资企业,卡斯柯通过统一平台整合设备监控,大幅降低成本并提升灵活性,成功应用于国内外项目。文章探讨了传统监控系统的痛点、研发维护经验及国产化与开源技术挑战,为行业转型提供了宝贵启示。未来,开放协作将是推动轨道交通智能化发展的关键。
758 8
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
406 25
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
247 23
|
监控 Java 应用服务中间件
tomcat相关概念与部署tomcat多实例-zabbix监控(docker部署)
通过上述步骤,您可以在Ubuntu系统上成功编译并安装OpenCV 4.8。这种方法不仅使您能够定制OpenCV的功能,还可以优化性能以满足特定需求。确保按照每一步进行操作,以避免常见的编译问题。
430 22
|
存储 缓存 监控
|
监控 安全 前端开发
使用 Zabbix 监控堆外应用
使用 Zabbix 监控堆外应用
331 9
|
监控 数据可视化 Java
zabbix全面的监控能力
zabbix全面的监控能力
665 7