Compare commits
3 Commits
9e95556f8b
...
89672c0d9c
| Author | SHA1 | Date | |
|---|---|---|---|
| 89672c0d9c | |||
| fce3fd4ffd | |||
| ec013b5e59 |
268
README.md
268
README.md
@@ -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
|
||||||
|
|||||||
@@ -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
|
|
||||||
@@ -5,300 +5,343 @@ metadata:
|
|||||||
data:
|
data:
|
||||||
config.json: |
|
config.json: |
|
||||||
{
|
{
|
||||||
"prometheus": {
|
"prometheus": {
|
||||||
"applications": [
|
"applications": [
|
||||||
{
|
{
|
||||||
|
"name": "default",
|
||||||
|
"default": true,
|
||||||
|
"dashboards": [
|
||||||
|
{
|
||||||
|
"groupKind": "pod",
|
||||||
|
"tabs": ["Golden Signal", "Resource Usage", "Network", "Storage"],
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"name": "pod_cpu",
|
||||||
|
"title": "CPU Usage",
|
||||||
|
"tab": "Golden Signal",
|
||||||
|
"graphs": [
|
||||||
|
{
|
||||||
|
"name": "pod_cpu_line",
|
||||||
|
"title": "CPU Usage",
|
||||||
|
"description": "CPU usage by pod over time",
|
||||||
|
"graphType": "line",
|
||||||
|
"metricName": "pod",
|
||||||
|
"queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{.name}}\", image!=\"\", container!=\"POD\", container!=\"\"}[5m])) by (pod)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "pod_cpu_pie",
|
||||||
|
"title": "CPU Distribution",
|
||||||
|
"description": "Average CPU distribution",
|
||||||
|
"graphType": "pie",
|
||||||
|
"metricName": "pod",
|
||||||
|
"queryExpression": "avg(rate(container_cpu_usage_seconds_total{pod=~\"{{.name}}\", container!=\"POD\", image!=\"\", container!=\"\"}[5m])) by (pod)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "pod_memory",
|
||||||
|
"title": "Memory Usage",
|
||||||
|
"tab": "Golden Signal",
|
||||||
|
"graphs": [
|
||||||
|
{
|
||||||
|
"name": "pod_memory_line",
|
||||||
|
"title": "Memory Usage",
|
||||||
|
"description": "Memory usage by pod over time",
|
||||||
|
"graphType": "line",
|
||||||
|
"metricName": "pod",
|
||||||
|
"queryExpression": "sum(container_memory_usage_bytes{pod=~\"{{.name}}\", container!=\"POD\", image!=\"\", container!=\"\"}) by (pod)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "pod_memory_pie",
|
||||||
|
"title": "Memory Distribution",
|
||||||
|
"description": "Average memory distribution",
|
||||||
|
"graphType": "pie",
|
||||||
|
"metricName": "pod",
|
||||||
|
"queryExpression": "avg(container_memory_usage_bytes{pod=~\"{{.name}}\", container!=\"POD\", image!=\"\", container!=\"\"}) by (pod)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cpu_throttling",
|
||||||
|
"title": "CPU Throttling",
|
||||||
|
"tab": "Resource Usage",
|
||||||
|
"graphs": [
|
||||||
|
{
|
||||||
|
"name": "cpu_throttle_line",
|
||||||
|
"title": "CPU Throttling",
|
||||||
|
"description": "CPU throttling periods",
|
||||||
|
"graphType": "line",
|
||||||
|
"metricName": "pod",
|
||||||
|
"queryExpression": "sum(rate(container_cpu_cfs_throttled_periods_total{pod=~\"{{.name}}\", container!=\"POD\", container!=\"\"}[5m])) by (pod)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "memory_working_set",
|
||||||
|
"title": "Memory Working Set",
|
||||||
|
"tab": "Resource Usage",
|
||||||
|
"graphs": [
|
||||||
|
{
|
||||||
|
"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)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"groupKind": "deployment",
|
||||||
|
"tabs": ["Application Metrics", "Resource Usage"],
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"name": "http_latency",
|
||||||
|
"title": "HTTP Latency",
|
||||||
|
"tab": "Application Metrics",
|
||||||
|
"graphs": [
|
||||||
|
{
|
||||||
|
"name": "http_200_latency",
|
||||||
|
"title": "HTTP 200 Latency",
|
||||||
|
"description": "HTTP request latency for successful requests",
|
||||||
|
"graphType": "line",
|
||||||
|
"metricName": "pod_template_hash",
|
||||||
|
"queryExpression": "sum(rate(http_server_requests_seconds_sum{namespace=\"{{.namespace}}\", status=\"200\"}[1m])) by (pod_template_hash)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "http_error_rate",
|
||||||
|
"title": "HTTP Error Rate",
|
||||||
|
"tab": "Application Metrics",
|
||||||
|
"graphs": [
|
||||||
|
{
|
||||||
|
"name": "http_error_rate_500",
|
||||||
|
"title": "HTTP 5xx Errors",
|
||||||
|
"description": "HTTP 5xx server errors",
|
||||||
|
"graphType": "line",
|
||||||
|
"metricName": "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",
|
||||||
|
"title": "HTTP 4xx Errors",
|
||||||
|
"description": "HTTP 4xx client errors",
|
||||||
|
"graphType": "line",
|
||||||
|
"metricName": "pod_template_hash",
|
||||||
|
"queryExpression": "sum(rate(http_server_requests_seconds_count{namespace=\"{{.namespace}}\", status=~\"4..\"}[1m])) by (pod_template_hash)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "http_traffic",
|
||||||
|
"title": "HTTP Traffic",
|
||||||
|
"tab": "Application Metrics",
|
||||||
|
"graphs": [
|
||||||
|
{
|
||||||
|
"name": "http_traffic",
|
||||||
|
"title": "Request Rate",
|
||||||
|
"description": "HTTP requests per second",
|
||||||
|
"graphType": "line",
|
||||||
|
"metricName": "pod_template_hash",
|
||||||
|
"queryExpression": "sum(rate(http_server_requests_seconds_count{namespace=\"{{.namespace}}\"}[1m])) by (pod_template_hash)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "deployment_cpu",
|
||||||
|
"title": "CPU Usage",
|
||||||
|
"tab": "Resource Usage",
|
||||||
|
"graphs": [
|
||||||
|
{
|
||||||
|
"name": "deployment_cpu_line",
|
||||||
|
"title": "CPU Usage",
|
||||||
|
"description": "CPU usage by deployment",
|
||||||
|
"graphType": "line",
|
||||||
|
"metricName": "pod",
|
||||||
|
"queryExpression": "sum(rate(container_cpu_usage_seconds_total{namespace=\"{{.namespace}}\", pod=~\"{{.name}}.*\", image!=\"\", container!=\"POD\"}[5m])) by (pod)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "deployment_memory",
|
||||||
|
"title": "Memory Usage",
|
||||||
|
"tab": "Resource Usage",
|
||||||
|
"graphs": [
|
||||||
|
{
|
||||||
|
"name": "deployment_memory_line",
|
||||||
|
"title": "Memory Usage",
|
||||||
|
"description": "Memory usage by deployment",
|
||||||
|
"graphType": "line",
|
||||||
|
"metricName": "pod",
|
||||||
|
"queryExpression": "sum(container_memory_usage_bytes{namespace=\"{{.namespace}}\", pod=~\"{{.name}}.*\", container!=\"POD\", container!=\"\"}) by (pod)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"provider": {
|
||||||
"name": "default",
|
"name": "default",
|
||||||
"default": true,
|
"default": true,
|
||||||
"dashboards": [
|
"address": "http://kube-prometheus-stack-prometheus.monitoring.svc:9090"
|
||||||
{
|
|
||||||
"groupKind": "pod",
|
|
||||||
"tabs": ["Golden Signal"],
|
|
||||||
"rows": [
|
|
||||||
{
|
|
||||||
"name": "pod",
|
|
||||||
"title": "Pods",
|
|
||||||
"tab": "Golden Signal",
|
|
||||||
"graphs": [
|
|
||||||
{
|
|
||||||
"name": "pod_cpu_line",
|
|
||||||
"title": "CPU",
|
|
||||||
"description": "",
|
|
||||||
"graphType": "line",
|
|
||||||
"metricName": "pod",
|
|
||||||
"queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{.name}}\", image!=\"\", container!=\"POD\", container!=\"\", container_name!=\"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)"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "container",
|
|
||||||
"title": "Containers",
|
|
||||||
"tab": "Golden Signal",
|
|
||||||
"graphs": [
|
|
||||||
{
|
|
||||||
"name": "container_cpu_line",
|
|
||||||
"title": "CPU",
|
|
||||||
"description": "",
|
|
||||||
"graphType": "line",
|
|
||||||
"metricName": "container",
|
|
||||||
"queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{.name}}\", image!=\"\", container!=\"POD\", container!=\"\", container_name!=\"POD\"}[5m])) by (container)"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "container_cpu_pie",
|
|
||||||
"title": "CPU Avg",
|
|
||||||
"description": "",
|
|
||||||
"graphType": "pie",
|
|
||||||
"metricName": "container",
|
|
||||||
"queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{.name}}\", image!=\"\",container!=\"POD\", container!=\"\", container_name!=\"POD\"}[5m])) by (container)"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "container_memory_line",
|
|
||||||
"title": "Memory",
|
|
||||||
"description": "",
|
|
||||||
"graphType": "line",
|
|
||||||
"metricName": "container",
|
|
||||||
"queryExpression": "sum(rate(container_memory_usage_bytes{pod=~\"{{.name}}\", image!=\"\", container!=\"POD\", container!=\"\", container_name!=\"POD\"}[5m])) by (container)"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "container_memory_pie",
|
|
||||||
"title": "Mem Avg",
|
|
||||||
"description": "",
|
|
||||||
"graphType": "pie",
|
|
||||||
"metricName": "container",
|
|
||||||
"queryExpression": "sum(rate(container_memory_usage_bytes{pod=~\"{{.name}}\", image!=\"\", container!=\"POD\", container!=\"\", container_name!=\"POD\"}[5m])) by (container)"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"groupKind": "deployment",
|
|
||||||
"tabs": ["Golden Signal"],
|
|
||||||
"rows": [
|
|
||||||
{
|
|
||||||
"name": "httplatency",
|
|
||||||
"title": "HTTP Latency",
|
|
||||||
"tab": "Golden Signal",
|
|
||||||
"graphs": [
|
|
||||||
{
|
|
||||||
"name": "http_200_latency",
|
|
||||||
"title": "Latency",
|
|
||||||
"description": "",
|
|
||||||
"graphType": "line",
|
|
||||||
"metricName": "pod_template_hash",
|
|
||||||
"queryExpression": "sum(rate(http_server_requests_seconds_sum {namespace=\"{{.namespace}}\", status=\"200\"} [1m])) by (pod_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": "pod_template_hash",
|
|
||||||
"queryExpression": "sum(rate(http_server_requests_seconds_count {namespace=\"{{.namespace}}\", status=\"500\"} [1m])) by (pod_template_hash)"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "http_error_rate_400",
|
|
||||||
"title": "HTTP Error 400",
|
|
||||||
"description": "",
|
|
||||||
"graphType": "line",
|
|
||||||
"metricName": "pod_template_hash",
|
|
||||||
"queryExpression": "sum(rate(http_server_requests_seconds_count {namespace=\"{{.namespace}}\", status=\"404\"} [1m])) by (pod_template_hash)"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "httptraffic",
|
|
||||||
"title": "HTTP Traffic",
|
|
||||||
"tab": "Golden Signal",
|
|
||||||
"graphs": [
|
|
||||||
{
|
|
||||||
"name": "http_traffic",
|
|
||||||
"title": "Traffic",
|
|
||||||
"description": "",
|
|
||||||
"graphType": "line",
|
|
||||||
"metricName": "pod_template_hash",
|
|
||||||
"queryExpression": "sum(rate(http_server_requests_seconds_count {namespace=\"{{.namespace}}\"} [1m])) by (pod_template_hash)"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "pod",
|
|
||||||
"title": "Pods",
|
|
||||||
"tab": "Golden Signal",
|
|
||||||
"graphs": [
|
|
||||||
{
|
|
||||||
"name": "pod_cpu_line",
|
|
||||||
"title": "CPU",
|
|
||||||
"description": "",
|
|
||||||
"graphType": "line",
|
|
||||||
"metricName": "pod",
|
|
||||||
"queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{.name}}\", image!=\"\", container!=\"POD\", container!=\"\", container_name!=\"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",
|
|
||||||
"tabs": ["Golden Signal"],
|
|
||||||
"rows": [
|
|
||||||
{
|
|
||||||
"name": "httplatency",
|
|
||||||
"title": "HTTP Latency",
|
|
||||||
"tab": "Golden Signal",
|
|
||||||
"graphs": [
|
|
||||||
{
|
|
||||||
"name": "http_200_latency",
|
|
||||||
"title": "Latency",
|
|
||||||
"description": "",
|
|
||||||
"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",
|
|
||||||
"metricName": "pod",
|
|
||||||
"queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{.name}}\", image!=\"\", container!=\"POD\", container!=\"\", container_name!=\"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)"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
],
|
|
||||||
"provider":
|
|
||||||
{
|
|
||||||
"Name": "default",
|
|
||||||
"default": true,
|
|
||||||
"address": "http://kube-prometheus-stack-prometheus.monitoring.svc:9090"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
304
manifests/metrics-server/configmap.yaml.old
Normal file
304
manifests/metrics-server/configmap.yaml.old
Normal file
@@ -0,0 +1,304 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: argocd-metrics-server-configmap
|
||||||
|
data:
|
||||||
|
config.json: |
|
||||||
|
{
|
||||||
|
"prometheus": {
|
||||||
|
"applications": [
|
||||||
|
{
|
||||||
|
"name": "default",
|
||||||
|
"default": true,
|
||||||
|
"dashboards": [
|
||||||
|
{
|
||||||
|
"groupKind": "pod",
|
||||||
|
"tabs": ["Golden Signal"],
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"name": "pod",
|
||||||
|
"title": "Pods",
|
||||||
|
"tab": "Golden Signal",
|
||||||
|
"graphs": [
|
||||||
|
{
|
||||||
|
"name": "pod_cpu_line",
|
||||||
|
"title": "CPU",
|
||||||
|
"description": "",
|
||||||
|
"graphType": "line",
|
||||||
|
"metricName": "pod",
|
||||||
|
"queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{.name}}\", image!=\"\", container!=\"POD\", container!=\"\", container_name!=\"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)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "container",
|
||||||
|
"title": "Containers",
|
||||||
|
"tab": "Golden Signal",
|
||||||
|
"graphs": [
|
||||||
|
{
|
||||||
|
"name": "container_cpu_line",
|
||||||
|
"title": "CPU",
|
||||||
|
"description": "",
|
||||||
|
"graphType": "line",
|
||||||
|
"metricName": "container",
|
||||||
|
"queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{.name}}\", image!=\"\", container!=\"POD\", container!=\"\", container_name!=\"POD\"}[5m])) by (container)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "container_cpu_pie",
|
||||||
|
"title": "CPU Avg",
|
||||||
|
"description": "",
|
||||||
|
"graphType": "pie",
|
||||||
|
"metricName": "container",
|
||||||
|
"queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{.name}}\", image!=\"\",container!=\"POD\", container!=\"\", container_name!=\"POD\"}[5m])) by (container)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "container_memory_line",
|
||||||
|
"title": "Memory",
|
||||||
|
"description": "",
|
||||||
|
"graphType": "line",
|
||||||
|
"metricName": "container",
|
||||||
|
"queryExpression": "sum(rate(container_memory_usage_bytes{pod=~\"{{.name}}\", image!=\"\", container!=\"POD\", container!=\"\", container_name!=\"POD\"}[5m])) by (container)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "container_memory_pie",
|
||||||
|
"title": "Mem Avg",
|
||||||
|
"description": "",
|
||||||
|
"graphType": "pie",
|
||||||
|
"metricName": "container",
|
||||||
|
"queryExpression": "sum(rate(container_memory_usage_bytes{pod=~\"{{.name}}\", image!=\"\", container!=\"POD\", container!=\"\", container_name!=\"POD\"}[5m])) by (container)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"groupKind": "deployment",
|
||||||
|
"tabs": ["Golden Signal"],
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"name": "httplatency",
|
||||||
|
"title": "HTTP Latency",
|
||||||
|
"tab": "Golden Signal",
|
||||||
|
"graphs": [
|
||||||
|
{
|
||||||
|
"name": "http_200_latency",
|
||||||
|
"title": "Latency",
|
||||||
|
"description": "",
|
||||||
|
"graphType": "line",
|
||||||
|
"metricName": "pod_template_hash",
|
||||||
|
"queryExpression": "sum(rate(http_server_requests_seconds_sum {namespace=\"{{.namespace}}\", status=\"200\"} [1m])) by (pod_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": "pod_template_hash",
|
||||||
|
"queryExpression": "sum(rate(http_server_requests_seconds_count {namespace=\"{{.namespace}}\", status=\"500\"} [1m])) by (pod_template_hash)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "http_error_rate_400",
|
||||||
|
"title": "HTTP Error 400",
|
||||||
|
"description": "",
|
||||||
|
"graphType": "line",
|
||||||
|
"metricName": "pod_template_hash",
|
||||||
|
"queryExpression": "sum(rate(http_server_requests_seconds_count {namespace=\"{{.namespace}}\", status=\"404\"} [1m])) by (pod_template_hash)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "httptraffic",
|
||||||
|
"title": "HTTP Traffic",
|
||||||
|
"tab": "Golden Signal",
|
||||||
|
"graphs": [
|
||||||
|
{
|
||||||
|
"name": "http_traffic",
|
||||||
|
"title": "Traffic",
|
||||||
|
"description": "",
|
||||||
|
"graphType": "line",
|
||||||
|
"metricName": "pod_template_hash",
|
||||||
|
"queryExpression": "sum(rate(http_server_requests_seconds_count {namespace=\"{{.namespace}}\"} [1m])) by (pod_template_hash)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "pod",
|
||||||
|
"title": "Pods",
|
||||||
|
"tab": "Golden Signal",
|
||||||
|
"graphs": [
|
||||||
|
{
|
||||||
|
"name": "pod_cpu_line",
|
||||||
|
"title": "CPU",
|
||||||
|
"description": "",
|
||||||
|
"graphType": "line",
|
||||||
|
"metricName": "pod",
|
||||||
|
"queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{.name}}\", image!=\"\", container!=\"POD\", container!=\"\", container_name!=\"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",
|
||||||
|
"tabs": ["Golden Signal"],
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"name": "httplatency",
|
||||||
|
"title": "HTTP Latency",
|
||||||
|
"tab": "Golden Signal",
|
||||||
|
"graphs": [
|
||||||
|
{
|
||||||
|
"name": "http_200_latency",
|
||||||
|
"title": "Latency",
|
||||||
|
"description": "",
|
||||||
|
"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",
|
||||||
|
"metricName": "pod",
|
||||||
|
"queryExpression": "sum(rate(container_cpu_usage_seconds_total{pod=~\"{{.name}}\", image!=\"\", container!=\"POD\", container!=\"\", container_name!=\"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)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"provider":
|
||||||
|
{
|
||||||
|
"Name": "default",
|
||||||
|
"default": true,
|
||||||
|
"address": "http://kube-prometheus-stack-prometheus.monitoring.svc:9090"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user