zabbix企業監控服務
阿新 • • 發佈:2021-10-06
目錄
作為一個運維,需要會使用監控系統檢視伺服器狀態以及網站流量指標,利用監控系統的資料去了解上線釋出的結果,和網站的健康狀態。
利用一個優秀的監控軟體,我們可以:
- 通過一個友好的介面進行瀏覽整個網站所有的伺服器狀態
- 可以在 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 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 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'
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自動註冊
//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 監控方式。