成熟企業級開源監控解決方案Zabbix6.2關鍵功能實戰-下

2022-11-11 06:00:54

@

實戰

Zabbix server原始碼安裝使用範例

部署

# 下載zabbix的原始碼包
wget https://github.com/zabbix/zabbix/archive/refs/tags/6.2.4.tar.gz
# 解壓下載好的zabbix源安裝包
mkdir /usr/local/zabbix
tar -zxvf zabbix-6.2.4.tar.gz -C /usr/local/zabbix/
# 為編譯安裝依賴
yum -y install net-snmp-devel libevent-devel mysql-devel libxml2-devel curl-devel gcc gcc-c++ pcre-devel OpenIPMI-devel
cd /usr/local/zabbix/zabbix-6.2.4
./configure --prefix=/usr/local/zabbix/ --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-openipmi
make install

設定

mysql就使用前面部署好的容器zabbix-docker-624_mysql-server_1,通過docker inspect zabbix-docker-624_mysql-server_1找到"IPAddress": "172.16.239.2"

vi /usr/local/zabbix/etc/zabbix_server.conf

DBHost=172.16.239.2                      ---資料庫本機
DBName=zabbix                         ---資料庫庫名   
DBUser=zabbix                         ---資料庫賬號
DBPassword=zabbix                        ---資料庫密碼
DBSocket=/var/lib/mysql/mysql.sock    ---指定sock路徑
ListenPort=10051                      ---伺服器端監聽埠
ListenIP=0.0.0.0                      ---監聽IP範圍
# 停掉基於容器的zabbix-agent和zabbix-server
docker stop zabbix-agent1
docker stop zabbix-docker-624_zabbix-server_1
# 複製啟動設定
cp /usr/local/zabbix/zabbix-6.2.4/misc/init.d/fedora/core/zabbix_server /etc/init.d/
# 修改BASEDIR
vim /etc/init.d/zabbix_server
BASEDIR=/usr/local/zabbix
# 啟動zabbix-server
service zabbix_server start

由於前面是容器啟動修改主機Zabbix server,這裡修改為本機127.0.0.1地址,

vi /usr/local/zabbix/etc/zabbix_agentd.conf ,下面這三項保持預設設定即可

Server=127.0.0.1         ---填寫server端IP,server連結agent獲取資料           
ServerActive=127.0.0.1   ---填寫server端IP,agent主動提交資料
Hostname=Zabbix server   ---給agent設定一個名字,預設為Zabbix server
# 複製服務設定
cp /usr/local/zabbix/zabbix-6.2.4/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
vi /etc/init.d/zabbix_agentd
BASEDIR=/usr/local/zabbix
# 啟動服務
service zabbix_agentd start

檢視zabbix-server和zabbix-agent的程序資訊和監聽埠

等待一小段時間後檢視web的主機資訊Zabbix server已為可用狀態

Zabbix agent2使用範例

部署

部署Agent和Agent2使用rpm安裝是比較方便的

# 安裝Zabbix倉庫
rpm -Uvh https://repo.zabbix.com/zabbix/6.2/rhel/7/x86_64/zabbix-release-6.2-3.el7.noarch.rpm
yum clean all
# 安裝Zabbix agent2
yum install zabbix-agent2 zabbix-agent2-plugin-*

編輯zabbix-agent2的組態檔 vi /etc/zabbix/zabbix_agent2.conf

# 被動檢查相關設定,允許zabbix-server的IP到當前伺服器上獲取資料,可以寫多個IP
Server=192.168.50.95
# Option: Hostname ,區分大小寫且在zabbix server唯一的值
Hostname=agent2-host1
# Server和ServerActive都是zabbix_server端的ip
ServerActive=192.168.50.95

啟動zabbix-agent2

systemctl start zabbix-agent2
systemctl enable zabbix-agent2
netstat -ntulp |grep 10050

設定

  • 建立名稱為agent-group的主機組
  • 建立名稱為agent2-host1的主機,選擇模板群組Templates下的Linux by Zabbix agent模板,新增Agent

等待一小段時間後檢視web的主機資訊agent2-host1已為可用狀態

Zabbix proxy使用範例

部署

# 安裝Zabbix倉庫
rpm -Uvh https://repo.zabbix.com/zabbix/6.2/rhel/7/x86_64/zabbix-release-6.2-3.el7.noarch.rpm
yum clean all
# 安裝zabbix-proxy
yum install zabbix-proxy-mysql zabbix-sql-scripts zabbix-selinux-policy

在資料庫主機上執行以下程式碼。

# mysql -uroot -ppassword
mysql> create database zabbix_proxy character set utf8mb4 collate utf8mb4_bin;
mysql> create user zabbix@localhost identified by 'password';
mysql> grant all privileges on zabbix_proxy.* to zabbix@localhost;
mysql> set global log_bin_trust_function_creators = 1;
mysql> quit;

匯入初始架構和資料,系統將提示您輸入新建立的密碼。

cat /usr/share/zabbix-sql-scripts/mysql/proxy.sql | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix_proxy
mysql> set global log_bin_trust_function_creators = 0;

設定

