1. 程式人生 > 其它 >zabbix 監控系統概述及部署

zabbix 監控系統概述及部署

zabbix 監控系統概述及部署

1、Zabbix是什麼:

  • zabbix是一個個基於web界而的提供分散式系統監視以及網路監視功能的企業級的開源解決方案.
  • zabbix能監視各種網路引數,保證伺服器系統的安全運營,並提供靈活的通知機制以讓理員快速定位/解決存在的各種問題.
  • zabbix由2部分構成。zabbix server 與可選元件zabbix agent 通過C/S模式採集資料,通過B/S模式在web端展示和配置.
  • zabbix server可以通過SNMP(簡單網路管理協議), zabbix agent(監控端),ping,埠監視等方法提供對遠端伺服器/網路狀態的監視,資料收集等功能
  • 他可以執行在Linux等平臺上.
  • zabbix agent需要安裝在被監視的目標伺服器上,它主要完成對硬體資訊或與作業系統有關的記憶體,CPU等資訊的收集.

2、Zabbix監控原理:

  zabbix agent安裝在被監控的主機上,zabbixagent負責定期收集客戶端本地各項資料,併發送至zabbix server端,
zabbixserver 收到資料後,將資料儲存到資料庫中,使用者基於Zabbix WEB可以看到資料在前端展現影象。當zabbix監控某個具體的專案,
該專案會設定一個觸發器閾值,當被監控的指標超過該觸發器設定的閾值,會進行一些必要的動作,動作包括:傳送資訊(郵件、微信、
簡訊)、傳送命令(shell命令、reboot、restart、install等)

3、Zabbix的缺點:

  • 需在被監控主機上安裝agent,所有資料都存在資料庫裡,產生的資料據很大,瓶頸主要在資料庫。
  • 專案批量修改不方便。
  • 社群雖然成熟,但是中文資料相對較少,服務支援有限。
  • 入門容易,能實現基礎的監控,但是深層次需求需要非常熟悉Zabbix並進行大量的二次定製開發難度較大。
  • 系統級別報警設定相對比較多,如果不篩選的話報警郵件會很多;且自定義的專案報警需要自己設定,過程比較繁瑣。
  • 缺少資料匯 總功能,如無法檢視-組伺服器平均值, 需進行二次開發;

4、Zabbix的監控方式:

a)主動模式
主動檢測: 相對於agent而言; agent(active),agent向server請求與自己相關監控項配置, 主動地將server配置的監控項相關的資料傳送給server;
主動監控能極大節約監控server的資源。
b)被動模式
被動檢測:相對於agent而言 ; agent, server向agent請求獲取配置的各監控項相關的資料,agent接收請求、獲取資料並響應給server;

5、Zabbix程式元件:

  • Zabbix_ server:服務端守護程序
  • Zabbix_ agentd:agent守 護程序
  • zabbix_ proxy: 代理伺服器
  • zabbix database: 儲存系統,mysql, pgsq|
  • Zabbix_ web:web GUI圖形化介面
  • Zabbix_ get:命令列工具,測試向agent發起資料採集請求
  • Zabbix_ sender:命令列工具,測試向server發 送資料
  • Zabbix_ java_ gateway: java閘道器

6、Zabbix部署:

注意事項:服務端之前不能已安裝 mysql

---------- 部署 zabbix 服務端 ----------
zabbix-server 記憶體至少 2G,推薦 4G;

systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname zbx-server

//獲取 zabbix 的下載源
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm 

//更換 zabbix.repo 為阿里源
cd /etc/yum.repos.d
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' zabbix.repo

yum clean all && yum makecache

yum install -y zabbix-server-mysql zabbix-agent

//安裝SCL(Software Collections),便於後續安裝高版本的 php,預設 yum 安裝的 php 版本為 5.4,版本過低,zabbix 5.0 版本對 php 版本最低要 7.2.0 版本。SCL 可以使得在同一臺機器上使用多個版本的軟體,而又不會影響整個系統的依賴環境。軟體包會安裝在 /opt/rh 目錄下。

yum install -y centos-release-scl 

//修改 zabbix-front 前端源,安裝 zabbix 前端環境到 scl 環境下
vim zabbix.repo
......
[zabbix-frontend]
......
enabled=1          #開啟安裝源
......

