SNMP 输入插件

编辑

对于其他版本,请参阅 版本化插件文档

获取帮助

编辑

有关插件的问题,请在 Discuss 论坛中发起主题。对于错误或功能请求,请在 Github 中提交问题。有关 Elastic 支持的插件列表,请查阅 Elastic 支持矩阵

描述

编辑

SNMP 输入插件使用简单网络管理协议 (SNMP) 轮询网络设备,以收集与设备运行当前状态相关的信息。

SNMP 输入插件支持通过 UDP 和 TCP 传输协议的 SNMP v1、v2c 和 v3。

与 Elastic Common Schema (ECS) 的兼容性

编辑

由于 SNMP 数据基于 OID 具有特定的字段名称,因此我们建议设置 target。当启用 ECS 兼容模式 时,元数据字段遵循特定的命名约定。

ECS 已禁用

ECS v1、v8

描述

[@metadata][host_protocol]

[@metadata][input][snmp][host][protocol]

用于检索数据的协议,例如“udp”

[@metadata][host_address]

[@metadata][input][snmp][host][address]

主机 IP,例如“192.168.1.1”

[@metadata][host_port]

[@metadata][input][snmp][host][port]

主机的端口,例如“161”

[@metadata][host_community]

[@metadata][input][snmp][host][community]

配置的社区,例如“public”

[host]

导入 MIB

编辑

此插件已包含 IETF MIB(管理信息库),您无需导入它们。如果您需要其他 MIB,则需要导入它们。查看 导入 MIB 以获取信息。

SNMP 输入配置选项

编辑

此插件支持以下配置选项以及后面描述的 通用选项

SNMPv3 身份验证选项

编辑

此插件支持以下 SNMPv3 身份验证选项。

设置 输入类型 必需

auth_pass

密码

auth_protocol

字符串,其中之一 ["md5", "sha", "sha2", "hmac128sha224", "hmac192sha256", "hmac256sha384", "hmac384sha512"]

priv_pass

密码

priv_protocol

字符串,其中之一 ["des", "3des", "aes", "aes128", "aes192", "aes256"]

security_level

字符串,其中之一 ["noAuthNoPriv", "authNoPriv", "authPriv"]

security_name

字符串

SNMP 输入配置选项

编辑

另请参阅 通用选项,以获取所有输入插件支持的选项列表。

ecs_compatibility

编辑
  • 值类型为 字符串
  • 支持的值为

    • disabled:不使用与 ECS 兼容的字段名称(字段可能设置在事件的根目录)
    • v1v8:避免可能与 Elastic Common Schema 冲突的字段名称(例如,host 字段)
  • 默认值取决于正在运行的 Logstash 版本

    • 当 Logstash 提供 pipeline.ecs_compatibility 设置时,其值用作默认值
    • 否则,默认值为 disabled

控制此插件与 Elastic Common Schema (ECS) 的兼容性。

  • 值类型为 数组
  • 此设置没有默认值

使用 get 选项查询给定 OID 的标量值。一个或多个 OID 指定为 OID 字符串数组。

示例

input {
  snmp {
    get => ["1.3.6.1.2.1.1.1.0", "1.3.6.1.2.1.1.3.0", "1.3.6.1.2.1.1.5.0"]
    hosts => [{host => "udp:127.0.0.1/161" community => "public"}]
  }
}

hosts

编辑
  • 值类型为 数组
  • 此设置没有默认值

hosts 选项指定要查询配置的 getwalk 选项的主机列表。

每个主机定义都是一个哈希,并且必须定义 host 键和值。host 必须使用格式 {tcp|udp}:{ip address}/{port},例如 host => "udp:127.0.0.1/161"

每个主机定义可以选择包含以下键和值

  • community 社区字符串,默认为 public
  • version 12c3,默认为 2c
  • retries 是失败情况下的重试次数,默认为 2
  • timeout 是以毫秒为单位的超时时间,默认值为 1000

指定所有主机选项

