added loki client role
This commit is contained in:
11
roles/docker_loki_client/defaults/main.yml
Normal file
11
roles/docker_loki_client/defaults/main.yml
Normal 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: ""
|
||||||
1
roles/docker_loki_client/handlers/main.yml
Normal file
1
roles/docker_loki_client/handlers/main.yml
Normal file
@@ -0,0 +1 @@
|
|||||||
|
---
|
||||||
9
roles/docker_loki_client/meta/main.yml
Normal file
9
roles/docker_loki_client/meta/main.yml
Normal 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: []
|
||||||
|
|
||||||
64
roles/docker_loki_client/tasks/main.yml
Normal file
64
roles/docker_loki_client/tasks/main.yml
Normal 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
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
39
roles/docker_loki_client/templates/config.alloy.j2
Normal file
39
roles/docker_loki_client/templates/config.alloy.j2
Normal 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"
|
||||||
|
}
|
||||||
|
}
|
||||||
34
roles/docker_loki_client/templates/vector.yaml.j2
Normal file
34
roles/docker_loki_client/templates/vector.yaml.j2
Normal 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 %}
|
||||||
6
roles/docker_loki_client/tests/playbook.yaml
Normal file
6
roles/docker_loki_client/tests/playbook.yaml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
- name: Vector Install
|
||||||
|
hosts:
|
||||||
|
- all
|
||||||
|
roles:
|
||||||
|
- role: docker_loki_client
|
||||||
|
#
|
||||||
@@ -3,4 +3,3 @@
|
|||||||
- all
|
- all
|
||||||
roles:
|
roles:
|
||||||
- role: vector
|
- role: vector
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user