replace agent with alloy

some fixes
This commit is contained in:
Savosin Denis
2025-11-10 18:24:03 +07:00
parent ceb2abc636
commit 8c36c01440
6 changed files with 129 additions and 76 deletions

View File

@@ -1,23 +1,21 @@
COMPOSE_PROFILES=grafana COMPOSE_PROFILES=grafana
GRAFANA_VERSION=11.1.3 GRAFANA_VERSION=11.6.2
GRAFANA_HOST=grafana.docker.localhost GRAFANA_HOST=grafana.docker.localhost
LOKI_STACK_VERSION=3.1.1 LOKI_STACK_VERSION=3.5.1
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 ALLOY_VERSION=v1.11.3
AGENT_LOKI_URL=loki:3100
AGENT_TEMPO_URL=tempo:4317
TEMPO_VERSION=2.3.1 TEMPO_VERSION=2.9.0
TEMPO_CONFIG_FILE=/etc/tempo/tempo.yml TEMPO_CONFIG_FILE=/etc/tempo/tempo.yml
TEMPO_SERVER_LOG_LEVEL=info TEMPO_SERVER_LOG_LEVEL=info
TEMPO_STORAGE_PATH=/opt/tempo TEMPO_STORAGE_PATH=/var/tempo
TEMPO_PROMETHEUS_URL=prometheus:9090 TEMPO_PROMETHEUS_URL=prometheus:9090
PROMETHEUS_VERSION=v2.43.0 PROMETHEUS_VERSION=v3.4.1
PROMETHEUS_NODE_EXPORTER_VERSION=v1.5.0 PROMETHEUS_NODE_EXPORTER_VERSION=v1.9.1
PROMETHEUS_HOST=prometheus.docker.localhost PROMETHEUS_HOST=prometheus.docker.localhost
PROMETHEUS_RETENTION_TIME=10d PROMETHEUS_RETENTION_TIME=10d

View File

@@ -1,49 +0,0 @@
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

99
alloy/alloy.conf Normal file
View File

@@ -0,0 +1,99 @@
discovery.docker "logs_local_docker" {
host = "unix:///var/run/docker.sock"
refresh_interval = "10s"
}
loki.process "logs_local_docker" {
forward_to = [loki.write.logs_local.receiver]
stage.drop {
drop_counter_reason = "reject_old_samples"
older_than = "30m0s"
}
stage.static_labels {
values = {
job = "docker",
}
}
}
discovery.relabel "logs_local_docker" {
targets = []
rule {
source_labels = ["__meta_docker_container_name"]
regex = "/(.*)"
target_label = "container_name"
}
rule {
source_labels = ["__meta_docker_container_id"]
target_label = "container_id"
}
rule {
source_labels = ["__meta_docker_container_log_stream"]
target_label = "stream"
}
rule {
source_labels = ["__meta_docker_container_label_com_docker_compose_project"]
target_label = "compose_project"
}
rule {
source_labels = ["__meta_docker_container_label_org_label_schema_vcs_ref"]
target_label = "vcs_ref"
}
rule {
source_labels = ["__meta_docker_container_label_org_label_schema_version"]
target_label = "image_version"
}
}
loki.source.docker "logs_local_docker" {
host = "unix:///var/run/docker.sock"
targets = discovery.docker.logs_local_docker.targets
forward_to = [loki.process.logs_local_docker.receiver]
relabel_rules = discovery.relabel.logs_local_docker.rules
refresh_interval = "10s"
}
loki.write "logs_local" {
endpoint {
url = "http://loki:3100/loki/api/v1/push"
}
external_labels = {}
}
otelcol.receiver.otlp "default" {
grpc {
endpoint = "0.0.0.0:4317"
include_metadata = true
}
http {
endpoint = "0.0.0.0:4318"
include_metadata = true
}
output {
traces = [otelcol.exporter.otlphttp.tempo_http.input]
}
}
otelcol.exporter.otlphttp "tempo_http" {
retry_on_failure {
max_elapsed_time = "1m0s"
}
client {
endpoint = "http://tempo:4318"
tls {
insecure = true
insecure_skip_verify = true
}
}
}

View File

@@ -28,21 +28,23 @@ services:
profiles: profiles:
- grafana - grafana
agent: alloy:
image: grafana/agent:${AGENT_VERSION} image: grafana/alloy:${ALLOY_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: volumes:
- ./agent:/etc/agent/ - ./alloy/alloy.conf:/etc/alloy/config.alloy
- alloy-data:/var/lib/alloy/data
- /var/run/docker.sock:/var/run/docker.sock:ro - /var/run/docker.sock:/var/run/docker.sock:ro
command: command:
- "-config.file=/etc/agent/agent.yaml" - run
- "-config.expand-env" - /etc/alloy/config.alloy
- --storage.path=/var/lib/alloy/data
- --server.http.listen-addr=0.0.0.0:12345
expose:
- 12345
- 4317 # otlp grpc
- 4318 # otlp http
profiles: profiles:
- agent - alloy
tempo: tempo:
image: grafana/tempo:${TEMPO_VERSION} image: grafana/tempo:${TEMPO_VERSION}
@@ -60,7 +62,7 @@ services:
TEMPO_PROMETHEUS_URL: ${TEMPO_PROMETHEUS_URL} TEMPO_PROMETHEUS_URL: ${TEMPO_PROMETHEUS_URL}
volumes: volumes:
- ./tempo:/etc/tempo - ./tempo:/etc/tempo
- tempo-local-storage:${TEMPO_STORAGE_PATH:-/opt/tempo} - tempo-local-storage:${TEMPO_STORAGE_PATH:-/var/tempo}
profiles: profiles:
- tempo - tempo
@@ -105,3 +107,4 @@ volumes:
grafana-storage: grafana-storage:
tempo-local-storage: tempo-local-storage:
prometheus-data: prometheus-data:
alloy-data:

View File

@@ -6,9 +6,9 @@
1. Скопировать [.env.example](/.env.example) в `.env` 1. Скопировать [.env.example](/.env.example) в `.env`
#### With grafana agent #### With grafana alloy
1. Добавить в `COMPOSE_PROFILES` значение `agent` в файле [.env](/.env) 1. Добавить в `COMPOSE_PROFILES` значение `alloy` в файле [.env](/.env)
2. Запустить docker-compose-стэк: 2. Запустить docker-compose-стэк:
```shell ```shell
docker compose up -d docker compose up -d
@@ -48,7 +48,7 @@
<<: *loki-log-config <<: *loki-log-config
``` ```
3. Убрать профиль `agent` из значения `COMPOSE_PROFILES` в файле [.env](/.env) 3. Убрать профиль `alloy` из значения `COMPOSE_PROFILES` в файле [.env](/.env)
4. Запустить стек `grafana` + `loki` 4. Запустить стек `grafana` + `loki`
```shell ```shell

View File

@@ -22,7 +22,9 @@ distributor:
otlp: otlp:
protocols: protocols:
http: http:
endpoint: "0.0.0.0:4318"
grpc: grpc:
endpoint: "0.0.0.0:4317"
ingester: ingester:
max_block_duration: 5m # cut the headblock when this much time passes. this is being set for demo purposes and should probably be left alone normally max_block_duration: 5m # cut the headblock when this much time passes. this is being set for demo purposes and should probably be left alone normally