prometheus.exporter.snmp
注意
用法
prometheus.exporter.snmp "LABEL" {
config_file = SNMP_CONFIG_FILE_PATH
target "TARGET_NAME" {
address = TARGET_ADDRESS
}
}
或
prometheus.exporter.snmp "LABEL" {
config_file = SNMP_CONFIG_FILE_PATH
targets = TARGET_LIST
}
参数
以下参数可以用来配置导出器的行为。省略的字段将使用默认值。
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
config_file | string | 定义自定义模块的 SNMP 配置文件。 | no | |
config | string 或 secret | 用作内联字符串的 SNMP 配置。 | no | |
targets | list(map(string)) | SNMP 目标。 | no |
config_file
参数指向一个定义要使用哪些 snmp_exporter 模块的 YAML 文件。有关如何生成配置文件的详细信息,请参阅 snmp_exporter。
config
参数必须是一个定义要使用哪些 SNMP 模块和身份验证的 YAML 文档字符串。通常使用另一个组件的导出加载 config
。例如,
local.file.LABEL.content
remote.http.LABEL.content
remote.s3.LABEL.content
name
:目标的名称(必需)。address
或__address__
:SNMP 设备的地址(必需)。module
:用于轮询的 SNMP 模块。auth
:要使用的 SNMP 身份验证配置文件。walk_params
:为此目标使用的配置。
块
层次结构 | 名称 | 描述 | 必需 |
---|---|---|---|
target | target | 配置一个 SNMP 目标。 | no |
walk_param | walk_param | 用于覆盖默认 SNMP 设置的 SNMP 连接配置文件。 | no |
target block
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
address | string | SNMP 设备的地址。 | yes | |
module | string | 用于轮询的 SNMP 模块。 | "" | no |
auth | string | 要使用的 SNMP 身份验证配置文件。 | "" | no |
walk_params | string | 为此目标使用的配置。 | "" | no |
snmp_context | string | 覆盖 SNMP 配置文件中的 context_name 参数。 | "" | no |
walk_param block
《walk_param》模块定义了一个个体SNMP连接配置文件,可以用来覆盖默认的SNMP设置。可以多次指定《walk_param》模块来定义多个SNMP连接配置文件。
名称 | 类型 | 描述 | 默认值 | 必需 |
---|---|---|---|---|
名称 | string | 需要覆盖的模块名称。 | no | |
最大重复次数 | int | 使用GET/GETBULK请求请求对象的数量。 | 25 | no |
retry | int | 重试失败的请求次数。 | 3 | no |
timeout | 持续时间 | 单个SNMP请求的超时时间。 | no |
导出字段
以下字段可以导出,并可由其他组件引用。
名称 | 类型 | 描述 |
---|---|---|
targets | list(map(string)) | 可以使用以收集导出指标的目标。 |
例如,targets
可以被传递给discovery.relabel
组件以重写目标标签集,或传递给收集暴露指标的prometheus.scrape
组件。
组件健康情况
如果给定无效配置,“prometheus.exporter.snmp”仅报告为不健康。在这些情况下,导出字段会保留其最后的健康值。
调试信息
《prometheus.exporter.snmp》不暴露任何组件特定的调试信息。
调试指标
《prometheus.exporter.snmp》不暴露任何组件特定的调试指标。
示例
本例使用prometheus.scrape
组件从prometheus.exporter.snmp
收集指标。
prometheus.exporter.snmp "example" {
config_file = "snmp_modules.yml"
target "network_switch_1" {
address = "192.168.1.2"
module = "if_mib"
walk_params = "public"
}
target "network_router_2" {
address = "192.168.1.3"
module = "mikrotik"
walk_params = "private"
}
walk_param "private" {
retries = "2"
}
walk_param "public" {
retries = "2"
}
}
// Configure a prometheus.scrape component to collect SNMP metrics.
prometheus.scrape "demo" {
targets = prometheus.exporter.snmp.example.targets
forward_to = [ /* ... */ ]
}
本例使用嵌入式配置(包括密钥)
local.file "snmp_config" {
filename = "snmp_modules.yml"
is_secret = true
}
prometheus.exporter.snmp "example" {
config = local.file.snmp_config.content
target "network_switch_1" {
address = "192.168.1.2"
module = "if_mib"
walk_params = "public"
}
target "network_router_2" {
address = "192.168.1.3"
module = "mikrotik"
walk_params = "private"
}
walk_param "private" {
retries = "2"
}
walk_param "public" {
retries = "2"
}
}
// Configure a prometheus.scrape component to collect SNMP metrics.
prometheus.scrape "demo" {
targets = prometheus.exporter.snmp.example.targets
forward_to = [prometheus.remote_write.demo.receiver]
}
prometheus.remote_write "demo" {
endpoint {
url = <PROMETHEUS_REMOTE_WRITE_URL>
basic_auth {
username = <USERNAME>
password = <PASSWORD>
}
}
}
替换以下内容
<PROMETHEUS_REMOTE_WRITE_URL>
:发送指标到Prometheus远程写兼容服务器的URL。<USERNAME>
:用于远程写API认证的用户名。<PASSWORD>
:用于远程写API认证的密码。
本例使用传递目标的替代方法
prometheus.exporter.snmp "example" {
config_file = "snmp_modules.yml"
targets = [
{
"name" = "network_switch_1",
"address" = "192.168.1.2",
"module" = "if_mib",
"walk_params" = "public",
},
{
"name" = "network_router_2",
"address" = "192.168.1.3",
"module" = "mikrotik",
"walk_params" = "private",
},
]
walk_param "private" {
retries = "2"
}
walk_param "public" {
retries = "2"
}
}
// Configure a prometheus.scrape component to collect SNMP metrics.
prometheus.scrape "demo" {
targets = prometheus.exporter.snmp.example.targets
forward_to = [ /* ... */ ]
}
本例使用local.file
组件从YAML文件中读取目标并将它们发送到prometheus.exporter.snmp
组件。
local.file "targets" {
filename = "targets.yml"
}
prometheus.exporter.snmp "example" {
config_file = "snmp_modules.yml"
targets = yaml_decode(local.file.targets.content)
walk_param "private" {
retries = "2"
}
walk_param "public" {
retries = "2"
}
}
// Configure a prometheus.scrape component to collect SNMP metrics.
prometheus.scrape "demo" {
targets = prometheus.exporter.snmp.example.targets
forward_to = [ /* ... */ ]
}
本例中的YAML文件如下所示
- name: t1
address: localhost:161
module: default
auth: public_v2
- name: t2
address: localhost:161
module: default
auth: public_v2
本例使用discovery.file
组件将目标发送到prometheus.exporter.snmp
组件。
discovery.file "example" {
files = ["targets.yml"]
}
prometheus.exporter.snmp "example" {
config_file = "snmp_modules.yml"
targets = discovery.file.example.targets
}
// Configure a prometheus.scrape component to collect SNMP metrics.
prometheus.scrape "demo" {
targets = prometheus.exporter.snmp.example.targets
forward_to = [ /* ... */ ]
}
本例中的YAML文件如下所示
- targets:
- localhost:161
labels:
name: t1
module: default
auth: public_v2
- targets:
- localhost:161
labels:
name: t2
module: default
auth: public_v2
兼容组件
prometheus.exporter.snmp
导出的结果可以被以下组件消耗
- 消耗目标的组件
注意
连接某些组件可能不合理或组件可能需要进一步配置才能正确连接。请参阅链接的文档以获取更多详细信息。