最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Zabbix 監(jiān)控多線路出口IP并通過飛書告警完整教程

 更新時(shí)間:2026年03月31日 11:22:35   作者:Aggy阿吉  
本文介紹了使用Zabbix實(shí)現(xiàn)多線路出口IP監(jiān)控,并通過飛書發(fā)送告警的方案,包括監(jiān)控原理、環(huán)境準(zhǔn)備、腳本部署、觸發(fā)器配置、媒介設(shè)置及動(dòng)作創(chuàng)建等步驟,文中還提供了常見問題及解決方法,感興趣的朋友跟隨小編一起看看吧

一、方案概述

1.1 監(jiān)控原理

  • 通過防火墻策略,讓不同域名走不同的出口線路
  • Zabbix 定期訪問這些域名,獲取訪問時(shí)的出口IP
  • 將獲取的IP與預(yù)設(shè)值比較,不一致時(shí)通過飛書發(fā)送告警

1.2 線路與域名對(duì)應(yīng)關(guān)系示例

線路編號(hào)域名預(yù)設(shè)IP出口接口
線路1ifconfig.me203.0.113.10port2
線路2api.ipify.org203.0.113.20port3
線路3icanhazip.com203.0.113.30port4

二、環(huán)境準(zhǔn)備

2.1 前提條件

  • Zabbix Server 7.4 已部署(Docker或物理機(jī))
  • 已獲取飛書機(jī)器人 Webhook 地址
  • Zabbix Server 能訪問外網(wǎng)(IP查詢服務(wù))

2.2 確認(rèn)Zabbix容器名稱

docker ps | grep zabbix

