返回列表 发帖

Zabbix使用模板监控Nginx

笺注:被监控主机的Agent的安装可参考 Zabbix使用Agent监控CentOS6/Redhat6


被监控主机的信息:
[root@zabbix_client ~]# cat /etc/redhat-release
CentOS release 6.9 (Final)
[root@zabbix_client ~]#
[root@zabbix_client ~]# uname -r
2.6.32-696.el6.x86_64

[root@zabbix_client ~]# hostname
zabbix_client
[root@zabbix_client ~]# cat /etc/sysconfig/network |tail -1
HOSTNAME=zabbix_client

[root@zabbix_client ~]# ifconfig eth0 |grep "inet addr" |awk '{print $2}' |awk -F: '{print $2}'
192.168.168.130






被监控主机安装Nginx/1.12.2:

下载Nginx/1.12.2: https://pan.baidu.com/s/1GLAebXcDpW_aSci3845Bdg  提取码:02tg

yum -y install pcre-devel openssl-devel zlib-devel gcc-c++ elinks

useradd -M -s /sbin/nologin nginx

tar -zxvf nginx-1.12.2.tar.gz
cd nginx-1.12.2

./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module  --with-http_ssl_module && make && make install

ln -sf /usr/local/nginx/sbin/nginx /usr/sbin/



### 开机自动运行Nginx

[root@zabbix_client ~]# vi /etc/init.d/nginx
#!/bin/bash
#chkconfig: 35 99 20
#description:Nginx Service Control Script

case "$1" in
start)
/usr/local/nginx/sbin/nginx
;;
stop)
/usr/bin/killall -s QUIT nginx
;;
restart)
$0 stop
$0 start
;;
*)
echo "Usage:$0 {start|stop|restart}"
exit 1
esac
exit 0


[root@zabbix_client ~]# chmod a+x /etc/init.d/nginx

[root@zabbix_client ~]# chkconfig --add nginx
[root@zabbix_client ~]# chkconfig --level 35 nginx on


启动Nginx:
[root@zabbix_client ~]# service nginx start


查看Nginx的版本信息:
[root@zabbix_client ~]# nginx -v
nginx version: nginx/1.12.2

[root@zabbix_client ~]# nginx -V
nginx version: nginx/1.12.2
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-18) (GCC)
built with OpenSSL 1.0.1e-fips 11 Feb 2013
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module


检测Nginx有没有在运行:(运行时)
[root@zabbix_client ~]# ps -ef |grep nginx |grep -v grep
root       4781      1  0 04:56 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx      4782   4781  0 04:56 ?        00:00:00 nginx: worker process      
[root@zabbix_client ~]#
[root@zabbix_client ~]# echo $?
0

[root@zabbix_client ~]# netstat -anp |grep 80
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      4781/nginx         
unix  3      [ ]         STREAM     CONNECTED     12680  1498/master         
[root@zabbix_client ~]#
[root@zabbix_client ~]# echo $?
0

[root@zabbix_client ~]# netstat -anp |grep nginx
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      4781/nginx         
unix  3      [ ]         STREAM     CONNECTED     21467  4781/nginx         
unix  3      [ ]         STREAM     CONNECTED     21466  4781/nginx      
[root@zabbix_client ~]#
[root@zabbix_client ~]# echo $?
0


关闭Nginx:
[root@zabbix_client ~]# service nginx stop



检测Nginx有没有在运行:(没有运行时)
[root@zabbix_client ~]# ps -ef |grep nginx |grep -v grep
[root@zabbix_client ~]#
[root@zabbix_client ~]# echo $?
1

[root@zabbix_client ~]# netstat -anp |grep nginx
[root@zabbix_client ~]#
[root@zabbix_client ~]# echo $?
1


重启Nginx:
[root@zabbix_client ~]# service nginx restart


防火墙的配置:
iptables -I INPUT -p tcp --dport 80 -j ACCEPT
iptables-save > /etc/sysconfig/iptables


关闭SELinux:
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config







修改Nginx的主配置文件:
[root@zabbix_client ~]# find / -name nginx.conf
/usr/local/nginx/conf/nginx.conf

[root@zabbix_client ~]# vi /usr/local/nginx/conf/nginx.conf
加入以下代码:
    location /nginx-status {
             allow all;
             stub_status on;
             access_log off;
        }

如下图:
图片1.png
2021-1-7 16:37




重启Nginx:
[root@zabbix_client ~]# service nginx restart



客户端远程测试:
http://192.168.168.130/nginx-status
图片2.png
2021-1-7 16:38





######

在Zabbix服务器上远程测试,验证能否获取被监控主机(192.168.168.130)的key:

[root@centos8 ~]# find / -name "zabbix_get"
/usr/local/zabbix/bin/zabbix_get

