SNMP 输入插件
编辑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] |
SNMP 输入配置选项
编辑此插件支持以下配置选项以及稍后描述的通用选项。
设置 | 输入类型 | 必需 |
---|---|---|
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
字符串,以下之一 |
否 |
|
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
||
否 |
SNMPv3 身份验证选项
编辑此插件支持以下 SNMPv3 身份验证选项。
SNMP 输入配置选项
编辑另请参阅通用选项,以获取所有输入插件支持的选项列表。
ecs_compatibility
编辑- 值类型是字符串
-
支持的值是
-
disabled
: 不使用与 ECS 兼容的字段名称(字段可以设置在事件的根级别) -
v1
、v8
:避免可能与 Elastic Common Schema 冲突的字段名称(例如,host
字段)
-
-
默认值取决于正在运行的 Logstash 版本
- 当 Logstash 提供
pipeline.ecs_compatibility
设置时,其值将用作默认值 - 否则,默认值为
disabled
。
- 当 Logstash 提供
控制此插件与Elastic Common Schema (ECS)的兼容性。
get
编辑- 值类型是数组
- 此设置没有默认值
使用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
选项指定要查询配置的get
和walk
选项的主机列表。
每个主机定义都是一个哈希,并且必须定义host
键和值。host
必须使用格式 {tcp|udp}:{ip 地址}/{端口}
,例如 host => "udp:127.0.0.1/161"
每个主机定义可以选择包括以下键和值
-
community
社区字符串,默认值为public
。 -
version
1
、2c
或3
,默认值为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"}] } }
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
编辑- 值可以是以下任意值:
default
、ruby_snmp
、dotted_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
编辑- 值类型是布尔值
- 默认值为
false
定义是否使用在oid_mapping_format
选项上设置的配置 OID 文本表示形式来映射类型为 OID
的 Logstash 事件字段值。
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 时,像“1.3.6.1.2.mib-2.system.sysDescr.0”这样的 OID 将变为“mib-2.system.sysDescr.0”
- 您可以使用此设置或
oid_path_length
,但不能同时使用两者。 - 仅当
oid_mapping_format
设置为default
时,才使用此设置。
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”
- 您可以使用此设置或
oid_root_skip
,但不能同时使用两者。 - 仅当
oid_mapping_format
设置为default
时,才能使用此设置。
poll_hosts_timeout
编辑- 值类型是数字
- 此设置没有默认值
指定轮询客户端等待所有hosts
响应的最大时间(以毫秒为单位)。如果在超时时间过去之前未收到所有响应,则客户端将失败,并且某些主机可能在当前周期内未被轮询。
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"]} ] } }
SNMPv3 身份验证选项
编辑可以配置一个单一用户,并将用于所有定义的 SNMPv3 主机。如果需要多个 SNMPv3 用户,则需要多个 snmp 输入声明。只有在使用 SNMPv3 时才需要这些选项。
auth_protocol
编辑auth_protocol
选项指定 SNMPv3 身份验证协议或类型。
- 值可以是以下任何一个:
md5
、sha
、sha2
、hmac128sha224
、hmac192sha256
、hmac256sha384
、hmac384sha512
- 请注意,
sha2
和hmac192sha256
是等效的。 - 此设置没有默认值
priv_protocol
编辑- 值可以是以下任何一个:
des
、3des
、aes
、aes128
、aes192
、aes256
- 请注意,
aes
和aes128
是等效的。 - 此设置没有默认值
priv_protocol
选项指定 SNMPv3 隐私/加密协议。
security_level
编辑- 值可以是以下任何一个:
noAuthNoPriv
、authNoPriv
、authPriv
- 此设置没有默认值
security_level
选项指定 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" } }
在每个主机的同一轮询周期中使用 get
和 walk
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]
:udp
或tcp
-
[@metadata][host_address]
: 主机地址,例如127.0.0.1
-
[@metadata][host_port]
: 主机端口(例如161
) -
[@metadata][host_community]
: 社区字符串,例如public
默认情况下,会将带有 [@metadata][host_address]
值的 host
字段添加到事件中。
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]}"} } }
通用选项
编辑所有输入插件都支持这些配置选项。
enable_metric
编辑- 值类型是 boolean
- 默认值为
true
。
默认情况下,禁用或启用此特定插件实例的指标日志记录,我们会记录所有我们可以记录的指标,但是您可以禁用特定插件的指标收集。