1. 程式人生 > >Linux監控平臺——搭建zabbix監控平臺

Linux監控平臺——搭建zabbix監控平臺

搭建zabbix監控平臺

19.1 Linux監控平臺介紹

常見開源監控軟件

cacti、nagios、zabbix、smokeping、open-falcon等等。
cacti、smokeping偏向於基礎監控,成圖漂亮。
cacti、nagios、zabbix服務端監控中心,需要php環境支持,其中zabbix和cacti都需要mysql作為數據存儲,nagios不用存儲歷史數據,註重服務或者監控項的狀態;zabbix會獲取服務或者監控項目的數據從而可以成圖,zabbix把數據記錄到數據庫裏,支持歷史數據查詢,而且zabbix可以非常方便的自定義監控項目。
open-falcon為小米公司開發,開源後受到諸多大公司和運維工程師的追捧,適合大企業,滴滴、360、新浪微博、京東等大公司在使用這款監控軟件,值得研究。

本節學習以zabbix為例。

19.2 zabbix監控介紹

zabbix基於C++開發,是C/S(client/server)架構,即分為客戶端和服務端,單個服務端節點可以支持上萬臺客戶端,監控中心支持web UI(web界面)配置和管理。
查看zabbix官方文檔:https://www.zabbix.com/manuals 是學習zabbix的最好途徑。

zabbix組件

zabbix整個體系架構中有以下5個主要角色:

zabbix-server
zabbix-server是整個監控體系中最核心的組件,它負責接收客戶端發送的報告信息,所有配置、統計數據及操作數據都由它組織。
數據存儲(如:mysql)

監控過程中收集的所有信息都存儲在這裏。
web界面
web界面,即GUI。這是zabbix監控簡單易用的原因之一,因為我們可以在web界面中配置、管理各個客戶端。運行web界面需要有PHP環境支持。
zabbix-proxy
zabbix-proxy為可選組件,用於監控節點非常多的分布式環境,它可以代理zabbix-server的功能,減輕zabbix-server的壓力。
zabbix-agent
zabbix-agent為部署在各個客戶端上的組件,用於采集各個監控項目的數據,並把采集的數據傳輸給zabbix-proxy或zabbix-server。
監控流程
技術分享圖片

19.3-19.4 安裝zabbix

準備工作

兩臺機器:一臺作為server(IP:192.168.8.136),一臺作為client(IP:192.168.8.138),均安裝zabbix,server上安裝數據庫(安裝方法見:http://blog.51cto.com/13242922/2073353 )。

可以使用yum安裝zabbix,版本是2.2,有點老舊。在此使用zabbix官方提供的對應版本的yum源安裝較新版本的zabbix。

在服務端安裝zabbix

安裝zabbix之前需要先安裝其yum源倉庫。

下載zabbix的yum源倉庫:
[root@z1 src]# wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

安裝yum源倉庫:
[root@z1 src]# rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm

[root@z1 src]# ls /etc/yum.repos.d/
zabbix.repo

安裝zabbix及其組件:
[root@z1 src]# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
#zabbix-agent:客戶端程序
#zabbix-get:服務端上命令行獲取客戶端檢測項目的工具
#zabbix-server-mysql:zabbix-server MySQL版
#zabbix-web:web界面
#zabbix-web-mysql:web界面MySQL相關
註:該過程會連帶安裝PHP和http。
配置

配置server端:

配置mysql:

[root@z1 src]# vim /etc/my.cnf
character_set_server = utf8
#設置默認字符集--目的是輔助web界面中文顯示

重啟mysql服務:
[root@z1 src]# /etc/init.d/mysqld restart

創建數據庫:
[root@z1 ~]# mysql -uroot
mysql> create database zabbix character set utf8;
#創建庫並指定其字符集

mysql> grant all on zabbix.* to ‘zabbix‘@‘127.0.0.1‘ identified by ‘123456‘;
mysql> quit

向zabbix數據庫中導入原始數據:
[root@z1 ~]# cd /usr/share/doc/zabbix-server-mysql-3.2.7/
#註意:該路徑使用tab鍵補全

解壓create.sql.gz包:
[root@z1 zabbix-server-mysql-3.2.7]# ls
AUTHORS ChangeLog COPYING create.sql.gz NEWS README
[root@z1 zabbix-server-mysql-3.2.7]# gzip -d create.sql.gz
[root@z1 zabbix-server-mysql-3.2.7]# ls
AUTHORS ChangeLog COPYING create.sql NEWS README

將解壓後的數據(create.sql)數據導入zabbix庫:
[root@z1 zabbix-server-mysql-3.2.7]# mysql -uroot zabbix < create.sql

啟動zabbix服務:
[root@z1 zabbix-server-mysql-3.2.7]# systemctl start zabbix-server

啟動http服務:
[root@z1 zabbix-server-mysql-3.2.7]# systemctl start httpd.service
[root@z1 zabbix-server-mysql-3.2.7]# netstat -lntp |grep httpd
tcp6 0 0 :::80 :::* LISTEN 2370/httpd

可以對zabbix、http等服務設置開機啟動:
[root@z1 zabbix-server-mysql-3.2.7]# systemctl enable zabbix-server.service
[root@z1 zabbix-server-mysql-3.2.7]# systemctl enable httpd.service
至此,檢查zabbix服務狀態(ps,netstat)發現,服務啟動了,但是沒有監聽端口,狀態不正常,進行錯誤排查:

查看zabbix日誌:
[root@z1 zabbix-server-mysql-3.2.7]# less /var/log/zabbix/zabbix_server.log
2343:20170907:175923.056 database is down: reconnecting in 10 seconds
2343:20170907:175933.058 [Z3001] connection to database ‘zabbix‘ failed: [2002] Can‘t connect t
o local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2)
即,無法連接mysql。
解決辦法:
更改zabbix配置文件。

