1.手動添加監控比較麻煩,監控項 -> 圖形 -> 觸發器。php
問題: 1.例如: 100臺服務器須要檢查81端口 2.例如: 100臺服務器81改爲82 解決: 使用模板能夠解決以上問題, 只須要修改一下模板,而後全部的主機都生效
系統自帶模板 自定義模板
自定義模板的使用 1.建立模板,模板得屬於某個主機組(Templates) 2.在模板中建立監控項目、觸發器、建立圖形 3.新增監控主機時添加對應的模板 4.更改模板的監控項,因此使用模板的主機都會自動變動 建議: 監控的時候都使用模板, 由於模板添加啥的都方便,修改也比較方便
環境: 1.zabbix server的ip:10.0.0.71 2.被監控windows的ip:10.0.0.1 1.下載Zabbix Agent https://www.zabbix.com/downloads/4.0.14/zabbix_agents-4.0.14-win-amd64.zip 2.Windows安裝zabbix agent 編輯配置文件D:\zabbix_agents-4.0.14-win-amd64\conf\zabbix_agentd.conf Server=10.0.0.71 3.運行cmd,將zabbix命令註冊爲服務(使用管理員) services.msc "d:\zabbix_agents-4.0.14-win-amd64\bin\zabbix_agentd.exe" --config d:\zabbix_agents-4.0.14-win-amd64\conf\zabbix_agentd.conf --install 4.cmd運行 查看監聽netstat -an|find "10050" --------------------------------------------------- 5.zabbix_get獲取windows信息 zabbix_get -s xxx -k system.uname zabbix_get -s xxx -k vm.memory.size[free] zabbix_get -s xxx -k vfs.fs.size[C:,pfree] 6.windows防火牆放開10050端口 1.防火牆關閉的能夠跳過這步 2.高級設置->入站規則->新建規則->端口->10050->容許鏈接->全部 7.zabbix頁面上添加windows主機 1.直接應用windows模板 2.驗證Windows監控是否正常 編寫一個最簡單的bat腳本D:\zabbix_agents-4.0.14-win-amd64\echo.bat @echo off echo "100" zabbix配置添加D:\zabbix_agents-4.0.14-win-amd64\conf\zabbix_agentd.conf UserParameter=echo.test,D:\zabbix_agents-4.0.14-win-amd64\echo.bat
1.監控Nginx什麼內容 監控Nginx⑦中狀態 2.怎麼監控 1.開啓Nginx stub status 模塊 2.使用curl命令獲取stub_status的數據 3.將獲取數據的方法封裝爲一個又一個的監控項 3.實施監控 1.開啓nginx stub_status狀態 2.編寫腳本,提取nginx status的指標 [root@web01 scripts]# cat nginx_status.sh Nginx_status_file=/tmp/nginx_status.tmp Nginx_status_name=status.oldxu.com Nginx_status_path=/nginx_status curl -sH host:${Nginx_status_name} http://127.0.0.1:80${Nginx_status_path} > ${Nginx_status_file} case $1 in active) echo $[ $(awk 'NR==1 {print $NF}' ${Nginx_status_file}) -1 ] ;; accepts) echo $[ $(awk 'NR==3 {print $1}' ${Nginx_status_file}) - 1 ] ;; handled) echo $[ $(awk 'NR==3 {print $2}' ${Nginx_status_file}) - 1 ] ;; requests) echo $[ $(awk 'NR==3 {print $3}' ${Nginx_status_file}) - 1 ] ;; reading) awk 'NR==4 {print $2}' ${Nginx_status_file} ;; writing) awk 'NR==4 {print $4}' ${Nginx_status_file} ;; waiting) awk 'NR==4 {print $NF}' ${Nginx_status_file} ;; *) echo "USAGE: $0 [active|accepts|handled|requests|reading|writing|waiting]" ;; esac 3.配置zabbix-agent, 添加自定義監控項 [root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/nginx.conf UserParameter=nginx_status[*], /bin/bash /etc/zabbix/zabbix_agentd.d/scripts/nginx_status.sh "$1" 4.重啓zabbix-agent 5.zabbix-server使用zabbix-get獲取監控項的值 [root@zabbix-server ~]# zabbix_get -s 172.16.1.7 -k nginx_status[active] 10 [root@zabbix-server ~]# zabbix_get -s 172.16.1.7 -k nginx_status[requests] 20 6.登陸zabbix-web 1.建立模板 2.建立監控項 3.建立圖形 4.建立觸發器 5.關聯對應主機
1.提取日誌 awk '{print $9}' /var/log/nginx/access.log|grep -c "302" 2.自定義監控項,支持傳參 [root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/nginx.conf UserParameter=nginx_status_code[*], awk '{print $9}' /var/log/nginx/access.log|grep -c "$1" [root@web01 ~]# systemctl restart zabbix-agent 3.server使用zabbix-get獲取 [root@zabbix-server ~]# zabbix_get -s 172.16.1.7 -k nginx_status_code[200] 10000 [root@zabbix-server ~]# zabbix_get -s 172.16.1.7 -k nginx_status_code[302] 327556 4.登陸zabbix-web 1.建立模板 2.建立監控項 3.建立圖形 4.建立觸發器 5.關聯對應主機
1.監控php端口 2.監控php進程 master worker 3.監控php狀態 實施: 1.如何開啓php狀態 2.獲取php狀態中重要的指標 3.編寫腳本支持傳參 1.開啓php的狀態模塊 [root@web01 ~]# cat /etc/php-fpm.d/www.conf .... pm.status_path = /fpm_status .... 2.配置nginx,將http請求轉發給php處理 [root@web01 conf.d]# cat status.oldxu.com.conf server { listen 80; server_name status.oldxu.com; location /fpm_status { fastcgi_pass 127.0.0.1:9000; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } } 3.php-fpm狀態指標含義 [root@web01 conf.d]# curl -H Host:status.oldxu.com http://127.0.0.1/fpm_status pool: www process manager: dynamic start time: 20/Nov/2019:15:15:19 +0800 start since: 200 accepted conn: 22 #當前池接受的請求數 listen queue: 0 #請求隊列,若是這個值不爲0,那麼須要增長FPM的進程數量 max listen queue: 0 #請求隊列最高的數量 listen queue len: 128 #socket等待隊列長度 idle processes: 5 #空閒進程數量 active processes: 1 #活躍進程數量 total processes: 6 #總進程數量 max active processes: 1 #最大的活躍進程數量(FPM啓動開始計算) max children reached: 0 #超過最大進程數的峯值的次數,若是不爲0,須要調整進程的最大活躍進程數量 4.編寫取值腳本 [root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/scripts/fpm_status.sh #!/usr/bin/bash fpm_status_file=/tmp/fpm_status.tmp fpm_status_name=status.oldxu.com fpm_status_path=/fpm_status curl -sH host:${fpm_status_name} http://127.0.0.1:80${fpm_status_path} > ${fpm_status_file} case $1 in accepted_conn) awk '/accepted conn:/{print $NF}' ${fpm_status_file} ;; listen_queue) awk '/^listen queue:/{print $NF}' ${fpm_status_file} ;; max_listen_queue) awk '/^max listen queue:/{print $NF}' ${fpm_status_file} ;; active_processes) awk '/^active processes:/{print $NF}' ${fpm_status_file} ;; idle_processes) awk '/^idle processes:/{print $NF}' ${fpm_status_file} ;; total_processes) awk '/^total processes:/{print $NF}' ${fpm_status_file} ;; max_active_processes) awk '/^max active processes:/{print $NF}' ${fpm_status_file} ;; max_children_reached) awk '/^max children reached:/{print $NF}' ${fpm_status_file} ;; *) echo "USAGE: $0 [accepted_conn|listen_queue|max_listen_queue|active_processes|idle_processes|total_processes|max_active_processes|max_children_reached]" ;; esac 5.自定義監控項,支持傳參 [root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/fpm.conf UserParameter=fpm.status[*], /bin/bash /etc/zabbix/zabbix_agentd.d/scripts/fpm_status.sh "$1" [root@web01 ~]# systemctl restart zabbix-agent 6.server使用zabbix-get獲取 [root@zabbix-server ~]# zabbix_get -s 172.16.1.7 -k fpm.status[accepted_conn] 2031 [root@zabbix-server ~]# zabbix_get -s 172.16.1.7 -k fpm.status[max_active_processes] 50 7.登陸zabbix-web 1.建立模板 2.建立監控項 3.建立圖形 4.建立觸發器 5.關聯對應主機
1.進程存活
2.檢測端口mysql
Mysql的高級監控說明 Mysql提供show global status能夠實現對Mysql的高級監控 高級監控包含監控Mysql鏈接數,增刪改查數,流量等 其餘的監控mysql的方式 天兔 (文檔) percona (視頻)
監控命令詳解mysql -uroot -poldxu.com -e 'show global status'nginx
Threads_connected:鏈接數 Com_select:查詢總量 Com_insert:插入總量 Com_update:更新總量 Com_delete:刪除總量 Bytes_received: 流入總流量 Bytes_sent:流出總流量 Slow_queries:慢查詢總量
1.編寫取值腳本check_mysql.shweb
[root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/scripts/mysql_status.sh #!/usr/bin/bash port=$1 key=$2 mysql -uroot -poldxu.com -P${port} -e "show global status" |grep "${key}\s" |awk '{print $2}'
2.測試監控Shell腳本sql
[root@web01 ~]# sh /etc/zabbix/zabbix_agentd.d/scripts/mysql_status.sh 3306 Threads_connected
3.Zabbix自定義監控項數據庫
[root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/mysql.conf UserParameter=mysql.status[*], /bin/bash /etc/zabbix/zabbix_agentd.d/scripts/mysql_status.sh "$1" "$2" 2>/dev/null
4.重啓agentvim
*systemctl restart zabbix-agent.service*
5.測試可否獲取到值windows
zabbix_get -s xxx -k mysql.status[3306,Threads_connected] zabbix_get -s xxx -k mysql.status[3306,Com_insert]
6..使用Template DB MySQL模板監控Mysql 利用自帶的模板改一改bash
mysql.status[3306,Threads_connected] mysql.status[3306,Com_select] mysql.status[3306,Bytes_received] mysql.status[3306,Bytes_sent]
7.寫一個測試的程序測一下服務器
[root@web01 ~]# cat mysql.sh for i in {1..1000} do mysql -uroot -poldxu.com -h 127.0.0.1 -e "create database IF NOT EXISTS db; use db; DROP TABLE IF EXISTS test${i}; create table test${i}(id int); insert into db.test${i} values (123456); select * from db.test${i}; delete from test${i} where id=123456;" done
1.若是發生主從同步異常,業務會出問題 2.若是從庫是用來備份的,會致使數據丟失
Mysql主從同步監控說明
1.從庫運行show slave status\G能夠來查看主從同步信息 Slave IO Running 能夠觀察從庫的IO進程是否正常,IO進程用於同步二進制日誌 Slave SQL Running 能夠觀察從庫的SQL進程是否正常,SQL進程用於執行二進制日誌 Seconds Behind Master表明主從同步的延時時間
1.配置數據庫主從環境:
[root@db01 ~]# vim /etc/my.cnf +10 添加 log-bin server-id=51 [root@db01 ~]# systemctl restart mariadb MariaDB [(none)]> grant replication slave, replication client on *.* to 'all'@'%' identified by '123456'; Query OK, 0 rows affected (0.15 sec) [root@db01 ~]# mysqldump -uroot --all-databases --single-transaction --master-data=1 --flush-logs > /root/db-$(date +%F)-all.sql [root@web01 ~]# vim /etc/my.cnf server-id=7 [root@db01 ~]# scp db-2019-11-20-all.sql root@172.16.1.7:/root/ [root@web01 ~]# mysql -uroot < db-2019-11-20-all.sql [root@web01 ~]# systemctl restart mariadb [root@web01 ~]# MariaDB [(none)]> change master to master_host='master1',master_user='all',master_password='123456'; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> start slave; MariaDB [(none)]> show slave status\G
2.監控Mysql主從的Shell腳本mysql_slave_status.sh
[root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/scripts/mysql_slave_status.sh #!/usr/bin/bash port=$1 key=$2 mysql -uroot -poldxu.com -P${port} -e "show slave status\G"|grep "${key}\:"|awk '{print $2}' 2>/dev/null
3.Shell腳本測試
[root@web01 ~]# sh /etc/zabbix/zabbix_agentd.d/scripts/mysql_slave_status.sh 3306 Slave_SQL_Running Yes [root@web01 ~]# sh /etc/zabbix/zabbix_agentd.d/scripts/mysql_slave_status.sh 3306 Slave_IO_Running Yes [root@web01 ~]# sh /etc/zabbix/zabbix_agentd.d/scripts/mysql_slave_status.sh 3306 Seconds_Behind_Master 0
4.Zabbix自定義Key監控Mysql主從
[root@web01 ~]# cat /etc/zabbix/zabbix_agentd.d/mysql.conf UserParameter=mysql.slave.status[*], /bin/bash /etc/zabbix/zabbix_agentd.d/scripts/mysql_slave_status.sh "$1" "$2" 2>/dev/null
5.重啓Agent
systemctl restart zabbix-agent.service
6.建立監控模板Template Mysql Slave Status
mysql.slave.status[3306,Slave_IO_Running] mysql.slave.status[3306,Slave_SQL_Running] mysql.slave.status[3306,Seconds_Behind_Master]
7.定義觸發器來判斷主從同步是否異常
1.觸發器一: 兩個狀態都要爲Yes {Template MySQL Slave Status:mysql.slave.status[3306,Slave_IO_Running].str(Yes)}=0 or {Template MySQL Slave Status:mysql.slave.status[3306,Slave_SQL_Running].str(Yes)}=0
2.觸發器二: 延時不能超過100 {Template MySQL Slave Status:mysql.slave.status[3306,Seconds_Behind_Master].last()}>100
2.觸發器二: 延時不能超過100 {Template MySQL Slave Status:mysql.slave.status[3306,Seconds_Behind_Master].last()}>100