天天看點

Zabbix 實作微信短信告警

  Zabbix簡介

Zabbix 近幾年得到了各大網際網路公司的認可,當然第一點歸功與它強大的監控功能,第二點免費開源也得到了廣大使用者的青睐。Zabbix 能将作業系統中的絕大部分名額進行監控,比如(CPU 負荷,記憶體使用,網絡狀況,端口監視,日志監視等等等等名額!)。監控名額的廣度是一方面,它強大的功能特點也省去了很多的配置操作。

Zabbix 功能特點:

  • 自動發現伺服器和網絡裝置
  • 分布式監控網絡,集中式管理(agent 、server 分開)
  • 監控名額模版豐富
  • 可靈活地配置設定使用者權限
  • 系統各個名額的可視化展示和分析等等

如何讓 Zabbix 更加完美?

雖然 Zabbix 在功能上非常強大,但是它在通知層面也并非十全十美:

  • 它現在的告警方式比較單一,預設支援郵件。
  • 相信很多運維工作者對短信的告警已經再熟悉不過了,甚至已經存在抵觸的心理,但還是期望 Zabbix 可以支援短信。 Zabbix 支援的短信方式需要進行短信網關對接,複雜度較高。
  • 而且短信的告警并非是一個好的方式,雖然發送了告警資訊,同樣會存在疏漏的情況,而且這種情況發生的機率并不是很低。

那麼有效的告警方式、告警資訊的到達率對運維同學具有很大的意義,相信也是小朋友們非常關注的。就算 Zabbix 監控的在全面和準确,但是如果沒有及時的通知并解決,那麼就是然并卵。酒再香總要賣出去,如果沒有好的告警平台,總覺得 Zabbix 少了點什麼。如果配上一個好的告警平台了,那麼就 Perfect 了!分享個工具 OneAlert ,該平台可以通過簡單的方式內建 Zabbix 告警。

  • 如果你是 Zabbix 的忠實粉絲,而且一直在使用它來監控伺服器,是否想通過一個告警平台更好的将告警資訊及時傳達到您的手中?而且這個平台還可以進行事件的更新和排班等功能。
  • 如果你沒使用過 Zabbix,但是也聽說過它功能的強大之處,為何不一起加入 Zabbix 的大家庭中,來共同感受這個免費開源軟體的魅力,以及帶給我們的價值呢?

那麼本文将給您如何快速搭建 Zabbix 監控伺服器,如何将 Zabbix 內建到OneAlert 告警平台上,實作微信和短信通知。

安裝說明

從0開始安裝Zabbix

如果你從來沒有接觸過 Zabbix ,請按照以下步驟安裝 Zabbix ,下面以 Zabbix 2.4.1+OneAlert 實作監控和微信提醒

  • Zabbix 伺服器: 10.128.17.136 CentOS 6.4 64bit
  • 被監控機器: 10.128.17.137 CentOS 6.4 64bit

也可以參考官網安裝

Zabbix 內建在 OneAlert

如果你對 Zabbix 非常熟悉或者機器中已經安裝,請跳過安裝步驟,直接進入OneAlert的Zabbix報警設定。

安裝 Zabbix Server

在伺服器10.128.17.136上安裝

1.安裝mysql

\# yum -y install mysql mysql-server mysql-devel

1

2

MySQL 配置檔案

/etc/my.cnf

中加入

default-character-set=utf8

\# vi /etc/my.cnf

加入

default-character-set=utf8 

\# service mysqld start

登陸,建立 Root 管理者

\# mysqladmin -u root password 123456

登陸 MySQL

\# mysql -uroot -p123456

建立 zabbix 資料庫,并設定登陸權限

mysql> create database zabbix character set utf8 collate utf8_bin;

mysql> grant all privileges on zabbix.* to zabbix@localhost identified by '<password>';

(我設定的密碼為123456)

mysql> \q

2.安裝 php、Apache

\ # yum install php php-mysql php-common php-gd php-mbstring php-mcrypt php-devel php-xml httpd

啟動 Apache

\# service httpd start

3. 安裝 Zabbix Server 軟體包

\# rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm

\# yum install zabbix-server-mysql zabbix-web-mysql

\# yum install zabbix-agent

3

4

5

6

将資料庫檔案導入到 zabbix 資料庫中

\# cd /usr/share/doc/zabbix-server-mysql-2.4.0/create

\# mysql -uroot -p123456 zabbix < schema.sql(登陸的使用者名和密碼)

\# mysql -uroot -p123456 zabbix < p_w_picpaths.sql

\# mysql -uroot -p123456 zabbix < data.sql

7

8

編輯 zabbix-server 配置檔案

\# vi /etc/zabbix/zabbix_server.conf

DBHost=localhost

DBName=zabbix

DBUser=zabbix

(上面賦予的登陸權限的使用者名)

DBPassword=123456

(上面賦予登陸權限的密碼)

\# vi /etc/httpd/conf.d/zabbix.conf

\# vi /etc/httpd/conf.d/zabbix.conf

