Linux監控平臺搭建( zabbix監控)

Linux監控平臺搭建( zabbix監控)

1、Linux監控平臺介紹

一、監控存在的緣由php

  • 站點出了問題,沒有人知道,等用戶發現了,才提醒供應商;對公司影響很大

二、常見開源監控軟件python

  • 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。mysql

  • zabbix配置簡單,優點明顯,早起使用nagios的企業,慢慢的轉向使用zabbix;
  • nagios,須要更改配置文件,並不支持web界面一鍵執行,nagios和zabbix相比,nagios 更注重的是某一個監控的狀態,不關注歷史;
  • zabbix,則是把每一次監控的數值反饋出來,數值存到數據庫裏面,方便後期數據圖去分析監控整個狀態;
  • nagios不須要mysql的支持,不能成圖,若須要畫圖,得安裝插件之後才支持web界面;
  • ccti 也須要mysql的支持,也能夠成圖,能夠記錄歷史數據
  • zabbix 在web界面下管理得很是完全,能夠增長監控節點,報警預知等等。
  • open-falcon爲小米公司開發,開源後受到諸多大公司和運維工程師的追捧,適合大企業,滴滴、360、新浪微博、京東等大公司在使用這款監控軟件,值得研究
  • open-falcon軟件適合大企業使用,小企業能夠去研究它的思想。
  • 監控軟件比較新的: prometheus grafana

2、zabbix監控介紹

一、zabbix簡介linux

  • C/S架構,有一個服務端,去客戶端抓數據。在客戶端必需要有一個服務啓動運行才能夠抓取數據;數據能夠主動的上報服務端,也可讓服務端去鏈接客戶端獲取(經過抓取數據方式,數據獲取分兩個模式,一個主動模式,一個被動模式),
  • zabbix軟件基於C++開發,監控中心須要一個PHP的web環境,由於要開啓一個web界面配置和管理 單臺server節點(即一臺server),理論上 能夠支持上萬臺客戶端

二、zabbix瓶頸:ios

  • 在於採集數據的量,雖然支持上萬臺,但監控的項目過多,仍是會致使zabbix效率下降;因此,當服務器大到必定規模的時候,就須要對zabbix進行優化;
  • 解決方法:能夠增長一些代理點,這些代理點充當server,替代server去採集數據,最終獲得分析結果再彙報給主服務端server;

三、zabbix架構裏,包括了5個組件:nginx

  • zabbix-server 監控中心,接收客戶端上報信息,負責配置、統計、操做數據
  • 數據存儲 存放數據,好比mysql
  • web界面 也叫web UI,在web界面下操做配置是zabbix簡單易用的主要緣由(若是沒有web界面,就沒法在瀏覽器上配置它)
  • zabbix-proxy 可選組件,它能夠代替zabbix-server的功能,減輕server的壓力(當機器量不少的時候,可使用zabbix-proxy)
    • 有時候,服務器分佈在多個機房裏,每一個機房的服務器之間都是一個單獨的內網,這時候就能夠在某一個局域網裏搭建一個 zabbix-proxy ,用這臺 proxy 去監控局域網裏的機器
  • zabbix-agent 客戶端軟件(每一臺客戶端都須要安裝agent),負責採集各個監控服務或項目的數據,並上報。

3、zabbix監控安裝

ying01安裝web

下載官方提供的repo源sql

[root@ying01 ~]# rpm -i https://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
警告:/var/tmp/rpm-tmp.4JVpyA: 頭V4 RSA/SHA512 Signature, 密鑰 ID a14fe591: NOKEY

[root@ying01 ~]# ls /etc/yum.repos.d/zabbix.repo       //查看下載的repo源
/etc/yum.repos.d/zabbix.repo

用yum安裝zabbix相關的包數據庫

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

安裝包釋義:vim

  • zabbix-agent //客戶端軟件
  • zabbix-get //服務端用的一個工具,這個工具能夠經過命令行的形式,得到客戶端某些監控項目的數據
  • zabbix-server-mysql //這個是服務端跟mysql打交道相關的組件
  • zabbix-web //webUI ,web界面
  • zabbix-web-mysql //web和mysql相關組件

