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電郵】設置成 自己的郵箱地址,例如 qwe4546456@qq.com 【認證】選擇 用戶名和密碼 【用戶名稱】設置成 自己的郵箱地址,例如 qwe4546456@qq.com 【密碼】可登錄QQ郵箱頁面,點擊【設置】-->【賬戶】中的【生成授權碼】,通過短信獲取授權碼 【描述】可自定義 點擊上方菜單欄【Message templates】,點擊【添加】,【Message type】選擇 問題,點擊【更新】 點擊 【添加】,並測試功能 點擊左邊菜單欄【User settings】-->【報警媒介】,點擊【添加】 【類型】選擇 qq_Email 【收件人】設置成 qwe4546456@wo.cn 【當啟用時】設置成 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 監控方式。