2019-11-16 day73 zabbix監(jiān)控

1.模板的重要
1.手動添加監(jiān)控比較麻煩,監(jiān)控項(xiàng) -> 圖形 -> 觸發(fā)器刻诊。
問題:
1.例如: 100臺服務(wù)器需要檢查81端口
2.例如: 100臺服務(wù)器81改成82
解決:
使用模板可以解決以上問題, 只需要修改一下模板,然后所有的主機(jī)都生效

2.兩種模板
系統(tǒng)自帶模板
自定義模板

自定義模板的使用
1.創(chuàng)建模板轧叽,模板得屬于某個(gè)主機(jī)組(Templates)
2.在模板中創(chuàng)建監(jiān)控項(xiàng)目、觸發(fā)器、創(chuàng)建圖形
3.新增監(jiān)控主機(jī)時(shí)添加對應(yīng)的模板
4.更改模板的監(jiān)控項(xiàng)掠归,所以使用模板的主機(jī)都會自動變更

建議: 監(jiān)控的時(shí)候都使用模板, 因?yàn)槟0逄砑由兜亩挤奖阈ぞ簦薷囊脖容^方便

1.zabbix監(jiān)控windows

環(huán)境:
1.zabbix server的ip:10.0.0.71
2.被監(jiān)控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.運(yùn)行cmd卢鹦,將zabbix命令注冊為服務(wù)(使用管理員) 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運(yùn)行
查看監(jiān)聽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.防火墻關(guān)閉的可以跳過這步
2.高級設(shè)置->入站規(guī)則->新建規(guī)則->端口->10050->允許連接->所有

7.zabbix頁面上添加windows主機(jī)
1.直接應(yīng)用windows模板
2.驗(yàn)證Windows監(jiān)控是否正常

編寫一個(gè)最簡單的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


2.zabbix監(jiān)控Nginx

1.監(jiān)控Nginx什么內(nèi)容
    監(jiān)控Nginx⑦中狀態(tài)

2.怎么監(jiān)控
    1.開啟Nginx stub status 模塊
    2.使用curl命令獲取stub_status的數(shù)據(jù)
    3.將獲取數(shù)據(jù)的方法封裝為一個(gè)又一個(gè)的監(jiān)控項(xiàng)

