zabbix監控

hx_ky36發表於2024-07-23

一、監控linux 系統

在其他從節點安裝 zabbix agent,然後新增到zabbix server以對其進行資源監控

1.安裝zabbix-agent

安裝依賴環境

yum install gcc libxml2-devel   net-snmp net-snmp-devel   curl curl-devel php php-bcmath php-mbstring mariadb mariadb-devel    libevent-devel    java-1.8.0-openjdk-devel  -y

解壓安裝包 編譯

[root@node2 zabbix-4.0.30]#tar xf zabbix-4.0.30.tar.gz 
[root@node2 zabbix-4.0.30]#cd zabbix-4.0.30/
[root@node2 zabbix-4.0.30]#./configure --prefix=/apps/zabbix --enable-agent
[root@node2 zabbix-4.0.30]#make -j2 && make install

準備service檔案

[root@node2 zabbix-4.0.30]#useradd zabbix
# 新建使用者

[root@node2 zabbix-4.0.30]#vim /usr/lib/systemd/system/zabbix-agent.service 
[Unit]
Description=Zabbix Agent
After=syslog.target
After=network.target
[Service]
Environment="CONFFILE=/apps/zabbix/etc/zabbix_agentd.conf"
EnvironmentFile=-/etc/default/zabbix-agent
Type=forking
Restart=on-failure
PIDFile=/tmp/zabbix_agentd.pid
KillMode=control-group
ExecStart=/apps/zabbix/sbin/zabbix_agentd -c $CONFFILE
ExecStop=/bin/kill -SIGTERM $MAINPID
RestartSec=10s
User=zabbix
Group=zabbix
[Install]
WantedBy=multi-user.target


[root@node2 zabbix-4.0.30]#systemctl daemon-reload
[root@node2 zabbix-4.0.30]#systemctl start  zabbix-agent.service
[root@node2 zabbix-4.0.30]#systemctl status zabbix-agent.service

2.修改配置檔案

[root@node2 etc]#vim /apps/zabbix/etc/zabbix_agentd.conf
94 Server=192.168.100.155   #指向當前zabbix server
##### Passive checks related #被動檢查相關配置


### Option: ListenPort
ListenPort=10050 #監聽埠  預設的無需修改


119 StartAgents=3
#啟動3個程序收集資料

146 Hostname=192.168.100.160
#指定名稱 一般使用 IP地址, 等會需要使用

systemctl restart  zabbix-agent.service
systemctl status zabbix-agent.service 

3.web頁面主控端新增被監控主機

在zabbix web管理介面新增上一步安裝了zabbix agent的linux主機。

新增模板

4.使用命令獲取資料

#在zabbix_server上執行
/apps/zabbix_server/bin/zabbix_get -s 192.168.100.60 -p 10050 -k "agent.ping" -s 指明主機 -k 指明監控項 -p 埠

二、監控tomcat

在192.168.100.160上安裝tomcat

1.tomcat開啟JMX監控

所謂JMX,是Java Management Extensions(Java管理擴充套件)的縮寫,是一個為應用程式植入管理功能的框架。使用者可以在任何Java應用程式中使用這些代理和服務實現管理。

https://www.jianshu.com/p/8c5133cab858

MX在Java程式語言中定義了應用程式以及網路管理和監控的體系結構、設計模式、應用程式介面以及服務,通常使用JMX來監控系統的執行狀態。

vim /usr/local/tomcat/bin/catalina.sh

#一般加在117行 12345為JMX監控的埠號
CATALINA_OPTS="$CATALINA_OPTS  -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=12345 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.100.160" 

systemctl restart tomcat.service 
systemctl status tomcat
ss -napt|grep 12345

CATALINA_OPTS="$CATALINA_OPTS

選項含義
-Dcom.sun.management.jmxremote #啟用遠端監控JMX
-Dcom.sun.management.jmxremote.port=12345 #預設啟動的JMX埠號,要和zabbix新增主機時候的埠 一致即可
-Dcom.sun.management.jmxremote.authenticate=false #不使用使用者名稱密碼
-Dcom.sun.management.jmxremote.ssl=false #不使用ssl認證
-Djava.rmi.server.hostname=x.x.x.x" #tomcat主機自己的IP地址,不要寫zabbix伺服器的地址

