linux 監控平臺介紹
常見的開源監控軟件
cacti、nagios、zabbix、smokeping、open-falcon等等。
cacti、smokeping偏向於基礎監控,成圖漂亮。
cacti、nagios、zabbix服務端監控中心,需要php環境支持,其中zabbix和cacti都需要mysql作爲數據存儲,nagios不用存儲歷史數據,注重服務或者監控項的狀態;zabbix會獲取服務或者監控項目的數據從而可以成圖,zabbix把數據記錄到數據庫裏,支持歷史數據查詢,而且zabbix可以非常方便的自定義監控項目。
open-falcon爲小米公司開發,開源後受到諸多大公司和運維工程師的追捧,適合大企業,滴滴、360、新浪微博、京東等大公司在使用這款監控軟件,值得研究。
本節學習以zabbix爲例。
zabbix監控介紹
zabbix基於C++開發,是C/S(client/server)架構,即分爲客戶端和服務端,單個服務端節點可以支持上萬臺客戶端。
五個組件
zabbix-server
zabbix-server是整個監控體系中最核心的組件,它負責接收客戶端發送的報告信息,所有配置、統計數據及操作數據都由它組織。
數據存儲(如:mysql)
監控過程中收集的所有信息都存儲在這裏
web界面
web界面,web UI。這是zabbix監控簡單易用的主要原,因爲我們可以在web界面中配置、管理各個客戶端。運行web界面需要有PHP環境支持。
zabbix-proxy
zabbix-proxy爲可選組件,用於監控節點非常多的分佈式環境,它可以代理zabbix-server的功能,減輕zabbix-server的壓力。(機器量很多的時候,可以使用)
zabbix-agent
zabbix-agent爲部署在各個客戶端上的組件,用於採集各個監控項目的數據,並把採集的數據傳輸給zabbix-proxy或zabbix-server。
zabbix官方文檔:https://www.zabbix.com/manuals
zabbix監控流程圖:
安裝zabbix(上)
準備兩臺機器,一臺做服務端,一臺做客戶端。兩臺機器上後安裝zabbix。在官網下載對應的版本(https://www.zabbix.com/download)。
下載zabbix的rpm包:
[root@shuai-01 ~]# wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
下載完之後,安裝下載的zabbix的rpm包
[root@shuai-02 ~]# rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
警告:zabbix-release-3.2-1.el7.noarch.rpm: 頭V4 RSA/SHA512 Signature, 密鑰 ID a14fe591: NOKEY
準備中... ################################# [100%]
正在升級/安裝...
1:zabbix-release-3.2-1.el7 ################################# [100%]
它實際上是安裝了一個yum源倉庫
有了源之後,就能直接yum安裝zabbix
yum安裝zabbix
[root@shuai-01 ~]# 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和httpd
在服務端:
安裝mysql,之前有安裝過,就不在安裝了。
編輯MySQL的配置文件:
[root@shuai-01 ~]# vi /etc/my.cnf
增加配置:
character_set_server = utf8
#將字符集設置爲中文
保存退出
啓動MySQL:
[root@shuai-01 ~]# systemctl restart mysql
創建zabbix的數據庫:
[root@shuai-01 ~]# mysql -uroot -p111111
mysql> create database zabbix character set utf8;
Query OK, 1 row affected (0.00 sec)
創建用戶:
mysql> grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by '111111';
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye
導入數據:
[root@shuai-01 ~]# cd /usr/share/doc/zabbix-server-mysql-3.2.11/
解壓:
[root@shuai-01 zabbix-server-mysql-3.2.11]# gzip -d create.sql.gz
[root@shuai-01 zabbix-server-mysql-3.2.11]# ls
AUTHORS ChangeLog COPYING create.sql NEWS README
[root@shuai-01 zabbix-server-mysql-3.2.11]# mysql -uroot -p111111 zabbix < create.sql
Warning: Using a password on the command line interface can be insecure
起動zabbix-server服務
[root@shuai-01 ~]# systemctl start zabbix-server
啓動httpd服務,再啓動httpd服務時,先看一下Nginx服務啓動沒有,Nginx服務啓動,會佔用80端口,這時httpd啓動不了。
[root@shuai-01 ~]# systemctl start httpd
對zabbix, httpd 服務做開機啓動
[root@shuai-01 ~]# systemctl enable zabbix-server.service
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.
[root@shuai-01 ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
這時用ps查看狀態,zabbix啓動了,netstat查看端口,發現沒有zabbix監聽端口。
安裝zabbix(中)
查看zabbix日誌
[root@shuai-01 ~]# tail /var/log/zabbix/zabbix_server.log
3584:20180131:204113.795 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
zabbix無法連接MySQL
解決方法:
修改配置文件
[root@shuai-01 ~]# vim /etc/zabbix/zabbix_server.conf
搜索DBHost
# Default:
# DBHost=localhost
DBHost=127.0.0.1
這裏寫數據庫的IP,本次實驗由於zabbix和MySQL安裝在一臺機器上,寫127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=111111
保存退出
重啓zabbix服務:
[root@shuai-01 ~]# systemctl restart zabbix-server
查看監聽端口:
[root@shuai-01 ~]# netstat -lntp
正常情況,zabbix監聽10051端口
配置web界面:
在瀏覽器上配置
http://192.168.176.135/zabbix/setup.php
點擊下一步
是ok不用管,設置date.timezone
在PHP的配置文件中設置date.timezone
[root@shuai-01 ~]# vi /etc/php.ini
找timezone
date.timezone =Asia/Shanghai
保存退出
重啓httpd服務
[root@shuai-01 ~]# systemctl restart httpd
刷新網頁
下一步
下一步
完成。
登錄界面:
管理員:admin
密碼:zabbix
登錄進去後,首先要更改密碼
也可以把語言改成中文
這是zabbix的web監控界面
忘記admin密碼如何做
更改MySQL數據庫中的數據
進入MySQL:
[root@shuai-01 ~]# mysql -uroot -p111111
進入zabbix庫
mysql> use zabbix
密碼在users表中
mysql> update users set passwd=md5('111111') where alias='Admin';
這時就可以用新密碼登錄zabbix
安裝zabbix(下)
客戶端安裝:
下載yum 源,安裝yum源。
yum安裝zabbix-agent
[root@shuai-02 ~]# yum install -y zabbix-agent
編輯配置文件:
[root@shuai-02 ~]# vi /etc/zabbix/zabbix_agentd.conf
Server=192.168.176.135
#指定服務端的IP
ServerActive=192.168.176.135
Hostname=shuai-02
#參數用於設定客戶端主機的名字,用於服務端添加監控服務,服務端監控是哪臺主機的狀態
保存退出
啓動zabbix-agent服務
[root@shuai-02 ~]# systemctl start zabbix-agent
監聽端口10050