今天整理一篇我在部署和使用Zabbix監控工具的過程和心得,分享給大家。
一、簡介
1.1 zabbix監控框架工具介紹
Zabbix架構圖
zabbix是一個企業級分布式開源監控解決方案,能夠監控眾多網絡參數和服務器的健康度、完整性。使用靈活的告警機制,允許用戶為幾乎任何事件配置基于郵件的告警。基于存儲的數據提供出色的報表和數據可視化功能。這些功能使得zabbix成為容量規劃的理想選擇。
zabbix 支持主動輪詢(polling)和被動捕獲(trApping)。Zabbix所有的報表、統計數據和配置參數都可以通過基于 Web 的前端頁面進行訪問。基于 Web 的前端頁面確保您可以在任何地方訪問您監控的網絡狀態和服務器健康狀況。適當的配置后,Zabbix 可以在監控 IT 基礎設施方面發揮重要作用。無論是對于有少量服務器的小型組織,還是擁有大量服務器的大企業而言,同樣適用。
Zabbix 是免費的。Zabbix 是根據 GPL 通用公共許可證的第二版編寫和發布的。這意味著產品源代碼是免費發布的,可供公共使用。
1.2 優缺點
優點:
(1) 分布式監控
Zabbix的分布式監控是天生具有的功能,適合于構建分布式監控系統,具有node,proxy2種分布式模式。
(2) 自動化
Zabbix自動化功能,自動發現,自動注冊主機,自動添加模板,自動添加分組,使得Zabbix天生是自動化運維利器的首選,
當然與自動化運維工具搭配,puppet+zabbix,或者saltstack+zabbix,那是如魚得水。
(3) 自定義監控
Zabbix的自定義監控比較方便,自定義監控項非常簡單,支持變量,支持low level discovery,自動發現功能實現批量web url監控。
(4) 觸發器
觸發器也就是報警條件有多重判斷機制,當然,這個需要去研究一下,這也是zabbix的精華之處。
(5) 支持多種監控方式
支持agentd,snmp,ipmi,jmx;4種監控方式。
(6) 提供api功能
API功能為Zabbix二次開發提供方便,你可以選用zabbix來進行二次深度開發,結合cmdb資產管理系統,業務管理系統,從而使你的自動化運維系統達到新的高度。
缺點:
(1)不如NagIOS插件組合多,Nagios監控工具后面會整理出來
(2)zabbix后端用 C 開發,界面用 php 開發,定制化難度很高。Prometheus后端用 golang 開發,前端是 Grafana,JSON 編輯即可解決,定制化更有優勢。zabbix更適合監控物理機環境,Prometheus更適合云環境的監控,對openstack和k8s有更好的集成。監控數據存儲在關系型數據庫內,如 MySQL,很難從現有數據中擴展維度。
1.3 支持類型
zabbix支持snmp協議監控,支持命令行監控,支持agent客戶端,支持windows環境,支持云、容器、k8s監控。
Zabbix可以實現二次開發腳本實現容器云監控,但對于容器基礎監控和K8S監控,肯定是不如天然集成的prometheus方便和高效了,所以建議綜合考慮現狀和成本,結合使用
二 部署過程
2.1 安裝包下載
使用yum安裝方式在線安裝
2.2 安裝部署
1. 更新yum源
# yum update
2.安裝zabbixb包
# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
3.安裝server和agent
# yum install zabbix-server-mysql zabbix-agent
4. 安裝zabbix前端頁面,并且配置
# yum install centos-release-scl
編輯文件
/etc/yum.repos.d/zabbix.repo
vi /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
enabled=1
5.安裝zabbix前端包
# yum install zabbix-web-mysql-scl zabbix-Apache-conf-scl
6. 創建初始數據庫
# mysql -uroot -p
password
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by '123456';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
mysql>flush privileges;
mysql> quit;
7. 導入初始架構和數據,系統將提示您輸入新創建的密碼,此處新創建的密碼為步驟6中的123456。
# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
8.為Zabbix server配置數據庫
編輯配置文件
/etc/zabbix/zabbix_server.conf
vi /etc/zabbix/zabbix_server.conf
DBPassword=password
9.為Zabbix前端配置PHP,設置時區
編輯配置文件
/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
vi /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
php_value[date.timezone] = Asia/Shanghai
10.啟動Zabbix server和agent進程
啟動Zabbix server和agent進程,并為它們設置開機自啟
# systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
# systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
11.配置Zabbix前端
連接到新安裝的Zabbix前端:
http://server_ip_or_name/zabbix
此處為
http://192.168.0.240/zabbix
根據Zabbix向導步驟操作:
1 檢查參數設置是否都符合,然后點擊Next step
2 輸入mysql中zabbix數據庫的密碼,此處zabbix的密碼為上述步驟中設置的123456
3 點擊Next step
4 點擊Next step
5點擊Download the configuration file下載配置文件zabbix.conf.php,將文件上傳服務器/etc/zabbix/web/下,并且修改配置文件權限為644,點擊finish
6 點擊finish
7 默認賬號Admin, 密碼 zabbix,點擊Sign In。
8 成功登陸zabbix web頁面
2.3 部署完成
zabbix web 頁面
三 使用方法
3.1 agent方式監控linux主機
3.1.1 被監控Linux主機安裝agent客戶端
1 下載agent客戶端并且安裝
wget http://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-agent-5.0.0-1.el7.x86_64.rpm
rpm -ivh zabbix-agent-5.0.0-1.el7.x86_64.rpm
2 配置客戶端
修改配置文件zabbix_agentd.conf將ServerActive=127.0.0.1 Server=127.0.0.1 修改為ServerActive=192.168.0.240 Server=192.168.0.240
vi /etc/zabbix/zabbix_agentd.conf
3 防火墻
4 關閉selinux
setenforce 0
5 啟動agent
systemctl start zabbix-agent
3.1.2 zabbix設置新主機
Zabbix中的主機是您要監視的網絡實體(物理,虛擬)。在Zabbix中可以定義為“主機”的定義非常靈活。它可以是物理服務器,網絡交換機,虛擬機或某些應用程序。
configuration-Hosts
有關Zabbix中已配置主機的信息,可在“ 配置”→“主機”中找到。已經有一個預定義的主機,稱為“ Zabbix服務器”。
Create host
要添加新主機,請點擊創建主機。這將為我們提供一個主機配置表。
所有必填輸入字段均標有紅色星號。
在此處輸入的最低要求是:
主機名:輸入主機名。允許使用字母數字,空格,點,破折號和下劃線。
組:通過單擊“ 選擇”按鈕選擇一個或幾個現有組,或輸入一個不存在的組名稱以創建一個新組。所有訪問權限都分配給主機組,而不是單個主機。因此,主機必須至少屬于一個組。
IP地址:輸入主機的IP地址。請注意,如果這是Zabbix服務器IP地址,則必須在Zabbix代理配置文件“服務器”指令中指定。
選擇Templates,點擊select按鈕可以鏈接生成監控圖表模板
點擊Add按鈕創建監控主機
Monitoring-Hosts,點擊Graphs可以跳轉到圖表區
3.2 snmp方式監控Linux主機
3.2.1 被監控Linux主機安裝snmp客戶端
1 上傳已經下載snmp的安裝包并且安裝
cd /root/zabbix_snmp
rpm -Uvh --force --nodeps *.rpm
2修改配置文件
vim /etc/snmp/snmpd.conf
修改com2sec notConfigUser default public為com2sec notConfigUser default zabbix
view systemview included .1 #添加一個采集項.1,意味著可以采集到所有mib tree的信息
3 啟動
systemctl start snmpd.service
netstat -lntup|grep 161
3.2.2 zabbix創建被監控主機
1 點擊create host 按鈕
2 配置被監控主機的主機名,選擇Linux servers分組,點擊Select按鈕
3 Interface配置,點擊Remove Default按鈕刪除默認agent配置方式,然后點擊Add按鈕,選擇SNMP方式
4 配置被監控主機IP,SNMP監控端口,SNMP版本,已經SNMP community,注意和被架空主機配置文件中的配置一致。
5 點擊Templates按鈕,鏈接Template OS Linux SNMPv2模板,點擊Select按鈕
6 點擊macros選項卡,被監控主機的配置文件中/etc/snmp/snmpd.conf設置的{$SNMP_COMMUNITY} zabbix設置到該位置,點擊Add創建被監控主機。
7 Monitoring-Hosts,點擊Graphs可以跳轉到圖表區
3.3 Agent2監控mysql
3.3.1 被監控mysql主機安裝agent2客戶端
1 下載agent客戶端并且安裝
wget http://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-agent2-5.0.1-1.el7.x86_64.rpm
rpm -ivh zabbix-agent2-5.0.1-1.el7.x86_64.rpm
2 配置客戶端
修改配置文件zabbix_agent2.conf將ServerActive=127.0.0.1 Server=127.0.0.1 修改為ServerActive=192.168.0.240 Server=192.168.0.240
vi /etc/zabbix/zabbix_agent2.conf
3 防火墻
4 關閉selinux
getenforce
5 啟動agent2
systemctl start zabbix-agent2
6 使用以下命令在被監控 MySQL 里創建獨立監控用戶并授權遠程訪問,避免使用業務用戶
>create user mon@'192.168.0.133' identified by 'monpwd123';
>flush privileges;
3.3.2 zabbix設置新主機(同3.1.2)
添加以下三個宏變量
{$MYSQL.DSN} mysql的連接串,可使用TCP和Unix
tcp://myhost 或 unix:/var/run/mysql.sock
{$MYSQL.USER} mysql用戶
{$MYSQL.PASSWORD} 對應的用戶密碼
此處填寫內容為
{$MYSQL.DSN} tcp://192.168.0.133:3306
{$MYSQL.USER} mon
{$MYSQL.PASSWORD} monpwd123
四、遇到問題
1 使用mysql數據庫初始化zabbix數據庫表提示如下錯誤:ERROR 1071 (42000) at line 348: Specified key was too long; max key length is 767 bytes
報錯原因:
如果啟用了系統變量innodb_large_prefix(默認啟用,注意實驗版本為MySQL 5.6.41,默認是關閉的,MySQL 5.7默認開啟),則對于使用DYNAMIC或COMPRESSED行格式的InnoDB表,索引鍵前綴限制為3072字節。如果禁用innodb_large_prefix,則對于任何行格式的表,索引鍵前綴限制為767字節。
解決方法:
卸載mysql5.6版本安裝mysql5.7
卸載mysql5.6
rpm -qa | grep -i mysql
rpm -ev --nodeps `rpm -qa | grep -i mysql`
rm -rf `find / -name mysql`
安裝mysql5.7
2 獲取 GPG 密鑰失敗:[Errno 14] curl#37 - "Couldn't open file
/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7"
報錯原因:
安裝的時候不進行源的檢查
解決方法:
vim /etc/yum.repos.d/epel.repo
把gpgcheck=1 改為gpgcheck=0 即可,意思是在安裝的時候不進行源的檢查
3 Your password does not satisfy the current policy requirements
報錯原因:配置zabbix數據庫本地登陸賬號密碼為123456不符合mysql數據庫密碼復雜度要求,可以通過設置降低密碼復雜度要求
解決方法:
> set global validate_password_length=6;
> set global validate_password_policy=low;
五、附錄
zabbix倉庫地址
http://repo.zabbix.com/zabbix/