Compare commits

..

4 Commits

Author SHA1 Message Date
223dd460b7 - old configmap 2025-12-10 20:41:57 +01:00
89672c0d9c + new configmap
* backup old configmap
2025-12-10 20:28:37 +01:00
fce3fd4ffd update readme 2025-12-10 20:28:14 +01:00
ec013b5e59 - kind configuration 2025-12-10 20:28:08 +01:00
3 changed files with 603 additions and 313 deletions

268
README.md
View File

@@ -0,0 +1,268 @@
# ArgoCD GitOps Repository
Ce dépôt contient une infrastructure GitOps complète basée sur ArgoCD avec monitoring intégré (Prometheus + Grafana) et extension de métriques.
## 🏗️ Architecture
Le projet utilise le pattern **App of Apps** d'ArgoCD pour gérer plusieurs applications de manière déclarative :
- **Root App** : Application principale qui déploie toutes les autres applications
- **Podinfo** : Application de démonstration Kubernetes
- **Kube-Prometheus-Stack** : Stack de monitoring complet (Prometheus + Grafana)
- **ArgoCD Metrics Server** : Extension pour visualiser les métriques dans l'UI ArgoCD
## 📋 Prérequis
- [KIND](https://kind.sigs.k8s.io/) - Kubernetes IN Docker
- [kubectl](https://kubernetes.io/docs/tasks/tools/) - CLI Kubernetes
- [ArgoCD CLI](https://argo-cd.readthedocs.io/en/stable/cli_installation/) (optionnel)
- [Kustomize](https://kubectl.docs.kubernetes.io/installation/kustomize/) (optionnel)
## 🚀 Déploiement rapide
### 1. Créer le cluster KIND
```bash
kind create cluster --config kind-config.yaml
```
Cette configuration crée un cluster avec :
- Port mappings pour HTTP (80), HTTPS (443) et services NodePort (30080)
- Label `ingress-ready=true` pour Ingress Controller
### 2. Installer ArgoCD
```bash
# Créer le namespace
kubectl create namespace argocd
# Installer ArgoCD
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
# Attendre que les pods soient prêts
kubectl wait --for=condition=ready pod -l app.kubernetes.io/name=argocd-server -n argocd --timeout=300s
```
### 3. Configurer ArgoCD avec les extensions
```bash
# Appliquer la configuration ArgoCD (extensions + RBAC)
kubectl apply -n argocd -f bootstrap/argocd-values.yaml
# Activer le proxy extension
kubectl patch configmap argocd-cmd-params-cm -n argocd --type merge -p '{"data":{"server.enable.proxy.extension":"true"}}'
# Redémarrer ArgoCD server pour appliquer les changements
kubectl rollout restart deployment argocd-server -n argocd
kubectl wait --for=condition=ready pod -l app.kubernetes.io/name=argocd-server -n argocd --timeout=300s
```
### 4. Déployer l'App of Apps
```bash
# Déployer la root application
kubectl apply -f apps/app-of-apps.yaml
# Vérifier le déploiement
kubectl get applications -n argocd
```
### 5. Accéder à ArgoCD UI
```bash
# Port-forward vers ArgoCD UI
kubectl port-forward svc/argocd-server -n argocd 8080:443
# Récupérer le mot de passe admin
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d
```
Accédez à https://localhost:8080 avec :
- **Username**: `admin`
- **Password**: (celui récupéré ci-dessus)
### 6. Accéder à Grafana
```bash
# Port-forward vers Grafana
kubectl port-forward -n monitoring svc/kube-prometheus-stack-grafana 3000:80
```
Accédez à http://localhost:3000 avec :
- **Username**: `admin`
- **Password**: `admin` (configuré dans `apps/prometheus.yaml`)
## 📊 Métriques dans ArgoCD
L'extension de métriques ajoute des onglets dans l'interface ArgoCD pour visualiser :
### Pour les Pods
- **Golden Signal** : CPU et Memory usage
- **Resource Usage** : CPU throttling, Memory working set, Memory cache
- **Network** : Bytes/Packets reçus et transmis, Erreurs réseau
- **Storage** : I/O disque (lectures/écritures), Utilisation du filesystem
### Pour les Deployments
- **Application Metrics** : HTTP latency, Error rates (4xx, 5xx), Traffic
- **Resource Usage** : CPU et Memory par deployment
## 🗂️ Structure du dépôt
```
.
├── apps/
│ ├── app-of-apps.yaml # Root application (App of Apps)
│ ├── metrics-server.yaml # ArgoCD metrics extension
│ ├── podinfo.yaml # Application de démo
│ └── prometheus.yaml # Stack Prometheus + Grafana
├── bootstrap/
│ └── argocd-values.yaml # Configuration ArgoCD (extensions + RBAC)
├── manifests/
│ └── metrics-server/
│ ├── configmap.yaml # Configuration des graphiques de métriques
│ ├── deployment.yaml # Déploiement du metrics server
│ ├── service.yaml # Service du metrics server
│ └── kustomization.yaml # Kustomize config
├── kind-config.yaml # Configuration du cluster KIND
└── README.md # Ce fichier
```
## 🔧 Configuration
### Modifier les métriques affichées
Éditez `manifests/metrics-server/configmap.yaml` pour ajouter ou modifier les graphiques de métriques.
Chaque graphique est défini par :
- `name` : Identifiant unique
- `title` : Titre affiché dans l'UI
- `description` : Description du graphique
- `graphType` : Type de graphique (`line`, `pie`)
- `queryExpression` : Requête PromQL
### Personnaliser Prometheus
Modifiez `apps/prometheus.yaml` pour :
- Ajuster les ressources (CPU, Memory)
- Changer la rétention des données
- Modifier le mot de passe Grafana
- Activer/désactiver Alertmanager
## 🛠️ Commandes utiles
### ArgoCD
```bash
# Lister toutes les applications
kubectl get applications -n argocd
# Voir les détails d'une application
kubectl describe application <app-name> -n argocd
# Forcer une synchronisation
kubectl patch application <app-name> -n argocd --type merge -p '{"operation":{"sync":{}}}'
# Voir les logs d'ArgoCD
kubectl logs -n argocd deployment/argocd-server -f
```
### Prometheus
```bash
# Port-forward vers Prometheus
kubectl port-forward -n monitoring svc/kube-prometheus-stack-prometheus 9090:9090
# Vérifier les targets Prometheus
kubectl port-forward -n monitoring svc/kube-prometheus-stack-prometheus 9090:9090
# Puis ouvrir http://localhost:9090/targets
```
### Metrics Server
```bash
# Voir les logs du metrics server
kubectl logs -n argocd deployment/argocd-metrics-server -f
# Tester l'endpoint du metrics server
kubectl port-forward -n argocd svc/argocd-metrics-server 9003:9003
curl http://localhost:9003/health
```
## 🐛 Dépannage
### Les métriques ne s'affichent pas
1. Vérifier que Prometheus collecte les métriques :
```bash
kubectl port-forward -n monitoring svc/kube-prometheus-stack-prometheus 9090:9090
# Ouvrir http://localhost:9090 et tester les requêtes PromQL
```
2. Vérifier que le metrics server est accessible :
```bash
kubectl get svc -n argocd argocd-metrics-server
kubectl logs -n argocd deployment/argocd-metrics-server
```
3. Vérifier la configuration ArgoCD :
```bash
kubectl get cm argocd-cm -n argocd -o yaml | grep -A 10 "extension.config"
kubectl get cm argocd-cmd-params-cm -n argocd -o yaml | grep proxy
```
### Applications en état "OutOfSync"
```bash
# Forcer une synchronisation
kubectl patch application <app-name> -n argocd --type merge -p '{"operation":{"sync":{}}}'
# Ou via ArgoCD CLI
argocd app sync <app-name>
```
### Prometheus ne démarre pas
Vérifiez les ressources disponibles :
```bash
kubectl describe pod -n monitoring -l app.kubernetes.io/name=prometheus
```
Si problème de ressources, ajustez dans `apps/prometheus.yaml` :
```yaml
resources:
requests:
cpu: 100m # Réduire si nécessaire
memory: 256Mi # Réduire si nécessaire
```
## 📚 Ressources
- [ArgoCD Documentation](https://argo-cd.readthedocs.io/)
- [ArgoCD Metrics Extension](https://github.com/argoproj-labs/argocd-extension-metrics)
- [Kube-Prometheus-Stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack)
- [KIND Documentation](https://kind.sigs.k8s.io/)
## 🔐 Sécurité
⚠️ **Attention** : Cette configuration est destinée à un environnement de développement/test.
Pour la production, pensez à :
- Changer les mots de passe par défaut (Grafana: `admin/admin`)
- Utiliser des Secrets Kubernetes au lieu de valeurs en clair
- Configurer TLS pour ArgoCD et Grafana
- Ajouter des NetworkPolicies
- Configurer des limites de ressources appropriées
- Activer l'authentification RBAC stricte
## 🤝 Contribution
Les contributions sont les bienvenues ! N'hésitez pas à :
1. Fork le projet
2. Créer une branche pour votre feature
3. Commiter vos changements
4. Pousser vers la branche
5. Ouvrir une Pull Request
## 📝 License
MIT License

View File

@@ -1,21 +0,0 @@
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: kind-016
nodes:
- role: control-plane
kubeadmConfigPatches:
- |
kind: InitConfiguration
nodeRegistration:
kubeletExtraArgs:
node-labels: "ingress-ready=true"
extraPortMappings:
- containerPort: 80
hostPort: 80
protocol: TCP
- containerPort: 443
hostPort: 443
protocol: TCP
- containerPort: 30080
hostPort: 30080
protocol: TCP

View File

@@ -13,83 +13,234 @@ data:
"dashboards": [ "dashboards": [
{ {
"groupKind": "pod", "groupKind": "pod",
"tabs": ["Golden Signal"], "tabs": ["Golden Signal", "Resource Usage", "Network", "Storage"],
"rows": [ "rows": [
{ {
"name": "pod", "name": "pod_cpu",
"title": "Pods", "title": "CPU Usage",
"tab": "Golden Signal", "tab": "Golden Signal",
"graphs": [ "graphs": [
{ {
"name": "pod_cpu_line", "name": "pod_cpu_line",
"title": "CPU", "title": "CPU Usage",
"description": "", "description": "CPU usage by pod over time",
"graphType": "line", "graphType": "line",
"metricName": "pod", "metricName": "pod",
"queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{.name}}\", image!=\"\", container!=\"POD\", container!=\"\", container_name!=\"POD\"}[5m])) by (pod)" "queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{.name}}\", image!=\"\", container!=\"POD\", container!=\"\"}[5m])) by (pod)"
}, },
{ {
"name": "pod_cpu_pie", "name": "pod_cpu_pie",
"title": "CPU Avg", "title": "CPU Distribution",
"description": "", "description": "Average CPU distribution",
"graphType": "pie", "graphType": "pie",
"metricName": "pod", "metricName": "pod",
"queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{.name}}\", container!=\"POD\", image!=\"\", container!=\"\", container_name!=\"POD\"}[5m])) by (pod)" "queryExpression": "avg(rate(container_cpu_usage_seconds_total{pod=~\"{{.name}}\", container!=\"POD\", image!=\"\", container!=\"\"}[5m])) by (pod)"
},
{
"name": "pod_memory_line",
"title": "Memory",
"description": "",
"graphType": "line",
"metricName": "pod",
"queryExpression": "sum(rate(container_memory_usage_bytes{pod=~\"{{.name}}\", container!=\"POD\", image!=\"\", container!=\"\", container_name!=\"POD\"}[5m])) by (pod)"
},
{
"name": "pod_memory_pie",
"title": "Mem Avg",
"description": "",
"graphType": "pie",
"metricName": "pod",
"queryExpression": "sum(rate(container_memory_usage_bytes{pod=~\"{{.name}}\", container!=\"POD\", image!=\"\", container!=\"\", container_name!=\"POD\"}[5m])) by (pod)"
} }
] ]
}, },
{ {
"name": "container", "name": "pod_memory",
"title": "Containers", "title": "Memory Usage",
"tab": "Golden Signal", "tab": "Golden Signal",
"graphs": [ "graphs": [
{ {
"name": "container_cpu_line", "name": "pod_memory_line",
"title": "CPU", "title": "Memory Usage",
"description": "", "description": "Memory usage by pod over time",
"graphType": "line", "graphType": "line",
"metricName": "container", "metricName": "pod",
"queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{.name}}\", image!=\"\", container!=\"POD\", container!=\"\", container_name!=\"POD\"}[5m])) by (container)" "queryExpression": "sum(container_memory_usage_bytes{pod=~\"{{.name}}\", container!=\"POD\", image!=\"\", container!=\"\"}) by (pod)"
}, },
{ {
"name": "container_cpu_pie", "name": "pod_memory_pie",
"title": "CPU Avg", "title": "Memory Distribution",
"description": "", "description": "Average memory distribution",
"graphType": "pie", "graphType": "pie",
"metricName": "container", "metricName": "pod",
"queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{.name}}\", image!=\"\",container!=\"POD\", container!=\"\", container_name!=\"POD\"}[5m])) by (container)" "queryExpression": "avg(container_memory_usage_bytes{pod=~\"{{.name}}\", container!=\"POD\", image!=\"\", container!=\"\"}) by (pod)"
}
]
}, },
{ {
"name": "container_memory_line", "name": "cpu_throttling",
"title": "Memory", "title": "CPU Throttling",
"description": "", "tab": "Resource Usage",
"graphs": [
{
"name": "cpu_throttle_line",
"title": "CPU Throttling",
"description": "CPU throttling periods",
"graphType": "line", "graphType": "line",
"metricName": "container", "metricName": "pod",
"queryExpression": "sum(rate(container_memory_usage_bytes{pod=~\"{{.name}}\", image!=\"\", container!=\"POD\", container!=\"\", container_name!=\"POD\"}[5m])) by (container)" "queryExpression": "sum(rate(container_cpu_cfs_throttled_periods_total{pod=~\"{{.name}}\", container!=\"POD\", container!=\"\"}[5m])) by (pod)"
}
]
}, },
{ {
"name": "container_memory_pie", "name": "memory_working_set",
"title": "Mem Avg", "title": "Memory Working Set",
"description": "", "tab": "Resource Usage",
"graphType": "pie", "graphs": [
"metricName": "container", {
"queryExpression": "sum(rate(container_memory_usage_bytes{pod=~\"{{.name}}\", image!=\"\", container!=\"POD\", container!=\"\", container_name!=\"POD\"}[5m])) by (container)" "name": "memory_working_set_line",
"title": "Memory Working Set",
"description": "Active memory in use",
"graphType": "line",
"metricName": "pod",
"queryExpression": "sum(container_memory_working_set_bytes{pod=~\"{{.name}}\", container!=\"POD\", container!=\"\"}) by (pod)"
}
]
},
{
"name": "memory_cache",
"title": "Memory Cache",
"tab": "Resource Usage",
"graphs": [
{
"name": "memory_cache_line",
"title": "Memory Cache",
"description": "Cached memory",
"graphType": "line",
"metricName": "pod",
"queryExpression": "sum(container_memory_cache{pod=~\"{{.name}}\", container!=\"POD\", container!=\"\"}) by (pod)"
}
]
},
{
"name": "network_receive",
"title": "Network Receive",
"tab": "Network",
"graphs": [
{
"name": "network_receive_bytes",
"title": "Network Receive Bytes/sec",
"description": "Network bytes received per second",
"graphType": "line",
"metricName": "pod",
"queryExpression": "sum(rate(container_network_receive_bytes_total{pod=~\"{{.name}}\"}[5m])) by (pod)"
},
{
"name": "network_receive_packets",
"title": "Network Receive Packets/sec",
"description": "Network packets received per second",
"graphType": "line",
"metricName": "pod",
"queryExpression": "sum(rate(container_network_receive_packets_total{pod=~\"{{.name}}\"}[5m])) by (pod)"
}
]
},
{
"name": "network_transmit",
"title": "Network Transmit",
"tab": "Network",
"graphs": [
{
"name": "network_transmit_bytes",
"title": "Network Transmit Bytes/sec",
"description": "Network bytes transmitted per second",
"graphType": "line",
"metricName": "pod",
"queryExpression": "sum(rate(container_network_transmit_bytes_total{pod=~\"{{.name}}\"}[5m])) by (pod)"
},
{
"name": "network_transmit_packets",
"title": "Network Transmit Packets/sec",
"description": "Network packets transmitted per second",
"graphType": "line",
"metricName": "pod",
"queryExpression": "sum(rate(container_network_transmit_packets_total{pod=~\"{{.name}}\"}[5m])) by (pod)"
}
]
},
{
"name": "network_errors",
"title": "Network Errors",
"tab": "Network",
"graphs": [
{
"name": "network_receive_errors",
"title": "Network Receive Errors",
"description": "Network receive errors",
"graphType": "line",
"metricName": "pod",
"queryExpression": "sum(rate(container_network_receive_errors_total{pod=~\"{{.name}}\"}[5m])) by (pod)"
},
{
"name": "network_transmit_errors",
"title": "Network Transmit Errors",
"description": "Network transmit errors",
"graphType": "line",
"metricName": "pod",
"queryExpression": "sum(rate(container_network_transmit_errors_total{pod=~\"{{.name}}\"}[5m])) by (pod)"
}
]
},
{
"name": "fs_reads",
"title": "Filesystem Reads",
"tab": "Storage",
"graphs": [
{
"name": "fs_read_bytes",
"title": "Filesystem Read Bytes/sec",
"description": "Filesystem bytes read per second",
"graphType": "line",
"metricName": "pod",
"queryExpression": "sum(rate(container_fs_reads_bytes_total{pod=~\"{{.name}}\", container!=\"POD\", container!=\"\"}[5m])) by (pod)"
},
{
"name": "fs_reads_total",
"title": "Filesystem Reads/sec",
"description": "Filesystem read operations per second",
"graphType": "line",
"metricName": "pod",
"queryExpression": "sum(rate(container_fs_reads_total{pod=~\"{{.name}}\", container!=\"POD\", container!=\"\"}[5m])) by (pod)"
}
]
},
{
"name": "fs_writes",
"title": "Filesystem Writes",
"tab": "Storage",
"graphs": [
{
"name": "fs_write_bytes",
"title": "Filesystem Write Bytes/sec",
"description": "Filesystem bytes written per second",
"graphType": "line",
"metricName": "pod",
"queryExpression": "sum(rate(container_fs_writes_bytes_total{pod=~\"{{.name}}\", container!=\"POD\", container!=\"\"}[5m])) by (pod)"
},
{
"name": "fs_writes_total",
"title": "Filesystem Writes/sec",
"description": "Filesystem write operations per second",
"graphType": "line",
"metricName": "pod",
"queryExpression": "sum(rate(container_fs_writes_total{pod=~\"{{.name}}\", container!=\"POD\", container!=\"\"}[5m])) by (pod)"
}
]
},
{
"name": "fs_usage",
"title": "Filesystem Usage",
"tab": "Storage",
"graphs": [
{
"name": "fs_usage_bytes",
"title": "Filesystem Usage",
"description": "Filesystem space used",
"graphType": "line",
"metricName": "pod",
"queryExpression": "sum(container_fs_usage_bytes{pod=~\"{{.name}}\", container!=\"POD\", container!=\"\"}) by (pod)"
},
{
"name": "fs_limit_bytes",
"title": "Filesystem Limit",
"description": "Filesystem capacity",
"graphType": "line",
"metricName": "pod",
"queryExpression": "sum(container_fs_limit_bytes{pod=~\"{{.name}}\", container!=\"POD\", container!=\"\"}) by (pod)"
} }
] ]
} }
@@ -97,195 +248,88 @@ data:
}, },
{ {
"groupKind": "deployment", "groupKind": "deployment",
"tabs": ["Golden Signal"], "tabs": ["Application Metrics", "Resource Usage"],
"rows": [ "rows": [
{ {
"name": "httplatency", "name": "http_latency",
"title": "HTTP Latency", "title": "HTTP Latency",
"tab": "Golden Signal", "tab": "Application Metrics",
"graphs": [ "graphs": [
{ {
"name": "http_200_latency", "name": "http_200_latency",
"title": "Latency", "title": "HTTP 200 Latency",
"description": "", "description": "HTTP request latency for successful requests",
"graphType": "line", "graphType": "line",
"metricName": "pod_template_hash", "metricName": "pod_template_hash",
"queryExpression": "sum(rate(http_server_requests_seconds_sum {namespace=\"{{.namespace}}\", status=\"200\"} [1m])) by (pod_template_hash)" "queryExpression": "sum(rate(http_server_requests_seconds_sum{namespace=\"{{.namespace}}\", status=\"200\"}[1m])) by (pod_template_hash)"
} }
] ]
}, },
{ {
"name": "httperrortate", "name": "http_error_rate",
"title": "HTTP Error Rate", "title": "HTTP Error Rate",
"tab": "Golden Signal", "tab": "Application Metrics",
"graphs": [ "graphs": [
{ {
"name": "http_error_rate_500", "name": "http_error_rate_500",
"title": "HTTP Error 500", "title": "HTTP 5xx Errors",
"description": "", "description": "HTTP 5xx server errors",
"graphType": "line", "graphType": "line",
"metricName": "pod_template_hash", "metricName": "pod_template_hash",
"queryExpression": "sum(rate(http_server_requests_seconds_count {namespace=\"{{.namespace}}\", status=\"500\"} [1m])) by (pod_template_hash)" "queryExpression": "sum(rate(http_server_requests_seconds_count{namespace=\"{{.namespace}}\", status=~\"5..\"}[1m])) by (pod_template_hash)"
}, },
{ {
"name": "http_error_rate_400", "name": "http_error_rate_400",
"title": "HTTP Error 400", "title": "HTTP 4xx Errors",
"description": "", "description": "HTTP 4xx client errors",
"graphType": "line", "graphType": "line",
"metricName": "pod_template_hash", "metricName": "pod_template_hash",
"queryExpression": "sum(rate(http_server_requests_seconds_count {namespace=\"{{.namespace}}\", status=\"404\"} [1m])) by (pod_template_hash)" "queryExpression": "sum(rate(http_server_requests_seconds_count{namespace=\"{{.namespace}}\", status=~\"4..\"}[1m])) by (pod_template_hash)"
} }
] ]
}, },
{ {
"name": "httptraffic", "name": "http_traffic",
"title": "HTTP Traffic", "title": "HTTP Traffic",
"tab": "Golden Signal", "tab": "Application Metrics",
"graphs": [ "graphs": [
{ {
"name": "http_traffic", "name": "http_traffic",
"title": "Traffic", "title": "Request Rate",
"description": "", "description": "HTTP requests per second",
"graphType": "line", "graphType": "line",
"metricName": "pod_template_hash", "metricName": "pod_template_hash",
"queryExpression": "sum(rate(http_server_requests_seconds_count {namespace=\"{{.namespace}}\"} [1m])) by (pod_template_hash)" "queryExpression": "sum(rate(http_server_requests_seconds_count{namespace=\"{{.namespace}}\"}[1m])) by (pod_template_hash)"
} }
] ]
}, },
{ {
"name": "pod", "name": "deployment_cpu",
"title": "Pods", "title": "CPU Usage",
"tab": "Golden Signal", "tab": "Resource Usage",
"graphs": [ "graphs": [
{ {
"name": "pod_cpu_line", "name": "deployment_cpu_line",
"title": "CPU", "title": "CPU Usage",
"description": "", "description": "CPU usage by deployment",
"graphType": "line", "graphType": "line",
"metricName": "pod", "metricName": "pod",
"queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{.name}}\", image!=\"\", container!=\"POD\", container!=\"\", container_name!=\"POD\"}[5m])) by (pod)" "queryExpression": "sum(rate(container_cpu_usage_seconds_total{namespace=\"{{.namespace}}\", pod=~\"{{.name}}.*\", image!=\"\", container!=\"POD\"}[5m])) by (pod)"
},
{
"name": "pod_cpu_pie",
"title": "CPU Avg",
"description": "",
"graphType": "pie",
"metricName": "pod",
"queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{.name}}\", container!=\"POD\", image!=\"\", container!=\"\", container_name!=\"POD\"}[5m])) by (pod)"
},
{
"name": "pod_memory_line",
"title": "Memory",
"description": "",
"graphType": "line",
"metricName": "pod",
"queryExpression": "sum(rate(container_memory_usage_bytes{pod=~\"{{.name}}\", container!=\"POD\", image!=\"\", container!=\"\", container_name!=\"POD\"}[5m])) by (pod)"
},
{
"name": "pod_memory_pie",
"title": "Mem Avg",
"description": "",
"graphType": "pie",
"metricName": "pod",
"queryExpression": "sum(rate(container_memory_usage_bytes{pod=~\"{{.name}}\", container!=\"POD\", image!=\"\", container!=\"\", container_name!=\"POD\"}[5m])) by (pod)"
}
]
} }
] ]
}, },
{ {
"groupKind": "rollout", "name": "deployment_memory",
"tabs": ["Golden Signal"], "title": "Memory Usage",
"rows": [ "tab": "Resource Usage",
{
"name": "httplatency",
"title": "HTTP Latency",
"tab": "Golden Signal",
"graphs": [ "graphs": [
{ {
"name": "http_200_latency", "name": "deployment_memory_line",
"title": "Latency", "title": "Memory Usage",
"description": "", "description": "Memory usage by deployment",
"graphType": "line",
"metricName": "rollout_template_hash",
"queryExpression": "sum(rate(http_server_requests_seconds_sum {namespace=\"{{.namespace}}\", status=\"200\"} [1m])) by (rollout_template_hash)"
}
]
},
{
"name": "httperrortate",
"title": "HTTP Error Rate",
"tab": "Golden Signal",
"graphs": [
{
"name": "http_error_rate_500",
"title": "HTTP Error 500",
"description": "",
"graphType": "line",
"metricName": "rollout_template_hash",
"queryExpression": "sum(rate(http_server_requests_seconds_count {namespace=\"{{.namespace}}\", status=\"500\"} [1m])) by (rollout_template_hash)"
},
{
"name": "http_error_rate_400",
"title": "HTTP Error 400",
"description": "",
"graphType": "line",
"metricName": "rollout_template_hash",
"queryExpression": "sum(rate(http_server_requests_seconds_count {namespace=\"{{.namespace}}\", status=\"404\"} [1m])) by (rollout_template_hash)"
}
]
},
{
"name": "httptraffic",
"title": "HTTP Traffic",
"tab": "Golden Signal",
"graphs": [
{
"name": "http_traffic",
"title": "Traffic",
"description": "",
"graphType": "line",
"metricName": "rollout_template_hash",
"queryExpression": "sum(rate(http_server_requests_seconds_count {namespace=\"{{.namespace}}\"} [1m])) by (rollout_template_hash)"
}
]
},
{
"name": "pod",
"title": "Pods",
"tab": "Golden Signal",
"graphs": [
{
"name": "pod_cpu_line",
"title": "CPU",
"description": "",
"graphType": "line", "graphType": "line",
"metricName": "pod", "metricName": "pod",
"queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{.name}}\", image!=\"\", container!=\"POD\", container!=\"\", container_name!=\"POD\"}[5m])) by (pod)" "queryExpression": "sum(container_memory_usage_bytes{namespace=\"{{.namespace}}\", pod=~\"{{.name}}.*\", container!=\"POD\", container!=\"\"}) by (pod)"
},
{
"name": "pod_cpu_pie",
"title": "CPU Avg",
"description": "",
"graphType": "pie",
"metricName": "pod",
"queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{.name}}\", container!=\"POD\", image!=\"\", container!=\"\", container_name!=\"POD\"}[5m])) by (pod)"
},
{
"name": "pod_memory_line",
"title": "Memory",
"description": "",
"graphType": "line",
"metricName": "pod",
"queryExpression": "sum(rate(container_memory_usage_bytes{pod=~\"{{.name}}\", container!=\"POD\", image!=\"\", container!=\"\", container_name!=\"POD\"}[5m])) by (pod)"
},
{
"name": "pod_memory_pie",
"title": "Mem Avg",
"description": "",
"graphType": "pie",
"metricName": "pod",
"queryExpression": "sum(rate(container_memory_usage_bytes{pod=~\"{{.name}}\", container!=\"POD\", image!=\"\", container!=\"\", container_name!=\"POD\"}[5m])) by (pod)"
} }
] ]
} }
@@ -294,9 +338,8 @@ data:
] ]
} }
], ],
"provider": "provider": {
{ "name": "default",
"Name": "default",
"default": true, "default": true,
"address": "http://kube-prometheus-stack-prometheus.monitoring.svc:9090" "address": "http://kube-prometheus-stack-prometheus.monitoring.svc:9090"
} }