Нужна консультация по настройке стека docker swarm + promtail + loki + grafana

3 000 руб.за час
08 марта 2024, 18:10 • 4 отклика • 49 просмотров
Здравствуйте.

Развернул стек docker swarm + promtail + loki + grafana
promtail забирает логи контейнеров, они отображаются в loki

В одном из контейнеров у меня запущен nginx, который отдает строку в json формате
Мне нужно положить в labels все свойства этого объекта из лога

```
clients:
- url: http://loki100/loki/api/v1/push

server:
http_listen_address: 0.0.0.0
http_listen_port: 9080

scrape_configs:

- job_name: containers
static_configs:
- targets:
- localhost
labels:
job: containers_logs
__path__: /var/lib/docker/containers/*/*log

pipeline_stages:
- json:
expressions:
log: log
stream: stream
time: time
tag: attrs.tag
# docker compose
# compose_project: attrs."com.docker.compose.project"
# compose_service: attrs."com.docker.compose.service"
# docker swarm
stack_name: attrs."com.docker.stack.namespace"
service_name: attrs."com.docker.swarm.service.name"
service_id: attrs."com.docker.swarm.service.id"
task_name: attrs."com.docker.swarm.task.name"
task_id: attrs."com.docker.swarm.task.id"
http_response_status: line.status

- regex:
expression: "^/var/lib/docker/containers/(?P.{12}).+/.+-json.log$"
source: filename
- timestamp:
format: RFC3339Nano
source: time
- labels:
stream:
container_id:
tag:
# docker swarm
stack_name:
service_name:
service_id:
task_name:
task_id:
node_id:
#nginx labels
http_response_status:

- output:
source: log
```

Вот пример записи лога:
{"msec": "1709910388.794", "connection": "64966", "connection_requests": "1", "request_id": "b521309828629edb03fa73e567054cc7", "request_length": "445", "remote_addr": "178.140.2.177", "remote_user": "", "remote_port": "39666", "time_local": "08/Mar/2024:15:06:28 +0000", "time_iso8601": "2024-03-08T15:06:28+00:00", "request": "GET /static/config.js HTTP/1.1", "request_uri": "/static/config.js", "args": "", "status": "200", "body_bytes_sent": "425", "bytes_sent": "692", "http_referer": "example.com", "http_user_agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:122.0) Gecko/20100101 Firefox/122.0", "http_x_forwarded_for": "", "http_host": "example.com", "server_name": "example.com", "request_time": "0.000", "scheme": "https", "request_method": "GET", "server_protocol": "HTTP/1.1"}


Проблема в том, что на выходе в labels нужного мне http_response_status нет, а мне, собственно, нужно чтобы он был, чтобы на его основе можно было строить метрики


Вероятно, после решения этого, появятся еще вопросы.
По оплате готов рассматривать ставку до 3000 в час
Если у вас есть самозанятость - отлично, оплатим от юрлица + налог
Или в понедельник переводом