1. 程式人生 > 其它 >Linux--Zabbix分散式監控

Linux--Zabbix分散式監控

Zabbix企業級分散式監控

一、zabbix

Zabbix是一個基於Web介面的提供分散式系統監控,以及網路監控功能的企業級開源解決方案。

Zabbix 是一個高度整合的網路監控套件,通過一個軟體包即可提供如下特性

* 資料收集 (主動/被動)

1) 可用性及效能檢測;

2) 支援 SNMP(trapping 及 polling)、IPMI、JMX 監控;

3) 自定義檢測;

4) 自定義間隔收集收據;

5) server/proxy/agents。

* 靈活的閾值定義

允許靈活地自定義問題閥值,在 Zabbix 中稱為觸發器(trigger), 儲存在後端資料庫

中。

 *高階告警配置

1) 可以自定義告警升級(escalation)、接收者及告警方式;

2) 告警資訊可以配置並允許使用巨集(macro)變數;

3) 通過遠端命令實行自動化動作(action)。

* 實時繪圖

通過內建的繪圖方法實現監控資料實時繪圖。

 *擴充套件的圖形化顯示

1) 允許自定義建立多監控項檢視;

2) 生成網路拓撲(network maps);

3) 自定義的面板(screen)和 slide shows,並允許在 dashboard 頁面顯示;

4) 生成監控報告。

* 歷史資料儲存

1) 資料儲存在資料庫中;

2) 歷史資料可配置;

3) 內建資料清理機制。

* 配置簡單

1) 被監控主機通過監控裝置方式新增;

2) 一次配置,終生監控(譯者注:除非調整或刪除);

3) 監控裝置允許使用模板來新增監控。

 *模板使用

1) 模板中可以新增組監控;

2) 模板允許繼承。

 *網路自動發現

1) 自動發現網路裝置;

2) Agent 自動註冊;

3) 自動發現檔案系統、網絡卡裝置、SNMP OID 等。

* 快速的 Web 介面

1) Web 前端採用 PHP 編寫;

2) 訪問無障礙.

* Zabbix API

Zabbix API 提供程式級別的訪問介面,第三方程式可以很快接入。

* 許可權系統

1) 安全的許可權認證;

2) 使用者可以限制允許維護的列表。

 *全特性、Agent 易擴充套件

1) 在監控目標上部署;

2) 支援 Linux 及 Windows。

 *二進位制守護程序

1) C 開發,高效能,低記憶體消耗;

2) 易移植。

* 具備應對複雜環境情況

通過 Zabbix Proxy 可以非常容易的建立遠端監控。

1. Zabbix Server

zabbix_server 是 Zabbix 服務端守護程序。zabbix_agentd、zabbix_proxy 的資料最終

都是提交到 Server。

當然並不是所有資料都主動提交給 zabbix_server,也有的是 Server 主動去取資料。

2. Zabbix Agent

zabbix_agentd 是客戶端守護程序,此程序主要用於收集客戶端資料,例如 CPU 負載、

記憶體、硬碟使用情況等。

3. Zabbix Proxy

zabbix_proxy 是 Zabbix 代理守護程序,功能類似 Server。不同的是,zabbix_proxy

只是一箇中轉站,它需要把收集到的資料提交/被提交到 Server。

4. Zabbix 整體架構

下圖是Zabbix整體架構的示意圖。

Zabbix官網: https://www.zabbix.com

zabbix 主要由2部分構成 zabbix server和 zabbix agent

zabbix proxy是用來管理其他的agent,作為代理

zabbix監控範疇:

   硬體監控 :Zabbix IPMI Interface

   系統監控 :Zabbix Agent Interface

   Java 監控:ZabbixJMX Interface

   網路裝置監摶:Zabbix SNMP Interface

   應用服務監控:Zabbix Agent UserParameter

   MySQL 資料庫監控:percona-monitoring-pldlgins

   URL監控:Zabbix Web監控

下面進行zabbix安裝配置

192.168.10.2 server端

192.168.10.3 agent端

二、安裝部署Zabbix 5.0

1. 部署Zabbix服務端

不需要提前構建LAMP或LNMP

1.1 伺服器配置

伺服器

配置

ip地址

主機名

主要軟體

zabbix-server

記憶體至少2G,推薦4G

192.168.10.2

node1

zabbix-server-mysql、zabbix-agent

1.2 伺服器環境

systemctl disable --now firewalld

setenforce 0

setenforce: SELinux is disabled

1.3 獲取zabbix的下載源

rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm

1.4 更換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

1.5 下載安裝zabbix以及元件

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

vim Ali.repo

[Ali]