數據庫設置

zabbix 是基於php環境的,也就是說用的是php 的代碼編寫的web界面,也就說這個zabbix至關於一個站點 須要安裝mysql;

在mysql配置文件添加如下語句;

[root@ying01 ~]# vim /etc/my.cnf

character_set_server = utf8   //目的支持zabbix的web界面顯示中文

重啓mysql,進入mysql;

[root@ying01 ~]# mysql -uroot -pyinglinux             //進入mysql


mysql> create database zabbix character set utf8;    //建立zabbix數據庫,並設置utf8
Query OK, 1 row affected (0.00 sec)

mysql> grant all on zabbix.* to 'zabbix'@'127.0.0.1' identified by 'ying-zabbix';
Query OK, 0 rows affected (0.00 sec)                    //建立用戶,以及登陸密碼

mysql> quit
Bye

建立的用戶是須要讓web(php)代碼鏈接mysql的,監控中心zabbix mysql服務,啓動的前提就是要鏈接mysql;

客戶端採集了數據,須要把這些數據傳遞給服務端,那麼服務端怎麼把這些數據寫入到MySQL去,這時就涉及到了mysql 的用戶,涉及到了mysql 的數據庫;用哪個用戶,去寫入那一個庫。

給新建的zabbix庫,導入原始的數據;

[root@ying01 ~]# cd /usr/share/doc/zabbix-server-mysql-3.2.11/ 
[root@ying01 zabbix-server-mysql-3.2.11]# ls                      
AUTHORS  ChangeLog  COPYING  create.sql.gz  NEWS  README 
[root@ying01 zabbix-server-mysql-3.2.11]# gzip -d create.sql.gz   //解壓包
[root@ying01 zabbix-server-mysql-3.2.11]# ls
AUTHORS  ChangeLog  COPYING  create.sql  NEWS  README
[root@ying01 zabbix-server-mysql-3.2.11]# mysql -uroot -pyinglinux zabbix < create.sql   //導入zabbix庫
Warning: Using a password on the command line interface can be insecure.
[root@ying01 zabbix-server-mysql-3.2.11]# cd

啓動zabbix-server前,須要排查80端口是否是被佔用,由於80端口須要給httpd用;

[root@ying01 ~]# systemctl start zabbix-server
[root@ying01 ~]# ps aux |grep zabbix               //zabbix沒有徹底啓動
zabbix    2573  0.0  0.1 254628  3496 ?        S    13:54   0:00 /usr/sbin/zabbix_server -c /etc/zabbix/zabbix_server.conf
root      2581  0.0  0.0 112720   984 pts/0    S+   13:54   0:00 grep --color=auto zabbix
[root@ying01 ~]# ps aux |grep nginx                //nginx佔用80端口
root       988  0.0  0.0  45832  1272 ?        Ss   11:44   0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
nobody     989  0.0  0.2  48184  3900 ?        S    11:44   0:00 nginx: worker process
nobody     992  0.0  0.2  48184  3900 ?        S    11:44   0:00 nginx: worker process
root      2585  0.0  0.0 112724   980 pts/0    S+   13:55   0:00 grep --color=auto nginx
[root@ying01 ~]# /etc/init.d/nginx stop            //關閉ngnix服務
Stopping nginx (via systemctl):                            [  肯定  ]
[root@ying01 ~]# !ps
ps aux |grep nginx
root      2610  0.0  0.0 112720   984 pts/0    S+   13:55   0:00 grep --color=auto nginx

在zabbix_server配置文件中,按下面設置

[root@ying01 ~]# vim /etc/zabbix/zabbix_server.conf


DBHost=127.0.0.1      //添加的

DBName=zabbix        //配置文件中的參照位置


DBUser=zabbix          //配置文件中的參照位置
DBPassword=ying-zabbix  //添加的

注意:

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

重啓zabbix-server服務,並查看端口100051,說明zabbix-server徹底啓動了

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

