diff --git a/caddy_v2/readme.md b/caddy_v2/readme.md
index 5167e00..801d5cd 100644
--- a/caddy_v2/readme.md
+++ b/caddy_v2/readme.md
@@ -110,6 +110,7 @@ services:
ports:
- "80:80"
- "443:443"
+ - "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./data:/data
@@ -667,6 +668,179 @@ But the effort went sideways.
So I myself do not even bother with wildcard when the config ends up looking
complex and ugly.
+# Monitoring
+
+*work in progress*
+*work in progress*
+*work in progress*
+
+The endgame - [something like this](https://www.reddit.com/r/selfhosted/comments/w8iex6/is_there_a_way_to_see_traffic_statistics_with_the/)
+
+googling
+
+* https://community.home-assistant.io/t/home-assistant-add-on-promtail/293732
+* https://zerokspot.com/weblog/2023/01/25/testing-promtail-pipelines/
+
+Required some knowledge from [Prometheus and Grafana](https://github.com/DoTheEvo/selfhosted-apps-docker/tree/master/prometheus_grafana)
+
+
+
+### Metrics
+
+Caddy has build in exporter of prometheus metrics, so whats needed:
+
+* Edit Caddyfile to [enable metrics.](https://caddyserver.com/docs/metrics)
+* Edit compose to publish 2019 port.
+ Likely not be necessary if Caddy and Prometheus are on the same docker network,
+ but its nice to check the metrics at `:2019/metrics`
+* Edit prometheus.yml to add caddy scraping point
+* In grafana import [caddy dashboard](https://grafana.com/grafana/dashboards/14280-caddy-exporter/)
+ or make your own, `caddy_reverse_proxy_upstreams_healthy` shows reverse proxy
+ upstreams, but thats all.
+
+
+Caddyfile
+
+```php
+{
+ servers {
+ metrics
+ }
+
+ admin 0.0.0.0:2019
+}
+
+
+a.{$MY_DOMAIN} {
+ reverse_proxy whoami:80
+}
+```
+
+
+
+prometheus.yml
+
+```yml
+global:
+ scrape_interval: 15s
+ evaluation_interval: 15s
+
+scrape_configs:
+ - job_name: 'caddy'
+ static_configs:
+ - targets: ['caddy:2019']
+```
+
+
+
+But metrics feel kinda not enough, they dont even tell how much which subdomain
+gets hit.. let alone some access info and IPs. So time for logs and Loki I guess.
+
+### Logs
+
+* have Prometheus, Grafana, Loki working
+* edit Caddy compose
+ - create directory and bind mount it /var/log/caddy:/var/log/caddy
+ - add promtail container with bind mount of its config file,
+ that will scrape logs and push them to loki
+* create promtail-config.yml
+* edit Caddyfile and enable logging at some subdomain
+ seems global logging might be done by using port 443 as a block, not tested yet
+* at this points logs should be visible in grafana
+* ?? edit promtail-config.yml to get desired values ??
+* ?? enable somehow geo ip on promtail ??
+* ?? make dashboard from logs ??
+
+
+
+docker-compose.yml
+
+```yml
+services:
+
+ caddy:
+ image: caddy
+ container_name: caddy
+ hostname: caddy
+ restart: unless-stopped
+ env_file: .env
+ ports:
+ - "80:80"
+ - "443:443"
+ - "443:443/udp"
+ - "2019:2019"
+ volumes:
+ - ./Caddyfile:/etc/caddy/Caddyfile
+ - ./data:/data
+ - ./config:/config
+ - /var/log/caddy:/var/log/caddy
+
+ # LOG AGENT PUSHING LOGS TO LOKI
+ promtail:
+ image: grafana/promtail
+ container_name: promtail
+ hostname: promtail
+ restart: unless-stopped
+ volumes:
+ - ./promtail-config.yml:/etc/promtail-config.yml
+ - /var/log/caddy:/var/log/caddy:ro
+ command:
+ - '-config.file=/etc/promtail-config.yml'
+
+networks:
+ default:
+ name: $DOCKER_MY_NETWORK
+ external: true
+```
+
+
+
+
+promtail-config.yml
+
+```yml
+clients:
+ - url: http://loki:3100/loki/api/v1/push
+
+scrape_configs:
+ - job_name: caddy
+ pipeline_stages:
+ - json:
+ expressions:
+ stream: level
+ status_code: status
+ host: request.host
+ time: ts
+ - labels:
+ stream:
+ status_code:
+ host:
+ - timestamp:
+ source: time
+ format: Unix
+ static_configs:
+ - targets:
+ - localhost
+ labels:
+ job: caddy
+ __path__: /var//log/caddy/*.log
+```
+
+
+
+
+Caddyfile
+
+```php
+a.{$MY_DOMAIN} {
+ reverse_proxy whoami:80
+ log {
+ output file /var/log/caddy/a_example_com_access.log
+ }
+}
+```
+
+
# Other guides