一麸俘、Zabbix概述
1冒窍、Zabbix簡介
zabbix是一個基于WEB界面的提供 分布式系統(tǒng)監(jiān)控以及網(wǎng)絡(luò)監(jiān)控功能 的企業(yè)級的開源解決方案。zabbix能監(jiān)視各種網(wǎng)絡(luò)參數(shù)帘腹,保證服務(wù)器系統(tǒng)的安全運營畜挨;并提供靈活的通知機制以讓系統(tǒng)管理員快速定位/解決存在的各種問題筒繁。
zabbix由zabbix server與可選組件zabbix agent兩部分組成:
zabbix server可以通過SNMP,zabbix agent巴元,ping毡咏,端口監(jiān)視等方法提供對遠程服務(wù)器/網(wǎng)絡(luò)狀態(tài)的監(jiān)視。
zabbix agent需要安裝在被監(jiān)視的目標(biāo)服務(wù)器上逮刨,它主要完成對硬件信息或與操作系統(tǒng)有關(guān)的內(nèi)存呕缭,CPU等信息的收集。
2修己、Zabbix監(jiān)控工作原理
Agentd安裝在被監(jiān)控的主機上恢总,Agent負責(zé)定期收集客戶端本地各項數(shù)據(jù),并發(fā)送至Zabbix Server端睬愤,Zabbix Server收到數(shù)據(jù)片仿,將數(shù)據(jù)存儲到數(shù)據(jù)庫中,用戶基于Zabbix WEB可以看到數(shù)據(jù)在前端展現(xiàn)圖像尤辱。
當(dāng)Zabbix監(jiān)控某個具體的項目砂豌,該項目會設(shè)置一個觸發(fā)器閾值厢岂,當(dāng)被監(jiān)控的指標(biāo)超過該觸發(fā)器設(shè)定的閾值,會進行一些必要的動作阳距,動作包括:發(fā)送信息(郵件塔粒、微信、短信)筐摘、發(fā)送命令(SHELL 命令卒茬、Reboot、Restart蓄拣、Install等)。
agent收集數(shù)據(jù)分為主動和被動兩種模式:
主動: agent請求server獲取主動的監(jiān)控項列表努隙,并主動將監(jiān)控項內(nèi)需要檢測的數(shù)據(jù)提交給server/proxy球恤。
被動: server向agent請求獲取監(jiān)控項的數(shù)據(jù),agent返回數(shù)據(jù)荸镊。
3咽斧、Zabbix的常用組件
Zabbix Web Gui:
提供Web界面。
Zabbix Databases:
提供數(shù)據(jù)庫存儲功能并用于存儲配置信息躬存。以及采集到的數(shù)據(jù)张惹。
Zabbix Server :
接收來自Agent采集數(shù)據(jù)的核心組件。
Zabbix Agent :
部署在被監(jiān)控的主機上岭洲,用于采集本地的數(shù)據(jù)宛逗。
Zabbix Proxy:
當(dāng)監(jiān)控節(jié)點較多時,用于減輕Server壓力組件盾剩,也可用于分布式雷激。監(jiān)控系統(tǒng),由Proxy接收數(shù)據(jù)后統(tǒng)一發(fā)送給Server告私。
4屎暇、Zabbix支持的數(shù)據(jù)采集協(xié)議
SNMP(Simple Network Managerment Protocol):
這是一個非常古老的且通用的監(jiān)控協(xié)議,幾乎任何設(shè)備都支持用此方式進行系統(tǒng)的監(jiān)控驻粟。
Agent:
在監(jiān)控端安裝專門的監(jiān)控程序根悼,將數(shù)據(jù)采集后通過Agent發(fā)送至Server。
IPMI:
智能平臺管理接口蜀撑,即主要應(yīng)用于設(shè)備的物理特性挤巡,包括:溫度、電壓酷麦、電扇工作狀態(tài)玄柏,電源供應(yīng)以及機箱入侵等。IPMI最大的優(yōu)勢在于無論OS的開機還是關(guān)機狀態(tài)下贴铜,只要接通電源就可以實現(xiàn)對服務(wù)器的監(jiān)控粪摘。
JMX:
Java Managerment Exlensions瀑晒。
5、常見進程
zabbix-_agentd:
客戶端守護進程徘意,負責(zé)收集客戶端數(shù)據(jù)苔悦,例如cpu負載、內(nèi)存椎咧、硬盤使用情況等玖详。
zabbix_get:
zabbix數(shù)據(jù)接收工具,單獨使用的命令勤讽,通常在Server或者Proxy端執(zhí)行獲取遠端客戶信息的命令蟋座。通常客戶排錯脚牍。例如在Server端獲取不到客戶端的內(nèi)存數(shù)據(jù)向臀,我們可以使用zabbix_get獲取客戶端的內(nèi)容的方式來做故障排查。
zabbix_sender:
zabbix數(shù)據(jù)發(fā)送工具诸狭,用于發(fā)送數(shù)據(jù)給Server或者Proxy券膀,通常用于耗時比較長的檢查。很多檢查非常耗時間驯遇,導(dǎo)致zabbix超時芹彬。于是我們在腳本執(zhí)行完畢之后,使用sender主動提交數(shù)據(jù)叉庐。
zabbix--_proxy:
zabbix代理守護進程舒帮。功能類似Server,唯一不同的是它只是一個中轉(zhuǎn)站陡叠,它需要把收集到的數(shù)據(jù)提交/被提交到Server里会前。
zabbix-_java-_gateway:
Java網(wǎng)關(guān),類似agentd匾竿,但是只用于Java方面瓦宜。它只能主動去獲取數(shù)據(jù),而不能被動獲取數(shù)據(jù)岭妖。它的數(shù)據(jù)最終會給到Server或者proxy临庇。
二、Zabbix監(jiān)控平臺搭建
環(huán)境介紹:
CentOS 7.5
Zabbix-server(監(jiān)控端)192.168.2.128
Zabbix-agent (被監(jiān)控端)192.168.2.129
1.基礎(chǔ)環(huán)境配置:
[root@localhost ~]# systemctl disable firewalld #禁止防火墻服務(wù)啟動
[root@localhost ~]# systemctl stop firewalld #關(guān)閉防火墻服務(wù)
[root@localhost ~]# setenforce = 0 #臨時關(guān)閉SELinux
[root@localhost ~]# vim /etc/sysconfig/selinux #修改將“SELINUX=enforcing”更改為“SELINUX=disabled”昵慌,永久關(guān)閉SELINUX
...
SELINUX=disabled
...
[root@localhost ~]# getenforce
Disabled
[root@localhost ~]# yum install tree net-tool net-snmp vim ntpdate wget #安裝部分基礎(chǔ)軟件包
[root@localhost ~]# cd /etc/yum.repos.d/ #修改yum源 更改為阿里云
[root@localhost ~]# mv CentOS-Base.repo CentOS-Base.repo.bak #備份文件
[root@localhost ~]# wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #下載阿里云鏡像倉庫
[root@localhost ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo #下載epel倉庫
[root@localhost ~]# yum clean all #清理緩存
[root@localhost ~]# yum makecache #重新生成緩存
2.安裝Mysql數(shù)據(jù)庫
[root@localhost ~]# wget https://repo.mysql.com//mysql57-community-release-el7-11.noarch.rpm //下載Mysql 5.7 Yum源
[root@localhost ~]# ls mysql57-community-release-el7-11.noarch.rpm
mysql57-community-release-el7-11.noarch.rpm
[root@localhost ~]# rpm -ivh mysql57-community-release-el7-11.noarch.rpm //安裝Mysql Yum源
[root@localhost ~]# rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022
[root@localhost ~]# yum -y install mysql-server //安裝mysql
[root@localhost ~]# systemctl start mysqld //啟動Mysqld服務(wù)
[root@localhost ~]# systemctl enable mysqld //開機自啟mysql
[root@localhost ~]# ss -antulp | grep :3306
tcp LISTEN 0 80 [::]:3306 [::]:* users:(("mysqld",pid=54086,fd=21))
[root@localhost ~]# grep 'root@localhost:' /var/log/mysqld.log //查看初始密碼
2020-03-20T00:57:34.072739Z 1 [Note] A temporary password is generated for root@localhost: hsQ(7(so_cgX
[root@localhost ~]# mysql -hlocalhost -uroot -p'hsQ(7(so_cgX' //使用初始密碼登陸
mysql: [Warning] Using a password on the command line interface can be insecure.
...
Server version: 5.7.29
...
mysql>
mysql> alter user root@"localhost" identified by "123qqq...A"; 修改登陸密碼
[root@localhost ~]# mysql -uroot -p123qqq...A //使用新密碼登陸
3.安裝Zabbix 5.0監(jiān)控平臺
安裝Zabbix Yum源倉庫
[root@localhost ~]# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
[root@localhost ~]# yum clean all
安裝Zabbix Server 與 Zabbix agent
[root@localhost ~]# yum -y install zabbix-server-mysql zabbix-agent
安裝Zabbix frontend
[root@localhost ~]# yum -y install centos-release-scl
[root@localhost ~]# vim /etc/yum.repos.d/zabbix.repo
...
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/frontend
enabled=1 //將0修改為1
安裝Zabbix前端包
[root@localhost ~]# yum -y install zabbix-web-mysql-scl zabbix-apache-conf-scl
創(chuàng)建和初始化數(shù)據(jù)庫
[root@localhost ~]# mysql -uroot -p123qqq...A
mysql> create database zabbix character set utf8 collate utf8_bin;
Query OK, 1 row affected (0.00 sec)
mysql> create user zabbix@localhost identified by '123qqq...A';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all privileges on zabbix.* to zabbix@localhost;
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
mysql> exit
Bye
導(dǎo)入Zabbix數(shù)據(jù)庫結(jié)構(gòu)和數(shù)據(jù)
[root@localhost ~]# zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p123qqq...A zabbix
mysql: [Warning] Using a password on the command line interface can be insecure.
其中-uzabbix
是前面在數(shù)據(jù)庫中創(chuàng)建的用戶假夺,-p123qqq...A
是前面數(shù)據(jù)庫中創(chuàng)建的用戶的密碼,后面的zabbix
是前面創(chuàng)建的數(shù)據(jù)庫斋攀。
4.配置Zabbix server
[root@localhost ~]# vim /etc/zabbix/zabbix_server.conf
...
116 DBUser=zabbix //用戶名要與數(shù)據(jù)庫中創(chuàng)建的供zabbix訪問的用戶名一致
...
124 DBPassword=123qqq...A //去掉注釋已卷,添加創(chuàng)建的zabbix用戶的數(shù)據(jù)庫密碼
...
6.開啟服務(wù)
[root@localhost ~]# systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
[root@localhost ~]# systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
[root@localhost ~]# ss -antulp | grep :80
tcp LISTEN 0 128 :::80 :::* users:(("httpd",pid=5619,fd=4),("httpd",pid=5618,fd=4),("httpd",pid=5617,fd=4),("httpd",pid=5616,fd=4),("httpd",pid=5614,fd=4),("httpd",pid=5585,fd=4))
[root@localhost ~]# ps -aux | grep zabbix
......
apache 5677 0.0 0.3 336672 7316 ? S 16:36 0:00 php-fpm: pool zabbix
root 5809 0.0 0.0 112736 976 pts/0 S+ 16:47 0:00 grep --color=auto zabbix
時區(qū)設(shè)置
修改配置文件
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
重啟php
systemctl restart rh-php72-php-fpm
7.訪問
修改Zabbix 5.0界面語言為中文:
三、被監(jiān)控端Zabbix-agent添加
永久關(guān)閉防火墻
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld //永久關(guān)閉防火墻
[root@localhost ~]# wget https://mirrors.tuna.tsinghua.edu.cn/zabbix/zabbix/5.0/rhel/6/x86_64/zabbix-agent-5.0.0-1.el6.x86_64.rpm
[root@localhost ~]# ll -h zabbix-agent-5.0.0-1.el6.x86_64.rpm
-rw-r--r-- 1 root root 436K 5月 11 20:06 zabbix-agent-5.0.0-1.el6.x86_64.rpm
[root@localhost ~]# rpm -ivh zabbix-agent-5.0.0-1.el6.x86_64.rpm
警告:zabbix-agent-5.0.0-1.el6.x86_64.rpm: 頭V4 RSA/SHA512 Signature, 密鑰 ID a14fe591: NOKEY
錯誤:依賴檢測失敶景:
libpcre.so.0()(64bit) 被 zabbix-agent-5.0.0-1.el6.x86_64 需要
注意:
?如果下載的zabbix-agent 5.0安裝包使用rpm
安裝時提示“錯誤:依賴檢測失敳嗾骸:libpcre.so.0()(64bit)
”裁眯,則可以使用zabbix 5.0 Yum源來安裝zabbix-agent 5.0軟件。
----> 傳送門
安裝zabbix-agent5.0 報錯解決
安裝Zabbix Yum源倉庫
[root@localhost ~]# rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
[root@localhost ~]# yum clean all
使用Zabbix 5.0 Yum源文件安裝zabbix-agent 5.0軟件讳癌,并且將gpgcheck=1修改為gpgcheck=0穿稳,防止出現(xiàn)“獲取GPG密鑰失敗”報錯。
修改Zabbix 5.0 Yum源配置文件:
[root@localhost ~]# sed -i "s/gpgcheck=1/gpgcheck=0/g" /etc/yum.repos.d/zabbix.repo
[root@localhost ~]# cat /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/
enabled=1
gpgcheck=0 //修改gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/frontend
enabled=1
gpgcheck=0 //修改gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-debuginfo]
name=Zabbix Official Repository debuginfo - $basearch
baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/debuginfo/
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
gpgcheck=0 //修改gpgcheck=0
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=0 //修改gpgcheck=0
[root@localhost ~]# yum -y install zabbix-agent //安裝zabbix-agent 5.0軟件
...
已安裝:
zabbix-agent.x86_64 0:5.0.0-1.el7
完畢晌坤!
修改zabbix-agent配置文件:
[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf
119 Server=127.0.0.1,192.168.2.128 //Zabbix-server地址逢艘,多個用","隔開
160 ServerActive=192.168.2.128 //主動檢查本主機數(shù)據(jù)發(fā)送給Zabbix-server
171 #Hostname=Zabbix server
172 Hostname=192.168.2.129 //客戶端IP地址
[root@localhost ~]# systemctl start zabbix-agent
[root@localhost ~]# systemctl enable zabbix-agent
[root@localhost ~]# ss -antulp | grep :10050
tcp LISTEN 0 128 *:10050 *:* users:(("zabbix_agentd",pid=3389,fd=4),("zabbix_agentd",pid=3388,fd=4),("zabbix_agentd",pid=3387,fd=4),("zabbix_agentd",pid=3386,fd=4),("zabbix_agentd",pid=3385,fd=4),("zabbix_agentd",pid=3384,fd=4))
tcp LISTEN 0 128 :::10050 :::* users:(("zabbix_agentd",pid=3389,fd=5),("zabbix_agentd",pid=3388,fd=5),("zabbix_agentd",pid=3387,fd=5),("zabbix_agentd",pid=3386,fd=5),("zabbix_agentd",pid=3385,fd=5),("zabbix_agentd",pid=3384,fd=5))