天天看點

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

Zabbix 監控平台搭建 —服務監控

前言

在Zabbix 監控平台搭建一文中,已經将Zabbix的基礎理論知識以及基礎搭建過程大緻展示了一遍,本文主要内容是展示Zabbix其他的監控功能以及與生産工具結合使用的搭建過程,如有錯誤或者遺漏的地方,歡迎大家指正,謝謝。

基礎理論說明

請閱讀Zabbix 監控平台搭建一文來擷取Zabbix的基本理論知識。

實驗步驟

實驗目的:搭建展示其他監控功能

實驗準備:3台Centos标準系統虛拟機(防火牆與selinux已關閉)

Zabbix服務端使用Centos7,其餘虛拟機系統任意。(6或7)

實驗規劃:

本試驗由于被監控端服務不同,此處不做規劃。

PS:Zabbix服務端搭建見Zabbix 監控平台搭建

一、Zabbix監控nginx的活動量

主機規劃

伺服器角色 IP
Zabbix服務端 192.168.10.20
Nginx伺服器(被監控端) 192.168.10.21

1.被監控端配置Nginx服務

安裝依賴

yum -y install gcc gcc-c++ zlib zlib-devel pcre pcre-devel
           

準備Nginx軟體包,解壓編譯安裝。

tar -zxvf nginx-1.13.8.tar.gz
cd nginx-1.13.8
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module # 指定安裝路徑、指定使用者、組、開啟http狀态統計子產品
make && make install
useradd -s /sbin/nologin -M nginx # 建立運作使用者
           

修改nginx的配置檔案,開啟狀态統計子產品.

vim /usr/local/nginx/conf/nginx.conf

# 在server區域下添加資訊。
location /ngx_status {
		stub_status on;
	}
           
Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

儲存退出,編寫用戶端腳本。

vim nginx.sh

#!/bin/bash
	 
HOST="127.0.0.1"
PORT="80"
	 
# 檢測 nginx 程序是否存在
function ping {
	/sbin/pidof nginx | wc -l 
}
 
# 檢測 nginx 性能
function active {
	/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Active' | awk '{print $NF}'
}
	
function reading {
	/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Reading' | awk '{print $2}'
}
	
function writing {
	/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Writing' | awk '{print $4}'
}
	
function waiting {
	/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
}

function accepts {
	/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $1}'
}

function handled {
	/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $2}'
}
	
function requests {
	/usr/bin/curl "http://$HOST:$PORT/ngx_status/" 2>/dev/null| awk NR==3 | awk '{print $3}'
}

# 執行function
$1
           

儲存退出,給腳本賦予執行權限。啟動Nginx服務後測試腳本。

