Files
selfheal-lab-gitops/vm/postgres-common/config.alloy
T
seon 7ce2dc68fe feat: AI VM stack (WP-12) and Alloy telemetry on k8s, legacy and DB VMs (WP-15)
WP-12(실험 설계서 6장) vm/ai-env: apply.sh(시크릿 4종을 Secret Manager에서 파일로, 미등록이면
성능 저하 모드로 기동), compose(agent 8080·hitl 8081·rag-db pgvector 0.8.7-pg16), ai.env(Discord
서버 Selfheal Lab 1557424985793101824, approvals 1557425140302872698, escalation 1557425282363691048,
OPENAI_MODEL gpt-6.1-sol 후보), 프롬프트 3종, 러너북 11종(조치별·토폴로지·3층 절차).

WP-15(실험 설계서 4.1·4.3): apps/alloy.yaml(Alloy Helm 1.13.0 DaemonSet, 클러스터링으로 KSM·Argo CD·
cadvisor 스크랩 분산, demo 등 파드 로그 → Loki), apps/kube-state-metrics.yaml(Helm 8.6.0).
legacy-api compose에 Alloy 사이드카(up{job="legacy-api"}, 컨테이너 로그). DB VM은
vm/postgres-common/alloy.sh로 apt 설치 + prometheus.exporter.postgres(pg_replication_lag_seconds)
+ custom query pg_is_wal_replay_paused + PostgreSQL 로그.

vm/harness/apply.sh: 준비 대기 루프의 curl에 || true(러너 재기동 순간 curl 56으로 중단되던 문제,
2026-10-08 harness-sync 실측).
2026-10-08 01:47:38 +09:00

37 lines
1.2 KiB
Plaintext

// Alloy on db-primary / db-replica (design 4.1 / 4.3): postgres exporter (built-in collectors: pg_replication_lag_seconds,
// pg_up, pg_stat_*) + custom pg_is_wal_replay_paused -> Mimir; PostgreSQL logs -> Loki. instance = VM name.
prometheus.exporter.postgres "db" {
data_source_names = [sys.env("PG_DSN")]
custom_queries_config_path = "/etc/alloy/queries.yaml"
disable_settings_metrics = true
}
prometheus.scrape "db" {
job_name = "postgres"
scrape_interval = "15s"
targets = prometheus.exporter.postgres.db.targets
forward_to = [prometheus.relabel.instance.receiver]
}
prometheus.relabel "instance" {
forward_to = [prometheus.remote_write.mimir.receiver]
rule { target_label = "instance", replacement = sys.env("INSTANCE") }
}
prometheus.remote_write "mimir" {
endpoint { url = "http://10.20.0.10:9009/api/v1/push" }
}
local.file_match "pglogs" {
path_targets = [{ "__path__" = "/var/log/postgresql/*.log", "job" = "postgres", "instance" = sys.env("INSTANCE") }]
}
loki.source.file "pglogs" {
targets = local.file_match.pglogs.targets
forward_to = [loki.write.loki.receiver]
}
loki.write "loki" {
endpoint { url = "http://10.20.0.10:3100/loki/api/v1/push" }
}