2018-07-25筆記(zabbix安裝和配置)

19.1 Linux監控平臺介紹

監控存在的原因
●站點出了問題,沒有人知道,等用戶發現了,才提醒供應商;對公司影響很大

●常見開源監控軟件

○cacti、nagios、zabbix、smokeping、open-falcon等等 //主流 nagios、zabbix

○ cacti、smokeping偏向於基礎監控,成圖非常漂亮 //比較適合監控網絡設備

●cacti、nagios、zabbix服務端監控中心,需要php環境支持,其中zabbix和cacti都需要mysql作爲數據存儲,nagios不用存儲歷史數據,注重服務或者監控項的狀態,zabbix會獲取服務或者監控項目的數據,會把數據記錄到數據庫裏,從而可以成圖

●因爲zabbix配置簡單,優勢明顯,早起使用nagios的企業,慢慢的轉向使用zabbix

●nagios,需要更改配置文件,並不支持web界面一鍵執行,nagios和zabbix相比,nagios 更注重的是某一個監控的狀態,不關注歷史;zabbix,則是把每一次監控的數值反饋出來,方便後期數據圖去分析監控整個狀態;nagios不支持mysql,需要安裝插件以後才支持web界面;zabbix 支持mysql,可以成圖,可以記錄歷史數據

●zabbix 在web界面下管理得非常徹底,可以增加監控節點,報警預知等等

●open-falcon爲小米公司開發,開源後受到諸多大公司和運維工程師的追捧,適合大企業,滴滴、360、新浪微博、京東等大公司在使用這款監控軟件,監控的思想和結構值得研究
●後續以介紹zabbix爲主

19.2 zabbix監控介紹

●C/S架構,基於C++開發,監控中心支持web界面配置和管理
●單server節點可以支持上萬臺客戶端
●最新版本3.4 ,官網文檔https://www.zabbix.com/manuals
●5個組件
○zabbix-server 監控中心,接收客戶端上報信息,負責配置、統計、操作數據
○數據存儲 存放數據,比如mysql
○web界面 也叫web UI ,在web界面下操作配置是zabbix簡單易用的主要原因
○zabbix-proxy 可選組件,它可以代替zabbix-server的功能,減輕server的壓力
○zabbix-agent 客戶端軟件,負責採集各個監控服務或項目的數據,並上報
2018-07-25筆記(zabbix安裝和配置)

19.3/19.4/19.6 安裝zabbix

官網下載地址:https://www.zabbix.com/download, 最新版爲3.4

準備兩臺機器做演示:一臺服務端192.168.66.131 一臺客戶端192.168.66.132
默認yum安裝的zabbix版本是2.2的太舊,所以選擇安裝官方提供的repo源,服務端和客戶端都需要安裝一下,進入官網後選擇對應版本,官網有安裝教程可以參考,這裏我選擇的是centos7,zabbix3.4,數據庫爲mysql的版本,安裝對應版本的yum源

 rpm -i https://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm 

安裝完成後在/etc/yumrepo.d/目錄可以看到zabbix.repo的yum源
服務端192.168.66.131

[root@server yum.repos.d]# cd /etc/yum.repos.d/
[root@server yum.repos.d]# ll
總用量 44
-rw-r--r--  1 root root 1664 5月  13 18:18 CentOS-Base.repo
-rw-r--r--  1 root root 1664 5月  11 14:46 CentOS-Base.repo.bak
-rw-r--r--  1 root root  410 8月  28 2017 zabbix.repo

客戶端192.168.66.132

[root@client ~]# cd /etc/yum.repos.d/
[root@client yum.repos.d]# ll
總用量 40
-rw-r--r--. 1 root root 1664 8月  30 2017 CentOS-Base.repo
-rw-r--r--. 1 root root 1309 8月  30 2017 CentOS-CR.repo
-rw-r--r--  1 root root  410 8月  28 2017 zabbix.repo

一、服務端安裝zabbix
1、安裝完yum源,在服務端192.168.66.131上使用yum安裝zabbix,需要安裝如下的包

[root@server ~]# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql 

●注:該過程會連帶安裝PHP和httpd

○zabbix-agent:客戶端程序
○zabbix-get:服務端上命令行獲取客戶端檢測項目的工具
○zabbix-server-mysql:zabbix-server MySQL版
○zabbix-web:web界面
○zabbix-web-mysql:web界面MySQL相關

因爲zabbix需要保存數據,所以要用到mysql
如果mysql之前沒有安裝的話,需要根據lamp那一章的mysql安裝方法安裝mysql,也可以直接yum安裝mysql
因爲我們之前已經安裝過mysql,這裏就省略了
先看下mysql有沒有啓動起來

[root@server ~]# ps aux |grep mysqld
root       1248  0.0  0.1 113304  1620 pts/0    S    16:01   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql/ --pid-file=/data/mysql//localhost.localdomain.pid
mysql      1461  0.0 45.6 1296372 456352 pts/0  Sl   16:01   0:01 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/var/log/mysqld.log --pid-file=/data/mysql//localhost.localdomain.pid --socket=/tmp/mysql.sock --port=3306
root       1876  0.0  0.0 112720   968 pts/0    R+   16:33   0:00 grep --color=auto mysqld

