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