[root@ying01 ~]# ps aux |grep zabbix   //查看進程,此處省略

[root@ying01 ~]# 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      586/rpcbind         
tcp        0      0 0.0.0.0:37584           0.0.0.0:*               LISTEN      844/rpc.statd       
tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      845/rpc.mountd      
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      661/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      801/master          
tcp        0      0 0.0.0.0:42272           0.0.0.0:*               LISTEN      -                   
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      3009/zabbix_server  
tcp6       0      0 :::42925                :::*                    LISTEN      -                   
tcp6       0      0 :::111                  :::*                    LISTEN      586/rpcbind         
tcp6       0      0 :::80                   :::*                    LISTEN      2652/httpd          
tcp6       0      0 :::20048                :::*                    LISTEN      845/rpc.mountd      
tcp6       0      0 :::39733                :::*                    LISTEN      844/rpc.statd       
tcp6       0      0 :::22                   :::*                    LISTEN      661/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      801/master          
tcp6       0      0 :::2049                 :::*                    LISTEN      -                   
tcp6       0      0 :::10051                :::*                    LISTEN      3009/zabbix_server  
tcp6       0      0 :::3306                 :::*                    LISTEN      2084/mysqld

web測試:

在瀏覽器輸入:192.168.112.136/zabbix/,出現zabbix監控主頁

進入下一步,發現頁面有,php的timezone時區,狀態爲 fail

進入php的配置文件;給它定義時區

[root@ying01 ~]# vim /etc/php.ini 

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
;date.timezone = Asia/Shanghai    //定義時區爲 上海

重啓httpd服務(php是httpd的一個模塊存在)

[root@ying01 ~]# systemctl restart httpd

此時刷新後,狀態顯示,所有爲OK

點擊下一步,進入簡單設置,按下圖設置;

點擊下一步,填寫端口10051,name自定義

下一步,你設置的信息會所有顯示出來;

點擊下一步,出現設置成功頁面;

在菜單欄點擊 Administration ,而後選擇 Users;

進入新頁面,設置密碼,並選擇中文;

退出登陸,輸入新密碼登陸;

刷新瀏覽器,此時顯示爲中文;

客戶機 ying02 :

一樣須要在客戶機安裝repo源,只是只須要yum安裝zabbix-agent

[root@ying02 ~]# rpm -i https://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
警告:/var/tmp/rpm-tmp.4JVpyA: 頭V4 RSA/SHA512 Signature, 密鑰 ID a14fe591: NOKEY
[root@ying02 ~]# cat /etc/yum.repos.d/
cat: /etc/yum.repos.d/: 是一個目錄
[root@ying02 ~]# ls /etc/yum.repos.d/
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo  epel-testing.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo  epel.repo          zabbix.repo
[root@ying02 ~]# 
[root@ying02 ~]# yum install -y zabbix-agent

編輯zabbix_agentd配置文件;

[root@ying02 ~]# vim /etc/zabbix/zabbix_agentd.conf


Server=127.0.0.1 改成  Server=192.168.112.136  //定義服務端的ip(被動模式)


ServerActive=127.0.0.1 改成 ServerActive=192.168.112.136  //不填寫服務端的IP,那麼就只能使用被動模式;

Hostname=Zabbix server  改成  Hostname=ying02  //自定義主機名

啓動zabbix_agentd服務,並查看其端口爲10050

