SSHD 采集插件

监控数据采集器 Categraf 的 sshd 采集插件介绍

SSHD守护进程插件通过解析last命令的输出来收集 SSH 连接统计信息,能够监控当前活跃的 SSH 连接数量和新建连接数量。企业版v0.4.26及以上包含此插件。

系统要求

  • 操作系统支持:目前仅支持Linux系统
  • 权限要求:需要有执行last命令的权限
  • 命令依赖:系统需要安装last命令(通常默认安装)

配置说明

配置文件位于conf/inputs.sshd/sshd.toml

基础配置说明

# 数据采集间隔(秒)
interval = 15

[[instances]]
# 是否在指标中包含用户名标签
# 启用后,指标将包含 username 标签用于详细跟踪
# 默认值:false
enable_username = false

# 是否在指标中包含客户端 IP 标签
# 启用后,指标将包含 remote_ip 标签用于详细跟踪
# 默认值:false
enable_ip = false

配置参数说明

参数 类型 默认值 说明
interval int 15 采集周期配置
enable_username bool false 是否启用用户名标签
enable_ip bool false 是否启用远程 IP 标签

监控指标

插件会生成以下两个核心指标:

  1. sshd_connections_current
  • 指标类型:Gauge
  • 含义:当前采集周期内发现的 SSH 连接总数(包括所有活跃连接)
  • 用途:监控当前系统的 SSH 连接负载情况
  1. sshd_new_connections
  • 指标类型:Gauge
  • 含义:自上次采集以来的新 SSH 连接数量
  • 用途:监控 SSH 连接的增长趋势和登录活动

标签配置与输出示例

场景 1:无标签模式(默认)

配置

enable_username = false
enable_ip = false

指标输出示例

sshd_connections_current 5
sshd_new_connections 2

场景 2:仅用户名标签

配置:

enable_username = true
enable_ip = false

输出示例

sshd_connections_current{username="admin"} 3
sshd_connections_current{username="root"} 2
sshd_new_connections{username="admin"} 1
sshd_new_connections{username="root"} 1

场景 3:仅远程 IP 标签

配置

enable_username = false
enable_ip = true

输出示例

sshd_connections_current{remote_ip="192.168.1.100"} 4
sshd_connections_current{remote_ip="10.0.0.50"} 1
sshd_new_connections{remote_ip="192.168.1.100"} 2

场景 4:用户名和远程 IP 双标签

配置

enable_username = true
enable_ip = true

输出示例

sshd_connections_current{username="admin",remote_ip="192.168.1.100"} 3
sshd_connections_current{username="root",remote_ip="10.0.0.50"} 1
sshd_connections_current{username="admin",remote_ip="192.168.1.200"} 1
sshd_new_connections{username="admin",remote_ip="192.168.1.100"} 2

使用场景

监控系统整体的 SSH 连接情况

# 当前活跃连接数
sshd_connections_current

# 新建连接数
sshd_new_connections

用户行为监控

监控特定用户的连接活动:

# 特定用户的连接数
sshd_connections_current{username="admin"}

# 新用户连接活动
sshd_new_connections{username="admin"}

# 连接数最多的前 5 个用户
topk(5, sshd_connections_current)

安全监控

基于 IP 地址的安全分析

# 来自特定 IP 的连接
sshd_connections_current{remote_ip="192.168.1.100"}

# 来自特定 IP 的新连接
sshd_new_connections{remote_ip="192.168.1.100"}

# 连接数超过 3 个的 IP(可能的异常行为)
sshd_connections_current > 3

综合分析

结合用户名和 IP 的复合分析:

# 特定网段的用户活动
sshd_connections_current{username="admin",remote_ip=~"192.168.*"}

# 来自特定网段的新连接
sshd_new_connections{username="admin",remote_ip=~"192.168.*"}

# 每个 IP 的用户多样性(安全分析)
count by (remote_ip) (sshd_connections_current)

数据采集机制

  1. 命令执行优先级:
  • 首选:last -F -i -w(完整时间戳 + IP 地址 + 宽格式)
  • 备选:last -i -w(Linux 标准格式)
  • 兜底:last(基础格式,最大兼容性)
  1. 时间解析能力:
  • 支持完整时间戳格式(包含年份)
  • 智能年份检测(处理跨年情况)
  • 向后兼容性处理
  1. 会话过滤:
  • 识别 SSH 类型会话(pts/、ttys 终端)
  • 排除控制台登录和本地终端
  • 按时间倒序优化解析
  1. 性能优化
  • 早期终止:遇到上次采集时间之前的记录时停止解析
  • 高效过滤:优化的终端类型检测算法
  • 精确时间戳:使用完整时间戳避免解析歧义
  • 增量处理:仅处理新的或变化的连接数据
  • IPv4/IPv6 支持:支持双栈网络环境

注意事项

  • 系统兼容性:目前仅支持 Linux 系统,其他系统会显示警告并跳过采集
  • 权限要求:需要确保运行用户有执行 last 命令的权限
  • 状态维护:插件在采集周期之间维护状态,确保新连接计数的准确性
  • 自动过滤:自动过滤控制台登录和非 SSH 终端
  • 命令兜底:当 last -F -i -w 不完全支持时会优雅降级
  • 采集频率:支持各种采集频率(1分钟、5分钟等)
  • 地址检测:支持 IPv4 和 IPv6 远程地址检测

故障排除

如果插件无法正常工作,请检查:

  • 系统是否为 Linux
  • last 命令是否可用且有执行权限
  • 配置文件语法是否正确
  • 检查插件日志中的错误信息

更新时间 2025-07-28

快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云