From 2c643ea5fbd02b50411bcba1f5df14a8c327fdb1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Romain=20Gon=C3=A7alves?= Date: Mon, 13 Dec 2021 17:11:14 +0000 Subject: roles: Add loki and promtail configurations --- playbooks/site.yml | 2 + roles/grafana/templates/datasources-default.yml.j2 | 3 + roles/loki/defaults/main.yml | 3 + roles/loki/tasks/main.yml | 35 ++++++++++++ roles/loki/templates/loki.yml.j2 | 64 ++++++++++++++++++++++ roles/loki/templates/promtail.yml.j2 | 23 ++++++++ 6 files changed, 130 insertions(+) create mode 100644 roles/loki/defaults/main.yml create mode 100644 roles/loki/tasks/main.yml create mode 100644 roles/loki/templates/loki.yml.j2 create mode 100644 roles/loki/templates/promtail.yml.j2 diff --git a/playbooks/site.yml b/playbooks/site.yml index e34720f..147db6b 100644 --- a/playbooks/site.yml +++ b/playbooks/site.yml @@ -9,6 +9,8 @@ tags: role_sshd - role: prometheus tags: role_prometheus + - role: loki + tags: role_loki - hosts: dc0 roles: diff --git a/roles/grafana/templates/datasources-default.yml.j2 b/roles/grafana/templates/datasources-default.yml.j2 index 1414ff2..a6066da 100644 --- a/roles/grafana/templates/datasources-default.yml.j2 +++ b/roles/grafana/templates/datasources-default.yml.j2 @@ -8,5 +8,8 @@ datasources: - name: {{ h.inventory_hostname }}-prometheus type: prometheus url: http://{{ h.__ip.internal }}:9090 + - name: {{ h.inventory_hostname }}-loki + type: loki + url: http://{{ h.__ip.internal }}:3100 {% endcall %} diff --git a/roles/loki/defaults/main.yml b/roles/loki/defaults/main.yml new file mode 100644 index 0000000..6808f54 --- /dev/null +++ b/roles/loki/defaults/main.yml @@ -0,0 +1,3 @@ +loki_configuration_file: /etc/loki/loki-config.yaml +loki_promtail_configuration_file: /etc/promtail/promtail-config.yaml +loki_user: _loki diff --git a/roles/loki/tasks/main.yml b/roles/loki/tasks/main.yml new file mode 100644 index 0000000..4584da1 --- /dev/null +++ b/roles/loki/tasks/main.yml @@ -0,0 +1,35 @@ +- name: install loki + package: + name: loki + state: present + +- name: generate loki configuration + template: &config_gen + src: loki.yml.j2 + dest: "{{ loki_configuration_file }}" + owner: 0 + group: 0 + mode: 0644 + +- name: generate promtail configuration + template: + <<: *config_gen + src: promtail.yml.j2 + dest: "{{ loki_promtail_configuration_file }}" + +- name: add loki user to wheel group + user: + name: "{{ loki_user }}" + groups: + - 0 + - daemon + append: true + +- name: enable and restart loki daemons + service: + name: "{{ item }}" + state: restarted + enabled: true + loop: + - loki + - promtail diff --git a/roles/loki/templates/loki.yml.j2 b/roles/loki/templates/loki.yml.j2 new file mode 100644 index 0000000..5c64993 --- /dev/null +++ b/roles/loki/templates/loki.yml.j2 @@ -0,0 +1,64 @@ +auth_enabled: false + +server: + http_listen_port: 3100 + +ingester: + lifecycler: + address: 127.0.0.1 + ring: + kvstore: + store: inmemory + replication_factor: 1 + final_sleep: 0s + chunk_idle_period: 1h # Any chunk not receiving new logs in this time will be flushed + max_chunk_age: 1h # All chunks will be flushed when they hit this age, default is 1h + chunk_target_size: 1048576 # Loki will attempt to build chunks up to 1.5MB, flushing first if chunk_idle_period or max_chunk_age is reached first + chunk_retain_period: 30s # Must be greater than index read cache TTL if using an index cache (Default index read cache TTL is 5m) + max_transfer_retries: 0 # Chunk transfers disabled + +schema_config: + configs: + - from: 2020-10-24 + store: boltdb-shipper + object_store: filesystem + schema: v11 + index: + prefix: index_ + period: 24h + +storage_config: + boltdb_shipper: + active_index_directory: /var/loki/boltdb-shipper-active + cache_location: /var/loki/boltdb-shipper-cache + cache_ttl: 24h # Can be increased for faster performance over longer query periods, uses more disk space + shared_store: filesystem + filesystem: + directory: /var/loki/chunks + +compactor: + working_directory: /var/loki/boltdb-shipper-compactor + shared_store: filesystem + +limits_config: + reject_old_samples: true + reject_old_samples_max_age: 168h + +chunk_store_config: + max_look_back_period: 0s + +table_manager: + retention_deletes_enabled: false + retention_period: 0s + +ruler: + storage: + type: local + local: + directory: /tmp/loki/rules + rule_path: /tmp/loki/rules-temp + alertmanager_url: http://localhost:9093 + ring: + kvstore: + store: inmemory + enable_api: true diff --git a/roles/loki/templates/promtail.yml.j2 b/roles/loki/templates/promtail.yml.j2 new file mode 100644 index 0000000..16c580e --- /dev/null +++ b/roles/loki/templates/promtail.yml.j2 @@ -0,0 +1,23 @@ +server: + http_listen_port: 9080 + grpc_listen_port: 0 + +positions: + filename: /var/promtail/positions.yaml + +clients: + - url: http://localhost:3100/loki/api/v1/push + +scrape_configs: + - job_name: system + static_configs: + - targets: + - localhost + labels: + job: var_logs + __path__: /var/log/*log + - targets: + - localhost + labels: + job: www_logs + __path__: /var/www/logs/*log -- cgit v1.2.3