name=CentOS-$releasever - Base

baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/

gpgcheck=1

gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

yum update

wget -O ali.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum makecache

yum install centos-release-scl

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

1.6 修改zabbix-front前端源,安裝zabbix前端環境到scl環境下

vim zabbix.repo

[zabbix-frontend]

##11行,開啟安裝源

enabled=1

完成後要確保yum源是乾淨的,只能有以下源

ali.repo CentOS-SCLo-scl.repo CentOS-SCLo-scl-rh.repo zabbix.repo

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

cd /opt/rh

ls

rh-php72

1.7 安裝zabbix所需的資料庫並啟動

yum install -y mariadb-server mariadb

systemctl enable --now mariadb

1.8 初始化資料庫並設定密碼

mysql_secure_installation

Enter current password for root (enter for none):

#使用root的當前密碼登入,回車

Set root password? [Y/n] y

#是否設定root密碼,y

New password:

#設定密碼

Re-enter new password:

#再次輸入密碼

Remove anonymous users? [Y/n] y

#移除匿名使用者,y

Disallow root login remotely? [Y/n] y也可以n

#禁止root遠端登入,y

Remove test database and access to it? [Y/n] y

#移除test資料庫,y

Reload privilege tables now? [Y/n] y

#重新載入許可權表,y

1.9 新增資料庫使用者,以及zabbix所需的資料庫許可權

mysql -u root -p

建立zabbix資料庫,並使用utf8字元編碼

zabbix使用者在任何主機擁有zabbix庫中的全部許可權,密碼為zabbix

重新整理許可權

create database zabbix character set utf8 collate utf8_bin;

grant all on zabbix.* to 'zabbix'@'%' identified by 'zabbix';

flush privileges;

show databases;

use zabbix;

show tables;

1.10 匯入資料庫資訊

rpm -ql zabbix-server-mysql

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

mysql -u root -p

show databases;

use zabbix;

show tables;

zcat命令用於不真正解壓縮檔案,就能顯示壓縮包中檔案的內容的場合。zcat是一個命令列實用程式,用於檢視壓縮檔案的內容,而無需對其進行解壓縮。 它將壓縮檔案擴充套件為標準輸出,使您可以檢視其內容。 另外,zcat與執行gunzip -c命令完全相同。

1.11 修改zabbix_server配置檔案

vim /etc/zabbix/zabbix_server.conf

124行,取消註釋,指定zabbix資料庫的密碼

DBPassword=zabbix

1.12 修改zabbix的php配置檔案

vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf

25行,取消註釋,修改時區

php_value[date.timezone] = Asia/Shanghai

1.13 啟動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.10.2/zabbix/

點選下一步,設定資料庫的密碼 zabbix

登入成功

設定檔案介面:點選左邊選單欄的【User settings】,【Language】選擇 Chinese(zh_CN),再點選 Update 更新。

1.15 解決zabbix_server(node1)的Web亂碼問題

主機-圖形檢視,發現很多亂碼

yum install -y wqy-microhei-fonts

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

回到Web頁面,檢查亂碼是否仍然存在

已無亂碼

2. 部署zabbix客戶端

2.1 伺服器配置

伺服器

ip地址

主機名

主要軟體

zabbix-agent

192.168.10.3

node2

zabbix-agent2

zabbix 5.0 版本採用 golang 語言開發的新版本客戶端 agent2 。

zabbix 服務端 zabbix_server 預設使用 10051 埠,客戶端 zabbix_agent2 預設使用 10050 埠。

2.2 伺服器環境

systemctl disable --now firewalld

setenforce 0

setenforce: SELinux is disabled

2.3 服務端和客戶端配置時間同步

服務端node1

yum install -y ntpdate

ntpdate -u ntp.aliyun.com

客戶端

copy

yum install -y ntpdate

ntpdate -u ntp.aliyun.com

2.4 客戶端配置時區,與伺服器保持一致

mv /etc/localtime{,.bak}

ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

2.5 設定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

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

yum install -y zabbix-agent2

2.6 修改agent2配置檔案

vim /etc/zabbix/zabbix_agent2.conf

80行,指定zabbix服務端的IP地址

Server=192.168.10.2

Server=192.168.10.3

120行,指定zabbix服務端的IP地址

ServerActive=192.168.10.2

131行,指定當前zabbix客戶端的主機名

Hostname=node2

2.7 啟動zabbix-agent2

systemctl enable --now zabbix-agent2.service

netstat -natp | grep zabbix

2.8 在服務端驗證zabbix-agent2的連通性

yum install -y zabbix-get

安裝zabbix主動獲取資料的命令

