add snmp exporter from fabbs
This commit is contained in:
parent
3391c2b8a2
commit
51346d08b7
5 changed files with 122 additions and 0 deletions
|
|
@ -42,6 +42,20 @@ prometheus_agent:
|
||||||
jobs: {}
|
jobs: {}
|
||||||
promtail:
|
promtail:
|
||||||
enable: False
|
enable: False
|
||||||
|
snmp:
|
||||||
|
enable: False
|
||||||
|
mib_path: /usr/share/snmp/mibs
|
||||||
|
args:
|
||||||
|
"web.listen-address": "[::1]:9116"
|
||||||
|
"config.file": "/etc/prometheus/snmp.yml"
|
||||||
|
# A list of objects containing a single key, either `url` or `file`, e.g.:
|
||||||
|
# - url: https://example.com/path/to/mib
|
||||||
|
# - file: /path/to/mib
|
||||||
|
mibs: []
|
||||||
|
# Generator configuration, see https://github.com/prometheus/snmp_exporter/blob/main/generator/generator.yml
|
||||||
|
config:
|
||||||
|
modules: {}
|
||||||
|
jobs: {}
|
||||||
scrape_timeout: ~
|
scrape_timeout: ~
|
||||||
scrape_interval: ~
|
scrape_interval: ~
|
||||||
metrics_path: ~
|
metrics_path: ~
|
||||||
|
|
|
||||||
|
|
@ -17,3 +17,8 @@
|
||||||
service:
|
service:
|
||||||
name: grafana-promtail
|
name: grafana-promtail
|
||||||
state: restarted
|
state: restarted
|
||||||
|
|
||||||
|
- name: restart snmp exporter
|
||||||
|
service:
|
||||||
|
name: prometheus-snmp-exporter
|
||||||
|
state: restarted
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,61 @@
|
||||||
dest: /etc/prometheus/blackbox.yml
|
dest: /etc/prometheus/blackbox.yml
|
||||||
content: "{{ prometheus_agent.agents.blackbox.config|to_nice_yaml(indent=2) }}"
|
content: "{{ prometheus_agent.agents.blackbox.config|to_nice_yaml(indent=2) }}"
|
||||||
|
|
||||||
|
- name: handle snmp exporter
|
||||||
|
when: prometheus_agent.agents.snmp.enable
|
||||||
|
block:
|
||||||
|
- name: install prometheus-snmp-exporter
|
||||||
|
apt:
|
||||||
|
name: prometheus-snmp-exporter
|
||||||
|
- name: install snmp downloader
|
||||||
|
apt:
|
||||||
|
name: snmp-mibs-downloader
|
||||||
|
register: mibs_downloader_installed
|
||||||
|
- name: create folder for MIBs
|
||||||
|
file:
|
||||||
|
dest: '{{prometheus_agent.agents.snmp.mib_path }}'
|
||||||
|
state: directory
|
||||||
|
- name: download MIBs
|
||||||
|
loop: '{{ prometheus_agent.agents.snmp.mibs }}'
|
||||||
|
when: "'url' in item"
|
||||||
|
get_url:
|
||||||
|
dest: '{{prometheus_agent.agents.snmp.mib_path }}'
|
||||||
|
url: '{{ item.url }}'
|
||||||
|
#async: 600
|
||||||
|
#poll: 0.1
|
||||||
|
register: mibs_downloaded
|
||||||
|
- name: copy MIBs
|
||||||
|
loop: '{{ prometheus_agent.agents.snmp.mibs }}'
|
||||||
|
when: "'file' in item"
|
||||||
|
copy:
|
||||||
|
dest: '{{prometheus_agent.agents.snmp.mib_path }}'
|
||||||
|
src: '{{ item.file }}'
|
||||||
|
#async: 600
|
||||||
|
#poll: 0.1
|
||||||
|
register: mibs_copied
|
||||||
|
- name: create snmp directory
|
||||||
|
file:
|
||||||
|
dest: /etc/prometheus/snmp
|
||||||
|
state: directory
|
||||||
|
mode: 0755
|
||||||
|
- name: generate generator configuration
|
||||||
|
copy:
|
||||||
|
dest: /etc/prometheus/snmp/generator.yml
|
||||||
|
content: '{{ prometheus_agent.agents.snmp.config|to_nice_yaml }}'
|
||||||
|
mode: 0644
|
||||||
|
register: snmp_exporter_generator
|
||||||
|
- name: generate SNMP exporter configuration
|
||||||
|
when: snmp_exporter_generator.changed or mibs_downloader_installed.changed or mibs_downloaded.changed or mibs_copied.changed
|
||||||
|
shell: prometheus-snmp-generator generate -o /etc/prometheus/snmp.yml
|
||||||
|
args:
|
||||||
|
chdir: /etc/prometheus/snmp
|
||||||
|
notify: restart snmp exporter
|
||||||
|
- name: enable and start snmp exporter
|
||||||
|
service:
|
||||||
|
name: prometheus-snmp-exporter
|
||||||
|
state: started
|
||||||
|
enabled: yes
|
||||||
|
|
||||||
- name: manage tls
|
- name: manage tls
|
||||||
when: prometheus_agent.tls.manage
|
when: prometheus_agent.tls.manage
|
||||||
block:
|
block:
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,41 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{% if prometheus_agent.scrapers[item].snmp|d(False) and prometheus_agent.agents.snmp.enable %}
|
||||||
|
{% for j in prometheus_agent.agents.snmp.jobs %}
|
||||||
|
{% set job=prometheus_agent.agents.snmp.jobs[j] %}
|
||||||
|
- job_name: "prometheus-agent - snmp - {{ j }} : {{ inventory_hostname }}"
|
||||||
|
scheme: https
|
||||||
|
metrics_path: /snmp
|
||||||
|
static_configs:
|
||||||
|
- targets:
|
||||||
|
{% for target in job.targets %}
|
||||||
|
- {{ target }}
|
||||||
|
{% endfor %}
|
||||||
|
labels: {{ merged_prometheus_labels|combine(job.labels|d({}))|to_json }}
|
||||||
|
{% for i in ['scrape_timeout', 'scrape_interval'] if (prometheus_agent|combine(prometheus_agent.agents.snmp)|combine(job))[i] %}
|
||||||
|
{{ i }}: {{ (prometheus_agent|combine(job))[i] }}
|
||||||
|
{% endfor %}
|
||||||
|
tls_config:
|
||||||
|
ca_file: /etc/prometheus/targetcerts/{{ inventory_hostname }}.crt
|
||||||
|
cert_file: /etc/ssl/prometheus_scraper.crt
|
||||||
|
key_file: /etc/ssl/private/prometheus_scraper.key
|
||||||
|
params:
|
||||||
|
module: [{{ job.module }}]
|
||||||
|
relabel_configs:
|
||||||
|
- source_labels: [__address__]
|
||||||
|
target_label: __param_target
|
||||||
|
- source_labels: [__param_target]
|
||||||
|
target_label: instance
|
||||||
|
- replacement: 'snmp'
|
||||||
|
target_label: job
|
||||||
|
- replacement: '{{ job.module }}'
|
||||||
|
target_label: module
|
||||||
|
- target_label: __address__
|
||||||
|
replacement: {{ inventory_hostname }}:{{ prometheus_agent.scrapers[item].snmp }}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{% for j in prometheus_agent.scrapers[item].proxy|d({}) %}
|
{% for j in prometheus_agent.scrapers[item].proxy|d({}) %}
|
||||||
- job_name: "prometheus-agent - proxy - {{ j }} : {{ inventory_hostname }}"
|
- job_name: "prometheus-agent - proxy - {{ j }} : {{ inventory_hostname }}"
|
||||||
scheme: https
|
scheme: https
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,19 @@ verifyPeer = yes
|
||||||
CAfile = /etc/ssl/scraper_{{ i }}.crt
|
CAfile = /etc/ssl/scraper_{{ i }}.crt
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
||||||
|
{% for i in prometheus_agent.scrapers if "snmp" in prometheus_agent.scrapers[i] and prometheus_agent.agents.snmp.enable %}
|
||||||
|
; snmp
|
||||||
|
[scraper {{ i }} snmp]
|
||||||
|
client = no
|
||||||
|
requireCert = yes
|
||||||
|
accept = :::{{ prometheus_agent.scrapers[i].snmp }}
|
||||||
|
connect = {{ prometheus_agent.agents.snmp.args['web.listen-address']|replace('[', '')|replace(']', '') }}
|
||||||
|
cert = /etc/ssl/prometheus_agent.crt
|
||||||
|
key = /etc/ssl/private/prometheus_agent.key
|
||||||
|
verifyPeer = yes
|
||||||
|
CAfile = /etc/ssl/scraper_{{ i }}.crt
|
||||||
|
{% endfor %}
|
||||||
|
|
||||||
; proxy
|
; proxy
|
||||||
{% for i in prometheus_agent.scrapers if "proxy" in prometheus_agent.scrapers[i] %}
|
{% for i in prometheus_agent.scrapers if "proxy" in prometheus_agent.scrapers[i] %}
|
||||||
{% for j in prometheus_agent.scrapers[i].proxy|d({}) %}
|
{% for j in prometheus_agent.scrapers[i].proxy|d({}) %}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue