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

19.1 Linux監控平臺介紹

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

●常見開源監控軟件html

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

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

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

●由於zabbix配置簡單,優點明顯,早起使用nagios的企業,慢慢的轉向使用zabbixmysql

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

●zabbix 在web界面下管理得很是完全,能夠增長監控節點,報警預知等等ios

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

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安裝和配置)web

19.3/19.4/19.6 安裝zabbix

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

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

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

1、服務端安裝zabbix
一、安裝完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

二、接下來還須要編輯下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界面中文顯示

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

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

四、登錄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)

五、向建立的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.
#可能數據量比較大,須要等待

六、啓動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/>
七、指定數據庫的位置(搜索關鍵字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/>
八、再查看進程和監聽的端口

[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/>
九、啓動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

十、能夠把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.

十一、在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/>
2、客戶端安裝
安裝端只須要安裝zabbix-agent,用來採集和上報數據給服務端,由於以前已經安裝過zabbix的yum源
一、直接yum 安裝zabbix-agent

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

二、安裝完成後修改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進行監控的,該參數不會對監控形成太大影響
#加上該參數有利於更好的辨別服務端監控是哪臺主機的狀態

三、啓動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端口鏈接數,並出圖
一、首先被監控主機上要安裝zabbix-agent,

yum install -y zabbix-agent

二、在被監控的主機上編寫腳本,名稱假設爲: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

三、針對該項目以圖形展示
zabbix服務端添加該監控項目,由於是監控的主機爲testclient,因此點擊testclient的監控項:
2018-07-25筆記(zabbix安裝和配置)
點擊建立監控項
2018-07-25筆記(zabbix安裝和配置)
進入監控項設置:
2018-07-25筆記(zabbix安裝和配置)
添加名稱和鍵值,其餘保持默認便可。點擊添加,選擇自定義監控的項目
四、建立自定義監控項圖形:
點擊testclient主機-圖形-建立圖形
2018-07-25筆記(zabbix安裝和配置)
名稱:自定義
監控項:點擊」添加「,選擇監控項「監控80端口併發鏈接數」,點擊「選擇」
2018-07-25筆記(zabbix安裝和配置)
點擊添加後,預覽一下:
2018-07-25筆記(zabbix安裝和配置)
沒有訪問80端口,因此圖形沒數據
五、建立觸發器
點擊主機-觸發器-建立觸發器
2018-07-25筆記(zabbix安裝和配置)
2018-07-25筆記(zabbix安裝和配置)
名稱:自定義,選擇警告,點擊添加:
2018-07-25筆記(zabbix安裝和配置)
監控項選擇自定義 的監控項,配置告警的閥值和間隔,點擊插入,表達式會自動加上
2018-07-25筆記(zabbix安裝和配置)
最後點擊添加便可

19.13/19.14 配置郵件告警

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

類型:選擇」腳本「

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

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

點擊:添加」便可
2018-07-25筆記(zabbix安裝和配置)
三、在服務端定義腳本
腳本的路徑是在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('1234567@qq.com','aaaaaaaaaa','1234567@qq.com',to,subject,content)

if __name__ == "__main__":
    main()

測試腳本是否可用

[root@server alertscripts]# python mail.py xxxxxx@163.com "13434343" "dfdfdf"

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

配置完後添加即建立了新的用戶,用來發送郵件
五、配置動做
設置觸發器被觸發後所要執行的的操做!
點出配置——動做——建立動做
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

相關文章
相關標籤/搜索