seon
3f686c1aea
fix(alerting): ApiLatencyHigh on the 1-minute p95, ApiMemoryPressure for 1m, C-G2 at 225MB
...
第 3 回キャンペーンの実測を反映する。V-G1 では ILB が 1 分以内に api の接続を
遅いインスタンスから逃がすため 5 分窓の p95 が 0.5 秒を越えず、ApiLatencyHigh が
発火しなかった(1 分窓の p95 は 3 分半 2.3 秒)。式を 1 分窓にし 2 分継続に変える。
C-G2 は 200MB で working set が limit の 0.797〜0.803 を行き来して閾値 0.8 を
保てなかったため 225MB にし、ApiMemoryPressure の継続を 1 分にする。
2026-10-08 21:27:24 +09:00
seon
1e0e17b33c
fix(alerting): evaluate the replay-paused branch of DbReplicationLag, add ApiMemoryPressure; retarget grey-zone scenarios
...
DbReplicationLag の式は PromQL の or が左辺のサンプル(常に 0)を残すため
pg_is_wal_replay_paused の分岐が評価されず、第 1・2 回とも発火しなかった。2 つの
bool を加算して clamp する式に直す。api コンテナのメモリが limit の 80% を超えて
2 分続いたときの ApiMemoryPressure(第 2 層)を追加する。C-G2 の StressChaos は
size "80%"(ノード基準)で即 OOM になっていたため 200MB に、V-G1 の対象は
トラフィックを受けているインスタンス legacy:busy に変更する。slo.md に新ルールを追記。
2026-10-08 19:20:50 +09:00
seon
b5119054be
fix(observability): LegacyUnhealthy must not fire while up{job=legacy-api} is absent (WP-15 supplies it)
2026-09-24 02:30:00 +09:00
seon
8f41b3567b
fix(observability): recreate Grafana on apply so provisioning changes load
...
Grafana는 프로비저닝 파일을 기동 시에만 읽으므로 apply.sh가 grafana만 재생성한다
(상태는 볼륨에 유지).
2026-09-24 01:44:42 +09:00
seon
1db68b643f
feat: add ingress-nginx, demo-app, Chaos Mesh apps and Grafana alert rules
...
WP-14(Terraform 설계서 7.3, 실험·앱 설계서 3.1·4.3).
- apps/ingress-nginx: baremetal 매니페스트(controller-v1.15.1)를 kustomize로 가져와
NodePort 30080/30443 고정(ALB TG와 일치).
- apps/demo-app + workloads/demo-app: front(nginx-unprivileged 1.31.6, 정적 페이지 +
/api/ 프록시) 2, api(demo-api:8f5378b) 3 + PDB minAvailable 2, Service, Ingress(/ front,
/api api). DB_DSN은 Secret demo-db(make k8s-secrets로 생성, git 밖).
- apps/chaos-mesh: Helm chart 2.8.4(containerd 소켓, dashboard 없음).
- vm/observability/grafana/provisioning/alerting: contact point harness-webhook
(10.20.0.11:8080/hooks/alert), 루트 정책, 규칙 8건(ProbeDown·ApiLatencyHigh·
ApiErrorRateHigh·PodCrashLooping·LegacyUnhealthy·DbReplicationLag·DbPrimaryDown·
GitOpsDrift, 라벨 layer/signature).
2026-09-24 01:35:45 +09:00
seon
907056f4f6
fix(observability): drop unsupported compactor block from tempo.yaml
...
Tempo 3.0.3이 "field compactor not found in type app.Config"로 기동을 거부했다
(2026-09-24 실측). 보존 기간은 기본값으로 둔다.
2026-09-24 01:20:03 +09:00
seon
d2c7ddf242
feat: add LGTM compose for the observability VM
...
WP-10(Terraform 설계서 6.10, 실험·앱 설계서 4.1). Mimir 3.2.1(monolithic, GCS
prefix blocks/ruler/alertmanager), Loki 3.7.8(tsdb v13, GCS), Tempo 3.0.3(OTLP
4317/4318, GCS), Grafana 13.2.2(데이터소스 Mimir·Loki·Tempo 프로비저닝). 오브젝트
스토리지는 VM SA의 ADC로 인증(키 파일 없음). Grafana 관리자 비밀번호는 Secret Manager
selfheal-grafana-admin에서 실행 시 취득. 알림 규칙 8건은 WP-14에서 추가.
2026-09-24 01:18:33 +09:00
seon
2fc6305e1b
chore: scaffold gitops repository layout
...
Terraform 설계서 2장의 디렉터리 구조대로 뼈대만 만든다. 각 디렉터리의 내용은
해당 WP(07·08~12·14·15)에서 채운다. VM 디렉터리 이름은 Terraform이 VM
메타데이터로 넘기는 role 값(postgres-primary/-replica 포함)과 일치시킨다.
저장소는 공개이며 시크릿은 두지 않는다(값은 Secret Manager).
2026-09-23 20:38:25 +09:00