[root@ying02 ~]# systemctl start zabbix-agent
[root@ying02 ~]# ps aux |grep zabbix
zabbix    3117  0.0  0.0  80776  1280 ?        S    15:36   0:00 /usr/sbin/zabbix_agentd -c /etc/zabbix/zabbix_agentd.conf
zabbix    3118  0.0  0.0  80776  1368 ?        S    15:36   0:00 /usr/sbin/zabbix_agentd: collector [idle 1 sec]
zabbix    3119  0.0  0.0  80776  1844 ?        S    15:36   0:00 /usr/sbin/zabbix_agentd: listener #1 [waiting for connection]
zabbix    3120  0.0  0.0  80776  1844 ?        S    15:36   0:00 /usr/sbin/zabbix_agentd: listener #2 [waiting for connection]
zabbix    3121  0.0  0.0  80776  1844 ?        S    15:36   0:00 /usr/sbin/zabbix_agentd: listener #3 [waiting for connection]
zabbix    3122  0.0  0.1  80908  2228 ?        S    15:36   0:00 /usr/sbin/zabbix_agentd: active checks #1 [idle 1 sec]
root      3128  0.0  0.0 112720   984 pts/0    R+   15:36   0:00 grep --color=auto zabbix
[root@ying02 ~]# 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      568/rpcbind         
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      936/nginx: master p 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      835/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1043/master         
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      3117/zabbix_agentd  
tcp6       0      0 :::111                  :::*                    LISTEN      568/rpcbind         
tcp6       0      0 :::22                   :::*                    LISTEN      835/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1043/master         
tcp6       0      0 :::10050                :::*                    LISTEN      3117/zabbix_agentd  

[root@ying02 ~]# 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.

4、忘記Admin密碼

在mysql下,進入zabbix庫,在user表中的passwd爲其密碼;

update users set passwd=md5('www1234') where alias='Admin' 此命令爲 更新密碼;

[root@ying01 ~]# mysql -uroot -pyinglinux


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> show tables;  //查看庫下的表,裏面有users表

127 rows in set (0.00 sec)

mysql> desc users;  //顯示user表的項目,裏面有passwd
+----------------+---------------------+------+-----+---------+-------+
| 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.05 sec)