3.實(shí)施監(jiān)控
    1.開啟nginx stub_status狀態(tài)
        2.編寫腳本,提取nginx status的指標(biāo)
        [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, 添加自定義監(jiān)控項(xiàng)
        [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獲取監(jiān)控項(xiàng)的值
        [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.創(chuàng)建模板
            2.創(chuàng)建監(jiān)控項(xiàng)
            3.創(chuàng)建圖形
            4.創(chuàng)建觸發(fā)器
            5.關(guān)聯(lián)對應(yīng)主機(jī)
            
1.nginx的狀態(tài)監(jiān)控
2.nginx日志監(jiān)控 { 200 300 301 304 404 403 500 401 ....  這些狀態(tài)出現(xiàn)的次數(shù)}
        1.提取日志
        awk '{print $9}' /var/log/nginx/access.log|grep -c "302"
        
        2.自定義監(jiān)控項(xiàng),支持傳參
        [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.創(chuàng)建模板
        2.創(chuàng)建監(jiān)控項(xiàng)
        3.創(chuàng)建圖形
        4.創(chuàng)建觸發(fā)器
        5.關(guān)聯(lián)對應(yīng)主機(jī)

================================================================================
監(jiān)控php
1.監(jiān)控php端口
2.監(jiān)控php進(jìn)程 master worker
3.監(jiān)控php狀態(tài)

實(shí)施:
    1.如何開啟php狀態(tài)
    2.獲取php狀態(tài)中重要的指標(biāo)
    3.編寫腳本支持傳參

    1.開啟php的狀態(tài)模塊
    [root@web01 ~]# cat /etc/php-fpm.d/www.conf
    ....
    pm.status_path = /fpm_status
    ....
    
    
    2.配置nginx,將http請求轉(zhuǎn)發(fā)給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狀態(tài)指標(biāo)含義
    [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    #當(dāng)前池接受的請求數(shù)
    listen queue:         0     #請求隊(duì)列,如果這個(gè)值不為0,那么需要增加FPM的進(jìn)程數(shù)量
    max listen queue:     0     #請求隊(duì)列最高的數(shù)量
    listen queue len:     128   #socket等待隊(duì)列長度
    idle processes:       5     #空閑進(jìn)程數(shù)量
    active processes:     1     #活躍進(jìn)程數(shù)量
    total processes:      6     #總進(jìn)程數(shù)量
    max active processes: 1     #最大的活躍進(jìn)程數(shù)量(FPM啟動開始計(jì)算)
    max children reached: 0     #超過最大進(jìn)程數(shù)的峰值的次數(shù),如果不為0,需要調(diào)整進(jìn)程的最大活躍進(jìn)程數(shù)量


    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.自定義監(jiān)控項(xiàng),支持傳參
    [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.創(chuàng)建模板
    2.創(chuàng)建監(jiān)控項(xiàng)
    3.創(chuàng)建圖形
    4.創(chuàng)建觸發(fā)器
    5.關(guān)聯(lián)對應(yīng)主機(jī)

==============================================================================
Mysql的基礎(chǔ)監(jiān)控
1.進(jìn)程存活
2.檢測端口

Mysql的高級監(jiān)控說明
Mysql提供show global status可以實(shí)現(xiàn)對Mysql的高級監(jiān)控
高級監(jiān)控包含監(jiān)控Mysql連接數(shù),增刪改查數(shù)劝堪,流量等

其他的監(jiān)控mysql的方式
天兔 (文檔)
percona (視頻)

監(jiān)控命令詳解mysql -uroot -poldxu.com -e 'show global status'
Threads_connected:連接數(shù)
Com_select:查詢總量
Com_insert:插入總量
Com_update:更新總量
Com_delete:刪除總量
Bytes_received: 流入總流量
Bytes_sent:流出總流量
Slow_queries:慢查詢總量

1.編寫取值腳本check_mysql.sh
[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.測試監(jiān)控Shell腳本
[root@web01 ~]# sh /etc/zabbix/zabbix_agentd.d/scripts/mysql_status.sh 3306 Threads_connected

3.Zabbix自定義監(jiān)控項(xiàng)
[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

    重啟agent

4測試能否獲取到值
    zabbix_get -s xxx -k mysql.status[3306,Threads_connected]
    zabbix_get -s xxx -k mysql.status[3306,Com_insert]


5.使用Template DB MySQL模板監(jiān)控Mysql      利用自帶的模板改一改
    mysql.status[3306,Threads_connected]
    mysql.status[3306,Com_select]
    mysql.status[3306,Bytes_received]
    mysql.status[3306,Bytes_sent]


寫一個(gè)測試的程序測一下
[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
==============================================================================
Mysql主從監(jiān)控的必要性
    1.如果發(fā)生主從同步異常冀自,業(yè)務(wù)會出問題
    2.如果從庫是用來備份的,會導(dǎo)致數(shù)據(jù)丟失

Mysql主從同步監(jiān)控說明
    1.從庫運(yùn)行show slave status\G可以來查看主從同步信息
    Slave IO Running    可以觀察從庫的IO進(jìn)程是否正常秒啦,IO進(jìn)程用于同步二進(jìn)制日志
    Slave SQL Running   可以觀察從庫的SQL進(jìn)程是否正常熬粗,SQL進(jìn)程用于執(zhí)行二進(jìn)制日志
    Seconds Behind Master代表主從同步的延時(shí)時(shí)間

在10.0.0.7上配置從庫
[root@web01 ~]# vim /etc/my.cnf
log-bin
server-id=51
[root@web01 ~]# systemctl restart mariadb


[root@db01 ~]# mysql -uroot -p123456
MariaDB [(none)]> grant replocation slave, replication client on *.* to 'rep'@'%' identified by 'Rep123.com';
1.監(jiān)控Mysql主從的Shell腳本mysql_slave_status.sh
[root@db01 ~]# 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

[root@db01 ~]# mysqldump -uroot -p123456 --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@web01 ~]# mysql -uroot -poldxu.com < db-2019-11-23-all.sql 

[root@web01 ~]# mysql -uroot -poldxu.com
MariaDB [(none)]> change master to
    -> master_host='172.16.1.51',
    -> master_user='zabbix_proxy',
    -> master_password='123456';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> start slave;
2.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


3.Zabbix自定義Key監(jiān)控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
    
    重啟Agent


4.創(chuàng)建監(jiān)控模板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]


5.定義解決器來判斷主從同步是否異常

    1.觸發(fā)器一: 兩個(gè)狀態(tài)都要為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.觸發(fā)器二: 延時(shí)不能超過100
    {Template MySQL Slave Status:mysql.slave.status[3306,Seconds_Behind_Master].last()}>100
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市余境,隨后出現(xiàn)的幾起案子驻呐,更是在濱河造成了極大的恐慌,老刑警劉巖芳来,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件含末,死亡現(xiàn)場離奇詭異,居然都是意外死亡即舌,警方通過查閱死者的電腦和手機(jī)佣盒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來顽聂,“玉大人肥惭,你說我怎么就攤上這事∥商拢” “怎么了务豺?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長嗦明。 經(jīng)常有香客問我笼沥,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任奔浅,我火速辦了婚禮馆纳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘汹桦。我一直安慰自己鲁驶,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布舞骆。 她就那樣靜靜地躺著钥弯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪督禽。 梳的紋絲不亂的頭發(fā)上脆霎,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天,我揣著相機(jī)與錄音狈惫,去河邊找鬼睛蛛。 笑死,一個(gè)胖子當(dāng)著我的面吹牛胧谈,可吹牛的內(nèi)容都是我干的忆肾。 我是一名探鬼主播,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了丑勤?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤场仲,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后键袱,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體燎窘,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年蹄咖,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了褐健。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡澜汤,死狀恐怖蚜迅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情俊抵,我是刑警寧澤谁不,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站徽诲,受9級特大地震影響刹帕,放射性物質(zhì)發(fā)生泄漏吵血。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一偷溺、第九天 我趴在偏房一處隱蔽的房頂上張望蹋辅。 院中可真熱鬧,春花似錦挫掏、人聲如沸侦另。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽褒傅。三九已至,卻和暖如春袄友,著一層夾襖步出監(jiān)牢的瞬間殿托,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工杠河, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留碌尔,地道東北人浇辜。 一個(gè)月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓券敌,卻偏偏與公主長得像,于是被迫代替她去往敵國和親柳洋。 傳聞我的和親對象是個(gè)殘疾皇子待诅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評論 2 353