使用zabbix實現郵箱/釘釘告警

misakivv發表於2024-03-17

目錄
  • 一、zabbix部署
    • 1、安裝zabbix服務端
    • 2、準備資料庫(mariadb簡單點)
    • 3、修改服務的配置
  • 二、登入zabbix
  • 三、客戶端配置
    • 1、安裝軟體包
    • 2、修改配置檔案
    • 3、啟動客戶端服務
  • 四、報錯解決
  • 五、新增監控主機
    • 1、安裝軟體包
    • 2、修改配置檔案
    • 3、啟動客戶端服務
    • 4、回到zabbix新增主機
    • 5、新增模板
  • 六、新增mysql自定義監控項
    • 1、被監控主機上安裝mariadb做測試
    • 2、編寫客戶端監控項配置檔案
    • 3、驗證自定義的監控項是否生效
    • 4、web端新增監控項對應鍵值
    • 5、新增圖形視覺化(選做)
    • 6、新增對應的觸發器
    • 7、小問題
  • 七、zabbix實現郵件告警
    • 1、配置告警媒介
    • 2、獲取qq郵箱授權碼
    • 3、新增接收報警郵件的郵箱
    • 4、配置動作傳送給使用者群組
    • 5、測試(關閉被監測主機mariadb)
  • 八、zabbix透過釘釘/企業微信告警
    • 1、釘釘群聊
    • 2、新增群機器人(PC端建立)
    • 3、到服務端/usr/lib/zabbix/alertscripts下準備python指令碼
    • 4、測試指令碼
    • 5、新增告警媒介
    • 6、新增動作
    • 7、繫結使用者,使用者收件人寫電話號碼
    • 8、手動測試(關閉mariadb)
    • 效果呈現:

一、zabbix部署

