zabbix-server-mysql zabbix-frontend-php
State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:10051 0.0.0.0:* users:(("zabbix_server",pid=3991,fd=4),("zabbix_server",pid=3990,fd=4),("zabbix_server",pid=3989,fd=4)…… …… LISTEN 0 80 192.168.1.14:3306 0.0.0.0:* users:(("mysqld",pid=1461,fd=20)) …… LISTEN 0 128 *:80 *:* users:(("apache2",pid=4105,fd=4),("apache2",pid=4100,fd=4),("apache2",pid=4091,fd=4),("apache2",pid=3904,fd=4), ("apache2",pid=3900,fd=4),("apache2",pid=3801,fd=4),("apache2",pid=3576,fd=4),("apache2",pid=3501,fd=4),("apache2", pid=3404,fd=4),("apache2",pid=1620,fd=4),("apache2",pid=1587,fd=4)) ……
MariaDB [(none)]> create database zabbix_proxy_active character set utf8 collate utf8_bin; MariaDB [(none)]> grant all privileges on zabbix_proxy_active.* to zabbix_proxy_active@192.168.1.20 identified by 'zabbix_proxy_active';
zabbix-proxy-mysql
root@ubuntu1804:/etc/zabbix# grep '^[a-Z]' /etc/zabbix/zabbix_proxy.conf ProxyMode=0 #主動模式 Server=192.168.1.14 Hostname=zabbix_proxy_active LogFile=/var/log/zabbix/zabbix_proxy.log LogFileSize=0 EnableRemoteCommands=1 #開啓容許遠程命令 LogRemoteCommands=1 PidFile=/var/run/zabbix/zabbix_proxy.pid SocketDir=/var/run/zabbix DBHost=192.168.1.14 DBName=zabbix_proxy_active DBUser=zabbix_proxy_active DBPassword=zabbix_proxy_active SNMPTrapperFile=/var/log/snmptrap/snmptrap.log Timeout=30 ExternalScripts=/usr/lib/zabbix/externalscripts FpingLocation=/usr/bin/fping Fping6Location=/usr/bin/fping6 LogSlowQueries=3000
root@ubuntu1804:~# mysql -uzabbix_proxy_active -pzabbix_proxy_active -h192.168.1.14 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 6951 Server version: 10.1.40-MariaDB-0ubuntu0.18.04.1 Ubuntu 18.04 Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show databases; +---------------------+ | Database | +---------------------+ | information_schema | | zabbix_proxy_active | +---------------------+ 2 rows in set (0.00 sec)
zcat /usr/share/doc/zabbix-proxy-mysql/schema.sql.gz | mysql -uzabbix_proxy_active -pzabbix_proxy_active -h192.168.1.14 zabbix_proxy_active
root@ubuntu1804:~# systemctl restart zabbix-proxy root@ubuntu1804:~# systemctl enable zabbix-proxy
root@ubuntu1804:~# ss -tnlp State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 128 0.0.0.0:10051 0.0.0.0:* users:(("zabbix_proxy",pid=3559,fd=4),("zabbix_proxy",pid=3558,fd=4),("zabbix_proxy",pid=3557,fd=4),("zabbix_proxy",pid=3556,fd=4),("zabbix_proxy",pid=3555,fd=4),("zabbix_proxy",pid=3554,fd=4),("zabbix_proxy",pid=3553,fd=4),("zabbix_proxy",pid=3552,fd=4),("zabbix_proxy",pid=3551,fd=4),("zabbix_proxy",pid=3550,fd=4),("zabbix_proxy",pid=3549,fd=4),("zabbix_proxy",pid=3548,fd=4),("zabbix_proxy",pid=3547,fd=4),("zabbix_proxy",pid=3546,fd=4),("zabbix_proxy",pid=3545,fd=4),("zabbix_proxy",pid=3544,fd=4),("zabbix_proxy",pid=3543,fd=4),("zabbix_proxy",pid=3542,fd=4),("zabbix_proxy",pid=3541,fd=4),("zabbix_proxy",pid=3540,fd=4),("zabbix_proxy",pid=3539,fd=4),("zabbix_proxy",pid=3538,fd=4),("zabbix_proxy",pid=3537,fd=4),("zabbix_proxy",pid=3536,fd=4),("zabbix_proxy",pid=3525,fd=4)) LISTEN 0 80 0.0.0.0:3306 0.0.0.0:* users:(("mysqld",pid=4094,fd=17)) ……
zabbix-agent nginx
[root@nginx zabbix_agentd.d]# grep '^[a-Z]' /etc/zabbix/zabbix_agentd.conf EnableRemoteCommands=1 #必定要開啓,不然致使沒法執行遠程命令 Server=192.168.1.14,192.168.1.20 #同時指定server端和proxy代理端 ServerActive=192.168.1.20 #指定主動模式的proxy代理端 Hostname=192.168.1.16 #給本機指定一個主機名,web端上天添加的主機名必須和此處主機名相同,不然會致使數據採集失敗 Timeout=30 Include=/etc/zabbix/zabbix_agentd.d/*.conf UnsafeUserParameters=1 #支持遠程命令傳輸的特殊字符,也必須開啓
[root@nginx ~]# vim /etc/nginx/nginx.conf …… server { listen 8080 default_server; #改成監聽8080端口 listen [::]:8080 default_server; server_name _; root /usr/share/nginx/html; …… location / { } location /nginx_status { #打開狀態頁 stub_status; alllow 127.0.0.1;#容許本地訪問 deny all;#爲安全,除了本地,其餘主機均不可訪問狀態頁 } ……
[root@nginx ~]# vim /etc/zabbix/zabbix_agentd.d/nginx.sh nginx_status(){ nginx_port=$1 nginx_cmd=$2 ip=`ifconfig eth0 | awk NR==2 | awk '{print $2}'` #取出本機的ip地址 nginx_active(){ curl ${ip}:${nginx_port}/nginx_status 2> /dev/null | grep Active | awk '{print $NF}' #取出當前客戶端活動鏈接數 } nginx_accepts(){ curl ${ip}:${nginx_port}/nginx_status 2> /dev/null | awk NR==3 | awk '{print $1}' #取出累積接收客戶端請求鏈接的鏈接數 } nginx_handled(){ curl ${ip}:${nginx_port}/nginx_status 2> /dev/null | awk NR==3 | awk '{print $2}' #取出累積客戶端請求處理數 } nginx_requests(){ curl ${ip}:${nginx_port}/nginx_status 2> /dev/null | awk NR==3 | awk '{print $3}' #取出累積的客戶端總共發送的請求數 } nginx_reading(){ curl ${ip}:${nginx_port}/nginx_status 2> /dev/null | awk NR==4 | awk '{print $2}' #取出當前正在讀取客戶端請求報文首部鏈接的鏈接數 } nginx_writing(){ curl ${ip}:${nginx_port}/nginx_status 2> /dev/null | awk NR==4 | awk '{print $4}' #取出當前正在向客戶端發送響應報文鏈接的鏈接數 } nginx_waiting(){ curl ${ip}:${nginx_port}/nginx_status 2> /dev/null | awk NR==4 | awk '{print $6}' #取出當前正在等待客戶端發來請求空閒鏈接的鏈接數 } nginx_connecting(){ charactor=`curl ${ip}:${nginx_port}/nginx_status 2> /dev/null | grep -o Active` #判斷nginx服務是否爲運行狀態 if [ "$charactor" == "Active" ];then echo 0; #0表示能夠鏈接nginx服務 else echo 10; #10表示是沒法鏈接到nginx服務,服務關閉 fi } case $nginx_cmd in active) nginx_active ;; accepts) nginx_accepts ;; handled) nginx_handled ;; requests) nginx_requests ;; reading) nginx_reading ;; writing) nginx_writing ;; waiting) nginx_waiting ;; connecting) nginx_connecting ;; esac } nginx_status $1 $2
[root@nginx ~]# vim /etc/zabbix/zabbix_agentd.d/nginx_status_monitor.conf UserParameter=nginx_status[*],/etc/zabbix/zabbix_agentd.d/nginx.sh $1 $2
[root@nginx ~]# ll /etc/zabbix/zabbix_agentd.d/ total 8 -rwxr-xr-x 1 root root 1350 Jul 19 20:37 nginx.sh -rw-r--r-- 1 root root 74 Jul 19 20:43 nginx_status_monitor.conf
[root@nginx ~]# systemctl restart zabbix-agent [root@nginx ~]# systemctl enable zabbix-agent [root@nginx ~]# systemctl start nginx [root@nginx ~]# systemctl enable nginx
[root@nginx ~]# ss -tnlp State Recv-Q Send-Q Local Address:Port Peer Address:Port LISTEN 0 511 *:8080 *:* users:(("nginx",pid=50295,fd=6),("nginx",pid=50294,fd=6),("nginx",pid=50293,fd=6),("nginx",pid=50292,fd=6), ("nginx",pid=50291,fd=6)) LISTEN 0 128 *:10050 *:* …… users:(("zabbix_agentd",pid=43802,fd=4),("zabbix_agentd",pid=43801,fd=4),("zabbix_agentd",pid=43800,fd=4), ("zabbix_agentd",pid=43799,fd=4),("zabbix_agentd",pid=43798,fd=4),("zabbix_agentd",pid=43797,fd=4)) ……
[root@nginx ~]# curl 127.0.0.1:8080/nginx_status Active connections: 1 server accepts handled requests 1 1 1 Reading: 0 Writing: 1 Waiting: 0
[root@nginx ~]# vim /etc/sudoers #Defaults requiretty #必定要註釋掉此行,會致使sudo超級用戶沒法執行遠程命令 …… ## Allow root to run any commands anywhere root ALL=(ALL) ALL zabbix ALL=(ALL) NOPASSWD: ALL ……
root@ubuntu1804:~# apt-get install zabbix-get -y
root@ubuntu1804:~# zabbix_get -s 192.168.1.16 -p 10050 -k nginx_status[8080,connecting] 0
root@ubuntu1804:~# zabbix_get -s 192.168.1.16 -p 10050 -k nginx_status[8080,accepts] 5
root@ubuntu1804:~# zabbix_get -s 192.168.1.16 -p 10050 -k nginx_status[8080,reading] 0
選擇admin帳戶php
[root@nginx zabbix_agentd.d]# systemctl stop nginxhtml
[root@nginx ~]# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
Active: inactive (dead)mysql
[root@nginx zabbix_agentd.d]# systemctl status nginx
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
Active: active (running) since Fri 2019-07-19 16:43:10 CST; 12min ago
Process: 50272 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Process: 50245 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 50243 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
……nginx