[root@z1 zabbix-server-mysql-3.2.7]# vim //etc/zabbix/zabbix_server.conf
DBHost=127.0.0.1
#此處寫zabbix所在機器的IP(生產環境中zabbix可能單獨使用一天機器)
#該IP應該和數據庫授權時指定的IP一致
DBName=zabbix
DBUser=zabbix
DBPassword=123456

更改完成後重啟zabbix服務:
[root@z1 zabbix-server-mysql-3.2.7]# systemctl restart zabbix-server.service
啟動完成後查看其狀態(ps、netstat),正常(服務端zabbix默認監聽10051端口)!

配置web界面

使用瀏覽器訪問server機器上的IP:192.168.8.136/zabbix(進行該操作前保證server已關閉防火墻)進入安裝引導界面。

mark

點擊“Next step”進入檢測界面:

mark

錯誤: 此處有錯誤提示,意識是PHP無法識別“data.timezone”(時區)。

解決方法:
編輯PHP配置文件,更改時區:

[root@z1 ~]# vim /etc/php.ini
date.timezone =Asia/Shanghai

重啟httpd服務:
[root@z1 ~]# systemctl restart httpd.service
瀏覽器刷新,問題解決!然後,繼續點擊“Next step”,配置數據庫信息:

mark

點擊“Next step”,設置服務器用戶名(自定義):

mark

繼續點擊“Next step”,至出現提示界面:

mark 即,安裝完成!

登錄sever端zabbix

mark

註意: 管理員初始用戶名和密碼(Admin:zabbix)。

登錄zabbix之後首先要更改管理員密碼:

mark

點擊“Admin”進入如下界面:

mark

然後點擊“changepassword”:

mark

更改完成後“刷新”,界面顯示為設定的界面語言:中文!

19.5 忘記服務端zabbix管理員密碼

如果忘記zabbix(web界面)管理員密碼,可通過zabbix服務器的數據庫進行密碼更改!

[root@z1 ~]# mysql -uroot
切換庫:
mysql> use zabbix;

更改密碼:
mysql> update users set passwd=md5(‘123456‘) where alias=‘Admin‘;
mysql> quit
完成!
設置完成後在瀏覽器使用新密碼登錄zabbix,成功!

19.6 zabbix客戶端配置

在客戶端安裝zabbix

安裝zabbix之前需要先安裝其yum源倉庫。

下載zabbix的yum源倉庫:
[root@z1 src]# wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

安裝yum源倉庫:
[root@z1 src]# rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm

安裝zabbix:
[root@z2 ~]# yum install -y zabbix-agent
配置

編輯zabbix配置文件:

[root@z2 ~]# vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.8.136
#指定服務端主機IP(設置客戶端的監控主機白名單)
ServerActive=192.168.8.136
#該參數決定監控的主動/被動模式
#如果只改參數Server,則只能采用被動模式(只能等待服務端來采集信息)
#主動模式:客戶端主動向服務端發送信息
Hostname=adai-02
#該參數用於設定客戶端主機的名字,用於服務端添加監控服務
#如果服務端所監控的機器和其Hostname不一致,服務端將無法識別該機器
#因為zabbix是通過IP進行監控的,該參數不會對監控造成太大影響
#加上該參數有利於更好的辨別服務端監控是哪臺主機的狀態

啟動zabbix服務:
[root@z2 ~]# systemctl start zabbix-agent.service
查看zabbix服務狀態(ps、netstat),正常(客戶端zabbix默認監聽10050端口)!

至此,zabbix監控架構搭建基本結束!!!

Linux監控平臺——搭建zabbix監控平臺