Files
infrastructure/clusters/cl01tl/manifests/loki/ConfigMap-loki-gateway.yaml

201 lines
14 KiB
YAML

apiVersion: v1
kind: ConfigMap
metadata:
name: loki-gateway
namespace: loki
labels:
helm.sh/chart: loki-13.5.0
app.kubernetes.io/name: loki
app.kubernetes.io/instance: loki
app.kubernetes.io/version: "3.7.1"
app.kubernetes.io/component: gateway
data:
nginx.conf: "worker_processes 5; ## Default: 1\nerror_log /dev/stderr;\npid /tmp/nginx.pid;\nworker_rlimit_nofile 8192;\n\nevents {\n worker_connections 4096; ## Default: 1024\n}\n\nhttp {\n client_body_temp_path /tmp/client_temp;\n proxy_temp_path /tmp/proxy_temp_path;\n fastcgi_temp_path /tmp/fastcgi_temp;\n uwsgi_temp_path /tmp/uwsgi_temp;\n scgi_temp_path /tmp/scgi_temp;\n\n client_max_body_size 4M;\n\n proxy_read_timeout 600; ## 10 minutes\n proxy_send_timeout 600;\n proxy_connect_timeout 600;\n\n proxy_http_version 1.1;\n\n default_type application/octet-stream;\n log_format main '$remote_addr - $remote_user [$time_local] $status '\n '\"$request\" $body_bytes_sent \"$http_referer\" '\n '\"$http_user_agent\" \"$http_x_forwarded_for\"';\n # Exclude specific requests from logging\n map $request_uri $track {\n default 1;\n ~^/$ 0;\n ~^/health 0;\n ~^/metrics 0;\n }\n\n # simple_upstream preset\n log_format access_log_exporter '$http_host\\t$request_method\\t$status\\t$request_completion\\t$request_time\\t$request_length\\t$bytes_sent\\t$upstream_addr\\t$upstream_connect_time\\t$upstream_header_time\\t$upstream_response_time\\t$request_uri';\n access_log syslog:server=127.0.0.1:8514,nohostname access_log_exporter if=$track;\n access_log /dev/stderr main;\n\n sendfile on;\n tcp_nopush on;\n resolver kube-dns.kube-system.svc.cluster.local.;\n\n # if the X-Query-Tags header is empty, set a noop= without a value as empty values are not logged\n map $http_x_query_tags $query_tags {\n \"\" \"noop=\"; # When header is empty, set noop=\n default $http_x_query_tags; # Otherwise, preserve the original value\n }\n\n server {\n listen 8080;\n listen [::]:8080;\n\n location = / {\n \n return 200 'OK';\n auth_basic off;\n }\n\n location = /stub_status {\n stub_status on;\n satisfy any;\n access_log off;\n allow 127.0.0.1;\n deny all;\n server_tokens on; # expose nginx version\n }\n\n ########################################################\n # Configure backend targets\n location ^~ /ui {\n \n set $backend \"http://loki.loki.svc.cluster.local:3100\";\n proxy_pass $backend$request_uri;\n }\n\n # Distributor\n location = /api/prom/push {\n \n set $backend \"http://loki.loki.svc.cluster.local:3100\";\n proxy_pass $backend$request_uri;\n }\n location = /loki/api/v1/push {\n \n set $backend \"http://loki.loki.svc.cluster.local:3100\";\n proxy_pass $backend$request_uri;\n }\n location = /distributor/ring {\n \n set $backend \"http://loki.loki.svc.cluster.local:3100\";\n proxy_pass $backend$request_uri;\n }\n location = /otlp/v1/logs {\n \n set $backend \"http://loki.loki.svc.cluster.local:3100\";\n proxy_pass $backend$request_uri;\n }\n\n # Ingester\n location = /flush {\n \n set $backend \"http://loki.loki.svc.cluster.local:3100\";\n proxy_pass $backend$request_uri;\n }\n location ^~ /ingester/ {\n \n set $backend \"http://loki.loki.svc.cluster.local:3100\";\n proxy_pass $backend$request_uri;\n }\n location = /ingester {\n \n internal; # to suppress 301\n }\n\n # Ring\n location = /ring {\n \n set $backend \"http://loki.loki.svc.cluster.local:3100\";\n proxy_pass $backend$request_uri;\n }\n\n # MemberListKV\n location = /memberlist {\n \n set $backend \"http://loki.loki.svc.cluster.local:3100\";\n proxy_pass $backend$request_uri;\n }\n\n # Ruler\n location = /ruler/ring {\n \n set $backend \"http://loki.loki.svc.cluster.local:3100\";\n proxy_pass $backend$request_uri;\n }\n location = /api/prom/rules {\n \n set $backend \"http://loki.loki.svc.cluster.local:3100\";\n proxy_pass $backend$request_uri;\n }\n location ^~ /api/prom/rules/ {\n \n set $backend \"http://loki.loki.svc.cluster.local:3100\";\n proxy_pass $backend$request_uri;\n }\n location = /loki/api/v1/rules {\n \n set $backend \"http://loki.loki.svc.cluster.local:3100\";\n proxy_pass $backend$request_uri;\n }\n location ^~ /loki/api/v1/rules/ {\n \n set $backend \"http://loki.loki.svc.cluster.local:3100\";\n proxy_pass $backend$request_uri;\n }\n location = /prometheus/api/v1/alerts {\n \n set $backend \"http://loki.loki.svc.cluster.local:3100\";\n proxy_pass $backend$request_uri;\n }\n location = /prometheus/api/v1/rules {\n \n set $backend \"http://loki.loki.svc.cluster.local:3100\";\n proxy_pass $backend$request_uri;\n }\n\n # Compactor\n location = /compactor/ring {\n \n set $backend \"http://loki.loki.svc.cluster.local:3100\";\n proxy_pass $backend$request_uri;\n }\n location = /loki/api/v1/delete {\n \n set $backend \"http://loki.loki.svc.cluster.local:3100\";\n proxy_pass $backend$request_uri;\n }\n location = /loki/api/v1/cache/generation_numbers {\n \n set $backend \"http://loki.loki.svc.cluster.local:3100\";\n proxy_pass $backend$request_uri;\n }\n\n # IndexGateway\n location = /indexgateway/ring {\n \n set $backend \"http://loki.loki.svc.cluster.local:3100\";\n proxy_pass $backend$request_uri;\n }\n\n # QueryScheduler\n location = /scheduler/ring {\n \n set $backend \"http://loki.loki.svc.cluster.local:3100\";\n proxy_pass $backend$request_uri;\n }\n\n # Config\n location = /config {\n \n set $backend \"http://loki.loki.svc.cluster.local:3100\";\n proxy_pass $backend$request_uri;\n }\n\n # QueryFrontend, Querier\n location = /api/prom/tail {\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection \"upgrade\";\n \n set $backend \"http://loki.loki.svc.cluster.local:3100\";\n proxy_pass $backend$request_uri;\n }\n location = /loki/api/v1/tail {\n proxy_set_header Upgrade $http_upgrade;\n proxy_set_header Connection \"upgrade\";\n \n set $backend \"http://loki.loki.svc.cluster.local:3100\";\n proxy_pass $backend$request_uri;\n }\n location ^~ /api/prom/ {\n \n set $backend \"http://loki.loki.svc.cluster.local:3100\";\n proxy_pass $backend$request_uri;\n }\n location = /api/prom {\n \n internal; # to suppress 301\n }\n location ^~ /loki/api/v1/ {\n # pass custom headers set by Grafana as X-Query-Tags which are logged as key/value pairs in metrics.go log messages\n proxy_set_header X-Query-Tags \"${query_tags},user=${http_x_grafana_user},dashboard_id=${http_x_dashboard_uid},dashboard_title=${http_x_dashboard_title},panel_id=${http_x_panel_id},panel_title=${http_x_panel_title},source_rule_uid=${http_x_rule_uid},rule_name=${http_x_rule_name},rule_folder=${http_x_rule_folder},rule_version=${http_x_rule_version},rule_source=${http_x_rule_source},rule_type=${http_x_rule_type}\";\n \n set $backend \"http://loki.loki.svc.cluster.local:3100\";\n proxy_pass $backend$request_uri;\n }\n location = /loki/api/v1 {\n \n internal; # to suppress 301\n }\n }\n}\n"
access-log-exporter.yaml: |
presets:
loki:
metrics:
- name: "http_requests_total"
type: "counter"
help: "The total number of client requests."
labels:
- name: "host"
lineIndex: 0
- name: "method"
lineIndex: 1
- name: "status"
lineIndex: 2
- name: "path"
lineIndex: 11
replacements:
- regexp: "^$"
replacement: "/"
- regexp: "^(.+)\\?.+"
replacement: "$1"
- name: "http_requests_completed_total"
type: "counter"
help: "The total number of completed requests."
valueIndex: 3
replacements:
- string: "OK"
replacement: "1"
labels:
- name: "host"
lineIndex: 0
- name: "method"
lineIndex: 1
- name: "status"
lineIndex: 2
- name: "path"
lineIndex: 11
replacements:
- regexp: "^$"
replacement: "/"
- regexp: "^(.+)\\?.+"
replacement: "$1"
- name: "http_request_size_bytes"
type: "histogram"
buckets: [ 10,1000,100000,1000000,5000000,50000000,200000000 ]
help: "The request length (including request line, header, and request body)"
valueIndex: 5
labels:
- name: "host"
lineIndex: 0
- name: "method"
lineIndex: 1
- name: "status"
lineIndex: 2
- name: "path"
lineIndex: 11
replacements:
- regexp: "^$"
replacement: "/"
- regexp: "^(.+)\\?.+"
replacement: "$1"
- name: "http_response_size_bytes"
type: "histogram"
buckets: [ 10,1000,100000,1000000,5000000,50000000,200000000 ]
help: "The response length (including request line, header, and request body)"
valueIndex: 6
labels:
- name: "host"
lineIndex: 0
- name: "method"
lineIndex: 1
- name: "status"
lineIndex: 2
- name: "path"
lineIndex: 11
replacements:
- regexp: "^$"
replacement: "/"
- regexp: "^(.+)\\?.+"
replacement: "$1"
- name: "http_request_duration_seconds"
type: "histogram"
buckets: [ .005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5, 10 ]
help: "The time spent on receiving and response the response to the client"
valueIndex: 4
math:
enabled: true
div: 1000
labels:
- name: "host"
lineIndex: 0
- name: "method"
lineIndex: 1
- name: "status"
lineIndex: 2
- name: "path"
lineIndex: 11
replacements:
- regexp: "^$"
replacement: "/"
- regexp: "^(.+)\\?.+"
replacement: "$1"
- name: "http_upstream_connect_duration_seconds"
type: "histogram"
buckets: [ .005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5, 10 ]
help: "The time spent on establishing a connection with the upstream server"
valueIndex: 8
math:
enabled: true
div: 1000
upstream:
enabled: true
addrLineIndex: 7
excludes: []
labels:
- name: "host"
lineIndex: 0
- name: "method"
lineIndex: 1
- name: "status"
lineIndex: 2
- name: "path"
lineIndex: 11
replacements:
- regexp: "^$"
replacement: "/"
- regexp: "^(.+)\\?.+"
replacement: "$1"
- name: "http_upstream_header_duration_seconds"
type: "histogram"
help: "The time spent on receiving the response header from the upstream server"
buckets: [ .005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5, 10 ]
valueIndex: 9
math:
enabled: true
div: 1000
upstream:
enabled: true
addrLineIndex: 7
excludes: []
labels:
- name: "host"
lineIndex: 0
- name: "method"
lineIndex: 1
- name: "status"
lineIndex: 2
- name: "path"
lineIndex: 11
replacements:
- regexp: "^$"
replacement: "/"
- regexp: "^(.+)\\?.+"
replacement: "$1"
- name: "http_upstream_request_duration_seconds"
type: "histogram"
help: "The time spent on receiving the response from the upstream server"
buckets: [ .005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5, 10 ]
valueIndex: 10
math:
enabled: true
div: 1000
upstream:
enabled: true
addrLineIndex: 7
excludes: []
labels:
- name: "host"
lineIndex: 0
- name: "method"
lineIndex: 1
- name: "status"
lineIndex: 2
- name: "path"
lineIndex: 11
replacements:
- regexp: "^$"
replacement: "/"
- regexp: "^(.+)\\?.+"
replacement: "$1"