- Alloy 설정 3종: rule 블록을 한 줄 쉼표 나열에서 줄바꿈 속성으로 수정(실측: k8s DaemonSet
CrashLoopBackOff, db-replica alloy.service "expected TERMINATOR, got ,"). alloy fmt로 3종 파싱 확인.
- vm/postgres-common/alloy.sh: apt에 DPkg::Lock::Timeout=600(db-primary에서 unattended-upgrades 잠금으로 100 종료).
- vm/ai-env/compose.yaml: hitl 8081을 127.0.0.1에만 바인딩(agent는 compose 네트워크로 접근).
- workloads/rbac/ai-reader.yaml: nodes get/list/watch ClusterRole 추가(agent get_k8s(nodes) selfcheck 거부 해소).
- vm/harness/image.tag: f30af2a(POST /proposals/{token}/approve·reject 포함 러너).
40 lines
1.2 KiB
Plaintext
40 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" }
|
|
}
|