2、接下來還需要編輯下mysql的配置文件,設定一個默認的字符集
vim /etc/my.cnf //需要增加一行配置

character_set_server = utf8

如果不設置中文的話,到時候web界面中文顯示就會有問題

[root@server ~]# cat /etc/my.cnf
[mysqld]
port = 3306
basedir=/usr/local/mysql
datadir=/data/mysql/
socket=/tmp/mysql.sock
user=mysql
default-time-zone=system
default-storage-engine=InnoDB
log-error=/var/log/mysqld.log
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
character_set_server = utf8           #增加這一行,#設置默認字符集--目的是輔助web界面中文顯示

3、重啓mysql服務,讓剛纔的配置生效

[root@server mysql]# /etc/init.d/mysqld restart
Shutting down MySQL.. SUCCESS! 
Starting MySQL. SUCCESS! 

4、登陸mysql,創建zabbix數據庫,創建用戶並授權

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 '123456';
Query OK, 0 rows affected (0.02 sec)

5、向創建的zabbix數據庫中導入原始數據:
默認數據放在/usr/share/doc/zabbix-server-mysql-3.4.11/create.sql.gz這個壓縮包,注意,版本不同可能目錄有所不同

[root@server mysql]# cd /usr/share/doc/zabbix-server-mysql-3.4.11/
[root@server zabbix-server-mysql-3.4.11]# ll
總用量 2104
-rw-r--r-- 1 root root      98 6月  25 16:57 AUTHORS
-rw-r--r-- 1 root root  848475 6月  25 16:57 ChangeLog
-rw-r--r-- 1 root root   17990 6月  25 16:57 COPYING
-rw-r--r-- 1 root root 1267039 6月  25 17:01 create.sql.gz
-rw-r--r-- 1 root root      52 6月  25 16:57 NEWS
-rw-r--r-- 1 root root     188 6月  25 16:57 README
[root@server zabbix-server-mysql-3.4.11]# gzip -d create.sql.gz       #解壓這個包
[root@server zabbix-server-mysql-3.4.11]# ls
AUTHORS  ChangeLog  COPYING  create.sql  NEWS  README
#導入數據
[root@server zabbix-server-mysql-3.4.11]# mysql -uroot -p123456 zabbix < /usr/share/doc/zabbix-server-mysql-3.4.11/create.sql 
Warning: Using a password on the command line interface can be insecure.
#可能數據量比較大,需要等待

6、啓動zabbix-server服務:

[root@server zabbix-server-mysql-3.4.11]# systemctl start zabbix-server
[root@server zabbix-server-mysql-3.4.11]# ps aux |grep zabbix
zabbix     4103  0.0  0.3 259448  3372 ?        S    17:00   0:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
root       4106  0.0  0.0 112720   968 pts/0    R+   17:00   0:00 grep --color=auto zabbix

查看監聽的端口,默認服務端監聽的端口爲10051,客戶端爲10050

[root@server zabbix-server-mysql-3.4.11]# netstat -lnp |grep zabbix

發現服務啓動了,並沒有監聽端口,說明不正常,查看zabbix日誌,默認在/var/log/zabbix/zabbix_server.log

[root@server zabbix-server-mysql-3.4.11]# tail /var/log/zabbix/zabbix_server.log 
  4103:20180726:171112.474 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

發現錯誤提示,連不上mysql,是因爲我們並沒有在zabbix指定mysql的一些參數,修改zabbix的服務端配置文件
<br/>
7、指定數據庫的位置(搜索關鍵字DBHost並修改)剛纔在mysql中創建的zabbix數據庫(搜索關鍵字DBName並修改),授權的用戶(搜索關鍵字DBUser並修改)和密碼(搜索關鍵字DBPassword並修改)

[root@server zabbix-server-mysql-3.4.11]# vi /etc/zabbix/zabbix_server.conf 
#根據在mysql授權的信息修改以下關鍵字的內容
DBHost=127.0.0.1
DBUser=zabbix
DBPassword=123456

注意:因爲mysql和zabbix裝在同一臺機器上,這裏可以寫localhost或者127.0.0.1;如果是在生產環境上,有時候爲了提升zabbix的性能,可能會把MySQL裝在其他機器上,這是的DBHost,就需要寫上mysql的ip
<br/>
8、再查看進程和監聽的端口

