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

@

實戰

Zabbix server源碼安裝使用示例

部署

# 下載zabbix的源碼包
wget //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

image-20221107143458097

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

image-20221107151956408

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的進程資訊和監聽埠

image-20221107152528723

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

image-20221107152635925

Zabbix agent2使用示例

部署

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

# 安裝Zabbix倉庫
rpm -Uvh //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

image-20221107121325467

配置

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

image-20221107121935980

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

image-20221107154254215

Zabbix proxy使用示例

部署

# 安裝Zabbix倉庫
rpm -Uvh //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,默認主動模式

image-20221108124047459

也可以選擇被動模式

image-20221108122826568

部署、配置和啟動另外一台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]驗證獲取監控項可用

image-20221108133608406

通過Zabbix的web的配置-主機,創建新的主機,並選擇由agent程式監測中上面新創建的Zabbix proxy,點擊添加按鈕

image-20221108124921763

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

image-20221108133439021

自定義監控使用示例

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

  • 客戶端

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

    image-20221108183009055

    • 根據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
    

    image-20221108183739303

  • 服務端

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

    image-20221108184229002

    • web頁面鍵值與監控項關聯並測試,在配置-主機中,找到剛才的部署自定義監控的客戶端的主機,點擊監控項進入後創建監控項,輸入鍵值,可以

image-20221108184542337

在監測-最新數據,找到主機後查看監控項最新值為當前正確的值

image-20221108185227291

觸發器使用示例

點擊配置-主機,找到上面創建主機名稱為agent2-host1,點擊觸發器,然後通過右上方的創建觸發器,輸入名稱、添加問題表現形和恢復表達式

image-20221109164141727

點擊添加按鈕,回到觸發器列表,通過名稱點擊”應用”按鈕查詢到剛才添加的觸發器資訊

image-20221109164313797

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

image-20221109164828290

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

image-20221109165015421

圖形使用示例

配置-主機,找到上面創建主機名稱為agent2-host1,點擊圖形,右上角點擊添加圖形按鈕,輸入圖形名稱和監控項圖形設置

image-20221109171320703

可以點擊預覽查看圖形

image-20221109171542615

模板使用示例

  • 創建模板,在配置-模板中添加模板,點擊添加

image-20221109175436395

  • 添加自定義監控項

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

image-20221109175552031

選擇目標類型為模板,模板名稱為剛創建的web template,點擊複製

image-20221109175644164

  • 添加觸發器

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

image-20221109180118775

  • 添加圖形

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

image-20221109180013408

通過上面的添加監控項、觸發器、圖形後後查看模板已有對應的資訊

image-20221109180251007

  • 模板關聯主機

在主機列表中勾選需要綁定模板的主機,查看當前監控項、觸發器、圖形的數量

image-20221109180747878

點擊「批量更新」按鈕,勾選模板連接,選擇上面創建模板web template,點擊更新按鈕

image-20221109182707872

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

image-20221109182759935

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

image-20221109183325305

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

image-20221109183528623

SNMP監控使用示例

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

image-20221110103554807

# 被監控端開啟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

image-20221110104517174

在配置-主機中找到agent2-host1(192.168.5.98),點擊修改模板為linux snmp模板和添加snmp介面,點擊更新按鈕

image-20221110111533167

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

image-20221110112537546

自動發現使用示例

自動發現為服務端主動掃描區域網內所有的機器有則添加,配置簡單方便,效率不高。

  • 配置自動發現規則

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

image-20221110122246602

配置-自動發現配置發現規則,先選擇沒有agent代理程式,IP範圍,添加檢查類型,最後添加添加按鈕

image-20221110123035491

配置-動作中發現動作中,點擊右上角的創建動作,輸入名稱和條件

image-20221110123802310

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

image-20221110124524294

切換到操作頁面,添加操作詳情,包括添加主機、添加到主機群組、鏈接到模板、啟動主機,最後點擊添加按鈕

image-20221110125751631

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

image-20221110125844401

自動註冊使用示例

自動註冊為客戶端主動向服務端註冊,服務端只需要等待與驗證即可,配置有點複雜,效率高。

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

然後再刪除上面的自動發現的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
  • 配置-動作-自動註冊動作,點擊創建動作,輸入如下名稱和條件

image-20221110143518340

切換到操作按鈕,配置和上面自動發現操作一樣,點擊添加按鈕

image-20221110141539591

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

過幾分鐘後查看有2台主機主動註冊的資訊

image-20221110143609302

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介面,點擊添加按鈕

image-20221110153105691

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

image-20221110170420660

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

Tags: