Проблема
Я управляю контроллером входа NGINX, развернутый на GKE, и я хочу структурировать свои журналы веб-сервера, чтобы я мог создавать метрики и оповещения в Google Cloud Stackdriver.
использованная литература
- https://cloud.google.com/logging/docs/reference/v2/rest/v2/LogEntry
- https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/log-format/
Решение
Если вы используете GKE, уже есть Fluentd Daemonset, который пересылает все журналы контейнеров в StackDriver.
Все, что вам нужно сделать, это убедиться, что Confight контроллера контроллера NGINX имеет следующее log-format-upstream настройки:
apiVersion: v1 kind: ConfigMap metadata: name: nginx-ingress-controller labels: app: nginx-ingress data: log-format-escape-json: "true" log-format-upstream: '{"timestamp": "$time_iso8601", "requestID": "$req_id", "proxyUpstreamName": "$proxy_upstream_name", "proxyAlternativeUpstreamName": "$proxy_alternative_upstream_name","upstreamStatus": "$upstream_status", "upstreamAddr": "$upstream_addr","httpRequest":{"requestMethod": "$request_method", "requestUrl": "$host$request_uri", "status": $status,"requestSize": "$request_length", "responseSize": "$upstream_response_length", "userAgent": "$http_user_agent", "remoteIp": "$remote_addr", "referer": "$http_referer", "latency": "$upstream_response_time s", "protocol":"$server_protocol"}}'
Если вы развертываете Nginx, используя Хелм диаграммы Файл значений будет выглядеть что-то подобное:
controller: config: log-format-escape-json: "true" log-format-upstream: '{"timestamp": "$time_iso8601", "requestID": "$req_id", "proxyUpstreamName": "$proxy_upstream_name", "proxyAlternativeUpstreamName": "$proxy_alternative_upstream_name","upstreamStatus": "$upstream_status", "upstreamAddr": "$upstream_addr","httpRequest":{"requestMethod": "$request_method", "requestUrl": "$host$request_uri", "status": $status,"requestSize": "$request_length", "responseSize": "$upstream_response_length", "userAgent": "$http_user_agent", "remoteIp": "$remote_addr", "referer": "$http_referer", "latency": "$upstream_response_time s", "protocol":"$server_protocol"}}'
Оригинал: «https://dev.to/bzon/send-gke-nginx-ingress-controller-logs-to-stackdriver-2ih4»