input {
  snmp {
    get => ["1.3.6.1.2.1.1.1.0"]
    hosts => [{host => "udp:127.0.0.1/161" community => "public" version => "2c"  retries => 2  timeout => 1000}]
  }
}

指定多个主机

input {
  snmp {
    get => ["1.3.6.1.2.1.1.1.0"]
    hosts => [{host => "udp:127.0.0.1/161" community => "public"}, {host => "udp:192.168.0.1/161" community => "private"}]
  }
}

指定 IPv6 主机

input {
  snmp {
    get => ["1.3.6.1.2.1.1.1.0"]
    hosts => [{host => "udp:[::1]/161" community => "public"}, {host => "udp:[2001:db8::2:1]/161" community => "private"}]
  }
}

interval

编辑
  • 值类型为 数字
  • 默认值为 30

interval 选项指定轮询间隔(以秒为单位)。如果轮询所有配置的主机花费的时间超过此间隔,则会向日志发出警告。

local_engine_id

编辑
  • 值类型为 字符串
  • 此设置没有默认值

SNMPv3 本地引擎 ID。其长度必须大于或等于 5,小于或等于 32。如果未提供,则会根据本地 IP 地址和另外四个随机字节生成默认 ID。

mib_paths

编辑
  • 值类型为 路径
  • 此设置没有默认值

mib_paths 选项指定一个或多个导入的 MIB 文件的位置。该值可以是包含导入的 MIB(.dic.yaml)文件的目录路径,也可以是单个 MIB 文件的文件路径。

此插件包含 IETF MIB。如果您需要其他 MIB,则需要导入它们。请参阅 导入 MIB

oid_mapping_format

编辑
  • 值可以是以下任何一个:defaultruby_snmpdotted_string
  • 默认值为 "default"

定义 Logstash 事件中 OID 的映射文本表示形式

  • default 使用 MIB 解析的名称(用点分隔)转换每个标识符。例如:1.3.6.1.2.1.1.2.0 映射为 iso.org.dod.internet.mgmt.mib-2.system.sysObjectID.0
  • ruby_snmp 生成以 MIB 模块名称为前缀的字段名称,后跟最新解析的标识符名称和未知值。例如:1.3.6.1.2.1.1.2.0 映射为 SNMPv2-MIB::sysObjectID.0
  • dotted_string 使用标准点分字符串表示法映射字段,例如:1.3.6.1.2.1.1.2.0 映射为 1.3.6.1.2.1.1.2.0

oid_map_field_values

编辑

定义类型为 OID 的 Logstash 事件字段值是否使用 oid_mapping_format 选项中设置的配置的 OID 文本表示形式进行映射。

oid_root_skip

编辑
  • 值类型为 数字
  • 默认值为 0

oid_root_skip 选项指定在事件字段名称中忽略的 OID 根数字的数量。例如,在像“1.3.6.1.2.1.1.1.0”这样的数字 OID 中,可以通过设置 oid_root_skip => 5 来忽略前 5 位数字,这将导致字段名称为“1.1.1.0”。类似地,当使用 MIB 时,OID“1.3.6.1.2.mib-2.system.sysDescr.0”将变为“mib-2.system.sysDescr.0”

oid_path_length

编辑
  • 值类型为 数字
  • 默认值为 0

选项 oid_path_length 用于指定在事件字段名称中保留的 OID 根数字的数量。例如,对于像 "1.3.6.1.2.1.1.1.0" 这样的数字 OID,可以通过设置 oid_path_length => 2 来保留最后 2 位数字,这将导致字段名称为 "1.0"。类似地,当使用 MIB 时,像 "1.3.6.1.2.mib-2.system.sysDescr.0" 这样的 OID 将变为 "sysDescr.0"

poll_hosts_timeout

编辑
  • 值类型为 数字
  • 此设置没有默认值

