一、監控存在的緣由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
一、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),負責採集各個監控服務或項目的數據,並上報。
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.
在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
- 主動或者被動是相對客戶端來說的
- 被動模式,服務端會主動鏈接客戶端獲取監控項目數據,客戶端被動地接受鏈接,並把監控信息傳遞給服務端,服務端請求之後,客戶端接受到請求之後,才把相應的數據彙報給服務中心
- 主動模式,客戶端會主動把監控數據彙報給服務端,服務端只負責接收便可
- 定義完策略以後,到達定義的時間之後,就會主動彙報數據給服務中心,好比系統的負載,網絡的網卡流量等
- 當客戶端數量很是多時,建議使用主動模式,這樣能夠下降服務端的壓力。
- 服務端有公網ip,客戶端只有內網ip,但卻能連外網,這種場景適合主動模式
在菜單欄 點設置——主機羣設置 ,設置羣名 ying-test
選擇 設置——主機——建立主機,羣組選擇以前剛設置好的ying-test
選擇 設置——主機——建立模板,名字自定義;
點擊 連接的模板 按圖選擇好模板;
點 主機——ying02——模板,選擇連接模板 ying
查看圖形的時候,點擊預覽,發現出現整齊的方塊,說明字庫有問題;
[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 重啓服務
改完配置後,刷新瀏覽器,能夠看到方塊消失;
在主機ying02 —— 自動發現規則,進入頁面
按圖進入;
設置更新時間;
監控一天的分佈圖;
需求:監控某臺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界面:
建立監控項:按下圖配置
建立相應的圖形:按下圖配置
建立相應的觸發器:按下圖配置
如今查看圖形,右下角綠色的線條;
使用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;