1. 程式人生 > 其它 >zabbix企業監控服務

zabbix企業監控服務

目錄

一、zabbix的相關知識

二、部署zabbix服務端

三、部署zabbix客戶端

四、自定義監控內容

五、在 Web 頁面建立自定義監控項模板

六、zabbix 自動發現與自動註冊

七、部署zabbix代理伺服器

八、設定 zabbix-snmp 監控

一、zabbix的相關知識

作為一個運維,需要會使用監控系統檢視伺服器狀態以及網站流量指標,利用監控系統的資料去了解上線釋出的結果,和網站的健康狀態。

利用一個優秀的監控軟體,我們可以:

  • 通過一個友好的介面進行瀏覽整個網站所有的伺服器狀態
  • 可以在 Web 前端方便的檢視監控資料
  • 可以回溯尋找事故發生時系統的問題和報警情況


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


zabbix 監控部署在系統中,包含常見的五個程式: zabbix_server、zabbix_agent、zabbix_proxy、zabbix_get、zabbix_sender 等。

  • zabbix server:zabbix 服務端守護程序,其中 zabbix_agent、zabbix_get、zabbix_sender、zabbix_proxy 的資料最終都提交給 zabbix server;
  • zabbix agent:客戶端守護程序,負責收集客戶端資料,例如:收集 CPU 負載、記憶體、硬碟使用情況等;
  • zabbix proxy:zabbix 分散式代理守護程序,通常大於 500 臺主機,需要進行分散式監控架構部署;
  • zabbix get:zabbix 資料接收工具,單獨使用的命令,通常在 server 或者 proxy 端執行獲取遠端客戶端資訊的命令;
  • zabbix sender:zabbix 資料傳送工具,使用者傳送資料給 server 或 proxy 端,通常使用者耗時比較長的檢查。

二、部署zabbix服務端

-------------------- 安裝 zabbix 5.0 --------------------

---------- 部署 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 客戶端 ----------
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自動發現

//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自動註冊

//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代理伺服器

---------- 部署 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 監控

---------- 設定 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 監控方式。