[root@server zabbix-server-mysql-3.4.11]# ps aux |grep zabbix
zabbix     4222  0.1  0.4 259552  4216 ?        S    17:26   0:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
zabbix     4225  0.0  0.2 259552  2532 ?        S    17:26   0:00 /usr/sbin/zabbix_server: configuration syncer [waiting 60 sec for processes]
zabbix     4226  0.0  0.2 259552  2532 ?        S    17:26   0:00 /usr/sbin/zabbix_server: alerter #1 started
zabbix     4227  0.0  0.2 259552  2532 ?        S    17:26   0:00 /usr/sbin/zabbix_server: alerter #2 started
zabbix     4228  0.0  0.2 259552  2532 ?        S    17:26   0:00 /usr/sbin/zabbix_server: alerter #3 started
zabbix     4229  0.0  0.2 259552  2532 ?        S    17:26   0:00 /usr/sbin/zabbix_server: housekeeper [startup idle for 30 minutes]
zabbix     4230  0.0  0.2 259552  2744 ?        S    17:26   0:00 /usr/sbin/zabbix_server: timer #1 [processed 0 triggers, 0 events in 0.000000 sec, 0 maintenances in 0.000000 sec, idle 19 sec]
zabbix     4231  0.0  0.2 259552  2936 ?        S    17:26   0:00 /usr/sbin/zabbix_server: http poller #1 [got 0 values in 0.000410 sec, idle 5 sec]
zabbix     4232  0.0  0.5 363908  5136 ?        S    17:26   0:00 /usr/sbin/zabbix_server: discoverer #1 [processed 0 rules in 0.000385 sec, idle 60 sec]
zabbix     4233  0.0  0.2 259552  2916 ?        S    17:26   0:00 /usr/sbin/zabbix_server: history syncer #1 [synced 0 items in 0.000001 sec, idle 1 sec]
zabbix     4234  0.0  0.2 259552  2916 ?        S    17:26   0:00 /usr/sbin/zabbix_server: history syncer #2 [synced 0 items in 0.000001 sec, idle 1 sec]
zabbix     4235  0.0  0.2 259552  2916 ?        S    17:26   0:00 /usr/sbin/zabbix_server: history syncer #3 [synced 0 items in 0.000001 sec, idle 1 sec]
zabbix     4236  0.0  0.2 259552  2916 ?        S    17:26   0:00 /usr/sbin/zabbix_server: history syncer #4 [synced 0 items in 0.000001 sec, idle 1 sec]
zabbix     4237  0.0  0.3 259552  3880 ?        S    17:26   0:00 /usr/sbin/zabbix_server: escalator #1 [processed 0 escalations in 0.000560 sec, idle 3 sec]
zabbix     4238  0.0  0.3 259552  3868 ?        S    17:26   0:00 /usr/sbin/zabbix_server: proxy poller #1 [exchanged data with 0 proxies in 0.000001 sec, idle 5 sec]
zabbix     4239  0.0  0.2 259552  2684 ?        S    17:26   0:00 /usr/sbin/zabbix_server: self-monitoring [processed data in 0.000004 sec, idle 1 sec]
zabbix     4240  0.0  0.2 259552  2920 ?        S    17:26   0:00 /usr/sbin/zabbix_server: task manager [processed 0 task(s) in 0.000391 sec, idle 5 sec]
zabbix     4241  0.0  0.5 366528  5312 ?        S    17:26   0:00 /usr/sbin/zabbix_server: poller #1 [got 0 values in 0.000002 sec, idle 5 sec]
zabbix     4242  0.1  0.5 366528  5312 ?        S    17:26   0:00 /usr/sbin/zabbix_server: poller #2 [got 0 values in 0.000001 sec, idle 5 sec]
zabbix     4243  0.0  0.5 366528  5312 ?        S    17:26   0:00 /usr/sbin/zabbix_server: poller #3 [got 0 values in 0.000001 sec, idle 5 sec]
zabbix     4244  0.0  0.5 366528  5312 ?        S    17:26   0:00 /usr/sbin/zabbix_server: poller #4 [got 0 values in 0.000001 sec, idle 5 sec]
zabbix     4245  0.0  0.5 366528  5312 ?        S    17:26   0:00 /usr/sbin/zabbix_server: poller #5 [got 0 values in 0.000001 sec, idle 5 sec]
zabbix     4246  0.0  0.5 366528  5312 ?        S    17:26   0:00 /usr/sbin/zabbix_server: unreachable poller #1 [got 0 values in 0.000003 sec, idle 5 sec]
zabbix     4247  0.0  0.3 259552  3632 ?        S    17:26   0:00 /usr/sbin/zabbix_server: trapper #1 [processed data in 0.000000 sec, waiting for connection]
zabbix     4248  0.0  0.3 259552  3632 ?        S    17:26   0:00 /usr/sbin/zabbix_server: trapper #2 [processed data in 0.000000 sec, waiting for connection]
zabbix     4249  0.0  0.3 259552  3632 ?        S    17:26   0:00 /usr/sbin/zabbix_server: trapper #3 [processed data in 0.000000 sec, waiting for connection]
zabbix     4250  0.0  0.3 259552  3632 ?        S    17:26   0:00 /usr/sbin/zabbix_server: trapper #4 [processed data in 0.000000 sec, waiting for connection]
zabbix     4251  0.0  0.3 259552  3632 ?        S    17:26   0:00 /usr/sbin/zabbix_server: trapper #5 [processed data in 0.000000 sec, waiting for connection]
zabbix     4252  0.0  0.2 262160  2716 ?        S    17:26   0:00 /usr/sbin/zabbix_server: icmp pinger #1 [got 0 values in 0.000003 sec, idle 5 sec]
zabbix     4253  0.0  0.3 259552  3284 ?        S    17:26   0:00 /usr/sbin/zabbix_server: alert manager #1 [sent 0, failed 0 alerts, idle 5.009257 sec during 5.009258 sec]
zabbix     4254  0.0  0.3 259552  3036 ?        S    17:26   0:00 /usr/sbin/zabbix_server: preprocessing manager #1 [queued 0, processed 0 values, idle 5.002193 sec during 5.002195 sec]
zabbix     4255  0.0  0.2 259552  2592 ?        S    17:26   0:00 /usr/sbin/zabbix_server: preprocessing worker #1 started
zabbix     4256  0.0  0.2 259552  2592 ?        S    17:26   0:00 /usr/sbin/zabbix_server: preprocessing worker #2 started
zabbix     4257  0.0  0.2 259552  2592 ?        S    17:26   0:00 /usr/sbin/zabbix_server: preprocessing worker #3 started
root       4280  0.0  0.0 112720   972 pts/0    R+   17:26   0:00 grep --color=auto zabbix
[root@server zabbix-server-mysql-3.4.11]# netstat -lnp |grep zabbix
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      4222/zabbix_server  
tcp6       0      0 :::10051                :::*                    LISTEN      4222/zabbix_server  
unix  2      [ ACC ]     STREAM     LISTENING     35160    4254/zabbix_server:  /var/run/zabbix/zabbix_server_preprocessing.sock
unix  2      [ ACC ]     STREAM     LISTENING     35176    4253/zabbix_server:  /var/run/zabbix/zabbix_server_alerter.sock