2.透過jconsole驗證JMX資料

在windows安裝windows版本的JDK,安裝過程略,安裝完成之後點選安裝目錄的jconsole.exe,比如C:\ProgramFiles\Java\jdk1.8.0_221\bin\jconsole.exe,如下:

3.配置zabbixserver

在主伺服器上配置啟動 javagateway

vim /apps/zabbix_server/sbin/zabbix_java/settings.sh 
#不需要修改
35 START_POLLERS=5  #啟動5個執行緒去採集java資料
43 TIMEOUT=30       #一個資料的超時時間30s

/apps/zabbix_server/sbin/zabbix_java/startup.sh # 啟動gateway服務 ss -antp |grep 10052

配置 zabbix-server 對接 java-gateway

[root@localhost data]#vim /apps/zabbix_server/etc/zabbix_server.conf
282 JavaGateway=192.168.100.160    #指明gateway地址
297 StartJavaPollers=5            #開啟多少個程序去收集java伺服器的資訊
289 JavaGatewayPort=10052         # 預設不用改




[root@localhost ~]#systemctl restart zabbix-server
#快照起不來  重啟機器 
#重啟後不要忘記開啟  javagateway

4.web頁面配置

三、zabbix主動與被動監控模式

1.被動模式

被動模式的優點就是配置簡單,安裝後即可使用,因此也成為zabbix 的預設工作模式,但是被動模式的最大問題就是會加大zabbix server的工作量,在數百甚至數千臺伺服器的環境下會導致zabbix server需要輪訓向每個zabbix agent傳送資料採集指令,如果zabbix server負載很高還會導致不能及時獲取到最新資料,但由於無需其他複雜配置,被設定為了預設的工作方式。

  1. 主伺服器會開啟隨機埠去連線 客戶端的 10050 埠 來獲取資料

  2. 從節點將資料交給主

  3. 主寫入資料庫

  4. 最後展示在 web頁面中

2.主動模式

主動模式是由zabbix agent主動向zabbix server的10051埠發起tcp連線請求,因此主動模式下必須在zabbixagent配置檔案中指定zabbix server的IP或者主機名(必須可以被解析為IP地址),在連線到zabbix server之前zabbix agent是不知道自己要採集那些資料以及間隔多久採集一次資料的,然後在連線到zabbix server以後獲取到自己的監控項和資料採集間隔週期時間,然後再根據監控項採集資料並返回給zabbix server,在主動模式下不再需要zabbix serve向zabbix agent發起連線請求,因此主動模式在一定程度上可減輕zabbix server開啟的本地隨機埠和程序數,在一定程度就減輕看zabbix server的壓力。

  1. 初次連線agent伺服器會開啟隨機埠去連線 服務端的 10051 埠 來獲取 需要監控的資料型別(監控項)

  2. 從節點將資料交給主

  3. 主寫入資料庫

  4. 最後展示在 web頁面中

  5. 此後的資料收集就不需要先去獲取監控專案

修改zabbix agent為主動模式

[root@node2 zabbix]#grep  -in "^[a-z]"  etc/zabbix_agentd.conf
30:LogFile=/tmp/zabbix_agentd.log
94:Server=192.168.91.100  #誰可以來獲取資料
119:StartAgents=3
135:ServerActive=127.0.0.1
146:Hostname=192.168.91.102


[root@node2 zabbix]#vim  /apps/zabbix/etc/zabbix_agentd.conf
修改第135  作為
94:Server=192.168.91.100  #誰可以來獲取資料
135:ServerActive=192.168.91.100  #主動模式的zabbix server地址
146:Hostname=192.168.91.102      #當親主機名字

[root@node2 zabbix]#systemctl restart   zabbix-agent.service

生成主動模式模板

點選全克隆

修改名稱