記錄Zabbix Server容器名稱(如 zabbix-server

三、部署外部檢查腳本

3.1 進(jìn)入Zabbix Server容器

docker exec -it zabbix-server sh

3.2 創(chuàng)建腳本目錄并編寫腳本

# 創(chuàng)建目錄
mkdir -p /usr/lib/zabbix/externalscripts
# 創(chuàng)建腳本文件
cat > /usr/lib/zabbix/externalscripts/get_ip_by_domain.sh << 'EOF'
#!/bin/bash
# 通過指定的域名獲取公網(wǎng)出口IP
# 用法:get_ip_by_domain.sh <域名>
DOMAIN="$1"
TIMEOUT=5
if [ -z "$DOMAIN" ]; then
    echo "ERROR: No domain provided"
    exit 1
fi
# 使用curl訪問域名,提取IPv4地址
IP=$(curl -s -L -m $TIMEOUT "http://$DOMAIN" 2>/dev/null | grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' | head -1)
if [ -n "$IP" ]; then
    echo "$IP"
    exit 0
else
    echo "ERROR: Failed to get IP from $DOMAIN"
    exit 1
fi
EOF
# 賦予執(zhí)行權(quán)限
chmod +x /usr/lib/zabbix/externalscripts/get_ip_by_domain.sh
# 修改屬主
chown zabbix:zabbix /usr/lib/zabbix/externalscripts/get_ip_by_domain.sh
# 安裝curl(Alpine系統(tǒng))
apk add curl

3.3 測(cè)試腳本

su -s /bin/sh -c "/usr/lib/zabbix/externalscripts/get_ip_by_domain.sh api.ipify.org" zabbix

應(yīng)返回一個(gè)公網(wǎng)IP地址。

3.4 退出容器

exit

四、創(chuàng)建監(jiān)控項(xiàng)

4.1 登錄Zabbix Web

訪問 http://你的Zabbix服務(wù)器IP:8080,使用 Admin/zabbix 登錄。

4.2 創(chuàng)建監(jiān)控項(xiàng)

  1. 進(jìn)入 配置 → 主機(jī),選擇目標(biāo)主機(jī)(如 hwipmonitor
  2. 點(diǎn)擊 監(jiān)控項(xiàng)創(chuàng)建監(jiān)控項(xiàng)

4.3 填寫監(jiān)控項(xiàng)信息

字段填寫內(nèi)容
名稱WAN01 Exit IP (via api.ipify.org)
類型外部檢查
鍵值get_ip_by_domain.sh["api.ipify.org"]
信息類型文本
更新間隔60m
歷史記錄保留期3d

4.4 保存

點(diǎn)擊 添加 完成創(chuàng)建。

4.5 驗(yàn)證監(jiān)控項(xiàng)

  1. 進(jìn)入 監(jiān)控 → 最新數(shù)據(jù)
  2. 篩選主機(jī),查看監(jiān)控項(xiàng)是否有數(shù)據(jù)
  3. 狀態(tài)應(yīng)為 已啟用,且有IP值

五、創(chuàng)建觸發(fā)器

5.1 進(jìn)入觸發(fā)器創(chuàng)建

  1. 配置 → 主機(jī) → 選擇主機(jī) → 觸發(fā)器創(chuàng)建觸發(fā)器

5.2 填寫觸發(fā)器信息

字段填寫內(nèi)容
名稱WAN01 出口IP異常 (api.ipify.org)
嚴(yán)重性警告
描述期望IP:103.248.229.101(填寫實(shí)際預(yù)設(shè)IP)
表達(dá)式{hwipmonitor:get_ip_by_domain.sh["api.ipify.org"].last()}<>"103.248.229.101"

5.3 表達(dá)式說明

  • {主機(jī)名:監(jiān)控項(xiàng)鍵值.last()}:獲取監(jiān)控項(xiàng)最新值
  • <>"預(yù)設(shè)IP":不等于預(yù)設(shè)IP
  • 如需排除腳本錯(cuò)誤,可添加 and {監(jiān)控項(xiàng).str(ERROR)}=0

5.4 保存

點(diǎn)擊 添加 完成創(chuàng)建。

六、配置飛書媒介

6.1 進(jìn)入媒介類型配置

管理 → 報(bào)警媒介類型創(chuàng)建媒介類型

6.2 填寫基本信息

字段填寫內(nèi)容
名稱feishu
類型Webhook

6.3 添加參數(shù)

點(diǎn)擊 參數(shù) 標(biāo)簽頁,添加以下參數(shù):

名稱
Subject{ALERT.SUBJECT}
Message{ALERT.MESSAGE}

6.4 編寫腳本

腳本 框中輸入以下內(nèi)容(將Webhook地址替換為實(shí)際地址):

try {
    var params = JSON.parse(value),
        req = new HttpRequest(),
        webhook_url = 'https://open.feishu.cn/open-apis/bot/v2/hook/你的完整Webhook地址',
        msg = {
            msg_type: "text",
            content: {
                text: params.Subject + "\n" + params.Message
            }
        },
        resp;
    req.addHeader("Content-Type: application/json");
    resp = req.post(webhook_url, JSON.stringify(msg));
    if (req.getStatus() != 200) {
        throw "Response code: " + req.getStatus();
    }
    resp = JSON.parse(resp);
    return JSON.stringify(resp);
} catch (error) {
    throw "Failed with error: " + error;
}

6.5 測(cè)試媒介

  1. 點(diǎn)擊 測(cè)試 按鈕
  2. 填寫測(cè)試內(nèi)容:
    • Subject測(cè)試告警
    • Message這是一條測(cè)試消息
  3. 點(diǎn)擊 測(cè)試
  4. 確認(rèn)飛書群收到測(cè)試消息

6.6 保存

點(diǎn)擊 添加 完成創(chuàng)建。

七、配置用戶媒介

7.1 進(jìn)入用戶配置

管理 → 用戶 → 點(diǎn)擊 Admin (Zabbix Administrator)

7.2 添加報(bào)警媒介

  1. 點(diǎn)擊 報(bào)警媒介 標(biāo)簽頁
  2. 點(diǎn)擊 添加
  3. 填寫:
    • 類型:選擇 feishu
    • 收件人:填寫 飛書群(任意標(biāo)識(shí))
    • 當(dāng)活動(dòng)時(shí):默認(rèn)
    • 嚴(yán)重性:全選
    • 啟用:勾選
  4. 點(diǎn)擊 添加

7.3 保存

點(diǎn)擊 更新 保存用戶配置。

八、創(chuàng)建動(dòng)作

8.1 進(jìn)入動(dòng)作配置

配置 → 動(dòng)作 → 觸發(fā)器動(dòng)作創(chuàng)建動(dòng)作

8.2 填寫基本信息

字段填寫內(nèi)容
名稱出口IP異常飛書告警

8.3 配置條件

點(diǎn)擊 條件 標(biāo)簽頁,添加:

  • 類型:觸發(fā)器名稱
  • 運(yùn)算符:包含
  • 出口IP異常

這樣所有名稱包含“出口IP異常”的觸發(fā)器都會(huì)觸發(fā)此動(dòng)作。

8.4 配置操作

點(diǎn)擊 操作 標(biāo)簽頁 → 新增

字段填寫內(nèi)容
操作類型發(fā)送消息
默認(rèn)接收人選擇 Admin (Zabbix Administrator)
僅送到選擇 feishu
主題告警:{TRIGGER.NAME}
消息主機(jī):{HOST.NAME}\n當(dāng)前IP:{ITEM.LASTVALUE}\n期望IP:{TRIGGER.DESCRIPTION}\n時(shí)間:{EVENT.DATE} {EVENT.TIME}
自定義持續(xù)時(shí)間0
僅當(dāng)問題出現(xiàn)時(shí)發(fā)送? 勾選

8.5 配置恢復(fù)操作(可選)

點(diǎn)擊 新增 添加恢復(fù)操作:

字段填寫內(nèi)容
操作類型發(fā)送消息
默認(rèn)接收人選擇 Admin
僅送到feishu
主題恢復(fù):{TRIGGER.NAME}
消息主機(jī):{HOST.NAME}\n當(dāng)前IP:{ITEM.LASTVALUE}\n時(shí)間:{EVENT.DATE} {EVENT.TIME}
自定義持續(xù)時(shí)間0
僅當(dāng)問題恢復(fù)時(shí)發(fā)送? 勾選

8.6 保存

點(diǎn)擊 添加 完成動(dòng)作創(chuàng)建。

九、測(cè)試驗(yàn)證

9.1 強(qiáng)制觸發(fā)測(cè)試

臨時(shí)修改觸發(fā)器表達(dá)式,強(qiáng)制觸發(fā)告警:

  1. 配置 → 主機(jī) → 選擇主機(jī) → 觸發(fā)器
  2. 找到目標(biāo)觸發(fā)器,點(diǎn)擊編輯
  3. 將表達(dá)式改為:
    {hwipmonitor:get_ip_by_domain.sh["api.ipify.org"].last()}<>"1.2.3.4"
    
  4. 保存
  5. 等待幾秒,進(jìn)入 監(jiān)控 → 問題,應(yīng)看到觸發(fā)器變?yōu)閱栴}狀態(tài)
  6. 進(jìn)入 報(bào)表 → 動(dòng)作日志,查看發(fā)送記錄
  7. 檢查飛書是否收到告警

9.2 恢復(fù)表達(dá)式

測(cè)試完成后,將表達(dá)式改回正確的預(yù)設(shè)IP。

9.3 驗(yàn)證飛書消息

飛書應(yīng)收到類似以下內(nèi)容的消息:

告警:WAN01 出口IP異常 (api.ipify.org)
主機(jī):hwipmonitor
當(dāng)前IP:103.248.229.101
期望IP:期望IP:103.248.229.101
時(shí)間:2026.03.30 17:04:23

十、批量配置其他線路

10.1 方法一:手動(dòng)創(chuàng)建

為每個(gè)域名重復(fù)以下操作:

  1. 創(chuàng)建監(jiān)控項(xiàng)(修改鍵值中的域名)
  2. 創(chuàng)建觸發(fā)器(修改預(yù)設(shè)IP和域名)
  3. 觸發(fā)器名稱格式:WAN01 出口IP異常 (域名)

10.2 方法二:使用模板

  1. 創(chuàng)建一個(gè)模板,添加所有監(jiān)控項(xiàng)和觸發(fā)器
  2. 將模板鏈接到主機(jī)

10.3 方法三:使用Zabbix API(Python腳本)

#!/usr/bin/env python3
import csv
from zabbix_api import ZabbixAPI
# 配置
ZABBIX_URL = "http://localhost/zabbix"
USER = "Admin"
PASSWORD = "zabbix"
HOST_NAME = "hwipmonitor"
# 線路配置列表
configs = [
    {"domain": "ifconfig.me", "ip": "203.0.113.10"},
    {"domain": "api.ipify.org", "ip": "103.248.229.101"},
    {"domain": "icanhazip.com", "ip": "203.0.113.30"},
    # ... 添加更多
]
zapi = ZabbixAPI(ZABBIX_URL)
zapi.login(USER, PASSWORD)
# 獲取主機(jī)ID
hosts = zapi.host.get({"filter": {"host": HOST_NAME}})
host_id = hosts[0]["hostid"]
for config in configs:
    domain = config["domain"]
    preset_ip = config["ip"]
    # 創(chuàng)建監(jiān)控項(xiàng)
    item = zapi.item.create({
        "name": f"WAN01 Exit IP (via {domain})",
        "key_": f'get_ip_by_domain.sh["{domain}"]',
        "hostid": host_id,
        "type": 0,  # 外部檢查
        "value_type": 1,  # 文本
        "delay": "60m",
        "history": "3d"
    })
    # 創(chuàng)建觸發(fā)器
    trigger = zapi.trigger.create({
        "description": f"WAN01 出口IP異常 ({domain})",
        "expression": f'{{{HOST_NAME}:get_ip_by_domain.sh["{domain}"].last()}}<>"{preset_ip}"',
        "priority": 2,  # 警告
        "comments": f"期望IP:{preset_ip}",
        "status": 0
    })
    print(f"已創(chuàng)建: {domain} -> {preset_ip}")

十一、常見問題排查

11.1 監(jiān)控項(xiàng)顯示“不支持”

可能原因

  • 腳本不存在或路徑錯(cuò)誤
  • 腳本沒有執(zhí)行權(quán)限
  • 缺少curl命令

解決方法

# 檢查腳本是否存在
ls -l /usr/lib/zabbix/externalscripts/get_ip_by_domain.sh
# 檢查curl是否安裝
which curl
# 測(cè)試腳本
su -s /bin/sh -c "/usr/lib/zabbix/externalscripts/get_ip_by_domain.sh api.ipify.org" zabbix

11.2 飛書收不到消息

可能原因

  • Webhook地址錯(cuò)誤
  • 飛書機(jī)器人安全設(shè)置(關(guān)鍵詞/IP白名單)
  • 腳本中URL為空

解決方法

  1. 在媒介類型中點(diǎn)擊測(cè)試,確認(rèn)能收到
  2. 檢查飛書機(jī)器人安全設(shè)置,添加關(guān)鍵詞“告警”
  3. 確認(rèn)腳本中Webhook地址正確

11.3 動(dòng)作日志顯示“No media defined for user”

解決方法

  • 進(jìn)入 管理 → 用戶,為Admin用戶添加feishu媒介
  • 確認(rèn)媒介類型已啟用

11.4 觸發(fā)器表達(dá)式語法錯(cuò)誤

正確格式

{主機(jī)名:監(jiān)控項(xiàng)鍵值.last()}<>"預(yù)設(shè)IP"

常見錯(cuò)誤

  • 缺少花括號(hào) {}
  • IP未加雙引號(hào)
  • 使用中文括號(hào)

11.5 查看Zabbix Server日志

# Docker環(huán)境
docker logs zabbix-server --tail 100 | grep -i error
# 物理機(jī)
tail -f /var/log/zabbix/zabbix_server.log

十二、總結(jié)

12.1 配置文件清單

文件/配置位置
外部腳本/usr/lib/zabbix/externalscripts/get_ip_by_domain.sh
監(jiān)控項(xiàng)Zabbix Web → 配置 → 主機(jī) → 監(jiān)控項(xiàng)
觸發(fā)器Zabbix Web → 配置 → 主機(jī) → 觸發(fā)器
媒介類型Zabbix Web → 管理 → 報(bào)警媒介類型
用戶媒介Zabbix Web → 管理 → 用戶
動(dòng)作Zabbix Web → 配置 → 動(dòng)作

12.2 關(guān)鍵宏說明

說明
{HOST.NAME}主機(jī)名
{TRIGGER.NAME}觸發(fā)器名稱
{ITEM.LASTVALUE}監(jiān)控項(xiàng)最新值
{TRIGGER.DESCRIPTION}觸發(fā)器描述
{EVENT.DATE}事件日期
{EVENT.TIME}事件時(shí)間
{ALERT.SUBJECT}告警主題
{ALERT.MESSAGE}告警內(nèi)容

12.3 后續(xù)優(yōu)化建議

  1. 調(diào)整檢查頻率:根據(jù)線路重要性,可設(shè)置為15-30分鐘
  2. 添加期望IP顯示:在觸發(fā)器描述中填寫期望IP
  3. 配置告警重復(fù)間隔:如需重復(fù)告警,修改自定義持續(xù)時(shí)間
  4. 使用模板:將監(jiān)控項(xiàng)和觸發(fā)器放入模板,方便批量管理
  5. 監(jiān)控腳本健康:添加監(jiān)控項(xiàng)監(jiān)控腳本執(zhí)行狀態(tài)

至此,您已完成 Zabbix 多線路出口IP監(jiān)控與飛書告警的全部配置。如有任何問題,歡迎隨時(shí)交流!

到此這篇關(guān)于Zabbix 監(jiān)控多線路出口IP并通過飛書告警完整教程的文章就介紹到這了,更多相關(guān)Zabbix 監(jiān)控多線路出口IP內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Zabbix如何通過ssh監(jiān)控獲取網(wǎng)絡(luò)設(shè)備數(shù)據(jù)

    Zabbix如何通過ssh監(jiān)控獲取網(wǎng)絡(luò)設(shè)備數(shù)據(jù)

    這篇文章主要介紹了Zabbix如何通過ssh監(jiān)控獲取網(wǎng)絡(luò)設(shè)備數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Zabbix如何使用過濾器實(shí)現(xiàn)監(jiān)控

    Zabbix如何使用過濾器實(shí)現(xiàn)監(jiān)控

    這篇文章主要介紹了Zabbix如何使用過濾器實(shí)現(xiàn)監(jiān)控,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Zabbix配置釘釘?shù)膸D片報(bào)警功能

    Zabbix配置釘釘?shù)膸D片報(bào)警功能

    這篇文章主要介紹了Zabbix配置釘釘?shù)膸D片報(bào)警功能,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 通過Zabbix監(jiān)控Oracle 19c數(shù)據(jù)庫的完整配置指南

    通過Zabbix監(jiān)控Oracle 19c數(shù)據(jù)庫的完整配置指南

    本文將詳細(xì)介紹如何使用Zabbix配置Oracle 19c數(shù)據(jù)庫監(jiān)控,包括安裝、配置、問題排查等全過程,本指南適合新手獨(dú)立完成配置,文中通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2024-12-12
  • CentOS 6.9 安裝 Zabbix 3.0 的詳細(xì)步驟

    CentOS 6.9 安裝 Zabbix 3.0 的詳細(xì)步驟

    Zabbix 是一個(gè)基于 WEB 界面的,提供分布式系統(tǒng)監(jiān)視以及網(wǎng)絡(luò)監(jiān)視功能的企業(yè)級(jí)開源解決方案,本文重點(diǎn)研究 Zabbix,使用它的目的是為了更好地監(jiān)控MySQL 數(shù)據(jù)庫服務(wù)器,并生成圖形報(bào)表,相較于 Nagios,Zabbix 在這方面功能更為強(qiáng)大,感興趣的朋友一起看看吧
    2025-04-04
  • Zabbix通過PSK共享密鑰實(shí)現(xiàn)Server和Agent的通信加密

    Zabbix通過PSK共享密鑰實(shí)現(xiàn)Server和Agent的通信加密

    這篇文章主要介紹了Zabbix通過PSK共享密鑰實(shí)現(xiàn)Server和Agent的通信加密,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-06-06
  • Zabbix?Timeout?設(shè)置不當(dāng)導(dǎo)致的問題及解決方案

    Zabbix?Timeout?設(shè)置不當(dāng)導(dǎo)致的問題及解決方案

    這篇文章主要介紹了Zabbix?Timeout設(shè)置不當(dāng)導(dǎo)致的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06
  • zabbix監(jiān)控Linux系統(tǒng)服務(wù)的流程

    zabbix監(jiān)控Linux系統(tǒng)服務(wù)的流程

    這篇文章主要介紹了zabbix監(jiān)控Linux系統(tǒng)服務(wù)的流程,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • zabbix監(jiān)控4.4升級(jí)至5.0的詳細(xì)教程

    zabbix監(jiān)控4.4升級(jí)至5.0的詳細(xì)教程

    這篇文章主要介紹了zabbix監(jiān)控4.4升級(jí)至5.0的詳細(xì)教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 基于zabbix實(shí)現(xiàn)監(jiān)控Jenkins過程詳解

    基于zabbix實(shí)現(xiàn)監(jiān)控Jenkins過程詳解

    這篇文章主要介紹了基于zabbix實(shí)現(xiàn)監(jiān)控Jenkins過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11

最新評(píng)論

和顺县| 嘉黎县| 彭州市| 大新县| 漳平市| 清涧县| 疏勒县| 临沂市| 班玛县| 偃师市| 龙井市| 鄂托克前旗| 姚安县| 安宁市| 柳林县| 聂拉木县| 康乐县| 运城市| 丰顺县| 逊克县| 金湖县| 延津县| 万源市| 大理市| 综艺| 清流县| 陆丰市| 大城县| 绥中县| 安溪县| 镇平县| 平顶山市| 三河市| 武城县| 阳新县| 马鞍山市| 西华县| 隆尧县| 垦利县| 湘潭县| 抚宁县|