diff --git a/lotus-land-story/loki.yml b/lotus-land-story/loki.yml
index a5be73e..2ec045e 100644
--- a/lotus-land-story/loki.yml
+++ b/lotus-land-story/loki.yml
@@ -92,6 +92,124 @@
group: 10001
mode: "0644"
+ - name: Run Loki
+ community.docker.docker_container:
+ name: loki
+ image: grafana/loki:{{ version }}
+ restart: true
+ command: -config.file=/mnt/config/loki.yml
+ ports:
+ - "3100:3100"
+ volumes:
+ - /mnt/lotus-land-story/loki/config:/mnt/config
+ - /mnt/lotus-land-story/loki/data:/data
+ restart_policy: unless-stopped
+ networks:
+ - name: lotus_land_story
+ etc_hosts:
+ host.docker.internal: host-gateway
+
+- name: Set up Vector
+ tags: vector
+ hosts: lotus-land-story
+ vars:
+ version: 0.45.0-debian
+ tasks:
+
+ - name: Create Vector config dir
+ ansible.builtin.file:
+ path: /mnt/lotus-land-story/vector
+ state: directory
+ mode: "0700"
+
+ - name: Configure Vector
+ ansible.builtin.copy:
+ dest: /mnt/lotus-land-story/vector/vector.yml
+ content: |
+ sources:
+ docker_caddy:
+ type: docker_logs
+ include_containers:
+ - caddy
+ docker_rest:
+ type: docker_logs
+ exclude_containers:
+ - caddy
+ rsyslog:
+ type: syslog
+ address: 0.0.0.0:514
+ mode: tcp
+
+ transforms:
+ remap_caddy:
+ type: remap
+ inputs:
+ - docker_caddy
+ source: |
+ . |= object!(parse_json!(.message))
+ .user_agent = .request.headers."User-Agent"[0]
+
+ sinks:
+ # console:
+ # inputs:
+ # - remap_caddy
+ # target: stdout
+ # type: console
+ # encoding:
+ # codec: json
+
+ loki_docker:
+ type: loki
+ inputs:
+ - remap_caddy
+ - docker_rest
+ endpoint: http://loki:3100
+ encoding:
+ codec: json
+ labels:
+ agent: vector
+ container: "{{ '{{' }} container_name }}"
+
+ loki_rsyslog:
+ type: loki
+ inputs:
+ - rsyslog
+ endpoint: http://loki:3100
+ encoding:
+ codec: json
+ labels:
+ agent: vector
+ host: "{{ '{{' }} host }}"
+ level: "{{ '{{' }} severity }}"
+ syslog_facility: "{{ '{{' }} facility }}"
+ syslog_identifier: "{{ '{{' }} appname }}"
+
+ - name: Run Vector
+ community.docker.docker_container:
+ name: vector
+ image: timberio/vector:{{ version }}
+ restart: true
+ command: -c /etc/vector/*.yml
+ ports:
+ - "514:514"
+ volumes:
+ - /mnt/lotus-land-story/vector:/etc/vector:ro
+ # - /var/log:/var/log
+ - /var/run/docker.sock:/var/run/docker.sock
+ restart_policy: unless-stopped
+ networks:
+ - name: lotus_land_story
+ # etc_hosts:
+ # host.docker.internal: host-gateway
+
+
+- name: Set up Promtail
+ tags: promtail
+ hosts: lotus-land-story
+ vars:
+ version: 3.2.0
+ tasks:
+
# https://github.com/grafana/loki/issues/2361
- name: Configure Promtail
ansible.builtin.copy:
@@ -113,58 +231,33 @@
job: varlogs
__path__: /var/log/*.log
__path_exclude__: /var/log/syslog
- - job_name: docker
- docker_sd_configs:
- - host: unix:///var/run/docker.sock
- refresh_interval: 5s
- relabel_configs:
- - source_labels: ['__meta_docker_container_name']
- regex: '/(.*)'
- target_label: 'container'
- - job_name: syslog
- syslog:
- listen_address: 0.0.0.0:514
- listen_protocol: tcp
- idle_timeout: 60s
- label_structured_data: yes
- labels:
- job: syslog
- relabel_configs:
- - source_labels: ['__syslog_message_hostname']
- target_label: 'host'
- - source_labels: ['__syslog_message_severity']
- target_label: level
- - source_labels: ['__syslog_message_facility']
- target_label: syslog_facility
- - source_labels: ['__syslog_message_app_name']
- target_label: syslog_identifier
+ # - job_name: syslog
+ # syslog:
+ # listen_address: 0.0.0.0:514
+ # listen_protocol: tcp
+ # idle_timeout: 60s
+ # label_structured_data: yes
+ # labels:
+ # job: syslog
+ # relabel_configs:
+ # - source_labels: ['__syslog_message_hostname']
+ # target_label: 'host'
+ # - source_labels: ['__syslog_message_severity']
+ # target_label: level
+ # - source_labels: ['__syslog_message_facility']
+ # target_label: syslog_facility
+ # - source_labels: ['__syslog_message_app_name']
+ # target_label: syslog_identifier
mode: "0644"
- - name: Run Loki
- community.docker.docker_container:
- name: loki
- image: grafana/loki:{{ version }}
- restart: true
- command: -config.file=/mnt/config/loki.yml
- ports:
- - "3100:3100"
- volumes:
- - /mnt/lotus-land-story/loki/config:/mnt/config
- - /mnt/lotus-land-story/loki/data:/data
- restart_policy: unless-stopped
- networks:
- - name: lotus_land_story
- etc_hosts:
- host.docker.internal: host-gateway
-
- name: Run Promtail
community.docker.docker_container:
name: promtail
image: grafana/promtail:{{ version }}
restart: true
command: -config.file=/mnt/config/promtail.yml
- ports:
- - "514:514"
+ # ports:
+ # - "514:514"
volumes:
- /var/log:/var/log
- /var/run/docker.sock:/var/run/docker.sock
diff --git a/lotus-land-story/templates/Caddyfile b/lotus-land-story/templates/Caddyfile
index 9c80df4..b780e03 100644
--- a/lotus-land-story/templates/Caddyfile
+++ b/lotus-land-story/templates/Caddyfile
@@ -1,7 +1,13 @@
{
- servers {
- metrics
+ log default {
+ output stdout
+ format json
+ include http.log.access
+ }
+ metrics
+
+ servers {
trusted_proxies static private_ranges {{ trusted_proxies }}
trusted_proxies_strict
}
@@ -21,6 +27,8 @@
{% for domain in ("kejadlen.dev", "chislan.family") %}
auth.{{ domain }} {
+ log
+
reverse_proxy authelia:9091 {
import trusted_proxy_list
}
@@ -96,6 +104,8 @@ books {
}
docs.chislan.family {
+ log
+
forward_auth authelia:9091 {
uri /api/verify?rd=https://auth.chislan.family
copy_headers Remote-User
@@ -131,6 +141,8 @@ docs {
### External
git.kejadlen.dev {
+ log
+
rate_limit {
zone rate_limit {
match {
@@ -154,6 +166,8 @@ git.kejadlen.dev {
}
hey.kejadlen.dev
+ log
+
reverse_proxy gotosocial:8080
handle /metrics {