将配置檔案中替換成以下内容

php_value max_execution_time 300

php_value memory_limit 128M

php_value post_max_size 16M

php_value upload_max_filesize 2M

php_value max_input_time 300

php_value date.timezone Asia/Shanghai

9

10

11

12

配置完成,重新啟動

zabbix_server

\#servcice zabbix-server restart

登陸安裝

zabbix http://ip

位址

/zabbix(http://10.128.17.136/zabbix)

如果此步驟出現問題,請确認

/etc/httpd/conf.d/zabbix.conf

中的配置正确

配置操作圖如下所示:

User 和 Password 為上面設定的使用者名和密碼

DBUse r=zabbix(上面賦予的登陸權限的使用者名)

DBPassword =123456(上面賦予登陸權限的密碼)

輸入 Hostname 與否都可以。

Zabbix 安裝完成

安裝 Zabbix Agent

在被監控伺服器

10.128.17.137

上安裝

Zabbix Agent

\#rpm -ivh http://repo.zabbix.com/zabbix/2.4/rhel/6/x86_64/zabbix-release-2.4-1.el6.noarch.rpm

\#yum install zabbix-agent

修改配置

/etc/zabbix/zabbix_agentd.conf

,将

server

設定

Server=10.128.17.136

\#service zabbix-agent restart`

Zabbix Agent 安裝完畢後,需要登入 Zabbix Server加入該機器

好了,Zabbix Agent 安裝完畢。

Zabbix 內建 OneAlert

下載下傳 OneAlert Agent

\#wget http://cdn.110monitor.com/open/download/alert-agent-4.0.1-RC4.tar.gz

\#tar xvf alert-agent-4.0.1-RC2.tar.gz

\#cp -R alert-agent /usr/lib/zabbix/alertscripts

\#cd /usr/lib/zabbix/alertscripts

\#chown -R zabbix:zabbix alert-agent

\#cp alert-agent/plugin/zabbix-plugin/110monitor/ usr/lib/zabbix/alertscripts/

\#chmod +x /usr/lib/zabbix/alertscripts/110monitor

13

14

注意!源碼安裝的盆友需要注意看配置檔案

/etc/zabbix/zabbix_server.conf

\# AlertScriptsPath=/zabbix/alertscripts

AlertScriptsPath=/usr/lib/zabbix/alertscripts

請将 Agent 更新至 AlertScriptsPath 目錄中

alert-agent

目錄和

110monitor

需要放在同一級目錄裡面

1.建立 110monitor 通知方式

建立媒體類型

Media types,,“Administrator”->“Media types”->“Create media type”

采用腳本模式

script

,腳本名為

110monitor

. 系統會在

/usr/lib/zabbix/alertscripts/

下查找上面的

110monitor

指令

2.建立110monitor使用者

建立使用者

110monitor

并設定通知媒介,登入 zabbix,

“Administrator”->“Users”->“create user”

  • 110monitor

    使用者加入到

    "Zabbix Administrator

    組"或者是建立組
  • 媒體類型,添加

    110monitor

    ,并且設定

    appkey

    為發送目标
  • 設定所有權限

    "Zabbix Super Admin"

建立 110monitor 使用者

設定媒介類型

設定權限

3.建立觸發動作發送通知

建立告警通知政策,

"Configurationg"->"Actions"->"Create action"

  • 名稱

    110monitor

  • 主題為

    trigger

    resolve

    ,意味着告警觸發和恢複都會同步到

    110monitor

  • 設定告警内容,注意冒号「:」前的内容不可變更,冒号「:」後的内容可以自行編輯

    alarmName:{TRIGGER.NAME}

    entityName:{HOSTNAME}

    entityId:{IPADDRESS}

    value:{TRIGGER.VALUE}

    eventId:{EVENT.ID}

    priority:{TRIGGER.SEVERITY}

    alarmContent:{IPADDRESS} {ITEM.NAME}:{ITEM.VALUE}

注意!自行配制的通知模闆是不行的,需要嚴格按照以上配置。

4.測試驗證

将被監控機器 10.128.17.137 的 Ping 禁用下,驗證一把。請确認該機器加了

"Template ICMP Ping"

監控模版,禁用 ping 測試是否正常通知

\#echo 1 > /proc/sys/net/ipv4/icmp\_echo\_ignore_all

禁 ping (看是否配置成功,成功就恢複 ping )

\#echo 0 > /proc/sys/net/ipv4/icmp\_echo\_ignore_all

恢複 ping

檢視 Agent 日志,出現 sucess 字樣代表成功,如果發送告警通知,則會同步發送微信、移動 app 、短信、郵件

\#tail -f /usr/lib/zabbix/alertscripts/alert-agent/log/agent.log

正常傳回

success

即表示成功

15-05-2015 18:16:17,698 CST INFO  [main] [com.upyoo.agent.ZabbixClient@68] start to call alert ...

15-05-2015 18:16:18,048 CST INFO  [main] [com.upyoo.agent.ZabbixClient@68] start to call alert ...

15-05-2015 18:16:18,057 CST INFO  [main] [com.upyoo.agent.CommandClient@82] app:04b9832b-    14b4-4c61-343d-5926ff8af672

15-05-2015 18:16:18,057 CST INFO  [main] [com.upyoo.agent.CommandClient@82]   eventType:trigger

15-05-2015 18:16:18,059 CST INFO  [main] [com.upyoo.agent.CommandClient@82]     alarmName:10.128.17.137 is unavailable by ICMP

15-05-2015 18:16:18,059 CST INFO  [main] [com.upyoo.agent.CommandClient@82] entityName:10.128.17.137

15-05-2015 18:16:18,060 CST INFO  [main] [com.upyoo.agent.CommandClient@82] entityId:10.128.17.137

15-05-2015 18:16:18,061 CST INFO  [main] [com.upyoo.agent.CommandClient@82] eventId:280

15-05-2015 18:16:18,061 CST INFO  [main] [com.upyoo.agent.CommandClient@82]  priority:Average

15-05-2015 18:16:18,062 CST INFO  [main] [com.upyoo.agent.CommandClient@82]   alarmContent:10.128.17.137 ICMP ping:Down (0)

15-05-2015 18:16:18,067 CST INFO  [main] [com.upyoo.agent.CommandClient@58] start to post url:http://api.110monitor.com/alert/api/event

15-05-2015 18:16:18,144 CST INFO  [main] [com.upyoo.agent.CommandClient@65] body: {"app":"04b9832b-14b4-4c61-343d-5926ff8af672","alarmContent":"10.128.17.137 ICMP ping:Down(0)","eventId":"280","priority":"3","entityId":"10.128.17.137","alarmName":"10.128.17.137 is  unavailable by ICMP","eventType":"trigger","entityName":"10.128.17.137"}

15-05-2015 18:16:18,728 CST INFO  [main] [com.upyoo.agent.CommandClient@68] result:{"result":"success","message":null,"data":"3690","totalCount":0,"code":"200"}

15

16

17

18

19

20

21

22

23

24

25

26

15-05-2015 18:16:17,698 CST INFO  [main] [com.upyoo.agent.ZabbixClient@68] start to call alert ...

15-05-2015 18:16:18,048 CST INFO  [main] [com.upyoo.agent.ZabbixClient@68] start to call alert ...

15-05-2015 18:16:18,057 CST INFO  [main] [com.upyoo.agent.CommandClient@82] app:04b9832b-    14b4-4c61-343d-5926ff8af672

15-05-2015 18:16:18,057 CST INFO  [main] [com.upyoo.agent.CommandClient@82]   eventType:trigger

15-05-2015 18:16:18,059 CST INFO  [main] [com.upyoo.agent.CommandClient@82]     alarmName:10.128.17.137 is unavailable by ICMP

15-05-2015 18:16:18,059 CST INFO  [main] [com.upyoo.agent.CommandClient@82] entityName:10.128.17.137

15-05-2015 18:16:18,060 CST INFO  [main] [com.upyoo.agent.CommandClient@82] entityId:10.128.17.137

15-05-2015 18:16:18,061 CST INFO  [main] [com.upyoo.agent.CommandClient@82] eventId:280

15-05-2015 18:16:18,061 CST INFO  [main] [com.upyoo.agent.CommandClient@82]  priority:Average

15-05-2015 18:16:18,062 CST INFO  [main] [com.upyoo.agent.CommandClient@82]   alarmContent:10.128.17.137 ICMP ping:Down (0)

15-05-2015 18:16:18,067 CST INFO  [main] [com.upyoo.agent.CommandClient@58] start to post url:http://api.110monitor.com/alert/api/event

15-05-2015 18:16:18,144 CST INFO  [main] [com.upyoo.agent.CommandClient@65] body: {"app":"04b9832b-14b4-4c61-343d-5926ff8af672","alarmContent":"10.128.17.137 ICMP ping:Down(0)","eventId":"280","priority":"3","entityId":"10.128.17.137","alarmName":"10.128.17.137 is  unavailable by ICMP","eventType":"trigger","entityName":"10.128.17.137"}

15-05-2015 18:16:18,728 CST INFO  [main] [com.upyoo.agent.CommandClient@68] result:{"result":"success","message":null,"data":"3690","totalCount":0,"code":"200"}

5.微信告警

添加成功之後,進入 OneAlert 控制台,用微信進行掃碼即可用微信實作報警。

6.電話短信報警

通過設定提醒,可以選擇告警的方式是電話、短信還是微信 APP 告警, OneAlert 提供多種方式和多政策的提醒方式

完成

恭喜你 完成 Zabbix 內建配置,微信即可接收告警提醒,并通過”我的告警“查詢所有未處理告警哦。

注意!注冊完畢後預設僅發送郵件提醒,請關注微信号

alert110

,或者到

使用者 -> 具體使用者

下配置短信提醒規則。或參考提醒設定

繼續閱讀