zabbix_get -s '192.168.10.3' -p 10050 -k 'agent.ping'

返回1即連通成功,返回0則連通失敗

1

zabbix_get -s '192.168.10.3' -p 10050 -k 'system.hostname'

顯示客戶端的主機名

node2

2.9 在web頁面中新增agent主機

點選左邊選單欄【配置】中的【主機】,點選【建立主機】

【主機名稱】設定成node2

【可見的名稱】設定成node2-192.168.10.3

【群組】選擇 Linux servers

【Interfaces】的【IP地址】設定成 192.168.10.3

再點選上方選單欄【模板】

【Link new tamplates】搜尋 Linux ,選擇 Template OS Linux by Zabbix agent,點選 【新增】

三、自定義監控內容

1. 監控需求

案例:自定義監控客戶端伺服器登入的人數

需求:限制登入人數不超過3個,超過3個就發出報警資訊

2. 在客戶端建立自定義key

2.1 明確需要執行的linux命令

who

root pts/0 2022-01-19 08:40 (192.168.10.1)

who |wc -l

2.2 建立zabbix的監控項配置檔案,用於自定義key

vim /etc/zabbix/zabbix_agent2.conf

268行,可以將自定義的監控項配置檔案建立在zabbix_agent2.d目錄中

Include=/etc/zabbix/zabbix_agent2.d/*.conf291行,自定義監控項的格式如下

# Format: UserParameter=<key>,<shell command>

cd /etc/zabbix/zabbix_agent2.d

vim user_login_limit.conf

UserParameter=user_login_limit,who | wc -l

systemctl restart zabbix-agent2.service

2.3 在服務端驗證新建的監控項

zabbix_get -s '192.168.10.3' -p 10050 -k 'user_login_limit'

1

客戶端增加登入終端

who

root pts/0 2022-01-19 08:40 (192.168.10.1)

root pts/1 2022-01-19 10:00 (192.168.10.1)

who |wc -l

2

服務端重新驗證

zabbix_get -s '192.168.10.3' -p 10050 -k 'user_login_limit'

2

驗證成功

3. 在web頁面建立自定義監控項模板

  1. 建立模板

點選左邊選單欄【配置】中的【模板】,點選【建立模板】

【模板名稱】設定成 Template User Login

【可見的名稱】設定成 Template User Login

【群組】選擇 Templates

【描述】可自定義

點選【新增】

此時就可在【連結的模板】中搜索到 Template Login User了,點選進入設定

  1. 建立應用集(用於管理監控項的)

點選上方選單欄【應用集】,點選【建立應用集】

【名稱】設定成User Login

點選【新增】

3.3 建立監控項

點選上方選單欄【監控項】,點選【建立監控項】

【名稱】設定成 Number of login users

【鍵值】設定成user_login_limit(鍵值必須要與自定義的監控項配置檔案中設定的保持一致

【更新間隔】設定成 10s

【歷史資料保留時長】Storage period 30d(保留時間可自定義設定)

點選 【新增】

3.4 建立觸發器(當監控項的資料超過設定閾值後,觸發報警)

點選上方選單欄【觸發器】,點選【建立觸發器】

【名稱】設定成Number of login users is greater than 3

【嚴重性】設定成 一般嚴重

【表示式】點選新增,【監控項】點選選擇 Number of login users,【功能】選擇 last(),【結果】選擇 > 3,點選 【插入】

點選 【新增】

3.5 建立圖形

點選上方選單欄【圖形】,點選【建立圖形】

【名稱】設定成 Number of login users

【寬】、【高】可直接採用預設值

【監控項】點選新增勾選相關監控項 Number of login users,【功能】選擇最大,其它可保持預設值

點選 【新增】

3.6 將主機與模板關聯起來(一個主機可以關聯多個模板)

點選左邊選單欄【配置】中的【主機】,點選你要關聯的主機

點選上方選單欄【模板】,【Link new tamplates】搜尋 login,選擇 Template User Login,點選【更新】

3.7 檢視監控圖形

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


4. 郵件報警

4.1 設定郵件報警

點選左邊選單欄【管理】中的【報警媒介型別】,點選【建立媒體型別】

【名稱】設定成 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

點選 【新增】

再點選 【更新】


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

4.2 測試郵件報警

增加客戶端的終端連線數至4個,確認是否能收到報警郵件。

who

root pts/0 2022-01-19 08:40 (192.168.10.1)

root pts/1 2022-01-19 10:00 (192.168.10.1)

root pts/2 2022-01-19 11:49 (192.168.10.1)

root pts/3 2022-01-19 11:49 (192.168.10.1)

who |wc -l


報警資訊

報警郵件