mysql> update users set passwd=md5('www1234') where alias='Admin';  //更新密碼,括號內,爲新密碼
Query OK, 1 row affected (0.03 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from users;          
+--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+---------------+---------------+---------------+
| userid | alias | name   | surname       | passwd                           | url | autologin | autologout | lang  | refresh | type | theme   | attempt_failed | attempt_ip    | attempt_clock | rows_per_page |
+--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+---------------+---------------+---------------+
|      1 | Admin | Zabbix | Administrator | 566a1fc42bc3fa17a3920221d2b24d34 |     |         1 |          0 | zh_CN |      30 |    3 | default |              0 | 192.168.112.1 |    1532414568 |            50 |
|      2 | guest |        |               | d41d8cd98f00b204e9800998ecf8427e |     |         0 |        900 | en_GB |      30 |    1 | default |              0 |               |             0 |            50 |
+--------+-------+--------+---------------+----------------------------------+-----+-----------+------------+-------+---------+------+---------+----------------+---------------+---------------+---------------+
2 rows in set (0.00 sec)

mysql> quit
Bye

5、主動模式和被動模式

  • 主動或者被動是相對客戶端來說的
  • 被動模式,服務端會主動鏈接客戶端獲取監控項目數據,客戶端被動地接受鏈接,並把監控信息傳遞給服務端,服務端請求之後,客戶端接受到請求之後,才把相應的數據彙報給服務中心
  • 主動模式,客戶端會主動把監控數據彙報給服務端,服務端只負責接收便可
    • 定義完策略以後,到達定義的時間之後,就會主動彙報數據給服務中心,好比系統的負載,網絡的網卡流量等
  • 當客戶端數量很是多時,建議使用主動模式,這樣能夠下降服務端的壓力。
  • 服務端有公網ip,客戶端只有內網ip,但卻能連外網,這種場景適合主動模式

6、添加監控主機設置

在菜單欄 點設置——主機羣設置 ,設置羣名 ying-test

選擇 設置——主機——建立主機,羣組選擇以前剛設置好的ying-test

選擇 設置——主機——建立模板,名字自定義;

點擊 連接的模板 按圖選擇好模板;

點 主機——ying02——模板,選擇連接模板 ying

7、處理圖形中的亂碼

查看圖形的時候,點擊預覽,發現出現整齊的方塊,說明字庫有問題;

[root@ying01 ~]# vim /usr/share/zabbix/include/defines.inc.php


define('ZBX_FONTPATH',                     realpath('fonts')); // where to search for font (GD > 2.0.18)
define('ZBX_GRAPH_FONT_NAME',           'graphfont'); // font file name
  • ZBX_FONTPATH:定義的路徑是「fonts」,它是一個相對路徑,絕對路徑爲/usr/share/zabbix/fonts;
  • ZBX_GRAPH_FONT_NAME:所定義的「graphfont」,它是一個文件,絕對路徑爲/usr/share/zabbix/fonts/graphfont

打開字體目錄查看;

[root@ying01 ~]# ls /usr/share/zabbix/fonts/
graphfont.ttf
[root@ying01 ~]# ls -l /usr/share/zabbix/fonts/      //軟鏈接指向其餘目錄
總用量 0
lrwxrwxrwx 1 root root 33 7月   24 17:25 graphfont.ttf -> /etc/alternatives/zabbix-web-font
[root@ying01 ~]# ls -l  /etc/alternatives/zabbix-web-font     //繼續指向其餘文件
lrwxrwxrwx 1 root root 38 7月   24 17:26 /etc/alternatives/zabbix-web-font -> /usr/share/fonts/dejavu/DejaVuSans.ttf
[root@ying01 ~]# ls -l /usr/share/fonts/dejavu/DejaVuSans.ttf       //此時他就是一個字體
-rw-r--r-- 1 root root 720012 2月  24 2011 /usr/share/fonts/dejavu/DejaVuSans.ttf

找到這個字體DejaVuSans.ttf,那麼咱們再windows字庫找個支持中文的字體,好比simsun

[root@ying01 ~]# ls /root/simsun.ttc                       //我用xfp工具傳到root下
[root@ying01 ~]# mv simsun.ttc /usr/share/zabbix/fonts/    //移到zabbix字體目錄下
[root@ying01 ~]# cd /usr/share/zabbix/fonts/              
[root@ying01 fonts]# mv graphfont.ttf graphfont.ttf.bak        //把graphfont.ttf備份
[root@ying01 fonts]# ln -s simsun.ttc graphfont.ttf             //作一個軟鏈接
[root@ying01 fonts]# ls -l /usr/share/zabbix/fonts/
總用量 17788
lrwxrwxrwx 1 root root       10 7月  24 23:22 graphfont.ttf -> simsun.ttc
lrwxrwxrwx 1 root root       33 7月  24 13:15 graphfont.ttf.bak -> /etc/alternatives/zabbix-web-font
-rw-r--r-- 1 root root 18214472 7月  24 23:17 simsun.ttc
[root@ying01 fonts]# systemctl restart zabbix-server        重啓服務

改完配置後,刷新瀏覽器,能夠看到方塊消失;

8、自動發現

在主機ying02 —— 自動發現規則,進入頁面

按圖進入;

設置更新時間;

監控一天的分佈圖;

9、 添加自定義監控項目

  • 需求:監控某臺web的80端口鏈接數,並出圖

  • 兩步:1)zabbix監控中心建立監控項目;2)針對該監控項目以圖形展示

對於第一步,須要到客戶端ying02 定義腳本

vim /usr/local/sbin/estab.sh 


#!/bin/bash
##獲取80端口併發鏈接數
netstat -ant |grep ':80 ' |grep -c ESTABLISHED

給予755權限,否則zabbix執行不了這個腳本;

[root@ying02 ~]# chmod 755 /usr/local/sbin/estab.sh

客戶端 ying02上編輯配置文件 ,把增長如下內容:

[root@ying02 ~]# vim /etc/zabbix/zabbix_agentd.conf


# UnsafeUserParameters=0       //默認
UnsafeUserParameters=1         //表示使用自定義腳本
 

# UserParameter=        //默認的
UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh 
//自定義監控項的key爲my.estab.count,後面的[*]裏面寫腳本的參數,若是沒有參數則能夠省略,腳本爲/usr/local/sbin/estab.sh

進入web界面:

建立監控項:按下圖配置

建立相應的圖形:按下圖配置

建立相應的觸發器:按下圖配置

