Telegraf内置支持snmp的采集,本节给一个入门例子,让大家快速上手,更多具体知识可以参考这里。在telegraf.conf中搜索inputs.snmp,即可找到对应的配置,例子如下:

    1. [[inputs.snmp]]
    2. agents = ["udp://172.25.79.194:161"]
    3. timeout = "5s"
    4. version = 3
    5. agent_host_tag = "ident"
    6. retries = 1
    7. sec_name = "managev3user"
    8. auth_protocol = "SHA"
    9. auth_password = "example.Demo.c0m"
    10. [[inputs.snmp.field]]
    11. oid = "RFC1213-MIB::sysUpTime.0"
    12. name = "uptime"
    13. [[inputs.snmp.field]]
    14. oid = "RFC1213-MIB::sysName.0"
    15. name = "source"
    16. is_tag = true
    17. [[inputs.snmp.table]]
    18. oid = "IF-MIB::ifTable"
    19. name = "interface"
    20. inherit_tags = ["source"]
    21. [[inputs.snmp.table.field]]
    22. oid = "IF-MIB::ifDescr"
    23. name = "ifDescr"
    24. is_tag = true

    上面非常关键的部分是:agent_host_tag = "ident",因为夜莺对ident这个标签会特殊对待处理,把携有这个标签的数据当做隶属某个监控对象的数据,机器和网络设备都是典型的期望作为监控对象来管理的,所以snmp的采集中,我们把网络设备的ip放到ident这个标签里带上去。

    另外这个采集规则是v3的校验方法,不同的公司可能配置的校验方式不同,请各位参照telegraf.conf中那些snmp相关的注释仔细核对,如果是v2会简单很多,把上例中的如下部分:

    1. version = 3
    2. sec_name = "managev3user"
    3. auth_protocol = "SHA"
    4. auth_password = "example.Demo.c0m"

    换成:

    1. version = 2
    2. community = "public"

    即可,当然了,community要改成你们自己的,这里写的public只是举个例子。

    inputs.snmp.field相关的那些配置,可以采集到各个网口的监控指标,更多的使用方式请参考官网


    另外,snmp的采集,建议大家使用专门的Telegraf来做,因为和机器、中间件等的采集频率可能不同,比如边缘交换机,我们5min采集一次就够了,如果按照默认的配置可是10s采集一次,实在是太频繁了,可能会给一些老式交换机造成比较大的压力,采集频率在telegraf.conf的最上面[agent]部分,边缘交换机建议配置为:

    1. [agent]
    2. interval = "300s"
    3. flush_interval = "300s"

    核心交换机可以配置的频繁一些,比如60s或者120s,请各位网络工程师朋友自行斟酌。