zabbix監控服務

1.模板的重要

1.手動添加監控比較麻煩,監控項 -> 圖形 -> 觸發器。php

問題:
        1.例如: 100臺服務器須要檢查81端口
        2.例如: 100臺服務器81改爲82
解決:
        使用模板能夠解決以上問題, 只須要修改一下模板,而後全部的主機都生效

2.兩種模板

系統自帶模板
自定義模板
自定義模板的使用
1.建立模板,模板得屬於某個主機組(Templates)
2.在模板中建立監控項目、觸發器、建立圖形
3.新增監控主機時添加對應的模板
4.更改模板的監控項,因此使用模板的主機都會自動變動
建議: 監控的時候都使用模板, 由於模板添加啥的都方便,修改也比較方便

3.zabbix監控windows

環境:
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

4.zabbix監控Nginx狀態

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.關聯對應主機

在這裏插入圖片描述

5.nginx日誌監控 { 200 300 301 304 404 403 500 401 .... 這些狀態出現的次數}

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.關聯對應主機

在這裏插入圖片描述

6.zabbix監控php

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.關聯對應主機

在這裏插入圖片描述

7.Mysql的基礎監控

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

在這裏插入圖片描述

8.Mysql主從監控的必要性

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

相關文章
相關標籤/搜索