編輯組態檔 vim /etc/zabbix/zabbix_proxy.conf

# 0 - proxy in the active mode主動,1 - proxy in the passive mode被動
ProxyMode=0
#填寫zabbix-server所在伺服器IP
Server=192.168.5.95
Hostname=Zabbix proxy
DBHost=192.168.5.52
DBName=zabbix_proxy
DBUser=zabbix
DBPassword=zabbix
DBSocket=/var/lib/mysql/mysql.sock
DBPort=3306
#更新組態檔頻率
ConfigFrequency=300
# 啟動zabbix-proxy
systemctl start zabbix-proxy

通過Zabbix的web的管理-Proxy中建立Proxy,名稱為hostname一致也即是Zabbix proxy,預設主動模式

也可以選擇被動模式

部署、設定和啟動另外一臺Agent,主機名稱為agent2-host2

# 設定為zabbix proxy的地址
Server=192.168.5.52
# Option: Hostname ,區分大小寫且在zabbix server唯一的值
Hostname=agent2-host2
# 設定為zabbix proxy的地址
ServerActive=192.168.5.52

yum install -y zabbix-get後通過zabbix_get -s 192.168.5.53 -p 10050 -k vm.memory.size[available]驗證獲取監控項可用

通過Zabbix的web的設定-主機,建立新的主機,並選擇由agent程式監測中上面新建立的Zabbix proxy,點選新增按鈕

過一會檢視設定-主機可以看到agent2-host2主機通過Zabbix proxy上報到Zabbix server,實現分散式監控(主動模式)

自定義監控使用範例

