Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jpiedramacas/kubectl-monitoreo
Monitoreo Métricas con Prometheus y Dashboard
https://github.com/jpiedramacas/kubectl-monitoreo
grafana k8s kubernetes prometheus
Last synced: 2 days ago
JSON representation
Monitoreo Métricas con Prometheus y Dashboard
- Host: GitHub
- URL: https://github.com/jpiedramacas/kubectl-monitoreo
- Owner: jpiedramacas
- Created: 2024-06-07T16:08:43.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2024-06-16T20:47:42.000Z (7 months ago)
- Last Synced: 2024-11-10T20:17:22.242Z (2 months ago)
- Topics: grafana, k8s, kubernetes, prometheus
- Homepage:
- Size: 74.2 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# README.md
## Despliegue de Grafana y Prometheus en Kubernetes
Este documento proporciona una guía detallada para desplegar Grafana y Prometheus en un clúster de Kubernetes. A continuación, se describen las configuraciones de cada archivo, la estructura del proyecto y los pasos necesarios para realizar el despliegue.
### Estructura del Proyecto
```bash
.
|-- GRAFANA
| |-- config-map.yaml
| |-- datasources-config-map.yaml
| |-- deployment.yaml
| `-- service.yaml
|-- PROMETHEUS
| |-- config-map.yaml
| |-- deployment.yaml
| `-- service.yaml
|-- README.md
|-- ingress.yaml
|-- kustomization.yaml
`-- namespace.yaml
```### Descripción de los Archivos
#### Directorio `GRAFANA`
- **config-map.yaml**: Configuración de Grafana.
- **datasources-config-map.yaml**: Configuración de las fuentes de datos de Grafana.
- **deployment.yaml**: Despliegue de Grafana.
- **service.yaml**: Servicio de Grafana.#### Directorio `PROMETHEUS`
- **config-map.yaml**: Configuración de Prometheus.
- **deployment.yaml**: Despliegue de Prometheus.
- **service.yaml**: Servicio de Prometheus.#### Archivos en la raíz
- **README.md**: Documentación del proyecto.
- **ingress.yaml**: Configuración de Ingress para acceder a Grafana y Prometheus.
- **kustomization.yaml**: Configuración de Kustomize para el despliegue.
- **namespace.yaml**: Creación del namespace para los recursos.### Pasos para el Despliegue
#### 1. Crear el Namespace
El namespace es un espacio de nombres en Kubernetes donde se agruparán todos los recursos relacionados con Grafana y Prometheus.
Archivo: `namespace.yaml`
```yaml
apiVersion: v1
kind: Namespace
metadata:
name: monitoring
```Comando:
```bash
kubectl apply -f namespace.yaml
```#### 2. Desplegar Prometheus
##### Configuración
Archivo: `PROMETHEUS/config-map.yaml`
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: prometheus-config
namespace: monitoring
data:
prometheus.yml: |
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
```Archivo: `PROMETHEUS/deployment.yaml`
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: prometheus
namespace: monitoring
spec:
replicas: 1
selector:
matchLabels:
app: prometheus
template:
metadata:
labels:
app: prometheus
spec:
containers:
- name: prometheus
image: prom/prometheus
args:
- "--config.file=/etc/prometheus/prometheus.yml"
ports:
- containerPort: 9090
volumeMounts:
- name: config-volume
mountPath: /etc/prometheus
volumes:
- name: config-volume
configMap:
name: prometheus-config
```Archivo: `PROMETHEUS/service.yaml`
```yaml
apiVersion: v1
kind: Service
metadata:
name: prometheus
namespace: monitoring
spec:
selector:
app: prometheus
ports:
- protocol: TCP
port: 9090
targetPort: 9090
```Comandos:
```bash
kubectl apply -f PROMETHEUS/config-map.yaml
kubectl apply -f PROMETHEUS/deployment.yaml
kubectl apply -f PROMETHEUS/service.yaml
```#### 3. Desplegar Grafana
##### Configuración
Archivo: `GRAFANA/config-map.yaml`
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: grafana-config
namespace: monitoring
data:
grafana.ini: |
[security]
admin_user = admin
admin_password = admin
```Archivo: `GRAFANA/datasources-config-map.yaml`
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: grafana-datasources
namespace: monitoring
data:
datasources.yml: |
apiVersion: 1
datasources:
- name: Prometheus
type: prometheus
url: http://prometheus:9090
access: proxy
isDefault: true
```Archivo: `GRAFANA/deployment.yaml`
```yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: grafana
namespace: monitoring
spec:
replicas: 1
selector:
matchLabels:
app: grafana
template:
metadata:
labels:
app: grafana
spec:
containers:
- name: grafana
image: grafana/grafana
ports:
- containerPort: 3000
volumeMounts:
- name: config-volume
mountPath: /etc/grafana
- name: datasources-volume
mountPath: /etc/grafana/provisioning/datasources
volumes:
- name: config-volume
configMap:
name: grafana-config
- name: datasources-volume
configMap:
name: grafana-datasources
```Archivo: `GRAFANA/service.yaml`
```yaml
apiVersion: v1
kind: Service
metadata:
name: grafana
namespace: monitoring
spec:
selector:
app: grafana
ports:
- protocol: TCP
port: 3000
targetPort: 3000
```Comandos:
```bash
kubectl apply -f GRAFANA/config-map.yaml
kubectl apply -f GRAFANA/datasources-config-map.yaml
kubectl apply -f GRAFANA/deployment.yaml
kubectl apply -f GRAFANA/service.yaml
```#### 4. Configurar Ingress
Archivo: `ingress.yaml`
```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: monitoring-ingress
namespace: monitoring
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: grafana.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: grafana
port:
number: 3000
- host: prometheus.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: prometheus
port:
number: 9090
```Comando:
```bash
kubectl apply -f ingress.yaml
```#### 5. Aplicar la configuración con Kustomize
Archivo: `kustomization.yaml`
```yaml
resources:
- namespace.yaml
- PROMETHEUS/config-map.yaml
- PROMETHEUS/deployment.yaml
- PROMETHEUS/service.yaml
- GRAFANA/config-map.yaml
- GRAFANA/datasources-config-map.yaml
- GRAFANA/deployment.yaml
- GRAFANA/service.yaml
- ingress.yaml
```Comando:
```bash
kubectl apply -k .
```### Resumen
1. Crear el namespace.
2. Desplegar Prometheus (config-map, deployment, service).
3. Desplegar Grafana (config-map, datasources-config-map, deployment, service).
4. Configurar Ingress para acceder a Grafana y Prometheus.
5. Aplicar todas las configuraciones con Kustomize.