[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.130 -k net.tcp.listen[10050]
1

[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.130 -k proc.num[zabbix_agentd]
6

[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.130 -k net.tcp.listen[80]
1






##################Zabbix添加被监控主机:

配置》主机》创建主机  (主机名称无需与被监控主机的真实主机名一致;群组可以随便选;IP地址那里要输入被监控主机的IP地址;端口为10050)
图片3.png
2021-1-7 16:39

注释:
使用agent代理程序的接口。
使用 TCP 10050 端口。


主机添加成功:
图片4.png
2021-1-7 16:40



给主机添加模板:( Template App Nginx by Zabbix agent )
图片5.png
2021-1-7 16:40

注释:模板Template App Nginx by Zabbix agent 是Zabbix自带的。


模板添加成功:
图片6.png
2021-1-7 16:40




查看主机Nginx_1继承模板的宏:
图片7.png
2021-1-7 16:41



要给主机Nginx_1添加两个主机宏:
宏: {$NGINX.STUB_STATUS.HOST}
值: 127.0.0.1

宏: {$NGINX.STUB_STATUS.PATH}
值: nginx-status
图片8.png
2021-1-7 16:41





查看模板Template App Nginx by Zabbix agent自带图形:

监测》图形

图片9.png
2021-1-7 16:42


图片10.png
2021-1-7 16:42


图片11.png
2021-1-7 16:42




图片12.png
2021-1-7 16:43


图片13.png
2021-1-7 16:43


图片14.png
2021-1-7 16:43




图片15.png
2021-1-7 16:43


图片16.png
2021-1-7 16:43


图片17.png
2021-1-7 16:44




图片18.png
2021-1-7 16:44


图片19.png
2021-1-7 16:44


图片20.png
2021-1-7 16:44





######

模板Template App Nginx by Zabbix agent 自带的监控Nginx进程状态的监控项:
名称: Nginx: Number of processes running
键值: proc.num[nginx]
图片21.png
2021-1-7 16:45


本页拖下去:(默认已启用)
图片22.png
2021-1-7 16:45



在Zabbix服务器上远程测试:
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.130 -k proc.num[nginx]
2



模板Template App Nginx by Zabbix agent 自带的监控Nginx进程状态的触发器:
名称: Nginx: Process is not running
表达式: {Nginx_1:proc.num[nginx].last()}=0
图片23.png
2021-1-7 16:46

注释:触发器的表达式要用到监控项中的键值。

本页拖下去:(默认已启用)
图片24.png
2021-1-7 16:46




如被监控主机的Nginx服务没有在运行了,仪表板会如下图显示:(显示对应触发器的名称)
Nginx: Process is not running
图片25.png
2021-1-7 16:47


图片26.png
2021-1-7 16:47




在Zabbix服务器上远程测试:
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.130 -k proc.num[nginx]
0



假如Nginx服务有停止过,在图形中是可以看出来的:

图片27.png
2021-1-7 16:47


图片28.png
2021-1-7 16:48




图片29.png
2021-1-7 16:48


图片30.png
2021-1-7 16:48




图片31.png
2021-1-7 16:48


图片32.png
2021-1-7 16:49








######

模板Template App Nginx by Zabbix agent自带的监控Nginx服务状态的监控项:
名称: Nginx: Service status
键值: net.tcp.service[http,"{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PORT}"]
图片33.png
2021-1-7 16:49


注释:
{$NGINX.STUB_STATUS.HOST} 是宏,即Nginx的IP地址(127.0.0.1)。
{$NGINX.STUB_STATUS.PORT} 是宏,即Nginx的端口号。


在Zabbix服务器上远程测试:
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.130 -k net.tcp.service[http,127.0.0.1,80]
1




模板Template App Nginx by Zabbix agent自带的监控Nginx服务状态的触发器:
名称: Nginx: Service is down
表达式:{Nginx_1:net.tcp.service[http,"{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PORT}"].last()}=0
图片34.png
2021-1-7 16:51

注释:触发器的表达式要用到监控项中的键值。







##################修改Nginx的端口号:(修改为TCP 8080)

[root@zabbix_client ~]# vi /usr/local/nginx/conf/nginx.conf
图片35.png
2021-1-7 16:51



重启Nginx:
[root@zabbix_client ~]# service nginx restart


防火墙的配置:
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
iptables-save > /etc/sysconfig/iptables


客户端远程测试:
http://192.168.168.130:8080/nginx-status
图片36.png
2021-1-7 16:52



当Nginx服务不是使用默认的TCP 80端口,则会触发告警:(显示对应触发器的名称)
Nginx: Service is down
图片37.png
2021-1-7 16:52


图片38.png
2021-1-7 16:53




在Zabbix服务器上远程测试:
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.130 -k net.tcp.service[http,127.0.0.1,80]
0



[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.130 -k net.tcp.service[http,127.0.0.1,8080]
1




要给主机Nginx_1添加一个主机宏:
宏: {$NGINX.STUB_STATUS.PORT}
值: 8080
图片41.png
2021-1-7 17:05



主机宏会替代继承模板的宏:
图片39.png
2021-1-7 16:54




添加了主机宏后,仪表板的告警(Nginx: Service is down)自动消失:
图片40.png
2021-1-7 16:54






相关文章:
Zabbix使用模板监控Apache2.2
Zabbix使用模板监控Apache2.4
Zabbix使用Agent自定义监控IIS

Nginx的并发连接数

返回列表