如果模板沒有我們需要的監控項,可以使用自定義監控來實現。自定義監控流程如下:

  • 使用者端

    • 通過命令、指令碼取出對應的值。
    # 本機81埠是否存在,>0則存在
    ss -lntup | grep -w 81 | wc -l
    

    • 根據Zabbix的要求格式書寫組態檔,建立鍵值。
    # 在zabbix_agent的組態檔中/etc/zabbix/zabbix_agent2.conf可以看到Include的設定項
    Include=/etc/zabbix/zabbix_agent2.d/*.conf
    # 在/etc/zabbix/zabbix_agent2.d/目錄下建立web.conf的檔案,UserParameter=key,cmd,key為鍵值,建議採用x.y.z格式,cmd可以為命令或者指令碼,指令碼如sh /home/a.sh
    vim /etc/zabbix/zabbix_agent2.d/web.conf
    UserParameter=nginx.port_count,ss -lntup | grep -w 81 | wc -l
    
    • 重啟使用者端測試鍵值是否可用。
    # 重啟zabbix-agent2
    systemctl restart zabbix-agent2
    # 通過使用者端查設定,nginx.port_count值為1
    zabbix_agent2 -t nginx.port_count
    # 殺死nginx
    pkill nginx
    # 再次使用者端查設定,nginx.port_count值為0
    zabbix_agent2 -t nginx.port_count
    

  • 伺服器端

    • 測試鍵值是否
    # 重新啟動nginx
    systemctl start nginx
    # 在zabbix server端執行,成功取得使用者端的監控項值
    zabbix_get -s 192.168.5.98 -p 10050 -k nginx.port_count
    

    • web頁面鍵值與監控項關聯並測試,在設定-主機中,找到剛才的部署自定義監控的使用者端的主機,點選監控項進入後建立監控項,輸入鍵值,可以

在監測-最新資料,找到主機後檢視監控項最新值為當前正確的值

觸發器使用範例

點選設定-主機,找到上面建立主機名稱為agent2-host1,點選觸發器,然後通過右上方的建立觸發器,輸入名稱、新增問題表現形和恢復表示式

點選新增按鈕,回到觸發器列表,通過名稱點選"應用"按鈕查詢到剛才新增的觸發器資訊

通過殺死主機agent2-host1上的nginx程序(pkill nginx),過一會檢視監測-儀表盤中的當前問題可以看到觸發了問題結果。

重啟啟動nginx過一小會後,在儀表盤的當前問題就消失了,而在監測-問題中的最近的問題和歷史記錄可以看到問題已經觸發恢復表示式狀態自動變為為「已解決」,且剛恢復幾分鐘內zabbix還是非常比較人性化將「已解決」狀態字眼呈現一閃一閃更為生動。

圖形使用範例

設定-主機,找到上面建立主機名稱為agent2-host1,點選圖形,右上角點選新增圖形按鈕,輸入圖形名稱和監控項圖形設定

可以點選預覽檢檢視形

模板使用範例

  • 建立模板,在設定-模板中新增模板,點選新增

  • 新增自定義監控項

從對應主機找到所需的監控項,勾選監控項後點選複製按鈕,

選擇目標型別為模板,模板名稱為剛建立的web template,點選複製

  • 新增觸發器

觸發器和上面的監控項一樣通過複製的方式操作

  • 新增圖形

圖形和上面的監控項一樣通過複製的方式操作

通過上面的新增監控項、觸發器、圖形後後檢視模板已有對應的資訊

  • 模板關聯主機

在主機列表中勾選需要繫結模板的主機,檢視當前監控項、觸發器、圖形的數量

點選「批次更新」按鈕,勾選模板連線,選擇上面建立模板web template,點選更新按鈕

在主機列表中可以看到監控項、觸發器、圖形的數量都增加了一個

將自定義監控使用範例中建立的/etc/zabbix/zabbix_agent2.d/web.conf分發到agent2-host2上,重啟agent2-host2的zabbix-agent2

由於agent2-host2上面沒有nginx服務,所以檢視監測-儀表盤中當前問題可以看到agent2-host2主機觸發了,驗證模板已係結到主機的流程

SNMP監控使用範例

# 這裡先linux開啟SNMP做例子,但後續SNMP更多在互動機、路由器使用
yum install net-snmp net-snmp-utils -y
# 修改組態檔,新增一個採集項.1,意味著可以採集到所有mib tree的資訊,
vim /etc/snmp/snmpd.conf
view    all    included   .1

# 被監控端開啟snmp服務
systemctl start snmpd
# 監控端開啟的服務(如果允許被監控端啟動主動監控時啟用)
systemctl start snmptrapd
# snmpget測試
snmpget -v 2c -c public 192.168.5.98 sysName.0
# snmpwalk測試
snmpwalk -v 2c -c public 192.168.5.98 sysName.0
snmpwalk -v 2c -c public 192.168.5.98 .1.3.6.1.2.1.1.1

在設定-主機中找到agent2-host1(192.168.5.98),點選修改模板為linux snmp模板和新增snmp介面,點選更新按鈕

等待一小段時間後,還可以再主機的宏新增變數{$SNMP_COMMUNITY}為public的值,主機的snmp服務監控已變為「可用狀態」

自動發現使用範例

自動發現為伺服器端主動掃描區域網內所有的機器有則新增,設定簡單方便,效率不高。

  • 設定自動發現規則

先勾選前面頁面建立的主機,點選刪除將原來主機資訊刪除掉

設定-自動發現設定發現規則,先選擇沒有agent代理程式,IP範圍,新增檢查型別,最後新增新增按鈕

設定-動作中發現動作中,點選右上角的建立動作,輸入名稱和條件

再新增一個auto discover host with agent的發現規則,選擇Zabbix proxy為agent代理程式自動發現,新增IP範圍,點選新增

切換到操作頁面,新增操作詳情,包括新增主機、新增到主機群組、連結到模板、啟動主機,最後點選新增按鈕

稍等一小會檢視主機列表多了兩個自動發現的主機資訊

自動註冊使用範例

自動註冊為使用者端主動向伺服器端註冊,伺服器端只需要等待與驗證即可,設定有點複雜,效率高。

先關閉上面的自動發現的規則(自動發現規則列表對應的規則右方單擊「已啟用」之後變為"停用"狀態即可)和自動發現的動作(發現動作列表對應的動作右方單擊「已啟用」之後變為"停用"狀態即可)

然後再刪除上面的自動發現的2個主機資訊

  • 修改Zabbix 使用者端組態檔,vim /etc/zabbix/zabbix_agentd.conf
# ServerActive按照實際填寫為zabbix-server或zabbix-proxy
ServerActive=192.168.50.95
# 主機唯一標識名稱
Hostname=agent2-host1
# 主機的後設資料屬性
HostMetadata=agent2-host1
# 自動獲取主機名,與Hostname二選一
HostnameItem=system.hostname
# 自動獲取主機的後設資料,與HostMetadata二選一
HostMetadataItem=system.hostname
  • 設定-動作-自動註冊動作,點選建立動作,輸入如下名稱和條件

切換到操作按鈕,設定和上面自動發現操作一樣,點選新增按鈕

  • 重啟zabbix-agent2(systemctl restart zabbix-agent2)

過幾分鐘後檢視有2臺主機主動註冊的資訊

JMX監控使用範例

從 Zabbix 2.0 開始,以 Zabbix 守護行程方式原生支援監控 JMX 應用程式就存在了,稱之為「Zabbix Java gateway」。JMX可用於監控java的應用程式,例如常見的tomcat服務,提前安裝好tomcat。

  • 安裝zabbix-java-gateway
yum install zabbix-java-gateway
  • 修改zabbix_java_gateway組態檔,vim /etc/zabbix/zabbix_java_gateway.conf
START_POLLERS=5
  • 啟動zabbix-java-gateway
# 啟動zabbix-java-gateway
systemctl restart zabbix-java-gateway
# 開啟自啟動
systemctl enable zabbix-java-gateway
  • 修改Zabbix Server設定 關聯 Java 閘道器
JavaGateway=192.168.5.52
JavaGatewayPort=10052
StartJavaPollers=5
  • 重啟zabbix-server

  • 修改tomcat啟動指令碼,vim tomcat/bin/catalina.sh,在OS specific support. $var must be set to either true or false的前面新增下面一行即可

#!/bin/sh  
CATALINA_OPTS="-Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
  • 建立主機,模板選擇Apache Tomcat by JMX,介面為JMX介面,點選新增按鈕

過一會檢視主機名稱為tomcat-host的資訊,JMX服務以為可用

**本人部落格網站 **IT小神 www.itxiaoshen.com