diff options
Diffstat (limited to 'roles/loki')
-rw-r--r-- | roles/loki/defaults/main.yml | 3 | ||||
-rw-r--r-- | roles/loki/tasks/main.yml | 35 | ||||
-rw-r--r-- | roles/loki/templates/loki.yml.j2 | 64 | ||||
-rw-r--r-- | roles/loki/templates/promtail.yml.j2 | 23 |
4 files changed, 125 insertions, 0 deletions
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 |