yum install -y zabbix-web-mysql-scl zabbix-apache-conf-scl

//安裝 zabbix 所需的資料庫
yum install -y mariadb-server mariadb

systemctl enable --now mariadb

mysql_secure_installation         #初始化資料庫,並設定密碼,如 abc123

//新增資料庫使用者,以及 zabbix 所需的資料庫資訊
mysql -u root -pabc123

CREATE DATABASE zabbix character set utf8 collate utf8_bin;
GRANT all ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
flush privileges;

//匯入資料庫資訊
rpm -ql zabbix-server-mysql 		#查詢 sql 檔案的位置

zcat /usr/share/doc/zabbix-server-mysql-5.0.15/create.sql.gz | mysql -uroot -pabc123 zabbix

//修改 zabbix server 配置檔案,修改資料庫的密碼
vim /etc/zabbix/zabbix_server.conf 
......
DBPassword=zabbix					#124行,指定 zabbix 資料庫的密碼

//修改 zabbix 的 php 配置檔案
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
......
php_value[date.timezone] = Asia/Shanghai		#24行,取消註釋,修改時區

//啟動 zabbix 相關服務
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm

瀏覽器訪問:http://192.168.80.20/zabbix
點選下一步,設定資料庫的密碼 zabbix
安裝完成後,預設的登入賬號和密碼為:Admin/zabbix
設定檔案介面:點選左邊選單欄的【User settings】,【Language】選擇 Chinese(zh_CN),再點選 Update 更新。

//解決 zabbix-server Web頁面中文亂碼問題
yum install -y wqy-microhei-fonts

\cp -f /usr/share/fonts/wqy-microhei/wqy-microhei.ttc /usr/share/fonts/dejavu/DejaVuSans.ttf

  

---------- 部署 zabbix 客戶端 ----------
zabbix 5.0 版本採用 golang 語言開發的新版本客戶端 agent2 。
zabbix 服務端 zabbix_server 預設使用 10051 埠,客戶端 zabbix_agent2 預設使用 10050 埠。


systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname zbx-agent01

//服務端和客戶端都配置時間同步
yum install -y ntpdate
ntpdate -u ntp.aliyun.com

//客戶端配置時區,與伺服器保持一致
mv /etc/localtime{,.bak}
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

date

//設定 zabbix 的下載源,安裝 zabbix-agent2
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm 

cd /etc/yum.repos.d
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo

yum install -y zabbix-agent2

//修改 agent2 配置檔案
vim /etc/zabbix/zabbix_agent2.conf
......
Server=192.168.80.20			#80行,指定 zabbix 服務端的 IP 地址
ServerActive=192.168.80.20		#120行,指定 zabbix 服務端的 IP 地址
Hostname=zbx-agent01			#131行,指定當前 zabbix 客戶端的主機名

//啟動 zabbix-agent2
systemctl start zabbix-agent2
systemctl enable zabbix-agent2

netstat -natp | grep zabbix
tcp6       0      0 :::10050                :::*                    LISTEN      43654/zabbix_agent2 

//在服務端驗證 zabbix-agent2 的連通性
yum install -y zabbix-get				#安裝 zabbix 主動獲取資料的命令

zabbix_get -s '192.168.80.30' -p 10050 -k 'agent.ping'
1

zabbix_get -s '192.168.80.30' -p 10050 -k 'system.hostname'
zbx-agent01

//在 Web 頁面中新增 agent 主機
點選左邊選單欄【配置】中的【主機】,點選【建立主機】
【主機名稱】設定成 zbx-agent01
【可見的名稱】設定成 zbx-agent01-192.168.80.30
【群組】選擇 Linux server
【Interfaces】的【IP地址】設定成 192.168.80.30

再點選上方選單欄【模板】
【Link new tamplates】搜尋 Linux ,選擇 Template OS Linux by Zabbix agent
點選 【新增】


---------- 自定義監控內容 ----------
案列:自定義監控客戶端伺服器登入的人數
需求:限制登入人數不超過 3 個,超過 3 個就發出報警資訊

//在客戶端建立自定義 key
1.明確需要執行的 linux 命令
who | wc -l

