Linux監控平臺搭建

19.1 Linux監控平臺介紹

Linux監控平臺介紹

  • 監控存在的緣由
  • 站點出了問題,沒有人知道,等用戶發現了,才提醒供應商;對公司影響很大
  • 常見開源監控軟件
  • cacti、nagios、zabbix、smokeping、open-falcon等等,其中nagios、zabbix流行度很是高
  • cacti、smokeping偏向於基礎監控,成圖很是漂亮,適合監控網絡設備
  • cacti監控網絡的設備
  • cacti、nagios、zabbix服務端監控中心,須要php環境支持(用Apache的php,用nginx的php均可以),其中zabbix和cacti都須要mysql做爲數據存儲,nagios不用存儲歷史數據,注重服務或者監控項的狀態,zabbix會獲取服務或者監控項目的數據,會把數據記錄到數據庫裏,從而能夠成圖
  • 由於zabbix配置簡單,優點明顯,早起使用nagios的企業,慢慢的轉向使用zabbix
  • nagios,須要更改配置文件,並不支持web界面一鍵執行,nagios和zabbix相比,
  • nagios 更注重的是某一個監控的狀態,不關注歷史;
  • zabbix,則是把每一次監控的數值反饋出來,數值存到數據庫裏面,方便後期數據圖去分析監控整個狀態;
  • nagios不須要mysql的支持,不能成圖,若須要畫圖,得安裝插件之後才支持web界面;
  • ccti 也須要mysql的支持,也能夠成圖,能夠記錄歷史數據
  • zabbix 在web界面下管理得很是完全,能夠增長監控節點,報警預知等等
  • open-falcon爲小米公司開發,開源後受到諸多大公司和運維工程師的追捧,適合大企業,滴滴、360、新浪微博、京東等大公司在使用這款監控軟件,值得研究
  • open-falcon軟件適合大企業使用,小企業能夠去研究它的思想
  • 後續以介紹zabbix爲主

19.2 zabbix監控介紹

zabbix監控介紹

  • C/S架構,基於C++開發,監控中心支持web界面配置和管理
  • zabbix軟件,是C/S架構:有一個服務端,去客戶端抓數據。在客戶端必需要有一個服務啓動運行才能夠抓取數據;數據能夠主動的上報服務端,也可讓服務端去鏈接客戶端獲取(經過抓取數據方式,數據獲取分兩個模式,一個主動模式,一個被動模式),zabbix軟件基於C++開發,監控中心須要一個PHP的web環境,由於要開啓一個web界面配置和管理
  • 單臺server節點(即一臺server),理論上 能夠支持上萬臺客戶端
  • 瓶頸:在於採集數據的量,雖然支持上萬臺,但監控的項目過多,仍是會致使zabbix效率下降;因此,當服務器大到必定規模的時候,就須要對zabbix進行優化
  • 解決方法:能夠增長一些代理點,這些代理點充當server,替代server去採集數據,最終獲得分析結果再彙報給主服務端server
  • 目前zabbix軟件,最新版本3.4,官方文檔
  • 更新快,使用的用戶多
  • zabbix架構裏,包括了5個組件:
  • zabbix-server 監控中心,接收客戶端上報信息,負責配置、統計、操做數據
  • 數據存儲 存放數據,好比mysql
  • web界面 也叫web UI,在web界面下操做配置是zabbix簡單易用的主要緣由(若是沒有web界面,就沒法在瀏覽器上配置它)
  • zabbix-proxy 可選組件,它能夠代替zabbix-server的功能,減輕server的壓力(當機器量不少的時候,可使用zabbix-proxy)
  • 有時候,服務器分佈在多個機房裏,每一個機房的服務器之間都是一個單獨的內網,這時候就能夠在某一個局域網裏搭建一個 zabbix-proxy ,用這臺 proxy 去監控局域網裏的機器
  • zabbix-agent 客戶端軟件(每一臺客戶端都須要安裝agent),負責採集各個監控服務或項目的數據,並上報
  • 監控流程圖:

19.3/19.4/19.6 安裝zabbix

安裝zabbix

  • 官網下載地址
  • wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
  • rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
  • yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
  • 會連帶安裝httpd和php
  • 若是mysql以前沒有安裝的話,須要根據lamp那一章的mysql安裝方法安裝mysql
  • vim /etc/my.cnf //須要增長配置
character_set_server = utf8
  • 重啓mysqld服務後,進入mysql命令行,建立zabbix庫
  • create database zabbix character set utf8;
  • 再建立用戶
  • grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'aming-zabbix';
  • 導入數據
  • cd /usr/share/doc/zabbix-server-mysql-3.2.7
  • gzip -d create.sql.gz
  • mysql -uroot -pxxx zabbix < create.sql
  • systemctl start httpd; systemctl enable httpd
  • vim /etc/zabbix/zabbix_server.conf //修改或增長
DBHost=127.0.0.1 //在DBName=zabbix上面增長
DBPassword=aming-zabbix //在DBuser下面增長
  • systemctl start zabbix-server
  • systemctl enable zabbix-server
  • netstat -lntp |grep zabbix //查看監聽端口
  • 瀏覽器訪問http://ip/zabbix/ web界面下面配置zabbix
  • 用戶名Admin 密碼zabbix
  • 進入後臺第一件事情就是修改密碼

安裝zabbix

  • 準備工做
  • 兩臺機器,一臺做爲服務端(監控中心),另一臺做爲它的客戶端
  • 背景
  • zabbix,能夠直接yum安裝,但須要安裝epel擴展源,在epel擴展源裏面安裝的zabbix的版本,最高是2.2版本,比較舊,因此使用官方提供的repo源
  • 這裏實驗使用的zabbix3.2版本

1.首先訪問官網下載地址,選擇對應的版本,並提供對應的發行版,而後選擇download,跳轉到一個界面,找到這個rpm包(包含release),也就是說yum源在這個裏面,下圖所示,複製該連接 php

2.在兩臺機器都須要下載它python

A機器
[root@xuexi-001 ~]# wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
B機器
[root@xuexi-002 ~]# wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

3.下載完以後,安裝rpm包(實際上就是安裝了一個yum源倉庫)mysql

A機器安裝rpm包
[root@xuexi-001 ~]# rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm

B機器安裝rpm包
[root@xuexi-002 ~]# rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm

4.查看/etc/yum.repos.d/目錄下面會看到增長了一個zabbix.repolinux