指定轮询客户端等待所有 hosts 响应的最长时间(以毫秒为单位)。如果在超时时间到期之前未收到所有响应,则客户端将失败,并且某些主机可能不会在当前周期内进行轮询。

默认情况下,它使用 1 小时、配置的最高 hosts timeout 值以及 interval 值中的最高值。

walk

编辑
  • 值类型为 数组
  • 此设置没有默认值

使用 walk 选项检索给定 OID 的信息子树。一个或多个 OID 指定为 OID 字符串数组。

查询从给定 OID 开始的信息子树。

示例

  snmp {
    walk => ["1.3.6.1.2.1.1"]
    hosts => [{host => "udp:127.0.0.1/161" community => "public"}]
  }
}

tables

编辑
  • 值类型为 数组
  • 此设置没有默认值
  • 结果将在使用表名称的字段下返回。

选项 tables 用于查询给定列 OID 的表格值。

每个表定义都是一个哈希,必须定义名称键和值以及要返回的列。

指定单个表

input {
  snmp {
    hosts => [{host => "udp:127.0.0.1/161" community => "public" version => "2c"  retries => 2  timeout => 1000}]
    tables => [ {"name" => "interfaces" "columns" => ["1.3.6.1.2.1.2.2.1.1", "1.3.6.1.2.1.2.2.1.2", "1.3.6.1.2.1.2.2.1.5"]} ]
  }
}

指定多个表

input {
  snmp {
    get => ["1.3.6.1.2.1.1.1.0"]
    tables => [ {"name" => "interfaces" "columns" => ["1.3.6.1.2.1.2.2.1.1", "1.3.6.1.2.1.2.2.1.2", "1.3.6.1.2.1.2.2.1.5"]}, {"name" => "ltmPoolStatTable" "columns" => ["1.3.6.1.4.1.3375.2.2.5.2.3.1.1", "1.3.6.1.4.1.3375.2.2.5.2.3.1.6"]} ]
  }
}

target

编辑
  • 值类型为 字符串
  • 此设置没有默认值

分配 SNMP 有效负载的字段名称。如果未指定,数据将存储在事件的根目录中。

当启用 ecs_compatibility 时,建议设置目标。

threads

编辑
  • 值类型为 数字
  • 默认值为 CPU 核心数。

用于执行主机 SNMP 请求的线程数。

use_provided_mibs

编辑

此插件提供所有 IETF MIB(管理信息库),这些库在 libsmi 版本 0.5.0 中公开提供。启用后,它会自动加载捆绑的 MIB,并在生成的事件中提供数字 OID 到 MIB 字段名称的映射。

SNMPv3 身份验证选项

编辑

可以配置一个 用户,并将用于所有定义的 SNMPv3 主机。如果需要多个 SNMPv3 用户,则需要多个 snmp 输入声明。仅当您使用 SNMPv3 时,才需要这些选项。

auth_pass

编辑
  • 值类型为 password
  • 此设置没有默认值

选项 auth_pass 用于指定 SNMPv3 身份验证密码短语或密码。

auth_protocol

编辑

选项 auth_protocol 用于指定 SNMPv3 身份验证协议或类型。

  • 值可以是以下任何一个:md5shasha2hmac128sha224hmac192sha256hmac256sha384hmac384sha512
  • 请注意,sha2hmac192sha256 是等效的。
  • 此设置没有默认值

priv_pass

编辑
  • 值类型为 password
  • 此设置没有默认值

选项 priv_pass 用于指定 SNMPv3 加密密码。

priv_protocol

编辑
  • 值可以是以下任何一个:des3desaesaes128aes192aes256
  • 请注意,aesaes128 是等效的。
  • 此设置没有默认值

选项 priv_protocol 用于指定 SNMPv3 私密性/加密协议。

security_level

编辑
  • 值可以是以下任何一个:noAuthNoPrivauthNoPrivauthPriv
  • 此设置没有默认值

选项 security_level 用于指定 SNMPv3 安全级别,包括身份验证、无隐私;身份验证、隐私;或无身份验证、无隐私。

