From 537015263f62184c6936d2f6d523690e20b81058 Mon Sep 17 00:00:00 2001 From: Administrator Date: Fri, 21 Nov 2025 10:33:47 +0000 Subject: [PATCH] Update 5 files - /roles/promtail/tasks/main.yml - /roles/promtail/templates/promtail-config.yml.j2 - /roles/promtail/templates/promtail-service.yml.j2 - /roles/promtail/handlers/main.yml - /group_vars/all.yml --- group_vars/all.yml | 4 +- roles/promtail/handlers/main.yml | 7 ++ roles/promtail/tasks/main.yml | 66 ++++++++++++++++++ .../promtail/templates/promtail-config.yml.j2 | 69 +++++++++++++++++++ .../templates/promtail-service.yml.j2 | 19 +++++ 5 files changed, 163 insertions(+), 2 deletions(-) create mode 100644 roles/promtail/handlers/main.yml create mode 100644 roles/promtail/tasks/main.yml create mode 100644 roles/promtail/templates/promtail-config.yml.j2 create mode 100644 roles/promtail/templates/promtail-service.yml.j2 diff --git a/group_vars/all.yml b/group_vars/all.yml index f809d70..8556673 100644 --- a/group_vars/all.yml +++ b/group_vars/all.yml @@ -259,6 +259,6 @@ loki_base_dir: "/mnt/loki" loki_config_dir: "{{ loki_base_dir }}/config" loki_data_dir: "{{ loki_base_dir }}/data" promtail_config_dir: "{{ loki_base_dir }}/promtail" -loki_port: 45135 +loki_port: 3100 loki_version: "2.9.2" -loki_retention_days: 30 \ No newline at end of file +loki_retention_days: 30 diff --git a/roles/promtail/handlers/main.yml b/roles/promtail/handlers/main.yml new file mode 100644 index 0000000..4cec41b --- /dev/null +++ b/roles/promtail/handlers/main.yml @@ -0,0 +1,7 @@ +--- +- name: restart promtail + systemd: + name: promtail + state: restarted + daemon_reload: yes + become: yes \ No newline at end of file diff --git a/roles/promtail/tasks/main.yml b/roles/promtail/tasks/main.yml new file mode 100644 index 0000000..34f93c2 --- /dev/null +++ b/roles/promtail/tasks/main.yml @@ -0,0 +1,66 @@ +--- +- name: Create Promtail directories + file: + path: "{{ item }}" + state: directory + mode: '0755' + loop: + - "{{ promtail_config_dir }}" + - "{{ promtail_data_dir }}" + become: yes + +- name: Download Promtail binary + get_url: + url: "https://github.com/grafana/loki/releases/download/v{{ loki_version }}/promtail-linux-amd64.zip" + dest: /tmp/promtail-linux-amd64.zip + mode: '0644' + timeout: 60 + become: yes + +- name: Unzip Promtail binary + unarchive: + src: /tmp/promtail-linux-amd64.zip + dest: /usr/local/bin/ + remote_src: yes + owner: root + group: root + mode: '0755' + become: yes + +- name: Create Promtail system user + user: + name: promtail + system: yes + shell: /usr/sbin/nologin + create_home: no + become: yes + +- name: Deploy Promtail configuration + template: + src: promtail-config.yml.j2 + dest: "{{ promtail_config_dir }}/promtail-config.yml" + mode: '0644' + notify: restart promtail + become: yes + +- name: Deploy Promtail systemd service + template: + src: promtail-service.yml.j2 + dest: /etc/systemd/system/promtail.service + mode: '0644' + notify: restart promtail + become: yes + +- name: Start and enable Promtail service + systemd: + name: promtail + state: started + enabled: yes + daemon_reload: yes + become: yes + +- name: Clean up temporary files + file: + path: /tmp/promtail-linux-amd64.zip + state: absent + become: yes \ No newline at end of file diff --git a/roles/promtail/templates/promtail-config.yml.j2 b/roles/promtail/templates/promtail-config.yml.j2 new file mode 100644 index 0000000..cc335cc --- /dev/null +++ b/roles/promtail/templates/promtail-config.yml.j2 @@ -0,0 +1,69 @@ +server: + http_listen_port: 9080 + grpc_listen_port: 0 + +positions: + filename: /var/lib/promtail/positions.yaml + +clients: + - url: http://{{ loki_server_host }}:{{ loki_server_port }}/loki/api/v1/push + +scrape_configs: + - job_name: system + static_configs: + - targets: + - localhost + labels: + job: system-logs + host: "{{ inventory_hostname }}" + __path__: /var/log/*log + + - job_name: auth + static_configs: + - targets: + - localhost + labels: + job: auth + host: "{{ inventory_hostname }}" + __path__: /var/log/auth.log + + - job_name: syslog + static_configs: + - targets: + - localhost + labels: + job: syslog + host: "{{ inventory_hostname }}" + __path__: /var/log/syslog + + - job_name: kernel + static_configs: + - targets: + - localhost + labels: + job: kernel + host: "{{ inventory_hostname }}" + __path__: /var/log/kern.log + + - job_name: docker + static_configs: + - targets: + - localhost + labels: + job: container-logs + host: "{{ inventory_hostname }}" + __path__: /var/lib/docker/containers/*/*log + relabel_configs: + - source_labels: ['__path__'] + target_label: container_name + regex: '/var/lib/docker/containers/([^/]*)/.*log' + replacement: '$1' + + - job_name: applications + static_configs: + - targets: + - localhost + labels: + job: applications + host: "{{ inventory_hostname }}" + __path__: /var/log/*.log \ No newline at end of file diff --git a/roles/promtail/templates/promtail-service.yml.j2 b/roles/promtail/templates/promtail-service.yml.j2 new file mode 100644 index 0000000..e77c9d7 --- /dev/null +++ b/roles/promtail/templates/promtail-service.yml.j2 @@ -0,0 +1,19 @@ +[Unit] +Description=Promtail log collector +Documentation=https://grafana.com/docs/loki/latest/clients/promtail/ +Wants=network-online.target +After=network-online.target + +[Service] +Type=simple +User=promtail +Group=promtail +ExecStart=/usr/local/bin/promtail-linux-amd64 \ + -config.file={{ promtail_config_dir }}/promtail-config.yml +ExecReload=/bin/kill -HUP $MAINPID +KillMode=process +Restart=on-failure +RestartSec=5s + +[Install] +WantedBy=multi-user.target \ No newline at end of file