如今查看圖形,右下角綠色的線條;

10、配置郵件告警

使用163或者QQ郵箱發告警郵件 首先登陸你的163郵箱,設置開啓POP三、IMAP、SMTP服務 開啓並記錄受權碼 而後到監控中心設置郵件告警 「管理」,「報警媒介類型」,「建立媒體類型」 {ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE}

[root@ying01 ~]# vim /etc/zabbix/zabbix_server.conf 

AlertScriptsPath=/usr/lib/zabbix/alertscripts
[root@ying01 ~]# ls /usr/lib/zabbix/alertscripts
[root@ying01 ~]# cd /usr/lib/zabbix/alertscripts

[root@ying01 alertscripts]# vim 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

sys.setdefaultencoding('utf8')
import getopt
import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
#!/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
#!/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.126.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]
##定義郵箱的帳號和密碼,你須要修改爲你本身的帳號和密碼(請不要把真實的用戶名和密碼放到網上公開,不然你會死的很慘)
    sendqqmail('txwd188@126.com','省略','txwd188@126.com',to,subject,content)

if __name__ == "__main__":
    main()

給予755權限,不然不會執行此腳本;

[root@ying01 alertscripts]# chmod 755 mail.py

測試給郵箱發郵件,進行測試;

[root@ying01 alertscripts]# python mail.py txwd188@126.com  "0000000" "OK OK OK"
[root@ying01 alertscripts]# python mail.py txwd188@126.com  "111" "OK OK OK"
[root@ying01 alertscripts]# python mail.py txwd188@126.com  "qq" "OK OK OK"
[root@ying01 alertscripts]# python mail.py txwd188@126.com  "xyz" "OK OK OK"
[root@ying01 alertscripts]# python mail.py txwd188@126.com  "212" "OK OK OK"
[root@ying01 alertscripts]# python mail.py txwd188@126.com  "999" "OK OK OK"
[root@ying01 alertscripts]# python mail.py txwd188@126.com  "wwq" "OK OK OK"
[root@ying01 alertscripts]# python mail.py txwd188@126.com  "cda" "OK OK OK"
[root@ying01 alertscripts]# python mail.py txwd188@126.com  "12345" "OK OK OK"

雖然出現這種詭異現象,可是次日,從新測試,結果都能發送;


進入web頁面,進行設置

一、管理 —— 報警媒介類型 —— 建立媒體類型,而後按下圖設置

二、管理 —— 用戶 —— ying ,按下圖選擇羣組

三、點擊 報警媒介 ,點擊 添加;此時默認爲baojing,寫入郵箱;

四、管理 —— 用戶組 —— zabbix administrors

五、點擊 權限,選中 讀寫,點擊選擇,把全部內容全選;

六、回到用戶,此時用戶的權限 已經爲讀寫權限;

七、點擊 報警媒介 ,此時若是想再增長郵箱,能夠點擊添加;

八、配置 動做,按下圖 填寫;

配置-->動做-->建立動做

  • 動做名稱:中英文均可以,這裏叫 發郵件
  • 條件:維護狀態 非在 維護,就表示 維護狀態機器不進行發郵件
  • 新的觸發條件,當觸發器示警度(也就是信息,警告,通常嚴重...)
  • 大於等於未分類(未分類 表示 全部狀態,都會發信息)

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

  • 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)

配置-->動做-->恢復操做

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

九、設置恢復操做。即問題解決後,也給指定郵箱發郵件;

十、在web端已經配置好,發郵件的一切配置;


開始試驗:

一、想產生動做,必需要有信號;所以新建一個觸發器;

二、點擊儀表盤,最近20項內容,處查看,已經有報警,並且已經執行了動做,即發郵件

三、打開郵箱,此時可以看出此郵件,剛剛發送;

四、那把觸發器改大於1,此時報警接觸,在菜單欄 問題 查看;發現恢復操做 的動做,也完成了;即回覆郵件;

五、此時再查看郵箱,已經收到 郵件 OK;

相關文章
相關標籤/搜索