chmod a+x nginx.sh
ln -s /usr/local/nginx/sbin/* /usr/local/bin # 做好軟連結,友善調用Nginx
echo "123" > /usr/local/nginx/html/index.html # 添加網頁内容
nginx -t # 檢測Nginx配置檔案是否有問題
nginx # 啟動Nginx服務
./nginx.sh ping # 測試腳本
           
Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

傳回值為1,代表服務運作正常。關閉nginx服務測試腳本。

pkill nginx
./nginx.sh ping
           
Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

傳回值為0,代表服務運作異常。

安裝agent端,修改配置檔案,将腳本放入指定目錄,啟動服務。

yum -y install zabbix-agent-3.2.1-1.el6.x86_64.rpm
vim /etc/zabbix/zabbix_agentd.conf

# 修改95行,指定zabbix伺服器的IP或域名
Server=192.168.10.20
# 修改136行,指定主動方案中的zabbix伺服器的IP或域名
ServerActive=192.168.10.20
# 修改147行,指定本機的主機名,此項必須與web界面配置項一緻
Hostname=192.168.10.21
# 取消284行,開啟自定義子產品
UnsafeUserParameters=1
# 取消293行,配置自定義子產品。
UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx.sh $1

mv nginx.sh /etc/zabbix/zabbix_agentd.d/

service zabbix-agent start
           

新複制會話,建立通路循環,以便測試通路量。

2.配置監控端

安裝Zabbix探測工具,進行探測測試。

yum -y install zabbix-get-3.2.1-1.el7.x86_64.rpm
zabbix_get -s 192.168.10.21 -k 'nginx.status[ping]'
           
Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

啟動服務端Nginx,再次探測。

zabbix_get -s 192.168.10.21 -k 'nginx.status[ping]'
zabbix_get -s 192.168.10.21 -k 'nginx.status[accepts]'
           
Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

探測成功,傳回浏覽器監控端添加主機。

導入nginx模闆,添加監控nginx的主機

配置→模版→導入

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

然後點選主機,建立主機,設定主機名稱、IP位址、模闆、主機資産記錄、加密等,然後檢視監控的各項名額情況。

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

監控模版設定

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

點選添加,添加監控主機,等待片刻後開始監控。

檢視Nginx通路量

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

監控中→聚合圖形,添加自定義監控項目。

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

監測成功,成功擷取Nginx服務資訊。

二、Zabbix監控MySQL資料庫

還原被監控端,監控端删除被監控Nginx主機。

主機規劃

伺服器角色 IP
Zabbix服務端 192.168.10.20
MySQL資料庫 192.168.10.10

1.被監控端配置MySQL資料庫

安裝資料庫,配置基本資訊。

yum -y install mysql mysql-server # 在CentOS7裡需安裝maridb-server
service mysqld start
mysqladmin -uroot password 123 # 建立MySQL初始密碼
mysql -uroot -p123
GRANT ALL ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY 'zabbix'; # 建立連接配接通路使用者
FLUSH PRIVILEGES; # 重新整理權限表
quit
           

安裝agent端

yum -y install zabbix-agent-3.2.1-1.el6.x86_64.rpm
           

配置使用者連接配接資訊檔案

vim /etc/zabbix/.my.cnf

# 填寫以下資訊
[client]
user=zabbix
password=zabbix
           

配置MySQL監控模版

cd /etc/zabbix/zabbix_agentd.d/
cp -a userparameter_mysql.conf userparameter_mysql.conf.bak # 備份該配置檔案
vim userparameter_mysql.conf

# 修改第5行,指定模版檔案存放目錄。
UserParameter=mysql.status[*],echo "show global status where Variable_name='$1';" | HOME=/etc/zabbix mysql -N | awk '{print $$2}'
# 修改第17行,指定模版檔案存放目錄。
UserParameter=mysql.ping,HOME=/etc/zabbix mysqladmin ping | grep -c aliveUserParameter=mysql.version,mysql -V
           
Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

修改agent端配置檔案

vim /etc/zabbix/zabbix_agentd.conf

# 修改95行,指定zabbix伺服器的IP或域名
Server=192.168.10.20
# 修改136行,指定主動方案中的zabbix伺服器的IP或域名
ServerActive=192.168.10.20
# 修改147行,指定本機的主機名,此項必須與web界面配置項一緻
Hostname=192.168.10.10
           

儲存退出,啟動zabbix-agent服務。

service zabbix-agent start
netstat -antp | grep :10050
           
Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

2.配置監控端

點選配置建立主機設定主機、模闆、主機資産記錄、加密等

一段時間後,檢視mysql伺服器的監控狀态。

主機資訊

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

模版配置

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

點選添加,過一段時間檢視監控内容。

建立聚合圖形,檢視MySQL伺服器的帶寬,操作數,負載等資訊。

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

監測成功。

三、Zabbix自動發現設定

假設zabbix-server伺服器已經配置完成,zabbix-agent端也已經通過批量部署完畢。那麼這時候就需要我們在zabbix的監控頁面進行添加工作了,如果隻有10幾台機器還好說。但是生産環境中基本上都是動辄上百台的虛拟機,添加主機的工作量就非常巨大了,而且無腦的重複性勞動是毫無意義。而Zabbix的自動發現功能解決了這個問題。

還原被監控端,監控端删除被監控端。

主機規劃

伺服器角色 IP
Zabbix服務端 192.168.10.20
被監控端1 192.168.10.10
被監控端2 192.168.10.11

1.被監控端配置

兩台被監控端安裝agent端,修改配置檔案。

yum -y install zabbix-agent-3.2.1-1.el6.x86_64.rpm
vim /etc/zabbix/zabbix_agentd.conf

# 修改95行,指定zabbix伺服器的IP或域名
Server=192.168.10.20
# 修改136行,指定主動方案中的zabbix伺服器的IP或域名
ServerActive=192.168.10.20
# 修改147行,指定本機的主機名,此項必須與web界面配置項一緻
Hostname=192.168.10.10
           

ps:注意兩台機器的主機名!!!

安裝apache服務,開啟apache服務。

yum -y install httpd # 安裝apache
echo "123" > /var/www/html/index.html # 填寫網頁内容
service httpd start # 啟動服務
curl localhost # 通路測試
           
Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

啟動Zabbix-agent服務

service zabbix-agent start
netstat -antp | grep :10050
           
Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

2.配置監控端

傳回浏覽器的監控端,開始配置自動發現。

配置動作

先建立動作,再配置自動發現。

配置→動作→選擇自動發現→建立動作

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

配置動作

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

配置操作

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

點選添加,當動作條件滿足,才能開始執行操作。

配置自動發現

配置→自動發現→建立自動發現規則

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

點選添加,完成配置。

ps:該過程困難較慢,需要等待一段時間。

3.檢視自動發現的主機

檢測中→自動發現

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

成功發現配置的被監控端

進入監控頁面檢視

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

成功觸發動作,添加了兩台主機。

四、Zabbix綁定釘釘進行報警提示

1.添加釘釘機器人

在釘釘工作群内建立智能機器人

郵件點選選擇群設定

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

點選添加機器人,機器人設定如下。

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

勾選同意協定,完成設定。

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

點選完成設定

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

添加成功

2.配置告警腳本

vim /etc/zabbix/zabbix_server.conf

# 檢視455行,檢視Zabbix腳本存放目錄或自行定義
AlertScriptsPath=/usr/lib/zabbix/alertscripts

cd /usr/lib/zabbix/alertscripts/
vim token.sh # 建立告警腳本

#!/bin/bash
to=$1
subject=$2
text=$3
curl 'https://oapi.dingtalk.com/robot/send?access_token=d84c01cc34d5b5443de7ca887e2f4184b0261e93c94429d70f7a390ac579b7d4' \ # 設定剛剛配置機器人的Wedhook
    -H 'Content-Type: application/json' \
    -d '
    {"msgtype": "text",
        "text": {
            "content": "'"$text"'"
        },
        "at":{
            "atMobiles": [ 
                "'"$1"'" 
        ],
        "isAtAll": false
        }
    }'
           

儲存退出,賦予腳本執行權限與使用者群組權限。

chown zabbix.zabbix token.sh
chmod +x token.sh
           

測試腳本是否能與釘釘建立通信。

./token.sh 13221612875 aa 
yajunxitou
           
Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

釘釘成功接受到發送的資訊

3.Zabbix綁定釘釘

建立報警媒介類型

管理→報警媒介類型→建立報警媒介

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

報警媒介配置

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

點選完成,報警媒介添加成功。

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

建立動作

配置→動作→觸發器→建立動作

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

配置故障操作

預設接收人設定為
故障{TRIGGER.STATUS},伺服器:{HOSTNAME1}發生: {TRIGGER.NAME}故障!

預設資訊設為
告警主機:{HOSTNAME1}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警資訊: {TRIGGER.NAME}
告警項目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
目前狀态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}
for yajunxitou
           

ps:最後一行為配置機器人時的安全設定的自定義關鍵詞!

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

配置恢複操作

預設接收人設定為
恢複{TRIGGER.STATUS}, 伺服器:{HOSTNAME1}: {TRIGGER.NAME}已恢複!

預設資訊設為
告警主機:{HOSTNAME1}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警資訊: {TRIGGER.NAME}
告警項目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
目前狀态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}
for yajunxitou
           

ps:最後一行為配置機器人時的安全設定的自定義關鍵詞!

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

配置使用者權限

管理→使用者→Admin

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

點選報警媒介添加釘釘報警媒介

Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控
Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

4.測試釘釘告警

關閉任意一台被監測主機的http服務(模拟故障)

service httpd stop
           
Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

錯誤報警提示成功。

開啟httpd服務(模拟修複)

service httpd start
           
Zabbix 監控平台搭建 —服務監控Zabbix 監控平台搭建 —服務監控

本文于2020年11月25日由Vonmerlot整理成文。