菜单
开源

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_filestring定义自定义模块的 SNMP 配置文件。no
configstringsecret用作内联字符串的 SNMP 配置。no
targetslist(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:为此目标使用的配置。

层次结构名称描述必需
targettarget配置一个 SNMP 目标。no
walk_paramwalk_param用于覆盖默认 SNMP 设置的 SNMP 连接配置文件。no

target block

名称类型描述默认值必需
addressstringSNMP 设备的地址。yes
modulestring用于轮询的 SNMP 模块。""no
authstring要使用的 SNMP 身份验证配置文件。""no
walk_paramsstring为此目标使用的配置。""no
snmp_contextstring覆盖 SNMP 配置文件中的 context_name 参数。""no

walk_param block

《walk_param》模块定义了一个个体SNMP连接配置文件,可以用来覆盖默认的SNMP设置。可以多次指定《walk_param》模块来定义多个SNMP连接配置文件。

名称类型描述默认值必需
名称string需要覆盖的模块名称。no
最大重复次数int使用GET/GETBULK请求请求对象的数量。25no
retryint重试失败的请求次数。3no
timeout持续时间单个SNMP请求的超时时间。no

导出字段

以下字段可以导出,并可由其他组件引用。

名称类型描述
targetslist(map(string))可以使用以收集导出指标的目标。

例如,targets可以被传递给discovery.relabel组件以重写目标标签集,或传递给收集暴露指标的prometheus.scrape组件。

导出的目标使用配置的内存流量地址,该地址由run命令指定。

组件健康情况

如果给定无效配置,“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文件如下所示

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文件如下所示

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导出的结果可以被以下组件消耗

注意

连接某些组件可能不合理或组件可能需要进一步配置才能正确连接。请参阅链接的文档以获取更多详细信息。