From c9e9b3c6f9f7cb9ad2908e831a32f238db47119e Mon Sep 17 00:00:00 2001 From: Kristian Klausen <kristian@klausen.dk> Date: Sun, 18 Aug 2024 16:50:55 +0200 Subject: [PATCH] loki/prometheus: Add plumbing for using loki recording rules[1] The plan is to use this for creating metrics from the nginx log lines (e.g. requests per second). [1] https://grafana.com/docs/loki/latest/alert/#recording-rules --- roles/loki/files/loki.yaml | 12 +++++++++++- roles/loki/files/rules.yaml | 1 + roles/loki/tasks/main.yml | 10 ++++++++++ roles/prometheus/templates/prometheus.conf.j2 | 2 +- 4 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 roles/loki/files/rules.yaml diff --git a/roles/loki/files/loki.yaml b/roles/loki/files/loki.yaml index a4349046a..d9e604a8c 100644 --- a/roles/loki/files/loki.yaml +++ b/roles/loki/files/loki.yaml @@ -12,7 +12,7 @@ common: storage: filesystem: chunks_directory: /var/lib/loki/chunks - rules_directory: /var/lib/loki/rules + rules_directory: /etc/loki/rules replication_factor: 1 instance_addr: 127.0.0.1 ring: @@ -25,6 +25,16 @@ ingester: replay_memory_ceiling: 200MB chunk_encoding: zstd +ruler: + rule_path: /var/lib/loki/rules-tmp + wal: + dir: /var/lib/loki/ruler-wal + remote_write: + enabled: true + clients: + local: + url: http://127.0.0.1:9090/api/v1/write + schema_config: configs: - from: 2022-06-07 diff --git a/roles/loki/files/rules.yaml b/roles/loki/files/rules.yaml new file mode 100644 index 000000000..2ae22208b --- /dev/null +++ b/roles/loki/files/rules.yaml @@ -0,0 +1 @@ +groups: [] diff --git a/roles/loki/tasks/main.yml b/roles/loki/tasks/main.yml index 0eaa79c39..7bbbfca93 100644 --- a/roles/loki/tasks/main.yml +++ b/roles/loki/tasks/main.yml @@ -5,6 +5,16 @@ copy: src=loki.yaml dest=/etc/loki/ owner=root group=root mode=0644 notify: Restart loki +- name: Create directories for loki recording rules + file: path={{ item }} state=directory owner=root group=root mode=0755 + loop: + - /etc/loki/rules + - /etc/loki/rules/fake + +- name: Install loki recording rules + copy: src=rules.yaml dest=/etc/loki/rules/fake/ owner=root group=root mode=0644 + notify: Restart loki + - name: Make nginx log dir file: path=/var/log/nginx/loki state=directory owner=root group=root mode=0755 diff --git a/roles/prometheus/templates/prometheus.conf.j2 b/roles/prometheus/templates/prometheus.conf.j2 index 22b419160..0bc042bb2 100644 --- a/roles/prometheus/templates/prometheus.conf.j2 +++ b/roles/prometheus/templates/prometheus.conf.j2 @@ -1,5 +1,5 @@ {% if prometheus_receive_only %} PROMETHEUS_ARGS="--storage.tsdb.retention.time=365d --web.enable-remote-write-receiver --web.config.file=/etc/prometheus/web-config.yml --web.listen-address={{ wireguard_address }}:9090" {% else %} -PROMETHEUS_ARGS="--storage.tsdb.retention.time=365d" +PROMETHEUS_ARGS="--storage.tsdb.retention.time=365d --web.enable-remote-write-receiver" {% endif %} -- GitLab