Skip to content

Instantly share code, notes, and snippets.

@etrikp
Created September 11, 2023 13:11
Show Gist options
  • Save etrikp/a8f7aba1a82c742a38e529a854e65e63 to your computer and use it in GitHub Desktop.
Save etrikp/a8f7aba1a82c742a38e529a854e65e63 to your computer and use it in GitHub Desktop.
Loki distributed haproxy
global
log stdout format raw local0
maxconn 4096
nbproc 5
pidfile /tmp/haproxy.pid
resolvers kube-dns
nameserver default kube-dns.kube-system.svc.cluster.local:53
resolve_retries 3
timeout retry 1s
hold valid 10s
defaults
log global
mode http
option httplog
log-format {\"timestamp\":\"%T\", \"client_ip\":\"%ci\", \"client_port\":\"%cp\", \"frontend_name\":\"%f\", \"backend_name\":\"%b\", \"server_name\":\"%s\", \"status_code\":\"%ST\", \"bytes_read\":\"%B\", \"request\":\"%r\", \"user_agent\":\"%[capture.req.hdr(1)]\", \"ssl_version\":\"%sslv\", \"ssl_cipher\":\"%sslc\", \"termination_state\":\"%ts\", \"total_time_queue\":\"%Tq\", \"total_time_server\":\"%Tr\", \"total_time\":\"%Tt\", \"protocol\":\"%H\"}
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http_front
bind *:8080
# Root location
acl url_root path -i /
use_backend root_backend if url_root
# Prometheus and Loki routing ACLs
acl url_api_prom_push path -i /api/prom/push
acl url_api_prom_tail path -i /api/prom/tail
acl url_loki_api_v1_push path -i /loki/api/v1/push
acl url_loki_api_v1_tail path -i /loki/api/v1/tail
acl url_ruler path_beg -i /prometheus/api/v1/alerts /prometheus/api/v1/rules /api/prom/rules /api/prom/alerts
acl url_api_prom path_beg -i /api/prom/
acl url_loki_api path_beg -i /loki/api/
use_backend api_prom_push_backend if url_api_prom_push
use_backend api_prom_tail_backend if url_api_prom_tail
use_backend loki_api_v1_push_backend if url_loki_api_v1_push
use_backend loki_api_v1_tail_backend if url_loki_api_v1_tail
use_backend ruler_backend if url_ruler
use_backend api_prom_backend if url_api_prom
use_backend loki_api_backend if url_loki_api
backend root_backend
http-response set-status 200 'OK'
backend api_prom_push_backend
server loki_distributor lokidee-loki-distributed-distributor.default.svc.cluster.local:3100 resolvers kube-dns
backend api_prom_tail_backend
server loki_querier lokidee-loki-distributed-querier.default.svc.cluster.local:3100 resolvers kube-dns
http-request set-header Upgrade %[req.hdr(Upgrade)]
http-request set-header Connection upgrade
backend loki_api_v1_push_backend
server loki_distributor lokidee-loki-distributed-distributor.default.svc.cluster.local:3100 resolvers kube-dns
backend loki_api_v1_tail_backend
server loki_querier lokidee-loki-distributed-querier.default.svc.cluster.local:3100 resolvers kube-dns
http-request set-header Upgrade %[req.hdr(Upgrade)]
http-request set-header Connection upgrade
backend ruler_backend
server loki_ruler lokidee-loki-distributed-ruler.default.svc.cluster.local:3100 resolvers kube-dns
backend api_prom_backend
server loki_frontend lokidee-loki-distributed-query-frontend-headless.default.svc.cluster.local:3100 resolvers kube-dns
backend loki_api_backend
server loki_frontend lokidee-loki-distributed-query-frontend-headless.default.svc.cluster.local:3100 resolvers kube-dns
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment