diff --git a/defaults/main.yml b/defaults/main.yml index cb94126..9e356d1 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -240,6 +240,8 @@ prometheus_agent: preferred_ip_protocol: ip4 prober: icmp jobs: {} + promtail: + enable: False scrape_timeout: ~ scrape_interval: ~ metrics_path: ~ diff --git a/handlers/main.yml b/handlers/main.yml index e56fb82..9ee04b2 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -12,3 +12,8 @@ service: name: prometheus-blackbox-exporter state: restarted + +- name: restart grafana-promtail + service: + name: grafana-promtail + state: restarted diff --git a/tasks/main.yml b/tasks/main.yml index b77bc96..a13346c 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -56,7 +56,7 @@ name: certificates vars: certificates: - certs: "{{ {}|combine(prometheus_certs, inventory_certs, recursive=True) }}" + certs: "{{ { 'prometheus_agent': ({}|combine(prometheus_certs, inventory_certs, recursive=True))['prometheus_agent'] } }}" - name: slurp up all scraper certs loop: "{{ prometheus_agent.scrapers.keys()|list }}" @@ -123,6 +123,21 @@ dest: /etc/prometheus/conf.d/rule_files/agent_{{ inventory_hostname }}.conf mode: 0644 +- name: handle grafana-promtail + when: prometheus_agent.agents.promtail.enable + block: + - name: install promtail + apt: + pkg: grafana-promtail + - name: wrtie promtail config + notify: restart grafana-promtail + template: + owner: grafana-promtail + group: grafana-promtail + mode: 0640 + dest: /etc/grafana-promtail.yml + src: grafana-promtail.yml.j2 + - name: create node-exporter-textfile group ansible.builtin.group: name: node-exporter-textfile diff --git a/templates/grafana-promtail.yml.j2 b/templates/grafana-promtail.yml.j2 new file mode 100644 index 0000000..674c89a --- /dev/null +++ b/templates/grafana-promtail.yml.j2 @@ -0,0 +1,37 @@ +server: + disable: true + http_listen_port: 9080 + grpc_listen_port: 0 + +positions: + filename: /var/lib/grafana-promtail/positions.yaml + +clients: +{% for i in prometheus_agent.scrapers if prometheus_agent.scrapers[i].get("loki") %} +{% set lokiconfig = {}|combine({ "external_labels": merged_prometheus_labels|combine( {"instance": inventory_hostname} ) }, prometheus_agent.scrapers[i]['loki'] ) %} + - {{ lokiconfig|to_json }} +{% endfor %} + +scrape_configs: +- job_name: system + static_configs: + - targets: + - localhost + labels: + job: varlogs + __path__: /var/log/*log +- job_name: journal + journal: + max_age: 12h + labels: + job: systemd-journal + relabel_configs: + - source_labels: ['__journal__systemd_unit'] + target_label: 'unit' +- job_name: nginx + static_configs: + - targets: + - localhost + labels: + job: nginx + __path__: /var/log/nginx/access-promtail.log