說明服務已經正常
<br/>
9、啓動httpd服務,安裝zabbix會順帶把httpd服務安裝上,因爲一會要在web界面下去安裝和配置zabbix,如果之前有啓動過web服務,如:nginx需要關掉,否則80會被佔用

[root@server zabbix-server-mysql-3.4.11]# systemctl start httpd
[root@server zabbix-server-mysql-3.4.11]# ps aux |grep httpd
root       4125  1.6  1.5 398912 15568 ?        Ss   17:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache     4127  0.0  0.7 398912  7744 ?        S    17:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache     4128  0.0  0.7 398912  7744 ?        S    17:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache     4129  0.0  0.7 398912  7744 ?        S    17:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache     4130  0.0  0.7 398912  7744 ?        S    17:03   0:00 /usr/sbin/httpd -DFOREGROUND
apache     4131  0.0  0.7 398912  7744 ?        S    17:03   0:00 /usr/sbin/httpd -DFOREGROUND
root       4133  0.0  0.0 112720   972 pts/0    R+   17:03   0:00 grep --color=auto httpd
[root@server zabbix-server-mysql-3.4.11]# netstat -lnp |grep httpd
tcp6       0      0 :::80                   :::*                    LISTEN      4125/httpd  

10、可以把httpd和zabbix-server服務設置爲開機啓動

[root@server zabbix-server-mysql-3.4.11]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@server zabbix-server-mysql-3.4.11]# systemctl enable zabbix-server
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-server.service to /usr/lib/systemd/system/zabbix-server.service.

11、在web界面配置zabbix
打開瀏覽器,輸入服務端的ip加目錄打開zabbix的web界面,如果不能打開,檢查防火牆配置和selinux
我的地址爲192.168.66.131/zabbix,進入到zabbix安裝歡迎頁面
2018-07-25筆記(zabbix安裝和配置)
點擊next step
2018-07-25筆記(zabbix安裝和配置)
這裏有個fail提示,是因爲沒有在php的配置文件裏定義時區,修改php配置文件php.ini,並重啓httpd服務

[root@server ~]# vi /etc/php.ini
date.timezone = Asia/Shanghai                           #設置這一行
[root@server ~]# systemctl restart httpd

刷新剛纔的頁面,可以看到已經顯示ok
2018-07-25筆記(zabbix安裝和配置)
點擊next step,填寫數據庫相關的信息,(剛纔在mysql中授權的)
2018-07-25筆記(zabbix安裝和配置)
點擊next step,填寫詳細信息
2018-07-25筆記(zabbix安裝和配置)
點擊next step,讓你確認信息
2018-07-25筆記(zabbix安裝和配置)
點擊next step,會提示配置完成
2018-07-25筆記(zabbix安裝和配置)
點擊finish到 登錄界面,默認的用戶名 admin 密碼 zabbix,登陸完成後到zabbix的控制檯頁面
2018-07-25筆記(zabbix安裝和配置)
更改admin的登陸密碼,並把語言設置成中文
點擊Administration-user-選擇需要更改的用戶admin
2018-07-25筆記(zabbix安裝和配置)
點擊admin-change password-輸入修改的密碼-Language選擇chinese
2018-07-25筆記(zabbix安裝和配置)
點擊upadte-並刷新頁面讓其顯示中文
2018-07-25筆記(zabbix安裝和配置)
這時候可以退出用修改的密碼重新登陸下,至此服務端安裝完成
<br/>
二、客戶端安裝
安裝端只需要安裝zabbix-agent,用來採集和上報數據給服務端,因爲之前已經安裝過zabbix的yum源
1、直接yum 安裝zabbix-agent

[root@client ~]# yum install -y zabbix-agent

2、安裝完成後修改zabbix-agent配置文件

[root@client  ~]# vim /etc/zabbix/zabbix_agentd.conf 
//修改如下字段
Server=192.168.66.131
#指定服務端主機IP(設置客戶端的監控主機白名單)

ServerActive=192.168.66.131
#該參數決定監控的主動/被動模式
#如果只改參數Server,則只能採用被動模式(只能等待服務端來採集信息)
#主動模式:客戶端主動向服務端發送信息

Hostname=testclient
#該參數用於設定客戶端主機的名字,用於服務端添加監控服務
#如果服務端所監控的機器和其Hostname不一致,服務端將無法識別該機器
#因爲zabbix是通過IP進行監控的,該參數不會對監控造成太大影響
#加上該參數有利於更好的辨別服務端監控是哪臺主機的狀態

3、啓動zabbix-agent服務並查看進程和端口(默認10050)

[root@client ~]# systemctl start zabbix-agent
[root@client ~]# ps aux |grep zabbix
zabbix     1446  0.0  0.1  82780  1276 ?        S    18:20   0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
zabbix     1447  0.0  0.1  82780  1320 ?        S    18:20   0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
zabbix     1448  0.0  0.1  82780  1844 ?        S    18:20   0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
zabbix     1449  0.0  0.1  82780  1844 ?        S    18:20   0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
zabbix     1450  0.0  0.1  82780  1844 ?        S    18:20   0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
zabbix     1451  0.0  0.2  82908  2224 ?        S    18:20   0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
root       1453  0.0  0.0 112720   968 pts/0    R+   18:20   0:00 grep --color=auto zabbix
[root@client ~]# netstat -lnp |grep zabbix
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      1446/zabbix_agentd  
tcp6       0      0 :::10050                :::*                    LISTEN      1446/zabbix_agentd 

至此,客戶端安裝完成

19.5 忘記Admin密碼如何做

有時候我們會忘記zabbix頁面的admin密碼,因爲zabbix數據都是保存在數據庫中,所以可以在數據庫中會修改
步驟:
○登陸mysql
○進入zabbix數據庫 use zabbix;
○修改users表中Admin用戶的密碼,格式如下,括號裏面是密碼
update users set passwd=md5('123456') where alias='Admin';

mysql> use zabbix;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed

mysql>  update users set passwd=md5('123456') where alias='Admin';
Query OK, 0 rows affected (0.00 sec)
Rows matched: 1  Changed: 0  Warnings: 0

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

更改完成後,用更改的新密碼登陸server端的web頁面
2018-07-25筆記(zabbix安裝和配置)

19.7 主動模式和被動模式

•主動或者被動是相對客戶端來講的

• 被動模式,服務端會主動連接客戶端獲取監控項目數據,客戶端被動地接受連接,並把監控信息傳遞給服務端

• 主動模式,客戶端會主動把監控數據彙報給服務端,服務端只負責接收即可。

• 當客戶端數量非常多時,建議使用主動模式,這樣可以降低服務端的壓力。

• 服務端有公網ip,客戶端只有內網ip,但卻能連外網,這種場景適合主動模式

主動模式和被動模式所針對的對象是客戶端,意思是客戶端主動向服務端上報數據和由服務端到客戶端採集數據。數據的提交時間在監控中心設置。

配置建議

採用主動模式可以減輕服務器的壓力。
當服務端有公網IP,客戶端只有內網IP但是可以連接外網(使用iptables的nat表規則實現),這種場景適合使用主動模式

19.8 添加監控主機

該配置在服務端的web界面監控中心進行。先添加主機羣組,再添加主機
點擊配置-主機羣組-創建主機羣組
2018-07-25筆記(zabbix安裝和配置)
填寫組名-並點擊添加
2018-07-25筆記(zabbix安裝和配置)
這樣就可以在主機羣組裏面看到剛創建的主機羣組luo
點擊配置-主機-創建主機
2018-07-25筆記(zabbix安裝和配置)
填寫主機名稱-可見的名稱-ip地址
2018-07-25筆記(zabbix安裝和配置)
客戶端主機名稱(在客戶端zabbix配置文件:/etc/zabbix/zabbix_agentd.conf中的Hostname參數),該名稱要和客戶端配置文件中的名稱一致;指定主機羣組;指定客戶端IP,如果該IP有對應的域名,則需要添加到“DNS名稱”中,如果沒有可以不填。有需要的話還可以進行模板、IPMI、宏等配置,配置完成後點擊“添加”,跳轉到主機列表:
2018-07-25筆記(zabbix安裝和配置)
●參數解析:
○應用集:監控項目的組集合
○監控項:所有的監控項目
○觸發器:監控規則(不填規則顏色不同,會體現在首頁主機狀態中)
○圖形:根據監控歷史數據繪製的圖標
○自動發現規則:zabbix自動監控的文件系統的信息、網卡信息(該部分自定義比較繁瑣,所以使用自己動發現規則)
○Web場景:在此可設置對主機上的某個站點進行監控
這裏因爲新添加的主機還沒設置,所以都是空的

19.9 添加自定義模板

