Linux监控平台搭建( zabbix监控)
2019獨角獸企業重金招聘Python工程師標準>>>
Linux監控平臺搭建( zabbix監控)
一、Linux監控平臺介紹
1、監控存在的原因
- 站點出了問題,沒有人知道,等用戶發現了,才提醒供應商;對公司影響很大
2、常見開源監控軟件
- cacti、nagios、zabbix、smokeping、open-falcon等等,其中nagios、zabbix流行度非常高;
- cacti、smokeping偏向于基礎監控,成圖非常漂亮,適合監控網絡設備 cacti監控網絡的設備;
- cacti、nagios、zabbix服務端監控中心,需要php環境支持(用Apache的php,用nginx的php都可以),其中zabbix和cacti都需要mysql作為數據存儲,nagios不用存儲歷史數據,注重服務或者監控項的狀態,zabbix會獲取服務或者監控項目的數據,會把數據記錄到數據庫里,從而可以成圖
3、目前業界都流行用zabbix。
- zabbix配置簡單,優勢明顯,早起使用nagios的企業,慢慢的轉向使用zabbix;
- nagios,需要更改配置文件,并不支持web界面一鍵執行,nagios和zabbix相比,nagios 更注重的是某一個監控的狀態,不關注歷史;
- zabbix,則是把每一次監控的數值反饋出來,數值存到數據庫里面,方便后期數據圖去分析監控整個狀態;
- nagios不需要mysql的支持,不能成圖,若需要畫圖,得安裝插件以后才支持web界面;
- ccti 也需要mysql的支持,也可以成圖,可以記錄歷史數據
- zabbix 在web界面下管理得非常徹底,可以增加監控節點,報警預知等等。
- open-falcon為小米公司開發,開源后受到諸多大公司和運維工程師的追捧,適合大企業,滴滴、360、新浪微博、京東等大公司在使用這款監控軟件,值得研究
- open-falcon軟件適合大企業使用,小企業可以去研究它的思想。
- 監控軟件比較新的: prometheus grafana
二、zabbix監控介紹
1、zabbix簡介
- C/S架構,有一個服務端,去客戶端抓數據。在客戶端必須要有一個服務啟動運行才可以抓取數據;數據可以主動的上報服務端,也可以讓服務端去連接客戶端獲取(通過抓取數據方式,數據獲取分兩個模式,一個主動模式,一個被動模式),
- zabbix軟件基于C++開發,監控中心需要一個PHP的web環境,因為要開啟一個web界面配置和管理 單臺server節點(即一臺server),理論上 可以支持上萬臺客戶端
2、zabbix瓶頸:
- 在于采集數據的量,雖然支持上萬臺,但監控的項目過多,還是會導致zabbix效率降低;所以,當服務器大到一定規模的時候,就需要對zabbix進行優化;
- 解決方法:可以增加一些代理點,這些代理點充當server,替代server去采集數據,最終得到分析結果再匯報給主服務端server;
3、zabbix架構里,包括了5個組件:
- zabbix-server 監控中心,接收客戶端上報信息,負責配置、統計、操作數據
- 數據存儲 存放數據,比如mysql
- web界面 也叫web UI,在web界面下操作配置是zabbix簡單易用的主要原因(如果沒有web界面,就無法在瀏覽器上配置它)
- zabbix-proxy 可選組件,它可以代替zabbix-server的功能,減輕server的壓力(當機器量很多的時候,可以使用zabbix-proxy)
- 有時候,服務器分布在多個機房里,每個機房的服務器之間都是一個單獨的內網,這時候就可以在某一個局域網里搭建一個 zabbix-proxy ,用這臺 proxy 去監控局域網里的機器
- zabbix-agent 客戶端軟件(每一臺客戶端都需要安裝agent),負責采集各個監控服務或項目的數據,并上報。
三、zabbix監控安裝
ying01安裝
下載官方提供的repo源
[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安裝包釋義:
- 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.cnfcharacter_set_server = utf8 //目的支持zabbix的web界面顯示中文重啟mysql,進入mysql;
[root@ying01 ~]# mysql -uroot -pyinglinux //進入mysqlmysql> 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.confDBHost=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/mysqldweb測試:
在瀏覽器輸入: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.confServer=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.四、忘記Admin密碼
在mysql下,進入zabbix庫,在user表中的passwd為其密碼;
update users set passwd=md5('www1234') where alias='Admin' 此命令為 更新密碼;
[root@ying01 ~]# mysql -uroot -pyinglinuxmysql> use zabbix; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -ADatabase 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: 0mysql> 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.phpdefine('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郵箱,設置開啟POP3、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 = 25sys.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 = 25try:msg = MIMEText(unicode(content).encode('utf-8'))msg['from'] = mailfrommsg['to'] = mailtomsg['Reply-To'] = mailfrommsg['Subject'] = subjectsmtp = 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" % errdef 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頁面,進行設置
1、管理 —— 報警媒介類型 —— 創建媒體類型,然后按下圖設置
2、管理 —— 用戶 —— ying ,按下圖選擇群組
3、點擊 報警媒介 ,點擊 添加;此時默認為baojing,寫入郵箱;
4、管理 —— 用戶組 —— zabbix administrors
5、點擊 權限,選中 讀寫,點擊選擇,把所有內容全選;
6、回到用戶,此時用戶的權限 已經為讀寫權限;
7、點擊 報警媒介 ,此時如果想再增加郵箱,可以點擊添加;
8、配置 動作,按下圖 填寫;
配置-->動作-->創建動作
- 動作名稱:中英文都可以,這里叫 發郵件
- 條件:維護狀態 非在 維護,就表示 維護狀態機器不進行發郵件
- 新的觸發條件,當觸發器示警度(也就是信息,警告,一般嚴重...)
- 大于等于未分類(未分類 表示 所有狀態,都會發信息)
配置-->動作-->操作
- 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}
9、設置恢復操作。即問題解決后,也給指定郵箱發郵件;
10、在web端已經配置好,發郵件的一切配置;
開始試驗:
1、想產生動作,必須要有信號;因此新建一個觸發器;
2、點擊儀表盤,最近20項內容,處查看,已經有報警,而且已經執行了動作,即發郵件
3、打開郵箱,此時能夠看出此郵件,剛剛發送;
4、那把觸發器改大于1,此時報警接觸,在菜單欄 問題 查看;發現恢復操作 的動作,也完成了;即回復郵件;
5、此時再查看郵箱,已經收到 郵件 OK;
轉載于:https://my.oschina.net/u/3851633/blog/1864968
總結
以上是生活随笔為你收集整理的Linux监控平台搭建( zabbix监控)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: springboot ftp 笔记
- 下一篇: mac电脑简单好用的非主流程序