[root@xuexi-001 ~]# ls /etc/yum.repos.d/
CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo  zabbix.repo
CentOS-CR.repo         CentOS-Media.repo      epel.repo
CentOS-Debuginfo.repo  CentOS-Sources.repo    epel-testing.repo
[root@xuexi-001 ~]# cat /etc/yum.repos.d/zabbix.repo 
[zabbix]
name=Zabbix Official Repository - $basearch
baseurl=http://repo.zabbix.com/zabbix/3.2/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591

[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=1

5.再有了這個zabbix.repo源以後,就能夠yum安裝zabbix了,並安裝下面的包ios

  • yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql
  • zabbix-agent //客戶端軟件
  • zabbix-get //服務端用的一個工具,這個工具能夠經過命令行的形式,得到客戶端某些監控項目的數據
  • zabbix-server-mysql //這個是服務端跟mysql打交道相關的組件
  • zabbix-web //webUI ,web界面
  • zabbix-web-mysql //web和mysql相關組件
  • PS:在服務端是須要安裝這些全部的包,而在客戶端僅僅須要安裝 zabbix-agent 包便可
A機器
[root@xuexi-001 ~]# yum install -y zabbix-agent zabbix-get zabbix-server-mysql zabbix-web zabbix-web-mysql

B機器
[root@xuexi-002 ~]# yum install -y zabbix-agent

6.zabbix 是基於php環境的,也就是說用的是php 的代碼編寫的web界面,也就說這個zabbix 至關於一個站點nginx

7.安裝mysql,若是mysql以前沒有安裝的話,須要根據lamp那一章的mysql安裝方法安裝mysql 固然yum安裝mysql、或mariadb也能夠 安裝mysqlweb

A機器(由於以前安裝過mysql)
[root@xuexi-001 ~]# ps aux |grep mysql
root       1080  0.0  0.0 115432  1728 ?        S    10:44   0:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/data/mysql --pid-file=/data/mysql/xuexi-001.pid
mysql      1289  0.1 24.6 1300848 459812 ?      Sl   10:44   0:04 /usr/local/mysql/bin/mysqld --basedir=/usr/local/mysql --datadir=/data/mysql --plugin-dir=/usr/local/mysql/lib/plugin --user=mysql --log-error=/data/mysql/xuexi-001.err --pid-file=/data/mysql/xuexi-001.pid --socket=/tmp/mysql.sock
root       1922  0.0  0.0 112724   972 pts/0    R+   11:38   0:00 grep --color=auto mysql

8.修改mysql的配置文件,修改/etc/my.cnf文件,設定默認的字符集sql

A機器
[root@xuexi-001 ~]# vim /etc/my.cnf
在[mysqld]下添加字符集

character_set_server = utf8
保存退出
  • 若是不設置字符集,那麼zabbix的web界面,設置成中文的話,可能就會出現亂碼

9.修改完mysql的配置文件後,重啓mysql服務數據庫

  • /etc/init.d/mysqld restart
A機器
[root@xuexi-001 ~]# systemctl restart mysql

10.重啓mysqld服務後,進入mysql命令行(第一次進入mysql命令行),建立zabbix庫,並指定編碼爲utf8 create database zabbix character set utf8;apache

A機器
[root@xuexi-001 ~]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.36 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement
mysql> create database zabbix character set utf8;
Query OK, 1 row affected (0.00 sec)

11.再建立用戶,這個用戶是須要讓web(php)代碼鏈接mysql的,監控中心zabbix mysql服務,啓動的前提就是要鏈接mysql;客戶端採集了數據,須要把這些數據傳遞給服務端,那麼服務端怎麼把這些數據寫入到MySQL去,這時就涉及到了mysql 的用戶,涉及到了mysql 的數據庫;用哪個用戶,去寫入那一個庫。

  • grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'xuexi001-zabbix';
mysql> grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'xuexi001-zabbix';
Query OK, 0 rows affected (0.00 sec)

mysql> quit
Bye
[root@hf-01 ~]#

12.退出mysql的命令行後,導入原始的數據,若缺乏這些數據,zabbix就沒有辦法工做,就沒有辦法在web界面下展示給咱們

  • zabbix-server-mysql-3.2.11 這塊用tab鍵補全,有可能版本號不一樣
A機器
[root@xuexi-001 ~]# cd /usr/share/doc/zabbix-server-mysql-3.2.11/
[root@xuexi-001 zabbix-server-mysql-3.2.11]#

13.在/usr/share/doc/zabbix-server-mysql-3.2.11/目錄下有一個create.sql.gz壓縮包,將它解壓,解壓完以後生成了一個.sql的文件

A機器
[root@xuexi-001 zabbix-server-mysql-3.2.11]# ls
AUTHORS  ChangeLog  COPYING  create.sql.gz  NEWS  README

14.而後拿到create.sql文件,將它導入到zabbix庫裏面去 A機器

[root@xuexi-001 zabbix-server-mysql-3.2.11]# mysql -uroot -p123456 zabbix < create.sql
Warning: Using a password on the command line interface can be insecure.

15.啓動zabbix服務,啓動zabbix報錯

systemctl start zabbix-server
[root@xuexi-001 ~]# systemctl start zabbix-server

16.啓動httpd服務,在啓動http服務以前,先查看nginx服務是否啓動,若啓動了nginx,就監聽了80端口,就須要去停掉nginx服務,再去啓動httpd服務

[root@xuexi-001 ~]# ps aux |grep nginx
root       1025  0.0  0.0  46040  1296 ?        Ss   10:43   0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody     1031  0.0  0.2  48576  4192 ?        S    10:43   0:00 nginx: worker process
nobody     1032  0.0  0.2  48576  3932 ?        S    10:43   0:00 nginx: worker process
root       2163  0.0  0.0 112724   972 pts/0    R+   11:53   0:00 grep --color=auto nginx
[root@xuexi-001 ~]# systemctl stop nginx
[root@xuexi-001 ~]# ps aux |grep nginx
root       2178  0.0  0.0 112720   972 pts/0    R+   11:54   0:00 grep --color=auto nginx
[root@xuexi-001 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:56141           0.0.0.0:*               LISTEN      884/rpc.statd       
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      537/rpcbind         
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      885/rpc.mountd      
tcp        0      0 0.0.0.0:34547           0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      868/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1238/master         
tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::111                  :::*                    LISTEN      537/rpcbind         
tcp6       0      0 :::20048                :::*                    LISTEN      885/rpc.mountd      
tcp6       0      0 :::22                   :::*                    LISTEN      868/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1238/master         
tcp6       0      0 :::39353                :::*                    LISTEN      884/rpc.statd       
tcp6       0      0 :::2049                 :::*                    LISTEN      -                   
tcp6       0      0 :::33032                :::*                    LISTEN      -                   
tcp6       0      0 :::3306                 :::*                    LISTEN      2115/mysqld         

[root@xuexi-001 ~]# systemctl start httpd
[root@xuexi-001 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:56141           0.0.0.0:*               LISTEN      884/rpc.statd       
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      537/rpcbind         
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      885/rpc.mountd      
tcp        0      0 0.0.0.0:34547           0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      868/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1238/master         
tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::111                  :::*                    LISTEN      537/rpcbind         
tcp6       0      0 :::80                   :::*                    LISTEN      2194/httpd          
tcp6       0      0 :::20048                :::*                    LISTEN      885/rpc.mountd      
tcp6       0      0 :::22                   :::*                    LISTEN      868/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1238/master         
tcp6       0      0 :::39353                :::*                    LISTEN      884/rpc.statd       
tcp6       0      0 :::2049                 :::*                    LISTEN      -                   
tcp6       0      0 :::33032                :::*                    LISTEN      -                   
tcp6       0      0 :::3306                 :::*                    LISTEN      2115/mysqld
  • 這時就發現httpd服務監聽了80端口

17.若須要開機啓動httpd服務和zabbix服務,則須要將它加入到服務的列表中去

  • systemctl enable httpd
  • systemctl enable zabbix-server
A機器
[root@xuexi-001 ~]# systemctl enable httpd
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[root@xuexi-001 ~]# 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.
  • 若nginx設置了開機啓動,則須要取消開機啓動
  • systemctl disable nginx
  • chkconfig nginx off

18.查看zabbix服務進程

[root@xuexi-001 ~]# systemctl disable nginx
nginx.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig nginx off
[root@xuexi-001 ~]# chkconfig nginx off

19.查看zabbix監聽的端口

[root@xuexi-001 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:56141           0.0.0.0:*               LISTEN      884/rpc.statd       
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      537/rpcbind         
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      885/rpc.mountd      
tcp        0      0 0.0.0.0:34547           0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      868/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1238/master         
tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::111                  :::*                    LISTEN      537/rpcbind         
tcp6       0      0 :::80                   :::*                    LISTEN      2194/httpd          
tcp6       0      0 :::20048                :::*                    LISTEN      885/rpc.mountd      
tcp6       0      0 :::22                   :::*                    LISTEN      868/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1238/master         
tcp6       0      0 :::39353                :::*                    LISTEN      884/rpc.statd       
tcp6       0      0 :::2049                 :::*                    LISTEN      -                   
tcp6       0      0 :::33032                :::*                    LISTEN      -                   
tcp6       0      0 :::3306                 :::*                    LISTEN      2115/mysqld
  • 錯誤:
  • 這裏看到服務啓動了,但並無zabbix監聽的端口

20.查看zabbix並無監聽端口後,首先檢查zabbix的錯誤日誌,錯誤日誌路徑/var/log/zabbix/zabbix_server.log

[root@xuexi-001 ~]# tail /var/log/zabbix/zabbix_server.log
  2160:20180910:115931.641 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
  2160:20180910:115931.641 database is down: reconnecting in 10 seconds
  2160:20180910:115941.643 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
  2160:20180910:115941.643 database is down: reconnecting in 10 seconds
  2160:20180910:115951.643 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
  2160:20180910:115951.643 database is down: reconnecting in 10 seconds
  2160:20180910:120001.644 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
  2160:20180910:120001.644 database is down: reconnecting in 10 seconds
  2160:20180910:120011.644 [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
  2160:20180910:120011.644 database is down: reconnecting in 10 seconds
  • 雖然zabbix服務有進程,但沒有完全的起來,說明不可以鏈接mysql,因此還須要更改zabbix的配置文件

21.更改zabbix的配置文件,配置文件爲/etc/zabbix/zabbix_server.conf

A機器
[root@xuexi-001 ~]# vim /etc/zabbix/zabbix_server.conf

搜索/DBHost
在DBName=zabbix上面增長
DBHost=127.0.0.1

在DBuser下面增長
DBPassword=xuexi001-zabbix

保存退出
  • 由於mysql和zabbix裝在同一臺機器上,這裏的 DBHost能夠寫localhost 或者127.0.0.1;若是是在生產環境上,有時候爲了提高zabbix的性能,可能會把MySQL裝在其餘機器上,這是的DBHost,就須要寫上mysql的ip

22.更改完zabbix配置文件,就能夠啓動zabbix服務了,由於以前啓動了zabbix服務,這裏只需restart重啓下便可

A機器
[root@hf-01 ~]# systemctl restart zabbix-server
[root@hf-01 ~]#

23.這時再來查看下zabbix進程,有29個(正常狀況下,都是這麼多進程)

A機器
[root@xuexi-001 ~]# systemctl restart zabbix-server
[root@xuexi-001 ~]# ps aux |grep zabbix
zabbix     2587  6.1  0.2 254808  4180 ?        S    12:17   0:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
zabbix     2589  0.0  0.1 254808  2512 ?        S    12:17   0:00 /usr/sbin/zabbix_server: configuration syncer [waiting 60 sec for processes]
zabbix     2590  0.0  0.1 254808  2724 ?        S    12:17   0:00 /usr/sbin/zabbix_server: db watchdog [synced alerts config in 0.016610 sec, idle 60 sec]
zabbix     2591  0.0  0.2 361744  5248 ?        S    12:17   0:00 /usr/sbin/zabbix_server: poller #1 [got 0 values in 0.000003 sec, idle 5 sec]
zabbix     2592  0.2  0.2 361744  5248 ?        S    12:17   0:00 /usr/sbin/zabbix_server: poller #2 [got 0 values in 0.000005 sec, idle 5 sec]
zabbix     2593  0.1  0.2 361744  5248 ?        S    12:17   0:00 /usr/sbin/zabbix_server: poller #3 [got 0 values in 0.000006 sec, idle 5 sec]
zabbix     2594  0.1  0.2 361744  5248 ?        S    12:17   0:00 /usr/sbin/zabbix_server: poller #4 [got 0 values in 0.000004 sec, idle 5 sec]
zabbix     2595  0.2  0.2 361744  5248 ?        S    12:17   0:00 /usr/sbin/zabbix_server: poller #5 [got 0 values in 0.000005 sec, idle 5 sec]
zabbix     2596  0.2  0.2 361744  5248 ?        S    12:17   0:00 /usr/sbin/zabbix_server: unreachable poller #1 [got 0 values in 0.000003 sec, idle 5 sec]
zabbix     2597  0.0  0.1 254808  3620 ?        S    12:17   0:00 /usr/sbin/zabbix_server: trapper #1 [processed data in 0.000000 sec, waiting for connection]
zabbix     2598  0.0  0.1 254808  3620 ?        S    12:17   0:00 /usr/sbin/zabbix_server: trapper #2 [processed data in 0.000000 sec, waiting for connection]
zabbix     2599  0.0  0.1 254808  3620 ?        S    12:17   0:00 /usr/sbin/zabbix_server: trapper #3 [processed data in 0.000000 sec, waiting for connection]
zabbix     2600  0.0  0.1 254808  3620 ?        S    12:17   0:00 /usr/sbin/zabbix_server: trapper #4 [processed data in 0.000000 sec, waiting for connection]
zabbix     2603  0.0  0.1 254808  3620 ?        S    12:17   0:00 /usr/sbin/zabbix_server: trapper #5 [processed data in 0.000000 sec, waiting for connection]
zabbix     2611  0.0  0.1 257380  2680 ?        S    12:17   0:00 /usr/sbin/zabbix_server: icmp pinger #1 [got 0 values in 0.000005 sec, idle 5 sec]
zabbix     2612  0.2  0.1 254808  2732 ?        S    12:17   0:00 /usr/sbin/zabbix_server: alerter [sent alerts: 0 success, 0 fail in 0.000813 sec, idle 30 sec]
zabbix     2613  0.0  0.1 254808  2508 ?        S    12:17   0:00 /usr/sbin/zabbix_server: housekeeper [startup idle for 30 minutes]
zabbix     2614  0.0  0.1 254808  2728 ?        S    12:17   0:00 /usr/sbin/zabbix_server: timer #1 [processed 0 triggers, 0 events in 0.000000 sec, 0 maintenances in 0.000000 sec, idle 30 sec]
zabbix     2615  0.0  0.1 254808  2896 ?        S    12:17   0:00 /usr/sbin/zabbix_server: http poller #1 [got 0 values in 0.000667 sec, idle 5 sec]
zabbix     2616  0.1  0.2 359276  5192 ?        S    12:17   0:00 /usr/sbin/zabbix_server: discoverer #1 [processed 0 rules in 0.000835 sec, idle 60 sec]
zabbix     2617  0.0  0.1 254808  2884 ?        S    12:17   0:00 /usr/sbin/zabbix_server: history syncer #1 [synced 0 items in 0.000002 sec, idle 1 sec]
zabbix     2618  0.0  0.1 254808  2884 ?        S    12:17   0:00 /usr/sbin/zabbix_server: history syncer #2 [synced 0 items in 0.000001 sec, idle 1 sec]
zabbix     2619  0.0  0.1 254808  2884 ?        S    12:17   0:00 /usr/sbin/zabbix_server: history syncer #3 [synced 0 items in 0.000002 sec, idle 1 sec]
zabbix     2620  0.0  0.1 254808  2884 ?        S    12:17   0:00 /usr/sbin/zabbix_server: history syncer #4 [synced 0 items in 0.000001 sec, idle 1 sec]
zabbix     2621  0.0  0.2 254808  3820 ?        S    12:17   0:00 /usr/sbin/zabbix_server: escalator #1 [processed 0 escalations in 0.000493 sec, idle 3 sec]
zabbix     2622  0.0  0.2 254808  3820 ?        S    12:17   0:00 /usr/sbin/zabbix_server: proxy poller #1 [exchanged data with 0 proxies in 0.000005 sec, idle 5 sec]
zabbix     2623  0.0  0.1 254808  2652 ?        S    12:17   0:00 /usr/sbin/zabbix_server: self-monitoring [processed data in 0.000006 sec, idle 1 sec]
zabbix     2624  0.0  0.1 254808  2872 ?        S    12:17   0:00 /usr/sbin/zabbix_server: task manager [processed 0 task(s) in 0.000415 sec, idle 5 sec]
root       2637  0.0  0.0 112720   972 pts/0    R+   12:17   0:00 grep --color=auto zabbix

24.查看監聽的端口,zabbix監聽的端口爲10051端口

A機器
[root@xuexi-001 ~]# netstat  -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:56141           0.0.0.0:*               LISTEN      884/rpc.statd       
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      537/rpcbind         
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      885/rpc.mountd      
tcp        0      0 0.0.0.0:34547           0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      868/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1238/master         
tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      2587/zabbix_server  
tcp6       0      0 :::111                  :::*                    LISTEN      537/rpcbind         
tcp6       0      0 :::80                   :::*                    LISTEN      2194/httpd          
tcp6       0      0 :::20048                :::*                    LISTEN      885/rpc.mountd      
tcp6       0      0 :::22                   :::*                    LISTEN      868/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1238/master         
tcp6       0      0 :::39353                :::*                    LISTEN      884/rpc.statd       
tcp6       0      0 :::2049                 :::*                    LISTEN      -                   
tcp6       0      0 :::10051                :::*                    LISTEN      2587/zabbix_server  
tcp6       0      0 :::33032                :::*                    LISTEN      -                   
tcp6       0      0 :::3306                 :::*                    LISTEN      2115/mysqld

25.接下來就是配置web界面了(須要關閉防火牆和規則,不然瀏覽器沒法訪問)

  • 在瀏覽器輸入IP地址(即監控中心的IP地址),如192.168.5.130/zabbix 去訪問

  • 不少人會有疑問,僅僅啓動了httpd 服務,沒有去作任何的配置,由於yum安裝zabbix,它默認安裝httpd 及它的配置文件,一切都會幫你配置好了

26.再打開zabbix界面後,點擊 Next step ,會出現一個提示,出現OK的都不用管,會看到提示須要去設置php的timezone時區,以下圖

27.設置php的timezone時區,在php的配置文件中設置,默認php的配置文件在/etc/php.ini 裏面

A機器
[root@xuexi-001 ~]# vi /etc/php.ini 
搜索 /timezone
將 ;date.timezone 改成以下

date.timezone = Asia/Shanghai
保存退出

28.在定義完php的配置文件,還須要重啓apache

[root@xuexi-001 ~]# systemctl restart httpd

29.這時再來刷新瀏覽器,會發現都變成OK了

30.這時再來 Next step ,來配置數據庫相關信息

  • host :MySQL所在機器IP
  • port:0爲默認端口3306,若是有改動就修改
  • name:庫的名字
  • user:庫的用戶
  • password:用戶的密碼

31.而後再選擇Next step ,配置站點名字相關

  • host:站點主機名
  • port:端口,若是有改動就改,沒改動,默認就是10051
  • name:站點的名字,你喜歡就好

32.配置完成後會有一個信息顯示,若是配置錯誤,能夠back返回上一步從新修改

33.安裝成功後,會有提示界面,以下圖

34.登陸管理頁,默認的帳號是Admin,密碼爲zabbix

35.在登陸進zabbix以後,首先須要去更改密碼(由於默認的密碼你們都知道的),如果在線上環境不更改密碼,很容易被別人拿到後臺權限

  • 更改密碼,先選擇 Administration ,而後選擇 Users

  • 而後找到Admin,並點進去,選擇 Change password 修改密碼和選擇語言(支持中文),而後保存退出

  • 這時候密碼改了,但看到界面仍是英文版,刷新瀏覽器便可,會看到變成中文版

  • 這時在退出zabbix,再從新進入下,使用新的密碼,會看到從新進入了,這就是zabbix的web界面了

客戶端安裝zabbix(B機器)

  • 在客戶端上也須要下載zabbix的yum源
  • wget repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
  • rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm
  • yum install -y zabbix-agent
  • vim /etc/zabbix/zabbix_agentd.conf //修改以下配置
Server=127.0.0.1修改成Server=192.168.133.130 //定義服務端的ip(被動模式)
ServerActive=127.0.0.1修改成ServerActive=192.168.133.130 //定義服務端的ip(主動模式)
Hostname=Zabbix server修改成Hostname=aming-123 //這是自定義的主機名,一會還須要在web界面下設置一樣的主機名
  • systemctl start zabbix-agent
  • systemctl enable zabbix-agent

1.首先客戶端下載yum源

B機器
[root@xuexi-002 ~]# wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm

2.下載完以後,安裝rpm包(實際上就是安裝了一個yum源倉庫)

B機器
[root@xuexi-002 ~]# rpm -ivh zabbix-release-3.2-1.el7.noarch.rpm

3.客戶端,編輯zabbix的配置文件,文件爲/etc/zabbix/zabbix_agentd.conf,服務端和客戶端通訊,就須要指定一個白名單IP

B機器
[root@xuexi-002 ~]# vi /etc/zabbix/zabbix_agentd.conf

搜索 /Server
Server=192.168.5.130
# 定義服務端的ip(被動模式),配置文件中默認是本機的IP

搜索 /ServerActive
ServerActive=192.168.5.130    
#定義服務端的ip(主動模式)
#這個涉及到一個主動和被動模式;若是這裏不填寫服務中心的IP,那麼就只能使用被動模式;這個IP是主動模式時候用的

搜索 /Hostname
Hostname=Zabbix server修改成Hostname=xuexi-002 
#這是自定義的主機名,一會還須要在web界面下設置一樣的主機名

保存退出

4.啓動zabbix服務

[root@xuexi-002 ~]# systemctl restart zabbix-agent

5.客戶端查看zabbix服務,監聽的端口,客戶端監聽的端口是10050

[root@xuexi-002 ~]# ps aux |grep zabbix
zabbix     3730  0.0  0.1  80664  1260 ?        S    13:03   0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
zabbix     3731  0.0  0.1  80664  1296 ?        S    13:03   0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
zabbix     3732  0.0  0.1  80664  1840 ?        S    13:03   0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
zabbix     3733  0.0  0.1  80664  1840 ?        S    13:03   0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
zabbix     3734  0.0  0.1  80664  1840 ?        S    13:03   0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
zabbix     3735  0.0  0.2  80796  2196 ?        S    13:03   0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
root       3737  0.0  0.0 112676   984 pts/0    R+   13:03   0:00 grep --color=auto zabbix
[root@xuexi-002 ~]# netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      534/rpcbind         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      904/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1133/master         
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      3730/zabbix_agentd  
tcp6       0      0 :::111                  :::*                    LISTEN      534/rpcbind         
tcp6       0      0 :::22                   :::*                    LISTEN      904/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1133/master         
tcp6       0      0 :::10050                :::*                    LISTEN      3730/zabbix_agentd  
tcp6       0      0 :::3306                 :::*                    LISTEN      1091/mysqld

6.將zabbix加入到啓動列表裏面,讓它開機啓動

  • systemctl enable zabbix-agent
[root@xuexi-002 ~]# systemctl enable zabbix-agent
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.

7.這樣客戶端的zabbix就配置完成

19.5 忘記Admin密碼如何作

忘記Admin密碼如何作

  • 進入mysql命令行,選擇zabbix庫

  • mysql -uroot -p zabbix

  • update users set passwd=md5(‘newpasswd’) where alias=‘Admin’;

  • 這樣就更改了Admin用戶的密碼 ####忘記zabbix密碼

  • 有時由於時間長了,zabbix管理員帳號密碼給忘記了

  • 解決辦法:

  • 重置zabbix密碼,就是直接更改數據庫裏的數據便可

1.首先進入到mysql命令行裏面

A機器
[root@xuexi-001 ~]# mysql -uroot -p123456
Warning: Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 319
Server version: 5.6.36 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

2.使用zabbix庫

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>

3.查看zabbix相關的表,之後服務器監控的主機越多,那麼這些表會愈來愈大,因此須要去指定合適的監控策略

  • 好比說:數據量須要保存多長時間,那麼在定義這個監控項目的時候就該想到,要保留1個月仍是1年,仍是其餘時間;
  • 好比,監控的站點服務量很大的話,一天就要漲好幾個G,那麼你的服務器磁盤能支持保存多長時間;
show tables;

4.zabbix的密碼,默認存放的表是users裏面 5.查看users表

  • desc users;
mysql> desc users;
+----------------+---------------------+------+-----+---------+-------+
| Field          | Type                | Null | Key | Default | Extra |
+----------------+---------------------+------+-----+---------+-------+
| userid         | bigint(20) unsigned | NO   | PRI | NULL    |       |
| alias          | varchar(100)        | NO   | UNI |         |       |
| name           | varchar(100)        | NO   |     |         |       |
| surname        | varchar(100)        | NO   |     |         |       |
| passwd         | char(32)            | NO   |     |         |       |
| url            | varchar(255)        | NO   |     |         |       |
| autologin      | int(11)             | NO   |     | 0       |       |
| autologout     | int(11)             | NO   |     | 900     |       |
| lang           | varchar(5)          | NO   |     | en_GB   |       |
| refresh        | int(11)             | NO   |     | 30      |       |
| type           | int(11)             | NO   |     | 1       |       |
| theme          | varchar(128)        | NO   |     | default |       |
| attempt_failed | int(11)             | NO   |     | 0       |       |
| attempt_ip     | varchar(39)         | NO   |     |         |       |
| attempt_clock  | int(11)             | NO   |     | 0       |       |
| rows_per_page  | int(11)             | NO   |     | 50      |       |
+----------------+---------------------+------+-----+---------+-------+
16 rows in set (0.00 sec)
  • 須要修改的就是passwd的表

6.修改密碼

  • update users set passwd=md5(‘newpasswd’) where alias=‘Admin’;
mysql> update users set passwd=md5('654321') where alias='Admin';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

7.查看錶的狀況

  • select * from users\G;
mysql> select * from users\G;
*************************** 1. row ***************************
        userid: 1
         alias: Admin
          name: Zabbix
       surname: Administrator
        passwd: c33367701511b4f6020ec61ded352059
           url: 
     autologin: 1
    autologout: 0
          lang: zh_CN
       refresh: 30
          type: 3
         theme: default
attempt_failed: 0
    attempt_ip: 
 attempt_clock: 0
 rows_per_page: 50
*************************** 2. row ***************************
        userid: 2
         alias: guest
          name: 
       surname: 
        passwd: d41d8cd98f00b204e9800998ecf8427e
           url: 
     autologin: 0
    autologout: 900
          lang: en_GB
       refresh: 30
          type: 1
         theme: default
attempt_failed: 0
    attempt_ip: 
 attempt_clock: 0
 rows_per_page: 50
2 rows in set (0.00 sec)

ERROR: 
No query specified

8.修改之後就能夠去嘗試用新密碼登陸zabbix了,這就是充值zabbix管理員密碼

19.7 zabbix的主動模式和被動模式

  • 主動模式和被動模式

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

  • 被動模式,服務端會主動鏈接客戶端獲取監控項目數據,客戶端被動地接受鏈接,並把監控信息傳遞給服務端,服務端請求之後,客戶端接受到請求之後,才把相應的數據彙報給服務中心

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

  • 定義完策略以後,到達定義的時間之後,就會主動彙報數據給服務中心,好比系統的負載,網絡的網卡流量等

  • 當客戶端數量很是多時,建議使用主動模式,這樣能夠下降服務端的壓力。

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

19.8 添加監控主機

添加監控主機

  • 先添加主機組aming-test
  • 再添加主機,主機名稱和可見名稱都寫aming-02
  • 羣組選擇aming_test
  • IP地址填寫客戶端的ip 192.168.133.132
  • 幾個概念:應用集、監控項、觸發器、圖形、自動發現、web監測

添加監控主機

  • 背景:
  • 服務端和客戶端配置並啓動了zabbix服務,
  • 操做環境
  • 下面就到監控中心(即web瀏覽器下去配置具體的機器和監控的項目)

1.在web頁面配置添加監控主機,選擇 配置 ,在選擇 主機羣組 ,去添加主機羣

2.配置下的一些集合

  • 主機羣組,就是給機器創建一些組,而後在組裏面創建一些機器;
  • 模板,就是一些監控項目的集合,預設的
  • 主機,裏面如今有 zabbix server,也就是咱們的監控中心,但監控中心沒有起zabbix agent,沒有啓動agent,就沒有辦法去採集數據的,因此是停用的狀態(若想啓動 ,就須要啓動 zabbix agent 服務)

3.添加一個主機(由於在客戶端已經安裝啓動了zabbix agent)

4.再添加主機以前,首先 添加一個 主機羣組

  • 寫上 組的名字 ——>點擊 添加便可;
  • 有其餘需求的時候,能夠增長父級羣組,從其餘主機的羣組中選擇

5.而後再點 主機 ——> 點擊 建立主機(主機名稱和可見名稱都寫xuexi-002)

  • 根據順序,填寫
  • 主機名,在客戶機上zabbix配置文件裏面已經配置好的
  • 可見名稱,重複寫上主機名,或者一個便於識別的名字
  • 添加所屬羣組,選中羣組,點擊向左的箭頭添加,或者3.1手動寫一個新羣組名稱
  • 添加客戶端IP地址,DNS是用來 解析IP地址使用的,由於咱們作的是實驗,因此就免去這一項,4.1鏈接方式,IP仍是DNS,端口填寫對應的agent客戶端端口(端口默認是10050)
  • 添加,完成監控主機添加

6.定義主動和被動模式,在 監控項 裏定義

7.在定義完主機後看到 應用集、監控項、觸發器、自動發現規則、web場景

  • 應用集:應用集就是監控項的集合,應用集的目的是爲了更方便的去管理監控項
  • 監控項:監控的項目
  • 觸發器:就是針對某一個項目,設置的一個告警規則
  • 圖形:相關數據的圖表化
  • 自動發現規則:自動抓取機器的兩個信息,並生產圖片和觸發器一個是文件系統,另外一個網卡
  • web場景:用於監控web站點

19.9 添加自定義模板

添加自定義模板

  • 能夠自定義一個經常使用模板,方便給新增主機添加監控項目
  • 自定義aming模板
  • 把其餘自帶模板裏面的某些監控項目(好比cpu、內存等)- 複製到aming模板裏
  • 定義觸發器
  • 添加圖形
  • 自動發現,找到Template OS Linux,點擊右側的自動發現,參考Mounted filesystem discovery和Network interface discovery定義規則
  • 能夠直接導出、導入模板,而後再刪除不須要的對象

添加自定義模板

1.在 配置 中的 模板,選擇建立模板

2.模板的名字自定義,這裏叫作aliang,模板歸屬在模板的組裏,或者連接到其餘的模板

3.剛添加的aliang模板,它下面 沒有 應用集、監控項、觸發器、自動發現規則、web場景,全部都爲空的

  • 這時aliang模板是空的,選擇aliang模板點擊進去,而後選擇 連接的模板 ,點選擇

  • 而後選擇拷貝的模板,這裏選擇的是 Template OS Linux

  • 而後在選擇 添加,不然是沒法保存的
  • 而後點擊 更新

  • 在更新以後,會看到aliang模板裏面有了應用集、監控項、圖形、自動發現等

  • 這時如果想刪除裏面的監控項等其餘的,會發現沒法刪除,是由於監控項是在原來的模板裏,只能在原來的模板裏面刪除

image

  • 若就想刪除連接過來的監控項,方法打開aliang模板,點進去,選擇連接的模板,會看到取消連接和取消連接並管理
  • 取消連接,僅僅只會把連接取消,但並不會把應用集、監控項等給清空掉
  • 取消連接並管理,就會把裏面的全部給清空

  • 這時點取消連接,而後點更新,會看到aliang模板裏面依舊存在這些,不一樣的是監控項、應用集等裏面沒有連接模板的名字了

image

  • 這時再來刪除就沒有問題了,再刪除的時候 只能先刪除監控項,才能刪除應用集
  • 應用集包含了監控項
  • 刪除監控項,會看到 提示 監控項已刪除 ,很順利的就刪除掉了

image

  • 刪除應用集,只要 右側監控項 有數字的都得留着,沒有數字的監控項均可以刪除

image

  • 此時這個模板配置完成,並且沒有連接任何的模板

處理圖形界面的亂碼

[root@xuexi-001 ~]# vi /usr/share/zabbix/include/defines.inc.php 

[1]+  已中止               vim /usr/share/zabbix/include/defines.inc.php
[root@xuexi-001 ~]# fg
vim /usr/share/zabbix/include/defines.inc.php
[root@xuexi-001 ~]# ls /usr/share/zabbix/fonts/
graphfont.ttf
[root@xuexi-001 ~]# ls -l /usr/share/zabbix/fonts/
總用量 0
lrwxrwxrwx 1 root root 33 9月  10 11:35 graphfont.ttf -> /etc/alternatives/zabbix-web-font
[root@xuexi-001 ~]# ls -l /etc/alternatives/zabbix-web-font
lrwxrwxrwx 1 root root 38 9月  10 11:35 /etc/alternatives/zabbix-web-font -> /usr/share/fonts/dejavu/DejaVuSans.ttf
[root@xuexi-001 ~]# ls 
123              mysql-5.6.36-linux-glibc2.5-x86_64
1.sh             mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz
1.txt            right.txt
2.txt            [root@hf-01
abc              STXINGKA.TTF
abcd             test
anaconda-ks.cfg  test1.txt
a.txt            test.txt
erro.txt         top.log
m                zabbix-release-3.2-1.el7.noarch.rpm
my.ipt
[root@xuexi-001 ~]# mv STXINGKA.TTF /usr/share/zabbix/fonts/
[root@xuexi-001 ~]# cd /usr/share/zabbix/fonts/
[root@xuexi-001 fonts]# ls
graphfont.ttf  STXINGKA.TTF
[root@xuexi-001 fonts]# mv graphfont.ttf graphfont.ttf.bak ;ln -s STXINGKA.TTF 
graphfont.ttf 
[root@xuexi-001 fonts]# ls -l 
總用量 3924
lrwxrwxrwx 1 root root      12 9月  10 19:59 graphfont.ttf -> STXINGKA.TTF
lrwxrwxrwx 1 root root      33 9月  10 11:35 graphfont.ttf.bak -> /etc/alternatives/zabbix-web-font
-rw-r--r-- 1 root root 4016288 9月  10 19:17 STXINGKA.TTF

19.13/19.14 配置郵件告警

配置郵件告警

  • 使用163或者QQ郵箱發告警郵件

  • 首先登陸你的163郵箱,設置開啓POP三、IMAP、SMTP服務

  • 開啓並記錄受權碼

  • 而後到監控中心設置郵件告警

  • 「管理」,「報警媒介類型」,「建立媒體類型」

  • {ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE} image

  • 建立報警腳本mail.py

  • vim /usr/lib/zabbix/alertscripts/mail.py//內容參考

  • chmod 755 /usr/lib/zabbix/alertscripts/mail.py

  • 建立一個接受告警郵件的用戶,「管理」,「用戶」,「建立用戶」,「報警媒介」,類型選擇「baojing」,注意用戶的權限,若是沒有須要到用戶組去設置權限

  • 設置動做,「配置」,「動做」,「建立動做」,名稱寫「sendmail」(自定義),「操做」頁面,內容以下

HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE}  {EVENT.TIME} 
LEVEL:{TRIGGER.SEVERITY} 
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}
  • 「新的觸發條件」,A維護狀態 非在 維護,B觸發器示警度>=未分類
  • 「操做」,選擇發送的用戶爲剛建立的用戶,僅送到選擇「baojing」
  • 切換到「恢復操做」,把信息改爲以下
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE}  {EVENT.TIME} 
LEVEL:{TRIGGER.SEVERITY} 
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}
  • 點擊「新的」,「操做」,選擇發送的用戶爲剛建立的用戶,僅送到選擇「baojing」
  • 測試告警

配置郵件告警

1.首先須要一個郵箱,使用郵箱發郵件(163郵箱)

2.訪問163郵箱,在第三方平臺上調用163郵箱發郵件,須要設置開啓POP三、IMAP、SMTP服務

  • 設置——POP3/IMAP/SMTP
  • 第一次開啓POP3/IMAP/SMTP服務會有短信驗證
  • 在驗證完以後還須要設置客戶端受權密碼(須要牢記),接下來發郵件的密碼就是受權密碼

3.在寫腳本以前 進入zabbix的web界面——> 管理——> 報警媒介類型——>建立媒體類型

  • 在報警媒介類型裏面的自帶的 Email 使用不方便,因此本身寫python發郵件的腳本 image

  • 名稱:指的是報警媒介類型的名稱,自定義,這裏叫作 baojing

  • 類型:腳本

  • 腳本名稱:自定義,這裏叫作 mail.py

  • 在py腳本參數下,三個參數都分佈在py的腳本里

  • {ALERT.SENDTO} 表示收件人

  • {ALERT.SUBJECT} 表示郵件主題

  • {ALERT.MESSAGE} 表示郵件內容

4.這時會看到成功添加 baojing 報警媒介類型 image

5.要實現報警,首先py腳本能發出郵件

6.在服務端(A機器)建立報警腳本mail.py,查看報警腳本所在位置

A機器
[root@hf-01 ~]# vim /etc/zabbix/zabbix_server.conf

搜索 /alert
AlertScriptsPath=/usr/lib/zabbix/alertscripts
#報警腳本所在路徑

7.建立報警腳本mail.py,在/usr/lib/zabbix/alertscripts/目錄下是空的, 來建立,腳本內容參考

A機器
[root@hf-01 ~]# vim /usr/lib/zabbix/alertscripts/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.163.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('163郵箱','密碼','163郵箱',to,subject,content)

if __name__ == "__main__":
    main()
    
    
#####腳本使用說明######
#1. 首先定義好腳本中的郵箱帳號和密碼
#2. 腳本執行命令爲:python mail.py 目標郵箱 "郵件主題" "郵件內容"

保存退出

8.更改mail.py腳本的權限(很重要!!!),不然就會沒法告警

  • chmod 755 /usr/lib/zabbix/alertscripts/mail.py
[root@hf-01 ~]# chmod 755 /usr/lib/zabbix/alertscripts/mail.py
[root@hf-01 ~]#

9.測試mail.py是否能發郵件,定義三個參數,如果給QQ的郵箱發郵件有可能會收不到

[root@hf-01 ~]# cd /usr/lib/zabbix/alertscripts/
[root@hf-01 alertscripts]# python mail.py han1118feng@163.com "ssss" "dddd"
[root@hf-01 alertscripts]#
  • 沒有任何提示就表示發郵件成功

10.這時打開163郵箱,會看到郵件 image

11.如果在郵件裏面寫中文,到郵箱裏面會顯示亂碼,這是由於在zabbix使用的是utf-8的字符集,而在郵箱裏使用的是GBK字符集,因此會亂碼

[root@hf-01 alertscripts]# python mail.py han1118feng@163.com "郵件" "dddd"
[root@hf-01 alertscripts]#

image

12.建立一個接受告警郵件的用戶(用戶是用來接收郵件的),在建立用戶的前提是建立一個用戶組,用戶組可使用已經存在的, 因此這裏直接建立用戶,管理-->用戶-->建立用戶

image

13.再給剛剛的用戶設置郵箱,管理-->用戶-->報警媒介-->添加 image

14.還要 注意用戶的權限,若是沒有權限,郵件是無法發的,要暫時到用戶組裏 (管理-->用戶羣組)

  • 默認的權限是無,須要去修改羣組,給予權限 image

image

15.設置動做,咱們配置了觸發器,那麼觸發後應該去作什麼,配置-->動做-->建立動做

  • 動做

  • 名稱:中英文均可以,這裏叫 發郵件

  • 條件:維護狀態 非在 維護,就表示 維護狀態機器不進行發郵件

  • 新的觸發條件,當觸發器示警度(也就是信息,警告,通常嚴重...)大於等於未分類(未分類 表示 全部狀態,都會發信息) image

  • 配置-->動做-->操做

  • 默認信息:直接刪除原有的(比較亂),粘貼下面的內容

  • 維護期間暫停操做:選擇打勾(若不打對勾也能夠,由於在動做的條件裏定義了)

默認信息定義當發生報警時,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)

image

  • 配置-->動做-->恢復操做
  • 默認信息:直接刪除原有的(比較亂),粘貼下面的內容(粘貼內容和操做裏面複製進去的信息是相同的)
HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE}  {EVENT.TIME} 
LEVEL:{TRIGGER.SEVERITY} 
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}