zabbix自帶了很多監控模板,我們可以點擊某個模板然後克隆給別的模板,也可以點擊詳細的監控項複製給某個模板
在“模板”中創建一個新模板,自定義監控規則,然後應用到監控主機中,方便個性化管理。後續有監控主機加進來,可以直接應用模板
添加模板的思路:創建模板——指定其所屬模板組(也可以鏈接到其他模板)
點擊配置-模板-創建模板
2018-07-25筆記(zabbix安裝和配置)
填寫模板的名字,可見名稱,這裏我們選擇Templates羣組
2018-07-25筆記(zabbix安裝和配置)
添加完成後,點擊剛纔創建的模板aaa-鏈接的模板
2018-07-25筆記(zabbix安裝和配置)
鏈接指示器點擊選擇-選中Template OS Linux(對應系統的版本)
2018-07-25筆記(zabbix安裝和配置)
點擊添加把剛纔選擇的加入到鏈接的模板中-點擊更新
2018-07-25筆記(zabbix安裝和配置)
更新完後,要模板aaa裏面可以看到多了很多項目
2018-07-25筆記(zabbix安裝和配置)
點擊新創建的aaa模板-鏈接的模板-取消鏈接-更新,方便後續自定義規則
2018-07-25筆記(zabbix安裝和配置)
更新後可以看到aaa後面鏈接的模板已經沒有了,但是應用集那些還保留着
2018-07-25筆記(zabbix安裝和配置)
可以刪除模板中一些不必要監控項-點擊aaa模板的監控項-勾選不需要的監控項-點擊刪除
2018-07-25筆記(zabbix安裝和配置)
應用集裏面包含的是監控項目的集合,刪除後監控項有些應用集已經空了,也可以刪除掉
點擊應用集-勾選監控項後面沒有數據的-點擊刪除
2018-07-25筆記(zabbix安裝和配置)
到此這個模板已經弄好了,而且這個模板沒有連接任何的模板
接下來的操作就是去把剛剛建的主機和這個模板鏈接起來,做進一步的細化,比如監控項,觸發器在做些挑戰
2018-07-25筆記(zabbix安裝和配置)

19.10 處理圖形中的亂碼

將自定義模板應用到監控主機testclient中:
點擊配置——主機——選擇要添加的主機——模板——選擇——添加—更新
設置完成後查看監控主機-圖形——預覽,發現圖形界面下有亂碼:
2018-07-25筆記(zabbix安裝和配置)
這種有規律的顯示框框其實不算亂碼,只是缺少字庫文件引起的,解決辦法是上傳一個支持中文的字庫文件到服務端,更改zabbix的默認鏈接字庫,讓其鏈接到新的字庫文件,

#zabbix的默認字庫文件是在/usr/share/zabbix/fonts/下,
#這個路徑是在zabbix的/usr/share/zabbix/include/defines.inc.php配置文件中定義的
[root@server ~]# ls /usr/share/zabbix/fonts/
graphfont.ttf

我們用xsftp上傳一個windowns中的支持中文字庫文件到服務端,路徑在C:\Windows\Fonts下,把字庫文件複製到桌面然後上傳到服務端的zabbix字體文件目錄/usr/share/zabbix/fonts/,上傳過程省略

[root@server ~]# cd /usr/share/zabbix/fonts/
[root@server fonts]# ls
graphfont.ttf   simhei.ttf
[root@server fonts]# mv graphfont.ttf graphfont.ttf.bak
[root@server fonts]# ln -s STXINGKA.TTF graphfont.ttf
[root@server fonts]# ll
總用量 9528
lrwxrwxrwx 1 root root      10 7月  26 20:30 graphfont.ttf -> simhei.ttf
lrwxrwxrwx 1 root root      33 7月  26 15:52 graphfont.ttf.bak -> /etc/alternatives/zabbix-web-font
-rw-r--r-- 1 root root 9753388 7月  26 20:30 simhei.ttf

這樣新的字庫文件已經鏈接到默認的字庫文件上了
刷新頁面,看是否正常顯示
2018-07-25筆記(zabbix安裝和配置)
可以看到已經正常顯示中文,有綠色的線,說明已經有數據產生

19.11 自動發現

更改網卡的自動發現規則監控時間間隔:
2018-07-25筆記(zabbix安裝和配置)
點擊更新
2018-07-25筆記(zabbix安裝和配置)
爲了讓它儘快生效,重啓服務端和客戶端的zabbix服務
●z服務端

[root@server ~]# systemctl restart zabbix-server

●客戶端

[root@server ~]# systemctl restart zabbix-server

查看監控效果
2018-07-25筆記(zabbix安裝和配置)
在實際應用中時間間隔不要設置太短,一面增加服務器壓力。

更改圖形界面顏色

在模板——自發現規則——圖形原型中更改
<br/>
zabbix可以利用discovery模塊,實現自動發現主機、自動將主機添加到主機組、自動加載模版、自動創建項目、自動創建監控圖像。具體操作如下:

(1)依次選擇:配置-->自動發現-->創建發現規則。創建客戶端發現規則。如下圖所示:
2018-07-25筆記(zabbix安裝和配置)
參數解釋:

