gc-infra/iac/ansible/resources/monitoring/config/alloy.v3.alloy

139 lines
3.2 KiB
Plaintext

faro.receiver "stage_app_agent_receiver" {
server {
listen_address = "0.0.0.0"
listen_port = 12347
cors_allowed_origins = ["*"]
// cors_allowed_origins = ["https://avicenna.genius.ceo"]
api_key = "t3stK3y"
max_allowed_payload_size = "10MiB"
rate_limiting {
rate = 100
}
}
sourcemaps {}
output {
logs = [loki.process.logs_process_client.receiver]
traces = [otelcol.exporter.otlp.tempo.input]
}
}
loki.process "logs_process_client" {
forward_to = [loki.write.to_loki.receiver]
stage.logfmt {
mapping = { "kind" = "", "service_name" = "", "app_name" = "", "namespace" = "" }
}
stage.labels {
values = { "kind" = "kind", "service_name" = "service_name", "app" = "app_name", "namespace" = "namespace" }
}
}
otelcol.receiver.otlp "otel_collector" {
grpc {
endpoint = "0.0.0.0:4317"
}
http {
endpoint = "0.0.0.0:4318"
cors {
allowed_origins = ["https://avicenna.genius.ceo/"]
}
}
// Definiert, wohin die empfangenen Daten weitergeleitet werden
output {
metrics = [otelcol.exporter.prometheus.otel_metrics.input]
logs = [otelcol.exporter.loki.otel_logs.input]
traces = [otelcol.exporter.otlp.tempo.input]
}
}
loki.write "to_loki" {
endpoint {
url = "http://loki:3100/loki/api/v1/push"
}
}
prometheus.remote_write "to_prometheus" {
endpoint {
url = "http://prometheus:9090/api/v1/write"
}
}
// Docker-Container auf dem Host entdecken
discovery.docker "logs_integration_docker" {
host = "unix:///var/run/docker.sock"
refresh_interval = "5s"
}
discovery.relabel "logs_integration_docker" {
targets = []
rule {
action = "labelmap"
regex = "__meta_docker_container_label_com_docker_swarm_node_id"
replacement = "node_id"
}
rule {
action = "labelmap"
regex = "__meta_docker_container_label_com_docker_stack_namespace"
replacement = "namespace"
}
rule {
action = "labelmap"
regex = "__meta_docker_container_label_com_docker_swarm_service_name"
replacement = "service_name"
}
rule {
action = "labelmap"
regex = "__meta_docker_container_name"
replacement = "container_name"
}
}
loki.source.docker "logs_from_containers" {
host = "unix:///var/run/docker.sock"
targets = discovery.docker.logs_integration_docker.targets // Nutzt die entdeckten Container
relabel_rules = discovery.relabel.logs_integration_docker.rules
// Leitet die gesammelten Logs an den definierten Loki-Endpunkt weiter
forward_to = [loki.write.to_loki.receiver]
}
otelcol.exporter.otlp "tempo" { // Name kann variieren
client {
endpoint = "tempo:4317" // Ziel: Tempo Service auf Port 4317
tls {
insecure = true // Interne Kommunikation ohne TLS
}
}
}
otelcol.exporter.prometheus "otel_metrics" {
forward_to = [prometheus.remote_write.to_prometheus.receiver]
}
otelcol.exporter.loki "otel_logs" {
forward_to = [loki.write.to_loki.receiver]
}
// Logging für Alloy selbst konfigurieren
logging {
level = "info"
format = "logfmt"
}
// prometheus.scrape "alloy_self" {
// targets = [
// prometheus.target_group {
// targets = [{"__address__" = "localhost:12345"}]
// }
// ]
// forward_to = [...] // An Prometheus Remote Write oder lokalen Agent
// }