- Code\rebar_pipeline, review_pipeline, pier-program을 정션에서 실제 폴더로 전환 - Code\rhino_mcp 및 CLAUDE_rhino배경.md 추가, .mcp.json은 PYTHONPATH로 새 위치 사용 - pier-program 내부 .git 제거(이력은 backup\pier-program_20261028.bundle에 보관) - worktree 가이드 반영(CLAUDE.local.md, HANDOFF.md) - D:\Rhino-MCP 경로 참조를 새 위치로 치환 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
117 lines
3.8 KiB
YAML
117 lines
3.8 KiB
YAML
# kube-prometheus-stack Helm Values — Auto-generated by hmcmkit
|
|
# helm install monitoring prometheus-community/kube-prometheus-stack -f values.yaml
|
|
|
|
prometheus:
|
|
prometheusSpec:
|
|
retention: 15d
|
|
resources:
|
|
requests: { cpu: "500m", memory: "1Gi" }
|
|
limits: { cpu: "1", memory: "2Gi" }
|
|
serviceMonitorSelector: {}
|
|
podMonitorSelector: {}
|
|
|
|
grafana:
|
|
enabled: true
|
|
adminPassword: "${GRAFANA_ADMIN_PASSWORD}"
|
|
dashboardProviders:
|
|
dashboardproviders.yaml:
|
|
apiVersion: 1
|
|
providers:
|
|
- name: default
|
|
folder: ''
|
|
type: file
|
|
options:
|
|
path: /var/lib/grafana/dashboards/default
|
|
datasources:
|
|
datasources.yaml:
|
|
apiVersion: 1
|
|
datasources:
|
|
- name: Prometheus
|
|
type: prometheus
|
|
url: http://monitoring-kube-prometheus-prometheus:9090
|
|
isDefault: true
|
|
- name: Loki
|
|
type: loki
|
|
url: http://loki:3100
|
|
- name: Tempo
|
|
type: tempo
|
|
url: http://tempo:3100
|
|
- name: Sentry
|
|
type: sentry
|
|
url: "${SENTRY_API_URL}"
|
|
jsonData:
|
|
orgSlug: "${SENTRY_ORG_SLUG}"
|
|
secureJsonData:
|
|
authToken: "${SENTRY_AUTH_TOKEN}"
|
|
|
|
# Pre-built dashboards
|
|
dashboards:
|
|
default:
|
|
service-health:
|
|
json: |
|
|
# Service Health Dashboard — Error Rate + Latency + Sentry Issues
|
|
# Auto-generated by hmcmkit enterprise
|
|
error-tracking:
|
|
json: |
|
|
# Error Tracking Dashboard — Sentry integration
|
|
# Panels: Unresolved issues, Error rate trend, Top errors, Affected users
|
|
|
|
alertmanager:
|
|
config:
|
|
route:
|
|
receiver: 'slack-notifications'
|
|
group_by: ['alertname', 'namespace']
|
|
group_wait: 30s
|
|
group_interval: 5m
|
|
repeat_interval: 4h
|
|
routes:
|
|
- match:
|
|
severity: critical
|
|
receiver: 'pagerduty-critical'
|
|
- match:
|
|
severity: warning
|
|
receiver: 'slack-notifications'
|
|
receivers:
|
|
- name: 'slack-notifications'
|
|
slack_configs:
|
|
- api_url: "${SLACK_WEBHOOK_URL}"
|
|
channel: '#error-alerts'
|
|
title: '[{{ .Status }}] {{ .CommonLabels.alertname }}'
|
|
text: '{{ .CommonAnnotations.description }}'
|
|
- name: 'pagerduty-critical'
|
|
pagerduty_configs:
|
|
- service_key: "${PAGERDUTY_SERVICE_KEY}"
|
|
severity: critical
|
|
- name: 'self-healing-webhook'
|
|
webhook_configs:
|
|
- url: "${SELF_HEALING_WEBHOOK_URL}"
|
|
send_resolved: true
|
|
|
|
# Custom PrometheusRules for Self-Healing triggers
|
|
additionalPrometheusRules:
|
|
- name: self-healing-rules
|
|
groups:
|
|
- name: error-detection
|
|
rules:
|
|
- alert: HighErrorRate
|
|
expr: rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m]) > 0.01
|
|
for: 2m
|
|
labels:
|
|
severity: warning
|
|
annotations:
|
|
description: "Error rate > 1% for {{ $labels.service }} — Self-Healing candidate"
|
|
- alert: CriticalErrorRate
|
|
expr: rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m]) > 0.05
|
|
for: 2m
|
|
labels:
|
|
severity: critical
|
|
annotations:
|
|
description: "Error rate > 5% for {{ $labels.service }} — Auto-Rollback triggered"
|
|
- alert: HighLatency
|
|
expr: histogram_quantile(0.95, rate(http_request_duration_seconds_bucket[5m])) > 0.5
|
|
for: 5m
|
|
labels:
|
|
severity: warning
|
|
annotations:
|
|
description: "P95 latency > 500ms for {{ $labels.service }}"
|