2025-12-25 20:32:57 +00:00
|
|
|
# Monitoring and Logging Setup
|
|
|
|
|
|
|
|
|
|
This directory contains Kubernetes manifests for monitoring and logging infrastructure.
|
|
|
|
|
|
|
|
|
|
## Components
|
|
|
|
|
|
|
|
|
|
### Prometheus
|
|
|
|
|
- **Purpose**: Metrics collection and alerting
|
|
|
|
|
- **Port**: 9090
|
|
|
|
|
- **Storage**: 50Gi PVC
|
|
|
|
|
- **Retention**: 30 days
|
|
|
|
|
|
|
|
|
|
### Grafana
|
|
|
|
|
- **Purpose**: Metrics visualization and dashboards
|
|
|
|
|
- **Port**: 3000
|
|
|
|
|
- **Storage**: 10Gi PVC
|
|
|
|
|
- **Default User**: admin (password from secret)
|
|
|
|
|
|
|
|
|
|
### Loki
|
|
|
|
|
- **Purpose**: Log aggregation
|
|
|
|
|
- **Port**: 3100
|
|
|
|
|
- **Storage**: 50Gi PVC
|
|
|
|
|
- **Retention**: 30 days
|
|
|
|
|
|
|
|
|
|
### Promtail
|
|
|
|
|
- **Purpose**: Log collection agent (DaemonSet)
|
|
|
|
|
- **Port**: 9080
|
|
|
|
|
- **Collects**: Pod logs from all nodes
|
|
|
|
|
|
|
|
|
|
## Deployment
|
|
|
|
|
|
|
|
|
|
### 1. Deploy Prometheus
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
kubectl apply -f k8s/monitoring/prometheus-configmap.yaml
|
|
|
|
|
kubectl apply -f k8s/monitoring/prometheus-deployment.yaml
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 2. Deploy Grafana
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
kubectl apply -f k8s/monitoring/grafana-deployment.yaml
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
**Note**: Make sure to set `grafana-password` in `veza-secrets`:
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
kubectl create secret generic veza-secrets \
|
|
|
|
|
--from-literal=grafana-password=your-secure-password \
|
|
|
|
|
-n veza-production \
|
|
|
|
|
--dry-run=client -o yaml | kubectl apply -f -
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 3. Deploy Loki
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
kubectl apply -f k8s/monitoring/loki-deployment.yaml
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### 4. Deploy Promtail
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
kubectl apply -f k8s/monitoring/promtail-deployment.yaml
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Access
|
|
|
|
|
|
|
|
|
|
### Prometheus
|
|
|
|
|
```bash
|
|
|
|
|
kubectl port-forward service/prometheus 9090:9090 -n veza-production
|
|
|
|
|
# Access at http://localhost:9090
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Grafana
|
|
|
|
|
```bash
|
|
|
|
|
kubectl port-forward service/grafana 3000:3000 -n veza-production
|
|
|
|
|
# Access at http://localhost:3000
|
|
|
|
|
# Default credentials: admin / (from secret)
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Loki
|
|
|
|
|
```bash
|
|
|
|
|
kubectl port-forward service/loki 3100:3100 -n veza-production
|
|
|
|
|
# Access at http://localhost:3100
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Integration with Services
|
|
|
|
|
|
|
|
|
|
All services should expose metrics at `/metrics` endpoint. Prometheus will automatically discover and scrape them using Kubernetes service discovery.
|
|
|
|
|
|
|
|
|
|
### Adding Metrics to Services
|
|
|
|
|
|
|
|
|
|
1. **Backend API (Go)**: Already has Prometheus metrics via `internal/metrics/prometheus.go`
|
|
|
|
|
2. **Chat Server (Rust)**: Already has Prometheus metrics
|
|
|
|
|
3. **Stream Server (Rust)**: Already has Prometheus metrics
|
|
|
|
|
|
|
|
|
|
### Viewing Logs in Grafana
|
|
|
|
|
|
|
|
|
|
1. Add Loki as a data source in Grafana:
|
|
|
|
|
- URL: `http://loki:3100`
|
|
|
|
|
- Access: Server (default)
|
|
|
|
|
|
|
|
|
|
2. Use LogQL queries:
|
|
|
|
|
```
|
|
|
|
|
{namespace="veza-production", app="veza-backend-api"}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
## Dashboards
|
|
|
|
|
|
|
|
|
|
Grafana will automatically provision dashboards from ConfigMaps. To add custom dashboards:
|
|
|
|
|
|
|
|
|
|
1. Create a ConfigMap with dashboard JSON
|
|
|
|
|
2. Mount it in Grafana deployment
|
|
|
|
|
3. Grafana will auto-discover and load it
|
|
|
|
|
|
|
|
|
|
## Alerts
|
|
|
|
|
|
|
|
|
|
Prometheus alerting rules can be added via ConfigMap. Create rules files and mount them in Prometheus deployment.
|
|
|
|
|
|
|
|
|
|
## Troubleshooting
|
|
|
|
|
|
|
|
|
|
### Check Prometheus Targets
|
|
|
|
|
```bash
|
|
|
|
|
kubectl port-forward service/prometheus 9090:9090 -n veza-production
|
|
|
|
|
# Visit http://localhost:9090/targets
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Check Promtail Logs
|
|
|
|
|
```bash
|
|
|
|
|
kubectl logs -f daemonset/promtail -n veza-production
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Check Loki Logs
|
|
|
|
|
```bash
|
|
|
|
|
kubectl logs -f deployment/loki -n veza-production
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### Verify Service Discovery
|
|
|
|
|
```bash
|
|
|
|
|
kubectl get pods -n veza-production -l app=veza-backend-api
|
2026-02-27 08:43:25 +00:00
|
|
|
kubectl get pods -n veza-production -l app=veza-stream-server
|
2025-12-25 20:32:57 +00:00
|
|
|
```
|
|
|
|
|
|