logging
change
commit 20ca2b2cd60ba4e68a9e1a792ad0550e3c765788
author Alpha Chen <alpha@kejadlen.dev>
date
parent 1cdef155
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 {