1、安裝zabbix服務端

  • 準備yum源,安裝服務的元件

    [root@server1 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
    [root@server1 ~]# yum install zabbix-server-mysql zabbix-web-mysql  -y
    

    image-20240315205718701

  • 關閉selinux、防火牆

    [root@server1 ~]# setenforce 0
    setenforce: SELinux is disabled
    [root@server1 ~]# systemctl stop firewalld
    

2、準備資料庫(mariadb簡單點)

  • 安裝資料庫

    [root@server1 ~]# yum install -y mariadb-server
    [root@server1 ~]# systemctl start mariadb
    [root@server1 ~]# systemctl enable mariadb
    Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
    
  • 建立zabbix使用者

    [root@server1 ~]# mysql -uroot
    MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
    MariaDB [(none)]> create user zabbix@localhost identified by '000000';
    MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;
    MariaDB [(none)]> \q
    

    image-20240315210302653

3、修改服務的配置

  • 匯入初始架構資料

    [root@server1 ~]# zcat /usr/share/doc/zabbix-server-mysql-4.0.50/create.sql.gz | mysql -uzabbix -D zabbix -p000000
    
  • 為zabbix配置資料庫

    sed -i '/^# DBPassword=/a DBPassword=000000' /etc/zabbix/zabbix_server.conf
    
  • 編輯前端php配置

    sed -i '/php_value always_populate_raw_post_data -1/a\php_value date.timezone Asia/Shanghai' /etc/httpd/conf.d/zabbix.conf
    
  • 啟動服務

    [root@server1 ~]# systemctl restart zabbix-server httpd
    [root@server1 ~]# systemctl enable zabbix-server httpd
    

zabbix服務端部署完成,可以透過http://ip地址/zabbix訪問,初始化完成之後使用使用者Admin 密碼zabbix登入

二、登入zabbix

image-20240315211112309

Next step

image-20240315211458707

Next step

image-20240315211831168

Next step

image-20240315212057807

Next step

image-20240315212156815

Next step

image-20240315212232335

完成,登入

image-20240315212323420

簡單漢化一下

image-20240315213007432

image-20240315213628680

三、客戶端配置

1、安裝軟體包

[root@server1 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
[root@server1 ~]# yum install -y zabbix-agent

2、修改配置檔案

[root@server1 ~]# vim /etc/zabbix/zabbix_agentd.conf
#主要修改以下三個引數
Server=192.168.112.60
ServerActive=192.168.112.60
Hostname=server1

3、啟動客戶端服務

[root@server1 ~]# systemctl start zabbix-agent.service

四、報錯解決

配置->主機->替換IP地址->更新

image-20240315214041899

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

大概會等十分鐘

image-20240315215834229

五、新增監控主機

1、安裝軟體包

[root@server2 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-release-4.0-2.el7.noarch.rpm
[root@server2 ~]# yum install -y zabbix-agent

2、修改配置檔案

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

# 主要修改以下三個引數
Server=192.168.112.60	#上報給服務端
ServerActive=192.168.112.60		#服務端
Hostname=server2	#和server1不一樣即可

3、啟動客戶端服務

[root@server2 ~]# systemctl restart zabbix-agent
[root@server2 ~]# ss -tnl		#看到埠10050起來了就行
State       Recv-Q Send-Q Local Address:Port               Peer Address:Port             
LISTEN      0      128              *:22                           *:*
LISTEN      0      100      127.0.0.1:25                           *:*
LISTEN      0      128              *:10050                        *:*
LISTEN      0      128           [::]:22                        [::]:*
LISTEN      0      100          [::1]:25                        [::]:*
LISTEN      0      128           [::]:10050                     [::]:*

4、回到zabbix新增主機

配置->主機->建立主機

image-20240316224752626

5、新增模板

配置->主機->server2->模板新增->更新

image-20240316225655651

正常到這一步主機已經變為綠色,並且模板自動新增了應用集與監控項

image-20240316230437822

六、新增mysql自定義監控項

1、被監控主機上安裝mariadb做測試

[root@server2 ~]# yum install -y mariadb-server
[root@server2 ~]# systemctl start mariadb

2、編寫客戶端監控項配置檔案

[root@server2 ~]# vim /etc/zabbix/zabbix_agentd.d/userparameter_mysql.conf
UserParameter=mariadb_status,mysqladmin ping 2>/dev/null|grep -c alive	#判斷mariadb狀態
UserParameter=mariadb_connections,mysql -e "show processlist;" 2>/dev/null | sed -n '2,$'p | wc -l			#mariadb連線數
UserParameter=mariadb_max_connections,mysql -e 'show variables like "%max_connections%"' 2>/dev/null|tail -1|awk '{print $2}'
	#mariadb最大連線數

[root@server2 ~]# systemctl restart zabbix-agent.service

image-20240317000634194

注意,新增到監控項配置檔案裡的命令需結合自身情況合理編寫

3、驗證自定義的監控項是否生效

[root@server1 zabbix]#  yum install zabbix-get.x86_64 -y
[root@server1 zabbix]# zabbix_get -s 192.168.112.50 -k mariadb_status
1
[root@server1 zabbix]# zabbix_get -s 192.168.112.50 -k mariadb_max_connections
151

4、web端新增監控項對應鍵值

配置->主機->server2->監控項->建立監控項

image-20240317001420725

5、新增圖形視覺化(選做)

配置->主機->server2->圖形->建立圖形

image-20240317002217885

image-20240317002503867

6、新增對應的觸發器

配置->主機->server2->建立觸發器

image-20240317003231611


image-20240317003607174

7、小問題

image-20240317100435143

如果出現了這個警告問題不大,畢竟我們剛才安裝了mariadb資料庫,自然在/etc/passwd上新增了使用者

image-20240317100625025

七、zabbix實現郵件告警

1、配置告警媒介

管理->報警媒介型別->Email

image-20240315220447392

image-20240315221634655

2、獲取qq郵箱授權碼

登入qq郵箱->設定->賬號->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服務->

image-20240315222242868

簡訊驗證

image-20240315222420729

將生成好的授權碼作為密碼填入

image-20240316220458215

3、新增接收報警郵件的郵箱

管理->使用者->Admin->新增報警媒介->更新

image-20240316221944281

4、配置動作傳送給使用者群組

配置->動作->啟用->Report problems to Zabbix administrators

image-20240317004356654


image-20240317004645189


image-20240317004847331

5、測試(關閉被監測主機mariadb)

[root@server2 ~]# ss -tnl
State       Recv-Q Send-Q Local Address:Port               Peer Address:Port             
LISTEN      0      128              *:22                           *:*
LISTEN      0      100      127.0.0.1:25                           *:*
LISTEN      0      128              *:10050                        *:*
LISTEN      0      50               *:3306                         *:*
LISTEN      0      128           [::]:22                        [::]:*
LISTEN      0      100          [::1]:25                        [::]:*
LISTEN      0      128           [::]:10050                     [::]:*
[root@server2 ~]# systemctl stop mariadb

image-20240317005922148

八、zabbix透過釘釘/企業微信告警

1、釘釘群聊

手機端直接拉個普通群,PC端 不好操作

2、新增群機器人(PC端建立)

群設定->機器人->新增機器人->自定義機器人->保管好Webhook

image-20240317102659871


image-20240317103042620


image-20240317104725009

3、到服務端/usr/lib/zabbix/alertscripts下準備python指令碼

[root@server1 alertscripts]# pwd
/usr/lib/zabbix/alertscripts
[root@server1 alertscripts]# yum install -y python-requests		#下載requests模組
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Author: xxxxxxxx
import requests
import json
import sys
import os

headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = "https://oapi.dingtalk.com/robot/send?access_token=7b7f9820e221a6a6ecca0944622275ab9c53394cc66145e58156e95e319fc30e"	#寫自己的Webhook
def msg(text):
    json_text= {
    "msgtype": "text",
    "at": {
        "atMobiles": [
            "13333333333"
        ],
            "isAtAll": True
     },
     "text": {
        "content": text
     }
    }
    print requests.post(api_url,json.dumps(json_text),headers=headers).content

if __name__ == '__main__':
     text = "zabbix-test"	#測試一下文字
     #text = sys.argv[1]
     msg(text)

4、測試指令碼

[root@server1 alertscripts]# chmod a+x zabbix-ding.py
[root@server1 alertscripts]# ./zabbix-ding.py
{"errcode":0,"errmsg":"ok"}

image-20240317105758426

沒問題回到程式碼進行修改

[root@server1 alertscripts]# vim zabbix-ding.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Author: xxxxxxxx
import requests
import json
import sys
import os

headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = "https://oapi.dingtalk.com/robot/send?access_token=7b7f9820e221a6a6ecca0944622275ab9c53394cc66145e58156e95e319fc30e"
def msg(text):
    json_text= {
    "msgtype": "text",
    "at": {
        "atMobiles": [
            "13333333333"
        ],
            "isAtAll": True
     },
     "text": {
        "content": text
     }
    }
    print requests.post(api_url,json.dumps(json_text),headers=headers).content

if __name__ == '__main__':
     #text = "zabbix-test"
     text = sys.argv[1]
     msg(text)

5、新增告警媒介

管理->報警媒介型別->建立媒體型別->新增名稱,指令碼名稱,指令碼引數

image-20240317110835346

6、新增動作

配置->動作->建立動作

image-20240317111415926


image-20240317111956534

7、繫結使用者,使用者收件人寫電話號碼

管理->使用者->Admin->報警媒介->新增報警媒介->更新

image-20240317112257235


image-20240317113232587

8、手動測試(關閉mariadb)

[root@server2 ~]# systemctl stop mariadb
[root@server2 ~]# ss -tnl
State       Recv-Q Send-Q Local Address:Port               Peer Address:Port             
LISTEN      0      128              *:10050                        *:*
LISTEN      0      128              *:22                           *:*
LISTEN      0      100      127.0.0.1:25                           *:*
LISTEN      0      128           [::]:10050                     [::]:*
LISTEN      0      128           [::]:22                        [::]:*
LISTEN      0      100          [::1]:25                        [::]:*

效果呈現:

image-20240317112733249

相關文章