修改多個

伺服器的磁碟 網路卡個不相同, 模板中有一些自動發現規則,可以適當將 其中的一些選項時間調低點,預設1小時太長了

監控項原型, 自動適配改成你的名字

應用模板

檢視網路卡

四、zabbix proxy

zabbix 作為一個分散式監控系統(分散式監控解決方案),支援透過代理(proxy)收集zabbix agent的監控資料然後由zabbix proxy再把資料傳送給zabbix server,也就是zabbix proxy 可以代替 zabbix server 收集監控資料,然後把資料彙報給 zabbix server,所以zabbix proxy可以在一定程度上分擔了zabbix server 的資料收集壓力,從而降低了資料的採集時間、也相應的增加了zabbix server的監控能力。

另外zabbix proxy也區分主動模式和被動模式,通訊方式與zabbix server主動模式和被動模式一樣,區別是zabbixproxy由於沒有zabbix agent的配置,所以zabbix proxy在主動模式下要向zabbix server週期性的向zabbix server申請獲取zabbix agent的監控項資訊,但是zabbix proxy在被動模式下也是等待zabbix server的連線並接受zabbixserver傳送的監控項指令,然後再有zabbix proxy向zabbix agent發起請求獲取資料。

1.zabbix proxy架構

2.zabbix proxy部署與使用

zabbix proxy的大版本必須要和zabbix server版本一致,否則會導致出現zabbix server與zabbix proxy不相容問

zabbix proxy安裝

編譯安裝proxy軟體

#安裝依賴環境
 yum install gcc libxml2-devel net-snmp net-snmp-devel curl curl-devel php php-bcmath php-mbstring mariadb mariadb-devel java-1.8.0-openjdk-devel -y

./configure --prefix=/apps/zabbix_proxy --enable-proxy --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2

make   install

準備 資料庫

yum install mariadb-server -y
systemctl start mariadb
mysql_secure_installation

準備資料庫

#新建表
create database zabbix_proxy_active  character set utf8 collate utf8_bin;
create database zabbix_proxy_passive character set utf8 collate utf8_bin;
# 授權
grant all privileges on zabbix_proxy_active.* to proxy@'192.168.100.%' identified by '123';
grant all privileges on zabbix_proxy_passive.* to proxy@'192.168.100.%' identified by '123';
grant all privileges on zabbix_proxy_active.* to proxy@'localhost' identified by '123';
grant all privileges on zabbix_proxy_passive.* to proxy@'localhost' identified by '123';


#匯入資料結構
#先去原始碼包目錄
mysql -uproxy -p123 -h192.168.100.140  zabbix_proxy_passive < database/mysql/schema.sql
mysql -uproxy -p123 -h192.168.100.140  zabbix_proxy_active < database/mysql/schema.sql

實現被動模式

zabbix proxy被動配置

伺服器型別地址
zabbix server 192.168.100.155
被動proxy 192.168.100.140
web伺服器IP 192.168.100.160
# vim /apps/zabbix_proxy/etc/zabbix_proxy.conf
ProxyMode=1                 #0為主動,1為被動
Server=192.168.91.100         #zabbix server伺服器的地址或主機名
Hostname=passive               #代理伺服器名稱,需要與zabbix server新增代理時候的proxyname是一致的!
ListenPort=10051             #zabbix proxy監聽埠
LogFile=/tmp/zabbix_proxy.log
EnableRemoteCommands=1         #允許zabbix server執行遠端命令
DBHost=192.168.91.103         #資料庫伺服器地址
DBName=zabbix_proxy_active     #使用的資料庫名稱
DBUser=proxy                 #連線資料庫的使用者名稱稱
DBPassword=123456             #資料庫使用者密碼
DBPort=3306                    #資料庫埠
ProxyLocalBuffer=720         #已經提交到zabbix server的資料保留時間 720小時
ProxyOfflineBuffer=720         #未提交到zabbix server的時間保留時間
HeartbeatFrequency=60         #心跳間隔檢測時間,預設60秒,範圍0-3600秒,被動模式不使用
ConfigFrequency=5             #間隔多少秒從zabbix server獲取監控項資訊
DataSenderFrequency=5         #資料傳送時間間隔,預設為1秒,範圍為1-3600秒,被動模式不使用
StartPollers=20             #啟動的資料採集器數量
JavaGateway=172.31.0.104     #java gateway伺服器地址,當需要監控java的時候必須配置否則監控不到資料
JavaGatewayPort=10052         #Javagatewa服務埠
StartJavaPollers=20         #啟動多少個執行緒採集資料
CacheSize=2G                 #儲存監控項而佔用的最大記憶體
HistoryCacheSize=2G         #儲存監控歷史資料佔用的最大記憶體
HistoryIndexCacheSize=128M     #歷史索引快取的大小
Timeout=30                     #監控項超時時間,單位為秒
LogSlowQueries=3000         #毫秒,多久的資料庫查詢會被記錄到日誌