security_name

编辑
  • 值类型为 字符串
  • 此设置没有默认值

选项 security_name 用于指定 SNMPv3 安全名称或用户名。

配置示例

编辑

指定 SNMPv3 设置

input {
  snmp {
    hosts => [{host => "udp:127.0.0.1/161" version => "3"}]
    get => ["1.3.6.1.2.1.1.1.0"]
    security_name => "mySecurityName"
    auth_protocol => "sha"
    auth_pass => "ShaPassword"
    priv_protocol => "aes"
    priv_pass => "AesPasword"
    security_level => "authPriv"
  }
}

在每个主机相同轮询周期中同时使用 getwalk

input {
  snmp {
    get => ["1.3.6.1.2.1.1.1.0", "1.3.6.1.2.1.1.3.0", "1.3.6.1.2.1.1.5.0"]
    walk => ["1.3.6.1.2.1.1"]
    hosts => [{host => "udp:127.0.0.1/161" community => "public"}]
  }
}

指定所有全局选项

input {
  snmp {
    get => ["1.3.6.1.2.1.1.1.0"]
    hosts => [{host => "udp:127.0.0.1/161"}]

    mib_paths => ["path/to/converted/mibfile.dic"]
    oid_root_skip => 0
    interval => 30
  }
}

轮询的主机信息

编辑

所有轮询的主机信息都存储在事件 @metadata 中。

  • [@metadata][host_protocol]udptcp
  • [@metadata][host_address]:主机地址,例如 127.0.0.1
  • [@metadata][host_port]:主机端口(例如 161
  • [@metadata][host_community]:社区字符串,例如 public

默认情况下,会向事件添加一个 host 字段,其值为 [@metadata][host_address]

config :add_field, :validate => :hash, :default => { "host" => "%{[@metadata][host_address]}" }

您可以通过指定备用 add_field 来自定义 host 字段的格式和内容。

示例

input {
  snmp {
    get => ["1.3.6.1.2.1.1.1.0"]
    hosts => [{host => "udp:127.0.0.1/161"}]

    add_field => {host => "%{[@metadata][host_protocol]}:%{[@metadata][host_address]}/%{[@metadata][host_port]},%{[@metadata][host_community]}"}
  }
}

通用选项

编辑

所有输入插件都支持这些配置选项。

设置 输入类型 必需

add_field

hash

enable_metric

布尔值

id

字符串

tags

数组

type

字符串

add_field

编辑
  • 值类型为 hash
  • 默认值为 {}

向事件添加字段。

enable_metric

编辑
  • 值类型为 boolean
  • 默认值为 true

禁用或启用此特定插件实例的指标日志记录。默认情况下,我们会记录所有可能的指标,但您可以禁用特定插件的指标收集。

  • 值类型为 string
  • 此设置没有默认值。

向插件配置添加唯一的 ID。如果未指定 ID,Logstash 将生成一个。强烈建议在您的配置中设置此 ID。当您有两个或多个相同类型的插件时,这尤其有用,例如,如果您有两个 snmp 输入。在这种情况下,添加命名 ID 将有助于在使用监控 API 时监控 Logstash。

input {
  snmp {
    id => "my_plugin_id"
  }
}

字段 id 中的变量替换仅支持环境变量,不支持使用密钥存储中的值。

tags

编辑
  • 值类型为 array
  • 此设置没有默认值。

向事件添加任意数量的标签。

这可以帮助以后进行处理。

type

编辑
  • 值类型为 string
  • 此设置没有默认值。

向此输入处理的所有事件添加 type 字段。

类型主要用于过滤器激活。

类型存储为事件本身的一部分,因此您也可以使用类型在 Kibana 中搜索它。

如果您尝试设置已具有类型的事件的类型(例如,当您从发送器发送事件到索引器时),则新的输入将不会覆盖现有类型。即使发送到其他 Logstash 服务器,在发送器处设置的类型也会与该事件保持一致。