image image

  • 最後點 添加 確認 image

19.15 測試告警

測試告警

1.建立觸發器,來實現告警,配置-->主機-->hf-02主機-->建立觸發器

  • 名稱:系統負載
  • 嚴重性:警告
  • 表達式: 以下

image

  • 選擇 添加 image

  • 最終看到以下 image

2.而後回到監控中心,主頁——>最近20個問題

  • 若是提示爲啓用中,證實發現問題,正在啓用告警,顯示問完成,就證實已經發送郵件告警;如圖,咱們的實驗是成功的 image

  • 查看郵箱,會看到郵件發送 image

3.這就表示測試郵件告警成功

4.這時想要解決這個問題,只要將觸發器 系統負載條件數值調整 >1 便可,再來查看監控中心,就會發現問題消失了,而且會給郵箱發送 OK 的郵件

19.16 不發郵件的問題處理

不發郵件的問題處理

  • 由於虛擬機,可能存在一些bug,第一次配置的時候,常常會出現zabbix發現問題,作了郵件告警,可是郵箱卻沒有收到郵件的問題;
  • 從新恢復快照之後再作一次,就又能正常發送郵件,接收郵件了

配置郵件告警總結

1.到 163郵箱或 QQ郵箱 開啓SMTP服務,並記錄受權碼,沒有開啓,腳本里面就沒法去寫密碼

