简介:以信息技术运维管理基础知识为主题的幻灯片学习教案,面向运维入门者、技术培训讲师和希望系统梳理运维知识的学习者。内容围绕监控软件与采集协议展开,涵盖SNMP、RMON、Syslog、Telnet/SSH、ODBC/JDBC、WMI等十余种常用协议,并进一步讲解管理信息库MIB的树形结构、对象唯一标识OID、NetFlow流量分析,以及基于交换机端口镜像和光口TAP的数据侦听方式;同时列举网络设备、安全设备、主机、数据库、应用系统等常见监控对象,以及CPU使用率、内存占用、网络流量、端口状态、磁盘空间、IO性能、系统日志、应用可用性等核心性能指标,还涉及告警通知、故障定位和报表联动等运维环节。压缩包内共1个pptx文件,约390KB,图文版式便于课堂演示与自主学习。已有113人学习,适合快速建立IT运维管理整体认知,为后续运维监控部署、故障排查和自动化运维打下基础。
1. IT运维管理基础:监控协议选型与设备边界
IT运维管理的门槛不在工具,而在协议和数据的对应关系。很多团队已经部署了监控软件,却依然在“CPU 100%但不知道哪台设备”“告警风暴”里打转,本质是没有把性能指标压到正确的采集通道上。SNMP负责设备状态和流量计数器,Syslog负责事件日志,NetFlow负责流记录,端口镜像和光口TAP负责原始报文。这套PPT学习教案把监控软件、系统设备、采集协议和性能指标串成了一条完整的链路;下面按这条链路展开成可复现的配置和参数。适合刚接手机房监控的人,也适合补协议边界的老手。这里不绑定某个具体厂商或软件,只讲每个环节怎么选、怎么调、会踩哪些坑。
2. 数据采集管线的四个支柱:SNMP、Syslog、NetFlow 与探针
从网络设备、安全设备、系统主机到数据库和应用软件,单靠一种协议根本不现实。讲稿里列出了SNMP、RMON、Syslog、Event、Telnet/SSH、ODBC/JDBC、WMI、RCP、VBS、Agent、Scripts、xFlow、Probe和Collecter,初看像名词堆砌,实际是一条采集链路的分层:设备对象层有CPU、内存、端口状态、磁盘和日志;面向网络的协议层有SNMP/RMON、NetFlow/sFlow、Syslog;面向主机的通道层有WMI、Agent/Scripts、SSH/Telnet;面向外部环境的接入层通过Probe/Collector接入温湿度和电力。这个分层在工程上的意义是:选型时先确认“监控对象提供什么数据出口”,再决定用什么协议。比如数据库运行状态更多用JDBC/ODBC,因为SNMP里没有MySQL的会话数;而温湿度传感器通常走Modbus再转成SNMP Trap或自定义Agent。当前PPT列出的协议可以对映到下表。
| 协议或机制 | 常用端口/载体 | 数据形态 | 典型监控对象 | 选型要点 |
|---|---|---|---|---|
| SNMP v1/v2c/v3 | 161/UDP(轮询)、162/UDP(Trap) | 计数器、离散值 | CPU、内存、接口流量、端口状态、系统名 | 设备支持最广,但计数器回绕要处理 |
| RMON | 161/UDP + RMON MIB | 历史统计和事件 | 以太网流量、历史趋势 | 兼容性下降,多数厂商只在MIB保留 |
| Syslog | 514/UDP;6514/TCP+TLS | 事件文本 | 系统日志、设备日志、应用日志 | 不可靠传输,生产环境要加TLS和队列 |
| NetFlow | 9995/9996/UDP 常见 | 流记录 | 流量组成、Top N 会话、路径分析 | 依赖设备流缓存和导出策略 |
| WMI | TCP 135 + 动态RPC端口 | Windows类对象 | 进程、服务、补丁、磁盘 | 防火墙策略复杂,需要放行RPC动态范围 |
| Agent/Scripts | 自定义端口、定时任务 | 任意深度指标 | 应用可用性、业务拨测 | 被管端要装组件,注意升级和权限 |
表里几组容易混淆:SNMP和Syslog是互补关系,前者要主动去问,后者由设备主动推送;NetFlow和端口镜像也不同,NetFlow给你的是聚合后的流记录,镜像给你的是原始报文。按PPT里的说法,“多种展示通过采集进行获取”,所有拓扑、报表和告警都建立在上述数据通道上,通道选错了,后面再漂亮的仪表盘都是看着热闹。
2.1 SNMP 轮询与 Trap:从 GetRequest 到 MIB 树的 OID 定位
SNMP 的模型非常明确:网络管理工作站作为管理实体,被管设备上运行 SNMP Agent,两者通过 GetRequest、GetNextRequest、GetBulkRequest 和 SetRequest 交互,正常响应是 GetResponse;当设备遇到接口 DOWN、温度过高这类事件时,Agent 主动向网管发 Trap。v1/v2c 用 community string 做口令,v3 增加了用户名、认证和加密。PPT 里提到的 MIB-2、ISO、Organization、Internet、Management、Private 这些节点,对应的是一个树形对象标识体系,每个对象有唯一 OID;IAB 管理机构维护公共部分,厂商维护 1.3.6.1.4.1 下的私有分支。实战中造不出 OID 时不要猜,用 snmpwalk 直接扫子树。
# 扫描系统组 MIB,查看设备返回的全部系统对象 snmpwalk -v2c -c public -On 192.0.2.1 1.3.6.1.2.1.1 # 读取设备名称 snmpget -v2c -c public -On 192.0.2.1 1.3.6.1.2.1.1.5.0第一个命令列出系统组全部对象,第二个命令只取系统名称。-On让输出直接显示数字 OID,避免本机没有加载厂商 MIB 时显示成“SNMPv2-MIB::sysName.0”,排查时对照手册更方便。-v2c指定版本,-c public是社区字符串,生产环境要换成只有只读权限的 community,并把网管站地址写进 ACL。SNMPv3 的命令可以加-u monitor -l authPriv -a SHA -A authpass -x AES -X privpass,优先级高于 v2c,尤其在设备可以配置 SNMPv3 时不要偷懒用 v2c。
Trap 接收端可以用 snmptrapd 验证:
# 前台运行并打印 Trap 日志,调试完再交给 systemd 托管 snmptrapd -f -Lo -c /etc/snmp/snmptrapd.conf-f前台运行,-Lo把日志打到标准输出,-c指定配置文件。注意 Trap 默认走 162/UDP,如果设备在跨网段,需要在防火墙放行 UDP 162 入站,否则会出现“设备日志里有发送记录,网管收不到”的经典问题。
2.2 Syslog 事件通道:facility、severity 与 514/UDP 的取舍
Syslog 与 SNMP 最大的不同是方向:SNMP Trap 虽有主动语义,但大部分数据还是轮询采集;Syslog 则是设备主动把日志推到 NMS 或中央日志服务器。一条标准 Syslog 消息包含时间戳、facility、severity level、主机名和消息正文。Cisco IOS 的缺省记录级别是 debugging 到 emergencies 都写缓冲,但生产环境通常只关心 error 及以上和认证事件。PPT 中的严重级别表是排查日志的标准索引:
| 数值 | 关键字 | 含义 | 典型场景 |
|---|---|---|---|
| 0 | Emergencies | 系统不可用 | 设备断电、双主控同时挂 |
| 1 | Alerts | 需要立即行动 | 温度超过临界值 |
| 2 | Critical | 严重故障 | 电源或风扇失效 |
| 3 | Errors | 错误 | CRC 错包、AAA 认证失败 |
| 4 | Warnings | 警告 | 端口利用率突增 |
| 5 | Notifications | 正常但需注意 | 配置变更、接口 up/down |
| 6 | Informational | 信息 | 登录成功、定时任务执行 |
| 7 | Debugging | 调试 | 仅排障时开,平时关 |
设备侧最容易被忽略的是 facility 和日志目的地的搭配。Cisco IOS 上把日志送到远程服务器:
# 远程日志服务器地址,使用 UDP 514 logging host 192.0.2.10 transport udp port 514 # 推送级别:notifications 及以上 logging trap notifications # 使用 local6 facility,方便日志服务器分文件存储 logging facility local6logging trap notifications表示级别 5 及以上会推送;logging facility local6把设备日志归到 local6,方便日志服务器按 facility 分文件。UDP 514 是历史遗留下来的轻量方案,设备发送即忘;高可用环境建议改用 TCP 6514 并用 TLS 加密,否则网络抖动时日志会悄悄丢。这里要记住一个原则:Syslog 适合分析“发生了什么”,不适合做“当前状态是什么”,后者还是回到 SNMP 轮询。
2.3 NetFlow 流量数据:Export Packet 结构与 NetFlow 配置
NetFlow 把网络流量抽象成流记录,一条流由七元组(版本、源目地址、源目端口、协议、ToS、接口等)定义。设备把流缓存中的记录打包成 Export Packet,通过 UDP 发给 Collector。PPT 里写得很清楚:每个 Export Packet 约 1500 字节,通常包含 20 到 50 条 flow record;当被监控接口流量增大时,发送频率也随之提高。这个细节决定了 Collector 的容量规划——不是按设备数算,而是按并发流数算。
以 Cisco IOS 为例,开启 NetFlow 导出:
# 设置 NetFlow 导出目标和 UDP 端口 ip flow-export destination 192.0.2.20 9995 ip flow-export version 5 ip flow-export source Loopback0 # 在接口下开启入方向和出方向的流采集 interface GigabitEthernet0/1 ip flow ingress ip flow egressip flow-export destination指定 Collector 地址和 UDP 端口,常用 9995/9996;version 5是固定格式,支持基本五元组和字节包计数;ip flow ingress/egress分别开启入方向和出方向的流采集。如果只在 interface 下配了 ingress,出方向流量统计不到,这是排查“明明有流量,NetFlow 报表为空”时要看的第一个点。Traffic Collector 运行在 Solaris、HP-UX 或 Linux 上的常见实现是 nfdump 配合 nfcapd,启动后能用nfdump -r查看历史文件。流量大时可以在接口下配 sampler,例如每 1024 个包采样 1 个,减少 CPU 消耗,但小流和短连接会被采样掉,需要业务场景权衡。
2.4 其他采集手段:WMI、Agent、Probe/Collector 的适用边界
讲稿里还列出了 RMON、Event、Telnet/SSH、ODBC/JDBC、WMI、RCP、VBS、Agent、Scripts、xFlow、dataflow、Probe 和 Collecter。这些不是给同一类对象准备的:数据库运行状态用 JDBC/ODBC 最直接,例如通过 JDBC 连 Oracle 查 v$instance;Windows 主机性能用 WMI,但要放行 RPC 动态端口;交换机上的 RMON 在今天更多是历史 MIB 兼容;Agent 装在主机上能拿到 SNMP 拿不到的进程级指标,但会引入版本和补丁维护成本;Probe/Collector 则常用来做分布式采集和业务拨测,比如从多个节点探测同一个 Web 服务的可用性。工具套件和系统平台厂家会把这些协议封装成驱动,但底层仍然是上面这些通道。选型时可以给一张决策表:物理环境用探针,存量网络设备用 SNMP,事件审计用 Syslog,主机深度指标用 Agent,数据库用 JDBC/ODBC,业务拨测用 Scripts/Probe。这样设计出来的采集层才不会因为“某个协议支持得最好”而绑死在一个厂商上。
3. 构建一套可落地的采集与告警链路
有了协议通道,下一步是把它变成可运行的监控项。我不建议直接上手就是大而全的商业平台;先按“设备发现→基础指标→告警路径”三步走,把最小闭环跑通,再扩展。PPT 里的“全局/多级网络拓扑”“配置信息/软硬件资产”属于展示层,展示层的数据来源必须先回答一个问题:设备是什么型号、运行什么系统、有哪些接口和序列号。这部分靠 SNMP 扫出来。
3.1 设备发现与资产盘点:用 SNMP 扫描建立初始台账
网络层的设备发现通常用 CDP/LLDP 或 ARP 扫描,但资产台账需要的是 sysName、sysDescr、序列号和软硬件版本。最常见的做法是在一个管理网段内做 SNMP 扫描,先确认哪台 IP 有 SNMP 应答,再补采细节:
#!/bin/bash # 扫描 192.0.2.0/24 中存在 SNMP 应答的设备 for ip in $(seq 1 254); do target="192.0.2.$ip" if snmpget -v2c -c public -t 1 -r 0 -On "$target" 1.3.6.1.2.1.1.1.0 >/dev/null 2>&1; then sysname=$(snmpget -v2c -c public -On "$target" 1.3.6.1.2.1.1.5.0 2>/dev/null | awk -F': ' '{print $2}') echo "$target $sysname" fi done脚本先探测 1.3.6.1.2.1.1.1.0(sysDescr),有返回证明设备开了 SNMP,再读取 1.3.6.1.2.1.1.5.0(sysName)。-t 1是单次超时设为 1 秒,-r 0是不重试,扫描一个 /24 时不至于因为个别设备无响应拖很久。生产环境不要用 public,应该用只读 community,并把范围控制在运维网段;若设备支持 SNMPv3,脚本里的参数改成-u monitor -l authPriv -a SHA -A '***' -x AES -X '***'。扫描结果写入 CMDB 或 Excel 台账,后续拓扑发现和报表都从这里取主数据。
3.2 性能指标采集:CPU、内存、磁盘与端口状态的参数设计
讲到性能指标,PPT 把 CPU/内存使用率、网络流量/端口状态、磁盘空间/IO 性能、系统日志/设备日志、数据库运行状态、应用系统运行状态都列进了监控范围。其中网络流量部分要特别小心:SNMP 的接口计数器是 Counter32/Counter64,直接取当前值没有意义,必须按时间差算速率,还要处理计数器回绕。常见做法是用监控软件内置的 SNMP 计数器类型,Zabbix 里把监控项类型设为“SNMPv2 counter”,更新间隔 60 秒,系统会自动算出每秒速率。下面是一组典型的 SNMP 监控项参数:
| 监控对象 | OID 示例 | 类型 | 更新间隔 | 建议阈值 |
|---|---|---|---|---|
| 系统名称 | 1.3.6.1.2.1.1.5.0 | 字符串 | 3600s | 无 |
| 接口入方向流量 | 1.3.6.1.2.1.2.2.1.10. | 计数器 | 60s | 按端口带宽 70% 告警 |
| 接口出方向流量 | 1.3.6.1.2.1.2.2.1.16. | 计数器 | 60s | 按端口带宽 70% 告警 |
| 接口状态 | 1.3.6.1.2.1.2.2.1.8. | 离散值(1 up,2 down) | 60s | down 即告警 |
| CPU 利用率(Cisco 部分版本) | 1.3.6.1.4.1.9.9.109.1.1.1.1.8. | 数值 | 60s | 连续 5 分钟 >85% |
| 磁盘空间 | 1.3.6.1.2.1.25.2.3.1.6. | 数值 | 300s | 使用率 >90% |
这张表只是为了说明参数设计,不同厂商的 CPU 和磁盘 OID 差异很大,上线前一定要用自己的设备型号验证一遍。验证方法是先snmpwalk到厂商私有分支,找到对应对象的数值,再写入监控项;如果某个 OID 在设备上返回 No Such Instance,不是网络问题,而是该型号不支持或 OID 索引不对。索引通常是 ifIndex 或 hrStorageIndex,同一台设备上接口表的索引与 CPU 表的索引不一定一致,不能想当然套用。数据库和应用软件层的采集与网络设备不同,MySQL 可以用mysql -u monitor -p -e "SHOW GLOBAL STATUS LIKE 'Threads_connected'",Oracle 通过 JDBC 查询 v$sysstat,这类指标走数据库客户端或 Agent,不走 SNMP,更新间隔可以放到 5 到 10 秒。
3.3 告警路径:声光、短信、邮件与运维管理系统联动
采集到位后,告警路径决定故障能不能被看见。PPT 里的“声光、短信、邮件”是三种不同优先级的通道:声光用于机房现场,短信用于值班人员,邮件用于留痕。常用的做法是在监控平台里定义触发器,再通过告警媒介把事件推出去。以 Zabbix 和通用 HTTP 接口为例:
#!/bin/bash # 放在 /usr/lib/zabbix/alertscripts/ 下,脚本接收三个参数 API_KEY="$1" MESSAGE="$2" curl -s -X POST "https://api.example.com/v2/alerts" \ -H "Authorization: GenieKey $API_KEY" \ -H "Content-Type: application/json" \ -d "{\"message\":\"$MESSAGE\"}"这个脚本把监控系统的告警消息转成第三方平台的 REST API 请求。Zabbix 在调用时会把{ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}映射为脚本参数,所以$1可以放 API Key,$2放消息体。实际配置短信时,通常把短信网关的 URL 放到$1,在脚本里再拼一部分内容;声光告警则接一个支持 HTTP 控制的报警灯模块,通过 curl 触发红灯和蜂鸣。告警要避免直接对原始指标设阈值,而应该加持续时间条件,比如 CPU 连续 5 分钟超过 85% 才触发,否则一次 5 秒尖峰就会造成告警风暴。最后别忘记告警与运维管理系统联动:生成事件单、绑定设备配置档案和最近变更记录,才能真正做到“故障快速定位与预防”,而不只是把消息发出去。
4. 流量分析实战:端口镜像与光口 TAP 的配置和排错
监控系统要回答“设备有没有故障”,流量分析要回答“网络里到底传了什么”。PPT 里用了两页讲数据侦听:一页是基于交换机的端口镜像,PC-3 接在镜像端口上装协议分析软件即可;另一页是基于光口 TAP 的硬件探针。两套方案采集的都是原始报文,但适用场景完全不同。
4.1 交换机端口镜像:monitor port 与 monitored port 的配置
PPT 图里的 PORT-24 是被镜像端口(monitored port),PORT-18 是镜像端口(monitor port)。流经 PORT-24 的 PC-1 和 PC-2 双向数据都会被复制到 PORT-18,接在 PORT-20 的 PC-3 只要能收到复制过来的流量,就能做协议分析。Cisco IOS 的实现是本地 SPAN:
# 把 Gi0/24 双向流量镜像到 Gi0/18 monitor session 1 source interface Gi0/24 both monitor session 1 destination interface Gi0/18source interface指定被镜像的源端口,both表示入方向和出方向都复制;如果只需要抓服务器上行的攻击包,可以改成rx。destination interface指定镜像目的端口,接到分析机的网卡。如果交换机的镜像端口本身还跑着业务,抓包结果会混入额外流量,因此排查时优先找独立的空端口。另外,把 10G 端口镜像到 1G 端口会丢包,这是必然的;镜像链路带宽必须不低于源端口带宽。
在老的 CatOS 设备上,命令完全不同,常见的是set span 24 18 both,意思是源端口 24,目的端口 18,双向。遇到不同厂商设备,先看命令是monitor session风格还是set span风格,不要凭 Cisco IOS 记忆去套所有交换机。端口镜像对交换机 CPU 和 ASIC 有一定开销,高流量核心设备建议只在排障窗口临时开启,不要长期全量镜像。
4.2 光口 TAP 与硬件探针部署:关键链路的无源采集
端口镜像依赖交换机正确处理复制动作,光口 TAP 则是在光纤链路上做物理分光,把一部分光信号复制给探针。最大的优势是设备故障不影响主链路;即使 TAP 掉电,光路仍然直通。对于 WAN 出口和数据库集群之间的链路,我一般优先考虑 TAP。硬件探针接在 TAP 的 RX 端,把光信号转换成电口给采集服务器。
采集侧常见的抓包命令:
# 抓链路数据包,仅保存报文头,减少磁盘占用 tcpdump -i eth1 -s 96 -nn -w /data/capture/20250222_1200.pcap-s 96只抓每个报文前 96 字节,足够看到 IP 层和 TCP/UDP 头部,用于会话分析时能大幅减少磁盘占用;如果要分析应用层内容,改为-s 0抓整包。-nn表示不做 DNS 反向解析,也不把端口翻译成服务名,避免抓包过程产生额外 DNS 查询。-w直接写 pcap,后续用 Wireshark 打开。如果现场需要验证 TAP 是否工作,先用tcpdump -i eth1 -c 100看是否有包进来;如果持续无包,检查 TAP 光口 RX 是否接反,常见的原因是 TAP 设备的 RX/TX 交叉接线错误。
4.3 用 NetFlow/sFlow 补充长期流量统计
端口镜像和 TAP 能拿到最全的报文,但存不了三个月。NetFlow 和 sFlow 的价值在于用很小的存储代价留住流量统计,适合作长期趋势和容量规划。NetFlow 由设备维护流缓存,sFlow 则是基于采样,二者在实现上差异不小。我在核心交换机上通常同时开两个:NetFlow 用于会话级分析和安全审计,sFlow 用于整体流量水位。sFlow 配置示例:
# sFlow 源地址 sflow source 10.0.0.1 # 采样率:每1024个包采样1个 sflow sampling-rate 1024 sflow collector-address 192.0.2.30 sflow collector-port 6343sampling-rate 1024表示每 1024 个包抽取 1 个包上报。采样率太高会漏掉带宽占用很小的长尾流量,太低又带来设备开销;一般从 512 到 1024 起步,打开后对比 SNMP 接口流量,偏差超过 20% 再调整。collector-address指向 sFlow Collector,默认端口 6343。如果只看网络整体流量,sFlow 够用;如果要做 DDoS 溯源和会话追踪,NetFlow 更合适。三类手段的定位可以简单对比如下:
| 手段 | 数据粒度 | 存储成本 | 适用场景 |
|---|---|---|---|
| 端口镜像 | 原始报文 | 极高 | 排障、抓包、安全分析 |
| 光口 TAP | 原始报文 | 极高 | 核心链路被动采集,不依赖交换机 |
| NetFlow | 流记录聚合 | 低 | 长期流量趋势、Top N 会话 |
| sFlow | 采样包 | 很低 | 流量水位、端口利用率统计 |
5. 运维报表与可用性统计:公式、SQL 与踩坑清单
PPT 最后落到了“网络和系统运行报表”“服务可用性统计报表”和“与运维管理系统联动”。报表能不能信,取决于统计口径,而不是图表好看。
5.1 服务可用性的两种统计口径
常见口径有三种,但监控报表里最常用的是:可用性 = 可用时间 / 统计周期。计算时要明确探测粒度,例如每 5 分钟探测一次,一个周期内最多有 288 个数据点;只要某一次探测失败,就认为对应 5 分钟不可用,这会把一次 30 秒的闪断放大成 5 分钟不可用。另一种口径是质量指标,比如 HTTP 平均响应时间小于 2 秒算可用,适合应用层。PPT 里的“服务可用性统计”没有指明是哪一种,所以做报表前要和业务统一口径,不然同一个平台会算出两个可用性。
5.2 从监控历史表生成月度可用性
如果监控项本身返回 1/0(1 表示可用,0 表示不可用),可以直接用 Zabbix 的 trends 表聚合月报:
-- 按月份聚合 trends 表中的 1/0 监控项 SELECT DATE_FORMAT(FROM_UNIXTIME(clock), '%Y-%m') AS month, ROUND(AVG(value_avg) * 100, 2) AS availability_pct FROM trends WHERE itemid = 10001 AND clock >= UNIX_TIMESTAMP('2025-01-01') GROUP BY month;trends表保存的是小时级聚合,value_avg是该小时内监控项的平均值。对 1/0 型监控项,按小时平均后基本等于该小时可用比例。itemid替换成实际可用性探针的 ID;如果探针返回的是响应时间而不是 0/1,需要先写触发器把可用/不可用转换成 1/0,再进这个 SQL。注意FROM_UNIXTIME(clock)的时区要和监控服务器时区一致,否则月报边缘会出现偏移。
5.3 常见误用与排查清单
排障时最常碰到的问题,按概率排序:一是 community 用 public 且网管所在网段可访问,外部扫描器也能读,资产暴露面比预期大;二是轮询间隔小于设备响应时间,60 秒都超时,这种超时要先看设备 CPU,而不是加并发。三是 OID 报 No Such Instance,多半是索引没对上而不是设备不支持。四是 Trap 丢失,514/UDP 没有确认,要在 snmptrapd 日志里看是否真的收到,再考虑升级到 TCP/TLS。五是镜像目的端口带宽小于源端口,抓包文件时间不连续,先检查探针网卡rx_dropped:ethtool -S eth1 | grep rx_dropped,如果持续增长,先扩大镜像目的端口容量,而不是加过滤条件。
本文还有配套的精品资源,点击获取