實際配置

[root@localhost zabbix-4.0.30]#cd /apps/zabbix_proxy/etc/
[root@localhost zabbix_proxy]#vim   zabbix_proxy.conf
13 ProxyMode=1 # 1是被動 #0為主動 修改為1 30 Server=192.168.100.155 # 指向 zabbix伺服器 , 就算是主動模式也需要修改應為不是所有監控項都是主動還有被動的 39 ServerPort=10051 #被動模式可以不修改 應為是 zabbix-server 主動 49 Hostname=passive # web 配置中需要使用, 必須一致 156 DBHost=192.168.100.140 #資料庫地址 167 DBName=zabbix_proxy_passive # 資料庫名字 182 DBUser=proxy #資料庫使用者 192 DBPassword=123 #資料庫密碼 244 ConfigFrequency=5 #間隔多少秒從zabbix server獲取監控項資訊

啟動 proxy 軟體 及proxy 上的agent

[root@localhost zabbix-4.0.30]#useradd zabbix
[root@localhost zabbix-4.0.30]#chown zabbix:zabbix /apps/zabbix_proxy/ -R
[root@localhost zabbix-4.0.30]#/apps/zabbix_proxy/sbin/zabbix_proxy 
[root@localhost zabbix-4.0.30]#ss -natpl |grep 10051
[root@localhost zabbix-4.0.30]#/apps/zabbix_proxy/sbin/zabbix_agentd
# 一定要開

web端新增代理

修改被監控端指向 .140 代理

[root@localhost ~]# vim /apps/zabbix/etc/zabbix_agentd.conf
94 Server=192.168.100.155,192.168.100.140
#被動模式  允許  .140代理 來獲取資料
[root@localhost ~]#systemctl  restart   zabbix-agent.service 
[root@localhost ~]#systemctl  status   zabbix-agent.service 

實現主動模式

修改配置檔案

[root@localhost zabbix-4.0.30]#cd /apps/zabbix_proxy/etc/
[root@localhost zabbix_proxy]#vim   /apps/zabbix_proxy/etc/zabbix_proxy.conf
13 ProxyMode=0
# 1是被動   0為主動  需要開啟

31 Server=192.168.100.155
# 指向 zabbix伺服器 , 就算是主動模式也需要修改應為不是所有監控項都是主動還有被動的

40 ServerPort=10051
#被動模式可以不修改  應為是  zabbix-server 主動

50 Hostname=active
# web 配置中需要使用, 必須一致

158 DBHost=192.168.91.103
#資料庫地址

169 DBName=zabbix_proxy_active
# 資料庫名字

184 DBUser=proxy
#資料庫使用者

192 DBPassword=123
#資料庫密碼

啟動

[root@localhost zabbix-4.0.30]#useradd zabbix
[root@localhost zabbix-4.0.30]#/apps/zabbix_proxy/sbin/zabbix_agentd
[root@localhost zabbix-4.0.30]#/apps/zabbix_proxy/sbin/zabbix_proxy 
[root@localhost zabbix-4.0.30]#ss -natpl |grep 10051

web設定

相關文章