2.設置郵件告警

  • 首先設置一個報警媒介;
  • 三個參數必須填寫正確,順序也不能錯誤

3.編輯郵件告警腳本,腳本地址

  • /usr/lib/zabbix/alertscripts目錄下
  • 路徑不能錯誤,必須在這個路徑下,添加一個腳本

4.建立好以後,記得給腳本755權限,不然zabbix用戶是沒法調用這個腳本的

5.配置用戶

  • 配置用戶以前,把用戶羣組的權限改一下,讓組有一個讀寫權限
  • 用戶加到指定的羣組裏
  • 報警媒介,添加本身的郵箱地址,本身給本身發,這個成功率會比較高

6.配置動做

  • 操做修改默認信息(發送郵件的格式),操做須要添加一個「新的」給誰發郵件;恢復操做一樣

7.測試一下告警是否能成功發送郵件

  • 人爲建立一個觸發器,設置一個系統最低運行都會觸發報警的觸發器
  • 也能夠在客戶端上斷開鏈接(中止客戶端的zabbix服務)

8.更改主動和被動

  • PS: 客戶端主動模式和被動模式,在監控項裏,選擇一個監控項打開,選擇類型是客戶端主動,客戶端;客戶端主動即爲主動模式,客戶端爲被動模式

9.觸發器不能用中文命名,否則郵件顯示亂碼

相關文章
相關標籤/搜索