笺注:被监控主机的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;
}
如下图:
重启Nginx:
[root@zabbix_client ~]# service nginx restart
客户端远程测试:
http://192.168.168.130/nginx-status
######
在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)
注释:
使用agent代理程序的接口。
使用 TCP 10050 端口。
主机添加成功:
给主机添加模板:( Template App Nginx by Zabbix agent )
注释:模板Template App Nginx by Zabbix agent 是Zabbix自带的。
模板添加成功:
查看主机Nginx_1继承模板的宏:
要给主机Nginx_1添加两个主机宏:
宏: {$NGINX.STUB_STATUS.HOST}
值: 127.0.0.1
宏: {$NGINX.STUB_STATUS.PATH}
值: nginx-status
查看模板Template App Nginx by Zabbix agent自带图形:
监测》图形
######
模板Template App Nginx by Zabbix agent 自带的监控Nginx进程状态的监控项:
名称: Nginx: Number of processes running
键值: proc.num[nginx]
本页拖下去:(默认已启用)
在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
注释:触发器的表达式要用到监控项中的键值。
本页拖下去:(默认已启用)
如被监控主机的Nginx服务没有在运行了,仪表板会如下图显示:(显示对应触发器的名称)
Nginx: Process is not running
在Zabbix服务器上远程测试:
[root@centos8 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.168.130 -k proc.num[nginx]
0
假如Nginx服务有停止过,在图形中是可以看出来的:
######
模板Template App Nginx by Zabbix agent自带的监控Nginx服务状态的监控项:
名称: Nginx: Service status
键值: net.tcp.service[http,"{$NGINX.STUB_STATUS.HOST}","{$NGINX.STUB_STATUS.PORT}"]
注释:
{$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
注释:触发器的表达式要用到监控项中的键值。
##################修改Nginx的端口号:(修改为TCP 8080)
[root@zabbix_client ~]# vi /usr/local/nginx/conf/nginx.conf
重启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
当Nginx服务不是使用默认的TCP 80端口,则会触发告警:(显示对应触发器的名称)
Nginx: Service is down
在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
主机宏会替代继承模板的宏:
添加了主机宏后,仪表板的告警(Nginx: Service is down)自动消失:
相关文章:
Zabbix使用模板监控Apache2.2
Zabbix使用模板监控Apache2.4
Zabbix使用Agent自定义监控IIS
Nginx的并发连接数 |