Name(名稱):規則名稱,自定義名稱
Discovery by proxy(由agent代理髮現):通過代理搜索
IP range(ip範圍):zabbix_server搜索區域的IP範圍
Update interval(更新間隔):更新的間隔
Checks(檢查):檢測方式,如果用ping方式去發現主機,則zabbix_server需要安裝fping。此處使用agent方式發現。使用zabbix agentd方式的時候,要使用key,這裏key爲:system.uname。也可以在zabbix_agentd配置文件中自定義key。
Device uniqueness criteria(設備唯一性標準):以IP地址作爲被發現主機的標識

設置好檢查之後,點”添加“,檢查添加完成後,勾選”已啓用“,最後點底部的“添加”
自定義key(鍵值)

在所有的agentd端編輯zabbix_agentd.conf文件,定義key

定義key語法:
UserParameter=<key>,<shell command> 比如: UserParameter=get.os.type,head /etc/redhat-release

(2)客戶端都需要安裝zabbix-agent,修改zabbix-agent配置文件,修改Server和ServerActive的字段 的IP爲服務端的IP

(3)創建發現Action

zabbix發現規則創建後,被發現的IP主機不會自動添加至zabbix監控列表,必須添加發現動作。設置如下:

依次選擇:配置-->動作-->事件源(自動發現)-->創建動作。如下圖:
2018-07-25筆記(zabbix安裝和配置)
2018-07-25筆記(zabbix安裝和配置)
設置好新的觸發條件主機ip後,點擊”添加“,然後點擊”操作“:
2018-07-25筆記(zabbix安裝和配置)
根據實際需要添加”操作“,上圖中添加了兩個操作。最後點擊”添加“即可,設置完成如下圖:
2018-07-25筆記(zabbix安裝和配置)

19.12 添加自定義監控項目

需求:監控某臺web的80端口連接數,並出圖
1、首先被監控主機上要安裝zabbix-agent,

yum install -y zabbix-agent

2、在被監控的主機上編寫腳本,名稱假設爲:estab.sh

比如,被監控的主機是:192.168.66.132(testclient)已開啓80端口,腳本內容如下:

[root@client ~]# mkdir /myscript
[root@client ~]# chmod -R 777 /myscript
[root@client ~]# cd /myscript/
[root@client myscript]# vim estab.sh     #添加如下內容
#!/bin/bash
#
#獲取80端口的併發連接數
netstat -ant | grep ':80' | grep -ci established
:wq保存退出
[root@client myscript]# chmod +x !$
chmod +x estab.sh
[root@lnmp-server myscript]# ll
總用量 4
-rwxr-xr-x 1 root root 97 7月  26 21:51 estab.sh

編輯zabbix agent配置文件,添加以下內容:

   UnsafeUserParameters=1  :1表示自定義腳本,0爲不使用自定義腳本
    UserParameter=my.estab.count[*],/myscript/estab.sh :自定義監控項的key爲:my.estab.count,後面的[*]裏面寫腳本的參數,如果沒有參數則可以省略,腳本:/myscript/estab.sh,用絕對路徑。

在agent配置文件中添加上面兩行內容:

[root@client myscript]# vim /etc/zabbix/zabbix_agentd.conf   #在最後面添加下面兩行,使用上面自定義的腳本
...
    UnsafeUserParameters=1
    UserParameter=my.estab.count[*],/myscript/estab.sh
...

重啓zabbix_agentd服務:

[root@client myscript]# systemctl restart zabbix-agent

到服務端用命令行方式驗證一下自定義的key和腳本是否可用:

[root@localhost ~]# zabbix_get -s 192.168.66.132 -p 10050 -k 'my.estab.count'
0

結果是0,因爲沒有機器訪問80端口
參數解釋:

-s:被監控的ip
-p:端口,agentd服務的默認端口是10050
-k:自定義的key

3、針對該項目以圖形展現
zabbix服務端添加該監控項目,因爲是監控的主機爲testclient,所以點擊testclient的監控項:
2018-07-25筆記(zabbix安裝和配置)
點擊創建監控項
2018-07-25筆記(zabbix安裝和配置)
進入監控項設置:
2018-07-25筆記(zabbix安裝和配置)
添加名稱和鍵值,其他保持默認即可。點擊添加,選擇自定義監控的項目
4、創建自定義監控項圖形:
點擊testclient主機-圖形-創建圖形
2018-07-25筆記(zabbix安裝和配置)
名稱:自定義
監控項:點擊”添加“,選擇監控項“監控80端口併發連接數”,點擊“選擇”
2018-07-25筆記(zabbix安裝和配置)
點擊添加後,預覽一下:
2018-07-25筆記(zabbix安裝和配置)
沒有訪問80端口,所以圖形沒數據
5、創建觸發器
點擊主機-觸發器-創建觸發器
2018-07-25筆記(zabbix安裝和配置)
2018-07-25筆記(zabbix安裝和配置)
名稱:自定義,選擇警告,點擊添加:
2018-07-25筆記(zabbix安裝和配置)
監控項選擇自定義 的監控項,配置告警的閥值和間隔,點擊插入,表達式會自動加上
2018-07-25筆記(zabbix安裝和配置)
最後點擊添加即可

19.13/19.14 配置郵件告警

