Рубрики
Uncategorized

Настройте контроллер входа NGINX для использования формата журнала JSON

Проблема Я управляю контроллером входа NGINX, развернутый на GKE, и я хочу структурировать мои мы … Помечено с Куберанетами, Nginx, DevOps, Logging.

Проблема

Я управляю контроллером входа NGINX, развернутый на GKE, и я хочу структурировать свои журналы веб-сервера, чтобы я мог создавать метрики и оповещения в Google Cloud Stackdriver.

использованная литература

Решение

Если вы используете 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»