feat(helm): Add observability support with ServiceMonitor and Grafana dashboard
Add comprehensive observability configuration to Helm chart: **Helm Values:** - Add observability configuration section for metrics, tracing, and logging - Add serviceMonitor configuration (disabled by default) - Add prometheusRule configuration (disabled by default) **Templates:** - Update deployment to include observability environment variables - Update deployment to expose metrics port (9090) - Update service to expose metrics port - Add ServiceMonitor template for Prometheus Operator - Add PrometheusRule template with critical and warning alerts **Dashboards:** - Add comprehensive Grafana dashboard JSON with 6 panels: - Request Rate (by method and endpoint) - Error Rate (5xx errors percentage) - Request Latency (P50/P95 by endpoint) - Top MCP Tools (by invocation volume) - Nextcloud API Latency (by app) - Vector Sync Queue Size - Add dashboard README with import instructions **Alert Rules:** - Critical: Server down, high error rate (>5%), high latency (>1s), dependency down - Warning: Token validation errors (>1%), vector sync queue high (>100), Qdrant slow (>500ms) All features are opt-in via values.yaml configuration. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -56,6 +56,11 @@ spec:
|
||||
- name: http
|
||||
containerPort: {{ include "nextcloud-mcp-server.port" . }}
|
||||
protocol: TCP
|
||||
{{- if .Values.observability.metrics.enabled }}
|
||||
- name: metrics
|
||||
containerPort: {{ .Values.observability.metrics.port }}
|
||||
protocol: TCP
|
||||
{{- end }}
|
||||
env:
|
||||
# Nextcloud connection
|
||||
- name: NEXTCLOUD_HOST
|
||||
@@ -200,6 +205,27 @@ spec:
|
||||
value: {{ .Values.openai.baseUrl | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
# Observability
|
||||
- name: METRICS_ENABLED
|
||||
value: {{ .Values.observability.metrics.enabled | quote }}
|
||||
- name: METRICS_PORT
|
||||
value: {{ .Values.observability.metrics.port | quote }}
|
||||
{{- if .Values.observability.tracing.enabled }}
|
||||
- name: OTEL_ENABLED
|
||||
value: "true"
|
||||
- name: OTEL_EXPORTER_OTLP_ENDPOINT
|
||||
value: {{ .Values.observability.tracing.endpoint | quote }}
|
||||
- name: OTEL_SERVICE_NAME
|
||||
value: {{ .Values.observability.tracing.serviceName | quote }}
|
||||
- name: OTEL_TRACES_SAMPLER_ARG
|
||||
value: {{ .Values.observability.tracing.samplingRate | quote }}
|
||||
{{- end }}
|
||||
- name: LOG_FORMAT
|
||||
value: {{ .Values.observability.logging.format | quote }}
|
||||
- name: LOG_LEVEL
|
||||
value: {{ .Values.observability.logging.level | quote }}
|
||||
- name: LOG_INCLUDE_TRACE_CONTEXT
|
||||
value: {{ .Values.observability.logging.includeTraceContext | quote }}
|
||||
{{- with .Values.extraEnv }}
|
||||
{{- toYaml . | nindent 12 }}
|
||||
{{- end }}
|
||||
|
||||
Reference in New Issue
Block a user