本文目录导读:

工具选择、配置巡检任务和结果通知,以下是通用的配置步骤,以最常见的开源工具Zabbix、Prometheus + Grafana和Python脚本 + 系统Crontab为例。
选择工具与准备
-
按场景选择:
- Zabbix:适合有大量网络设备(路由器、交换机、防火墙),需SNMP监控,有成熟模板,配置相对复杂但功能强大。
- Prometheus + SNMP Exporter + Blackbox Exporter:适合云原生环境,对设备性能和可达性(Ping、端口扫描)做指标采集,灵活且资源占用低。
- Python脚本 + Crontab/计划任务:适合轻量、定制化巡检(如批量登录设备执行命令抓取配置或状态),灵活性最高。
-
前置准备:
- 网络设备:开启并配置SNMP(用于性能监控)或SSH/Telnet(用于配置抓取)。
- 巡检服务器:确保服务器能访问所有被管设备。
详细配置步骤
方案A:使用 Zabbix 进行定时SNMP巡检(推荐)
场景:监控交换机端口流量、CPU/内存、设备存活。
- 安装Zabbix Server & Web:
wget获取安装包或使用包管理器(如yum install zabbix-server-mysql)。
- 导入Networking模板:
- 在Zabbix Web界面
Configuration > Templates搜索Template Module ICMP Ping或Networks Devices。
- 在Zabbix Web界面
- 创建设备主机:
Configuration > Hosts > Create host。- Host name:设备名(如
Switch-A)。 - Groups:选择
Linux servers或新建Network Devices。 - Interfaces:选择 SNMP,填入设备IP,端口161,版本 v2c 或 v3。
- SNMP community:填写设备上的 SNMP 团体名(如
public)。
- 激活:
Templates标签页,Link new templates,选择Template Module ICMP Ping(确保设备在线)和Template Net Network Generic Device SNMPv2。- 点击
Add完成。
- 设置巡检间隔:
- 进入Zabbix Server 配置文件
/etc/zabbix/zabbix_server.conf,调整CacheSize防止内存溢出。 - 模板中的监控项默认每 5分钟 巡检一次,可在
Configuration > Hosts > 该设备 > Macros中覆盖默认间隔(如设置{$SNMP_TIMEOUT}和{$INTERVAL})。
- 进入Zabbix Server 配置文件
方案B:使用 Prometheus + Blackbox Exporter 进行 HTTP/Ping/端口巡检
场景:检测网站是否正常、SSL证书过期时间、TCP端口可达性。
-
配置 Blackbox Exporter:
- 下载并启动
blackbox_exporter。 - 编辑
blackbox.yml(默认配置即可,或自定义 probe 模块)。 - 启动命令:
./blackbox_exporter --config.file=blackbox.yml
- 下载并启动
-
配置 Prometheus: 在
prometheus.yml的scrape_configs下添加类似以下模块:scrape_configs: - job_name: 'network_ping_check' metrics_path: /probe params: module: [icmp] # 使用ICMP模块 static_configs: - targets: - 192.168.1.1 # 网关 - 8.8.8.8 # 外网 relabel_configs: - source_labels: [__address__] target_label: __param_target - source_labels: [__param_target] target_label: instance - target_label: __address__ replacement: 127.0.0.1:9115 # Blackbox Exporter地址 -
设置定时执行:
- Prometheus 天然在每个
scrape_interval(通常15s-30s)自动抓取。 - 如果想“固定时间”巡检(如每天10点),需结合 Prometheus Alertmanager 的
silence或使用 Cortex/Thanos 的定时查询功能,更简单的方法:在Grafana里设置Dashboard定时刷新。
- Prometheus 天然在每个
方案C:Python脚本 + Crontab / 计划任务(最灵活、适合抓取配置)
场景:每天凌晨自动备份路由器配置,或检查端口状态并生成报告。
-
编写Python脚本(示例:检查接口状态):
# network_check.py from netmiko import ConnectHandler import json from datetime import datetime devices = [ {'device_type': 'cisco_ios', 'ip': '192.168.1.1', 'username': 'admin', 'password': 'secret'} ] report = [] for device in devices: try: connection = ConnectHandler(**device) output = connection.send_command('show interface brief') connection.disconnect() report.append({device['ip']: output}) except Exception as e: report.append({device['ip']: f"Error: {str(e)}"}) # 写入日志 with open(f'/var/log/network_report_{datetime.now().strftime("%Y%m%d")}.txt', 'w') as f: json.dump(report, f, indent=4) -
配置系统定时任务(Linux):
- 执行
crontab -e - 添加一行(每天凌晨3点执行):
0 3 * * * /usr/bin/python3 /home/scripts/network_check.py
- 若要每隔5分钟执行一次:
*/5 * * * * /usr/bin/python3 /home/scripts/network_check.py
- 执行
-
Windows 计划任务:
- 打开“任务计划程序”。
- 创建任务 -> 触发器(每天/每小时) -> 操作(启动程序:
python.exe,参数为脚本路径)。
结果通知与报警
无论使用哪种工具,都需要将巡检结果推送给管理员:
- Zabbix:配置 Action,当监控项触发阈值(如Ping丢包率>10%),发送邮件或钉钉/企微Webhook。
- Prometheus:配合 Alertmanager,配置
receiver路由到 Email、Slack 或飞书。 - 脚本:在Python脚本中加入
smtplib发送邮件,或调用requests发HTTP请求到企业微信机器人。
常见问题与优化
-
SNMP返回超时:
- 检查防火墙是否开放UDP 161端口。
- 在Zabbix中增加
{$SNMP_TIMEOUT}超时时间(如5秒)。
-
SSH登录失败:
- 检查设备是否开启SSH,且允许该IP登录。
- 最好使用SSH密钥(免密)替代密码,避免密码过期或泄漏。
-
数据量过大:
- 减少巡检频率(如从1分钟改为5分钟)。
- 只监控关键指标(如端口状态、CPU),不要全量采集。
总结配置流程
| 步骤 | 操作 | 示例命令/配置 |
|---|---|---|
| 搭建环境 | 安装工具、依赖 | apt install zabbix-server-mysql / pip install netmiko |
| 添加设备 | 手动或自动发现 | Zabbix自动发现规则 / Prometheus static_configs |
| 配置检查项 | 选择模板或写脚本 | 模板 ICMP Ping / show interface |
| 设置频率 | Cron / Prometheus scrape_interval / Zabbix 默认间隔 | */10 * * * * |
| 动作与通知 | 配置报警媒介 | 钉钉机器人、SMTP邮件 |
| 测试 | 手动触发一次,查看日志 | python network_check.py / Zabbix 测试 |
根据你管理的设备数量和巡检深度,选择合适的方案即可,如果需要进一步细化某个工具的配置,可以告诉我具体的设备型号和需求。
标签: 网络巡检
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。