collector: support custom poll intervals

Also simplify config context schema for SNMP since we only use a single
instance.
This commit is contained in:
Timotej Lazar 2025-11-04 14:56:40 +01:00
parent be7eca3a89
commit f3eec5fcbf
4 changed files with 21 additions and 16 deletions

View file

@ -1,10 +1,14 @@
{% set devices = query("netbox.netbox.nb_lookup", "devices", api_filter="{{ item.nb_filter }}", raw_data=true)
{% set devices = query("netbox.netbox.nb_lookup", "devices", api_filter="{{ item.hosts }}", raw_data=true)
| selectattr("primary_ip")
| map(attribute="name")
| map("extract", hostvars) -%}
scrape_configs:
- job_name: "{{ item.name }}"
{% if item.interval is defined %}
scrape_interval: {{ item.interval }}s
scrape_timeout: {{ item.interval // 5 }}s
{% endif %}
relabel_configs:
- source_labels: [__address__]
regex: '([^.]+).*'

View file

@ -1,13 +1,13 @@
[[inputs.snmp]]
interval = "300s"
{% if snmp_interval is defined %}
interval = "{{ snmp_interval }}s"
{% endif %}
agent_host_tag = "source"
agents = [
{% for item in snmp_hosts %}
{% for address in query("netbox.netbox.nb_lookup", "devices", api_filter=item.nb_filter, raw_data=true)
{% for address in query("netbox.netbox.nb_lookup", "devices", api_filter=snmp_hosts, raw_data=true)
| selectattr("primary_ip4") | map(attribute="primary_ip4.address")
| ipaddr("address") %}
| ipaddr("int") | sort | ipaddr("address") %}
"{{ address }}",
{% endfor %}
{% endfor %}
]
version = 3