mirror of
https://github.com/Dannecron/grafana-for-dev.git
synced 2025-12-25 15:52:35 +03:00
[feature] replace promtail with grafana agent
improve grafana provisioning
This commit is contained in:
@@ -7,6 +7,10 @@ LOKI_STACK_VERSION=2.6.0
|
|||||||
LOKI_HOST=loki.docker.localhost
|
LOKI_HOST=loki.docker.localhost
|
||||||
LOKI_PROMTAIL_HOST=promtail.docker.localhost
|
LOKI_PROMTAIL_HOST=promtail.docker.localhost
|
||||||
|
|
||||||
|
AGENT_VERSION=v0.39.0
|
||||||
|
AGENT_LOKI_URL=loki:3100
|
||||||
|
AGENT_TEMPO_URL=tempo:4317
|
||||||
|
|
||||||
TEMPO_VERSION=2.3.1
|
TEMPO_VERSION=2.3.1
|
||||||
TEMPO_CONFIG_FILE=/etc/tempo/tempo.yml
|
TEMPO_CONFIG_FILE=/etc/tempo/tempo.yml
|
||||||
TEMPO_SERVER_LOG_LEVEL=info
|
TEMPO_SERVER_LOG_LEVEL=info
|
||||||
|
|||||||
49
agent/agent.yaml
Normal file
49
agent/agent.yaml
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
logs:
|
||||||
|
configs:
|
||||||
|
- name: local
|
||||||
|
clients:
|
||||||
|
- url: "http://${AGENT_LOKI_URL}/loki/api/v1/push"
|
||||||
|
scrape_configs:
|
||||||
|
- docker_sd_configs:
|
||||||
|
- host: unix:///var/run/docker.sock
|
||||||
|
refresh_interval: 10s
|
||||||
|
job_name: docker
|
||||||
|
pipeline_stages:
|
||||||
|
- drop:
|
||||||
|
drop_counter_reason: reject_old_samples
|
||||||
|
older_than: 30m
|
||||||
|
- static_labels:
|
||||||
|
job: docker
|
||||||
|
relabel_configs:
|
||||||
|
- regex: /(.*)
|
||||||
|
source_labels: [__meta_docker_container_name]
|
||||||
|
target_label: container_name
|
||||||
|
- source_labels: [__meta_docker_container_id]
|
||||||
|
target_label: container_id
|
||||||
|
- source_labels: [__meta_docker_container_log_stream]
|
||||||
|
target_label: stream
|
||||||
|
- source_labels: [__meta_docker_container_label_com_docker_compose_project]
|
||||||
|
target_label: compose_project
|
||||||
|
- source_labels: [__meta_docker_container_label_org_label_schema_vcs_ref]
|
||||||
|
target_label: vcs_ref
|
||||||
|
- source_labels: [__meta_docker_container_label_org_label_schema_version]
|
||||||
|
target_label: image_version
|
||||||
|
positions_directory: /opt/positions
|
||||||
|
|
||||||
|
traces:
|
||||||
|
configs:
|
||||||
|
- name: tempo
|
||||||
|
remote_write:
|
||||||
|
- endpoint: "http://${AGENT_TEMPO_URL}"
|
||||||
|
insecure: true
|
||||||
|
receivers:
|
||||||
|
otlp:
|
||||||
|
protocols:
|
||||||
|
http:
|
||||||
|
grpc:
|
||||||
|
automatic_logging:
|
||||||
|
backend: "logs_instance"
|
||||||
|
logs_instance_name: "local"
|
||||||
|
roots: true
|
||||||
|
server:
|
||||||
|
log_level: info
|
||||||
@@ -30,6 +30,22 @@ services:
|
|||||||
profiles:
|
profiles:
|
||||||
- grafana
|
- grafana
|
||||||
|
|
||||||
|
agent:
|
||||||
|
image: grafana/agent:${AGENT_VERSION}
|
||||||
|
environment:
|
||||||
|
WAL_DATA_DIRECTORY: /opt/agent/data
|
||||||
|
CONFIG_FILE_PATH: /etc/agent/agent.yaml
|
||||||
|
AGENT_LOKI_URL: "${AGENT_LOKI_URL}"
|
||||||
|
AGENT_TEMPO_URL: "${AGENT_TEMPO_URL}"
|
||||||
|
volumes:
|
||||||
|
- ./agent:/etc/agent/
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
|
command:
|
||||||
|
- "-config.file=/etc/agent/agent.yaml"
|
||||||
|
- "-config.expand-env"
|
||||||
|
profiles:
|
||||||
|
- agent
|
||||||
|
|
||||||
tempo:
|
tempo:
|
||||||
image: grafana/tempo:${TEMPO_VERSION}
|
image: grafana/tempo:${TEMPO_VERSION}
|
||||||
command:
|
command:
|
||||||
@@ -50,22 +66,6 @@ services:
|
|||||||
profiles:
|
profiles:
|
||||||
- tempo
|
- tempo
|
||||||
|
|
||||||
promtail:
|
|
||||||
image: grafana/promtail:${LOKI_STACK_VERSION}
|
|
||||||
labels:
|
|
||||||
- "traefik.enable=true"
|
|
||||||
- "traefik.http.routers.grafana.rule=Host(`${LOKI_PROMTAIL_HOST}`)"
|
|
||||||
- "traefik.http.services.grafana.loadbalancer.server.port=9080"
|
|
||||||
expose:
|
|
||||||
- 9080
|
|
||||||
volumes:
|
|
||||||
- /var/lib/docker/containers:/var/lib/docker/containers:ro
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
|
||||||
- ./promtail:/opt/promtail
|
|
||||||
command: -config.file=/opt/promtail/config.yml
|
|
||||||
profiles:
|
|
||||||
- promtail
|
|
||||||
|
|
||||||
prometheus:
|
prometheus:
|
||||||
image: prom/prometheus:${PROMETHEUS_VERSION}
|
image: prom/prometheus:${PROMETHEUS_VERSION}
|
||||||
labels:
|
labels:
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ deleteDatasources:
|
|||||||
datasources:
|
datasources:
|
||||||
- name: Loki
|
- name: Loki
|
||||||
type: loki
|
type: loki
|
||||||
|
uid: loki-local
|
||||||
orgId: 1
|
orgId: 1
|
||||||
access: proxy
|
access: proxy
|
||||||
url: http://loki:3100
|
url: http://loki:3100
|
||||||
@@ -16,13 +17,27 @@ datasources:
|
|||||||
editable: true
|
editable: true
|
||||||
- name: Prometheus
|
- name: Prometheus
|
||||||
type: prometheus
|
type: prometheus
|
||||||
|
uid: prometheus-local
|
||||||
orgId: 1
|
orgId: 1
|
||||||
url: http://prometheus:9090
|
url: http://prometheus:9090
|
||||||
editable: true
|
editable: true
|
||||||
version: 1
|
version: 1
|
||||||
- name: Tempo
|
- name: Tempo
|
||||||
type: tempo
|
type: tempo
|
||||||
|
uid: tempo-local
|
||||||
orgId: 1
|
orgId: 1
|
||||||
access: proxy
|
access: proxy
|
||||||
url: http://tempo:3200
|
url: http://tempo:3200
|
||||||
editable: true
|
editable: true
|
||||||
|
jsonData:
|
||||||
|
tracesToLogsV2:
|
||||||
|
datasourceUid: "loki-local"
|
||||||
|
customQuery: true
|
||||||
|
filtersBySpanID: false
|
||||||
|
filtersByTraceID: false
|
||||||
|
query: "{job=\"docker\"} |= \"${__trace.traceId}\" |= \"${__span.spanId}\""
|
||||||
|
spanEndTimeShift: "30m"
|
||||||
|
spanStartTimeShift: "-30m"
|
||||||
|
tags: []
|
||||||
|
lokiSearch:
|
||||||
|
datasourceUid: "loki-local"
|
||||||
|
|||||||
@@ -1,30 +0,0 @@
|
|||||||
---
|
|
||||||
server:
|
|
||||||
http_listen_address: 0.0.0.0
|
|
||||||
http_listen_port: 9080
|
|
||||||
|
|
||||||
positions:
|
|
||||||
filename: /tmp/positions.yaml
|
|
||||||
|
|
||||||
clients:
|
|
||||||
- url: http://loki:3100/loki/api/v1/push
|
|
||||||
|
|
||||||
scrape_configs:
|
|
||||||
- job_name: docker
|
|
||||||
docker_sd_configs:
|
|
||||||
- host: unix:///var/run/docker.sock
|
|
||||||
refresh_interval: 5s
|
|
||||||
filters:
|
|
||||||
- name: label
|
|
||||||
values: ["loki.log=true"]
|
|
||||||
pipeline_stages:
|
|
||||||
- docker: {}
|
|
||||||
- static_labels:
|
|
||||||
job: "promtail"
|
|
||||||
relabel_configs:
|
|
||||||
- source_labels: ['__meta_docker_container_name']
|
|
||||||
regex: '/(.*)'
|
|
||||||
target_label: 'container'
|
|
||||||
- source_labels: ['__meta_docker_container_log_stream']
|
|
||||||
regex: '/(.*)'
|
|
||||||
target_label: 'source_stream'
|
|
||||||
23
readme.md
23
readme.md
@@ -6,23 +6,14 @@
|
|||||||
|
|
||||||
1. Скопировать [.env.example](/.env.example) в `.env`
|
1. Скопировать [.env.example](/.env.example) в `.env`
|
||||||
|
|
||||||
#### With promtail
|
#### With grafana agent
|
||||||
|
|
||||||
1. Добавить новый лейбл к контейнеру, чьи логи необходимо отсылать в loki
|
1. Добавить в `COMPOSE_PROFILES` значение `agent` в файле [.env](/.env)
|
||||||
|
2. Запустить docker-compose-стэк:
|
||||||
|
```shell
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
Например, достаточно просто добавить новый лейбл в `docker-compose`-файл искомого стека:
|
|
||||||
```yaml
|
|
||||||
services:
|
|
||||||
my-service:
|
|
||||||
labels:
|
|
||||||
- "loki.log=true"
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Запустить весь стек `docker-compose`
|
|
||||||
|
|
||||||
```shell
|
|
||||||
docker compose up -d
|
|
||||||
```
|
|
||||||
|
|
||||||
#### With docker plugin
|
#### With docker plugin
|
||||||
|
|
||||||
@@ -57,7 +48,7 @@
|
|||||||
<<: *loki-log-config
|
<<: *loki-log-config
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Убрать профиль `promtail` из значения `COMPOSE_PROFILES` в файле [.env](/.env)
|
3. Убрать профиль `agent` из значения `COMPOSE_PROFILES` в файле [.env](/.env)
|
||||||
4. Запустить стек `grafana` + `loki`
|
4. Запустить стек `grafana` + `loki`
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
|
|||||||
Reference in New Issue
Block a user