added loki client role

This commit is contained in:
2025-11-08 14:25:06 +00:00
parent d4ce6e21f0
commit 26477cd2b2
8 changed files with 164 additions and 1 deletions

View File

@@ -0,0 +1,11 @@
---
docker_loki_client_setup:
config_folderpath: /etc/myLimbo/docker_loki_client
docker_loki_client_config:
hostname: ""
journald:
enabled: true
docker:
enabled: true
loki:
address: ""

View File

@@ -0,0 +1 @@
---

View File

@@ -0,0 +1,9 @@
galaxy_info:
author: your name
description: your role description
company: your company (optional)
license: license (GPL-2.0-or-later, MIT, etc)
min_ansible_version: 2.1
galaxy_tags: []
dependencies: []

View File

@@ -0,0 +1,64 @@
---
- name: Ensure config folder exists
become: true
ansible.builtin.file:
path: "{{ docker_loki_client_setup.config_folderpath }}"
state: directory
mode: '0755'
- name: Deploy vector config
become: true
ansible.builtin.template:
src: templates/vector.yaml.j2
dest: "{{ docker_loki_client_setup.config_folderpath }}/vector.yaml"
owner: root
- name: Docker vector container
become: true
community.docker.docker_container:
name: vector
capabilities:
- SYS_ADMIN
image: timberio/vector:latest-debian
state: started
restart_policy: unless-stopped
pull: yes
env:
VECTOR_LOG: info
volumes:
- /var/log/journal:/var/log/journal:ro
- /etc/machine-id:/etc/machine-id:ro
- "{{ docker_loki_client_setup.config_folderpath}}:/etc/vector"
- name: Deploy alloy config
become: true
ansible.builtin.template:
src: templates/config.alloy.j2
dest: "{{ docker_loki_client_setup.config_folderpath }}/config.alloy"
owner: root
- name: Docker alloy container
become: true
community.docker.docker_container:
name: alloy
image: grafana/alloy:latest
state: started
restart_policy: unless-stopped
pull: yes
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- /var/lib/docker/containers:/var/lib/docker/containers
- "{{ docker_loki_client_setup.config_folderpath}}:/etc/alloy"
env:
ALLOY_CONFIG: /etc/alloy/config.alloy

View File

@@ -0,0 +1,39 @@
discovery.docker "linux" {
host = "unix:///var/run/docker.sock"
}
discovery.relabel "logs_integrations_docker" {
targets = []
rule {
source_labels = ["__meta_docker_container_name"]
regex = "/(.*)"
target_label = "container_name"
}
rule {
source_labels = ["__meta_docker_image_name"]
regex = "(.*)"
target_label = "image_name"
}
rule {
source_labels = ["__meta_docker_container_id"]
regex = "(.*)"
target_label = "container_id"
}
}
loki.source.docker "default" {
host = "unix:///var/run/docker.sock"
targets = discovery.docker.linux.targets
labels = {"source" = "docker", host = "{{ docker_loki_client_config.hostname }} "}
relabel_rules = discovery.relabel.logs_integrations_docker.rules
forward_to = [loki.write.default.receiver]
}
loki.write "default" {
endpoint {
url = "{{ docker_loki_client_config.loki.address }}/loki/api/v1/push"
}
}

View File

@@ -0,0 +1,34 @@
sources:
journald:
type: journald
transforms:
tag_journald:
type: remap
inputs:
- journald
source: |
.source = "journald"
.unit = ._SYSTEMD_UNIT
.process = ._COMM
.priority = .PRIORITY
.host = "{{ docker_loki_client_config.hostname }}"
sinks:
loki:
type: loki
inputs:
- tag_journald
endpoint: "{{ docker_loki_client_config.loki.address }}"
healthcheck:
enabled: false
encoding:
codec: json
labels:
{% raw %}
host: "{{ .host }}"
source: "{{ .source }}"
unit: "{{ .unit }}"
process: "{{ .process }}"
priority: "{{ .priority }}"
{% endraw %}

View File

@@ -0,0 +1,6 @@
- name: Vector Install
hosts:
- all
roles:
- role: docker_loki_client
#

View File

@@ -3,4 +3,3 @@
- all - all
roles: roles:
- role: vector - role: vector