1、使用163或QQ郵箱發告警郵件。這裏使用163郵箱。登陸163郵箱,開啓POP3、IMAP、SMTP服務,開啓並設置授權碼。
2018-07-25筆記(zabbix安裝和配置)
2、到zabbix監控中心(web界面)設置報警媒介
管理-報警媒介類型
2018-07-25筆記(zabbix安裝和配置)
默認有3個報警媒介。我們這裏新建一個,點擊創建“媒介類型”:
2018-07-25筆記(zabbix安裝和配置)
名稱:自定義

類型:選擇”腳本“

腳本名稱:mail.py,自定義

參數:{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}

點擊:添加”即可
2018-07-25筆記(zabbix安裝和配置)
3、在服務端定義腳本
腳本的路徑是在zabbix的服務端配置文件中定義的

[root@localhost ~]# vi /etc/zabbix/zabbix_server.conf    #搜索關鍵字AlertScriptsPath

2018-07-25筆記(zabbix安裝和配置)
我們在這個目錄創建mail.py的腳本

[root@localhost ~]# cd /usr/lib/zabbix/alertscripts
[root@localhost alertscripts]# vi mail.py   
[root@localhost alertscripts]# chmod 755 !$
chmod 755 mail.py

mail.py腳本內容如下, 根據你自己郵箱修改

#!/usr/bin/env python
#-*- coding: UTF-8 -*-
import os,sys
reload(sys)
sys.setdefaultencoding('utf8')
import getopt
import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from  subprocess import *

def sendqqmail(username,password,mailfrom,mailto,subject,content):
    gserver = 'smtp.qq.com'
    gport = 25

    try:
        msg = MIMEText(unicode(content).encode('utf-8'))
        msg['from'] = mailfrom
        msg['to'] = mailto
        msg['Reply-To'] = mailfrom
        msg['Subject'] = subject

        smtp = smtplib.SMTP(gserver, gport)
        smtp.set_debuglevel(0)
        smtp.ehlo()
        smtp.login(username,password)

        smtp.sendmail(mailfrom, mailto, msg.as_string())
        smtp.close()
    except Exception,err:
        print "Send mail failed. Error: %s" % err

def main():
    to=sys.argv[1]
    subject=sys.argv[2]
    content=sys.argv[3]
##定義QQ郵箱的賬號和密碼,你需要修改成你自己的賬號和密碼(請不要把真實的用戶名和密碼放到網上公開,否則你會死的很慘)
    sendqqmail('[email protected]','aaaaaaaaaa','[email protected]',to,subject,content)

if __name__ == "__main__":
    main()

測試腳本是否可用

[root@server alertscripts]# python mail.py [email protected] "13434343" "dfdfdf"

發送成功說明腳本沒問題
4、配置用戶
在監控中心(web端)創建一個接收告警郵件的“用戶”,在創建用戶前需要先創建一個“用戶組”,在此使用一個已經存在的用戶組。“管理”——“用戶”——“創建用戶”:
2018-07-25筆記(zabbix安裝和配置)
點擊報警媒介,添加剛纔新建的報警媒介
2018-07-25筆記(zabbix安裝和配置)
點擊權限,確保羣組對所有有讀寫權限
2018-07-25筆記(zabbix安裝和配置)
注意,如果權限不是讀寫,顯示無,需要修改用戶所在羣組的權限,管理——用戶羣組——權限
2018-07-25筆記(zabbix安裝和配置)

配置完後添加即創建了新的用戶,用來發送郵件
5、配置動作
設置觸發器被觸發後所要執行的的操作!
點出配置——動作——創建動作
2018-07-25筆記(zabbix安裝和配置)
進去後
2018-07-25筆記(zabbix安裝和配置)
消息內容可以更換爲這個

HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE}  {EVENT.TIME} 
LEVEL:{TRIGGER.SEVERITY} 
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}
ID:{EVENT.ID}

點擊觸發器下面的添加後,條件裏面就會顯示添加的條件
2018-07-25筆記(zabbix安裝和配置)
點擊操作
2018-07-25筆記(zabbix安裝和配置)
2018-07-25筆記(zabbix安裝和配置)
點擊恢復操作(這一步是配置告警恢復後要做的動作)
2018-07-25筆記(zabbix安裝和配置)
點擊確認操作(這一步是配置確認事件後做的動作)
2018-07-25筆記(zabbix安裝和配置)
檢查都配置完成後,點擊下面的添加,即完成了創建動作,在配置——動作——可以看到剛纔添加的動作——狀態爲已啓用
2018-07-25筆記(zabbix安裝和配置)

19.15 測試告警

配置完上面的用戶和動作後,來測試來告警是否會自動發送郵件
將監控項目改成故障項目。

“配置”——“主機”——“觸發器”——“創建觸發器”
注: 該觸發器只用於測試,完成測試後要刪除!
2018-07-25筆記(zabbix安裝和配置)
點出添加可以增加表達式,我們故意把系統1分鐘負載改成小於,讓其報警
等待一會後,在監控中心,監測 中——儀表盤——問題面板裏面可以看到問題已經發生
2018-07-25筆記(zabbix安裝和配置)
同時,郵箱也收到了郵件,說明告警自動發送郵件配置成功
2018-07-25筆記(zabbix安裝和配置)

擴展:
Prometheus入門 https://www.hi-linux.com/posts/25047.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章