2.建立 zabbix 的監控項配置檔案,用於自定義 key
vim /etc/zabbix/zabbix_agent2.conf
#可以將自定義的監控項配置檔案建立在 zabbix_agent2.d 目錄中
268 Include=/etc/zabbix/zabbix_agent2.d/*.conf
#自定義監控項的格式如下
291 #	Format: UserParameter=<key>,<shell command>

cd /etc/zabbix/zabbix_agent2.d/

vim UserParameter_login.conf
UserParameter=login.user,who|wc -l

systemctl restart zabbix-agent2

3.在服務端驗證新建的監控項
zabbix_get -s '192.168.80.30' -p 10050 -k 'login.user'


//在 Web 頁面建立自定義監控項模板
1.建立模板
點選左邊選單欄【配置】中的【模板】,點選【建立模板】
【模板名稱】設定成 Template Login User
【可見的名稱】設定成 Template Login User
【群組】選擇 Template
【描述】可自定義
點選 【新增】,此時就可在【連結的模板】中搜索到 Template Login User 了

2.建立應用集(用於管理監控項的)
點選上方選單欄【應用集】,點選【建立應用集】
【名稱】設定成 Login User
點選 【新增】

3.建立監控項
點選上方選單欄【監控項】,點選【建立監控項】
【名稱】設定成 Number of login users
【鍵值】設定成 login.user			#鍵值必須要與自定義的監控項配置檔案中設定的保持一致
【更新間隔】設定成 10s
【歷史資料保留時長】Storage period	30d		#保留時間可自定義設定
點選 【新增】

4.建立觸發器(當監控項獲取到監控的值後和觸發器預設的值進行對比,判斷是否報警)
點選上方選單欄【觸發器】,點選【建立觸發器】
【名稱】設定成 Number of login users is greater than 3
【嚴重性】設定成 一般嚴重
【表示式】點選新增,【監控項】點選選擇 Number of login users,【功能】選擇 last(),【結果】選擇 > 3,點選 【插入】
點選 【新增】

5.建立圖形
點選上方選單欄【圖形】,點選【建立圖形】
【名稱】設定成 Number of login users
【寬】、【高】可直接採用預設值
【監控項】點選新增勾選相關監控項 Number of login users,【功能】選擇 最大,其它可保持預設值
點選 【新增】

6.將主機與模板關聯起來(一個主機可以關聯多個模板)
點選左邊選單欄【配置】中的【主機】,點選你要關聯的主機
點選上方選單欄【模板】,【Link new tamplates】搜尋 login,選擇 Template Login User,點選【更新】

此時就點選【監測】中的【主機】,點選你關聯主機的【圖形】,即可檢視到相關的監控項指標

7.設定郵件報警
點選左邊選單欄【管理】中的【報警媒介型別】,點選【建立媒體型別】
【名稱】設定成 qq_Email
【SMTP伺服器】設定成 smtp.qq.com
【SMTP伺服器埠】設定成 25
【SMTP HELO】設定成 qq.com
【SMTP電郵】設定成 自己的郵箱地址,例如 [email protected]
【認證】選擇 使用者名稱和密碼
【使用者名稱稱】設定成 自己的郵箱地址,例如 [email protected]
【密碼】可登入QQ郵箱頁面,點選【設定】-->【賬戶】中的【生成授權碼】,通過簡訊獲取授權碼
【描述】可自定義
點選上方選單欄【Message templates】,點選【新增】,【Message type】選擇 問題,點選【更新】
點選 【新增】,並測試功能

點選左邊選單欄【User settings】-->【報警媒介】,點選【新增】
【型別】選擇 qq_Email
【收件人】設定成 [email protected]
【當啟用時】設定成 1-7,00:00-24:00
點選 【新增】
再點選 【更新】

點選左邊選單欄【配置】中的【動作】,選擇相對應的動作名稱,點選【啟用】

//測試郵件報警
增加測試客戶端的使用者登入數超過觸發器預設的值,檢視【監測】-->【儀表盤】,確認報警

  

---------- zabbix 自動發現與自動註冊 ----------
//zabbix 自動發現(對於 agent2 是被動模式)
zabbix server 主動的去發現所有的客戶端,然後將客戶端的資訊登記在服務端上。
缺點是如果定義的網段中的主機數量多,zabbix server 登記耗時較久,且壓力會較大。

1.確保客戶端上的 zabbix-agent2 服務狀態正常
systemctl is-active zabbix-agent2.service 
active

2.在 Web 頁面刪除原有的客戶端主機
點選左邊選單欄【配置】中的【主機】,勾選原有的客戶端主機,點選 刪除

3.在服務端和客戶端上配置 hosts 解析
vim /etc/hosts
192.168.80.20 zbx-server
192.168.80.30 zbx-agent01

4.在 Web 頁面配置自動發現
點選左邊選單欄【配置】中的【自動發現】,點選【建立發現規則】
【名稱】設定成 mynetwork
【IP範圍】設定成 192.168.80.1-254
【更新間隔】設定成 30s
【檢查】點選【新增】,【檢查型別】選擇 Zabbix 客戶端,【埠範圍】設定成 10500,【鍵值】設定成 system.uname
【裝置唯一性準則】選擇 IP地址
【主機名稱】選擇 DNS名稱
【可見的名稱】選擇 主機名稱
勾選 【已啟用】,點選 【更新】

點選左邊選單欄【配置】中的【動作】,上方選單選擇 【Discovery actions】
勾選 【Auto discovery. Linux servers.】,點選 【啟用】

點選左邊選單欄【配置】中的【主機】重新整理,等待一段時間後即可刷新出自動發現的客戶端主機

可在服務端檢視 zabbix 日誌
tail -f /var/log/zabbix/zabbix_server.log
......
  6601:20210922:225044.115 enabling Zabbix agent checks on host "zbx-agent01": host became available


//zabbix 自動註冊(對於 agent2 是主動模式)
zabbix agent2 會主動上報自己的資訊,發給 zabbix server。
缺點是可能因為配置檔案配置錯誤或者網路不通等原因導致 zabbix agent2 可能找不到 zabbix server。

1.環境準備
點選左邊選單欄【配置】中的【自動發現】,勾選發現規則,點選 禁用
點選左邊選單欄【配置】中的【主機】,勾選原有的客戶端主機,點選 刪除

vim /etc/hosts
192.168.80.20 zbx-server
192.168.80.30 zbx-agent01

2.修改 zabbix-agent2 配置檔案
vim /etc/zabbix/zabbix_agent2.conf
......
HostnameItem=system.hostname		#139行,取消註釋

egrep -v "^#|^$" /etc/zabbix/zabbix_agent2.conf 
PidFile=/var/run/zabbix/zabbix_agent2.pid
LogFile=/var/log/zabbix/zabbix_agent2.log
LogFileSize=0
Server=192.168.80.20
ServerActive=192.168.80.20
Hostname=zbx-agent01
HostnameItem=system.hostname
Include=/etc/zabbix/zabbix_agent2.d/*.conf
ControlSocket=/tmp/agent.sock

3.在 Web 頁面配置自動註冊
點選左邊選單欄【配置】中的【動作】,上方選單選擇 【Autoregistration actions】,點選【建立動作】
【名稱】設定成 Auto registration
點選 【新增】,【型別】選擇 主機名稱,【操作者】選擇 包含,【值】設定成 zbx-agent01
點選上方選單欄【操作】,點選【新增】,【操作型別】選擇 新增主機,點選 【add】
再點選【新增】,【操作型別】選擇 新增到主機群組,【主機群組】選擇 Linux servers,點選 【add】
再點選【新增】,【操作型別】選擇 與模板關聯,【模板】搜尋 Linux,選擇 Template OS Linux by Zabbix agent,點選 【add】
點選下方的【新增】

點選左邊選單欄【配置】中的【主機】重新整理,等待一段時間後即可刷新出自動發現的客戶端主機

在服務端檢視 zabbix 日誌
tail -f /var/log/zabbix/zabbix_server.log

  

--------- 部署 zabbix 代理伺服器 ----------
分散式監控的作用:
●分擔 server 的集中式壓力
●解決多機房之間的網路延時問題

agent --> proxy --> server


systemctl disable --now firewalld
setenforce 0
hostnamectl set-hostname zbx-proxy

//設定 zabbix 的下載源,按照 zabbix-proxy
rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm 

cd /etc/yum.repos.d
sed -i 's#http://repo.zabbix.com#https://mirrors.aliyun.com/zabbix#' /etc/yum.repos.d/zabbix.repo

yum install -y zabbix-proxy-mysql zabbix-get

//安裝 zabbix 所需的資料庫
yum install -y mariadb-server mariadb

systemctl enable --now mariadb

mysql_secure_installation         #初始化資料庫,並設定密碼,如 abc123

//新增資料庫使用者,以及 zabbix 所需的資料庫資訊
mysql -u root -pabc123

CREATE DATABASE zabbix_proxy character set utf8 collate utf8_bin;
GRANT all ON zabbix_proxy.* TO 'zabbix'@'%' IDENTIFIED BY 'zabbix';
flush privileges;

//匯入資料庫資訊
rpm -ql zabbix-proxy-mysql 		#查詢 sql 檔案的位置

zcat /usr/share/doc/zabbix-proxy-mysql-5.0.15/schema.sql.gz | mysql -uroot -pabc123 zabbix_proxy

//修改 zabbix-proxy 配置檔案
vim /etc/zabbix/zabbix_proxy.conf
Server=192.168.80.20				#30行,指定 zabbix 服務端的 IP 地址
Hostname=zbx-proxy					#49行,指定當前 zabbix 代理伺服器的主機名
DBPassword=zabbix					#196行,指定當前資料庫 zabbix 使用者的密碼

//啟動 zabbix-proxy
systemctl start zabbix-proxy
systemctl enable zabbix-proxy

//在所有主機上配置 hosts 解析
vim /etc/hosts
192.168.80.20 zbx-server
192.168.80.30 zbx-agent01
192.168.80.13 zbx-proxy

//在 Web 頁面配置 agent 代理
點選左邊選單欄【配置】中的【動作】,勾選自動註冊規則,點選 禁用
點選左邊選單欄【配置】中的【主機】,勾選原有的客戶端主機,點選 刪除

點選左邊選單欄【管理】中的【agent代理程式】,點選【建立代理】
【agent代理程式名稱】設定為 zbx-proxy
【系統代理程式模式】選擇 主動式
【代理地址】設定為 192.168.80.13
點選 【新增】

//配置 agent 使用 proxy
1.在客戶端修改 agent2 配置檔案
vim /etc/zabbix/zabbix_agent2.conf
......
Server=192.168.80.13			#80行,指定 zabbix 代理伺服器的 IP 地址
ServerActive=192.168.80.13		#120行,指定 zabbix 代理伺服器的 IP 地址

2.在 Web 頁面配置
點選左邊選單欄【配置】中的【主機】,點選【建立主機】
【主機名稱】設定成 zbx-agent01
【可見的名稱】設定成 zbx-agent01
【群組】選擇 Linux server
【Interfaces】的【IP地址】設定成 192.168.80.30
【由agent代理程式監測】選擇 zbx-proxy

再點選上方選單欄【模板】
【Link new tamplates】搜尋 Linux ,選擇 Template OS Linux by Zabbix agent
點選 【新增】

3.分別在客戶端和代理伺服器上重啟服務
systemctl restart zabbix-agent2

systemctl restart zabbix-proxy

點選左邊選單欄【配置】中的【主機】重新整理,檢視客戶端主機監控狀態正常

在服務端檢視日誌
tail -f /var/log/zabbix/zabbix_proxy.log

  

---------- 設定 zabbix-snmp 監控 ----------
SNMP,簡單網路管理協議

1.服務端安裝 snmp 監控程式
yum install -y net-snmp net-snmp-utils

2.修改 snmp 的配置檔案,並啟動服務
vim /etc/snmp/snmpd.conf
......
view    systemview    included   .1				#57行,新增此配置

systemctl start snmpd

3.使用 snmp 命令測試
snmpwalk -v 2c -c public 127.0.0.1 sysname
SNMPv2-MIB::sysName.0 = STRING: zbx-server
-------------------------------------------------------
–v 1|2c|3:指定SNMP協議版本
–c:指定共同體字串
sysname:為 snmp 的 key
-------------------------------------------------------

4.在 Web 頁面配置 snmp 方式監控
點選左邊選單欄【配置】中的【主機】,點選 Zabbix server
【Interfaces】點選【新增】選擇 SNMP ,埠設定成 161
點選上方選單欄【模板】,【連結的模板】中的所有 agent 模板選擇取消連結並清理
再在【Link new templates】中搜索 Linux SNMP,選擇 Template OS Linux SNMP
點選 【更新】,等待一段時間後 Zabbix server	的可用性就變成了 SNMP 監控方式。

  

自古英雄多磨難