Introducción
Las organizaciones que cada vez más adoptan Kubernetes para gestionar sus contenedores necesitan una solución para monitorear la salud de su sistema distribuido. Por esta razón, entra en juego Prometheus, una poderosa herramienta de código abierto para monitorear aplicaciones contenerizadas en su espacio de K8s.
En este tutorial, aprenderás cómo instalar y configurar el conjunto de herramientas de Prometheus para monitorear todos los pods de tu clúster DOKS, así como las métricas del estado del clúster de Kubernetes. Luego, conectarás Prometheus con Grafana para visualizar todas las métricas y realizar consultas utilizando el lenguaje PromQL. Finalmente, configurarás almacenamiento persistente para tu instancia de Prometheus, para persistir todos los datos de métricas del clúster DOKS y de la aplicación.
Tabla de contenidos
- Prerrequisitos
- Paso 1 – Instalar el conjunto de herramientas de Prometheus
- Paso 2 – Configurar Prometheus y Grafana
- Paso 3 – PromQL (Lenguaje de Consulta Prometheus)
- Paso 4 – Visualizar Métricas Usando Grafana
- Paso 5 – Configuración de Almacenamiento Persistente para Prometheus
- Paso 6 – Configuración de Almacenamiento Persistente para Grafana
- Conclusión
Requisitos previos
Para completar este tutorial, necesitarás:
- A Git client to clone the Starter Kit repository.
- Helm para gestionar lanzamientos y actualizaciones de pilas de Prometheus.
- Kubectl para interactuar con Kubernetes.
- Curl para probar los ejemplos (aplicaciones backend).
- La aplicación de muestra Emojivoto desplegada en el clúster. Sigue los pasos en el README de su repositorio.
Por favor, asegúrate de que el contexto de kubectl
esté configurado para apuntar a tu clúster de Kubernetes. Consulta el Paso 3 – Creación del Clúster DOKS del tutorial de configuración de DOKS.
Paso 1 – Instalación del stack Prometheus
En este paso, instalarás el stack kube-prometheus
, que es un conjunto completo de monitoreo para Kubernetes basado en opiniones. Incluye el Operador Prometheus, kube-state-metrics
, manifiestos preconstruidos, Exportadores de Nodo, API de Métricas, Administrador de Alertas y Grafana.
Vas a utilizar el gestor de paquetes Helm para realizar esta tarea. El gráfico Helm está disponible aquí para su estudio.
Primero, clona el repositorio del Kit de Inicio y cambia al directorio de tu copia local.
A continuación, agrega el repositorio Helm y lista los gráficos disponibles:
La salida se parece a lo siguiente:
NAME CHART VERSION APP VERSION DESCRIPTION
prometheus-community/alertmanager 0.18.1 v0.23.0 The Alertmanager handles alerts sent by client ...
prometheus-community/kube-prometheus-stack 35.5.1 0.56.3 kube-prometheus-stack collects Kubernetes manif...
...
El gráfico de interés es prometheus-community/kube-prometheus-stack
, que instalará Prometheus, Promtail, Alertmanager y Grafana en el clúster. Visita la página de kube-prometheus-stack para obtener más detalles sobre este gráfico.
Entonces, abre e inspecciona el archivo 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
proporcionado en el repositorio del Kit de Inicio usando un editor de tu elección (preferiblemente con soporte para linting YAML). Por defecto, las métricas de kubeSched
y etcd
están deshabilitadas: esos componentes son gestionados por DOKS
y no son accesibles para Prometheus. Ten en cuenta que el almacenamiento está configurado como emptyDir
. Significa que el almacenamiento se perderá si los pods de Prometheus se reinician (esto lo corregirás más tarde en la sección Configurando Almacenamiento Persistente para Prometheus).
[OPCIONAL] Si seguiste el Paso 4 – Agregar un nodo dedicado para observabilidad de la guía Configurando un Clúster de Kubernetes Administrado de DigitalOcean, necesitarás editar el archivo 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
proporcionado en el repositorio del Kit de Inicio y descomentar las secciones de affinity
tanto para Grafana como para Prometheus.
Explicaciones para la configuración anterior:
preferredDuringSchedulingIgnoredDuringExecution
– el planificador intenta encontrar un nodo que cumpla con la regla. Si no hay un nodo que coincida disponible, el planificador aún programa el Pod.preference.matchExpressions
– selector utilizado para hacer coincidir un nodo específico basado en un criterio. El ejemplo anterior indica al planificador que coloque las cargas de trabajo (por ejemplo, Pods) en nodos etiquetados usando la clave –preferred
y el valor –observability
.
Finalmente, instale el kube-prometheus-stack
usando Helm
:
A specific version of the Helm chart is used. In this case 35.5.1
was picked, which maps to the 0.56.3
version of the application (see output from Step 2.). It’s a good practice to lock on a specific version. This helps to have predictable results and allows versioning control via Git.
–create-namespace \
Ahora, verifique el estado de la versión de Helm del conjunto de Prometheus:
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
kube-prom-stack monitoring 1 2022-06-07 09:52:53.795003 +0300 EEST deployed kube-prometheus-stack-35.5.1 0.56.3
La salida se ve similar a lo siguiente. Observe el valor de la columna STATUS
– debería decir deployed
.
Vea qué recursos de Kubernetes están disponibles para Prometheus:
NAME READY STATUS RESTARTS AGE
pod/alertmanager-kube-prom-stack-kube-prome-alertmanager-0 2/2 Running 0 3m3s
pod/kube-prom-stack-grafana-8457cd64c4-ct5wn 2/2 Running 0 3m5s
pod/kube-prom-stack-kube-prome-operator-6f8b64b6f-7hkn7 1/1 Running 0 3m5s
pod/kube-prom-stack-kube-state-metrics-5f46fffbc8-mdgfs 1/1 Running 0 3m5s
pod/kube-prom-stack-prometheus-node-exporter-gcb8s 1/1 Running 0 3m5s
pod/kube-prom-stack-prometheus-node-exporter-kc5wz 1/1 Running 0 3m5s
pod/kube-prom-stack-prometheus-node-exporter-qn92d 1/1 Running 0 3m5s
pod/prometheus-kube-prom-stack-kube-prome-prometheus-0 2/2 Running 0 3m3s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/alertmanager-operated ClusterIP None <none> 9093/TCP,9094/TCP,9094/UDP 3m3s
service/kube-prom-stack-grafana ClusterIP 10.245.147.83 <none> 80/TCP 3m5s
service/kube-prom-stack-kube-prome-alertmanager ClusterIP 10.245.187.117 <none> 9093/TCP 3m5s
service/kube-prom-stack-kube-prome-operator ClusterIP 10.245.79.95 <none> 443/TCP 3m5s
service/kube-prom-stack-kube-prome-prometheus ClusterIP 10.245.86.189 <none> 9090/TCP 3m5s
service/kube-prom-stack-kube-state-metrics ClusterIP 10.245.119.83 <none> 8080/TCP 3m5s
service/kube-prom-stack-prometheus-node-exporter ClusterIP 10.245.47.175 <none> 9100/TCP 3m5s
service/prometheus-operated ClusterIP None <none> 9090/TCP 3m3s
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/kube-prom-stack-prometheus-node-exporter 3 3 3 3 3 <none> 3m5s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/kube-prom-stack-grafana 1/1 1 1 3m5s
deployment.apps/kube-prom-stack-kube-prome-operator 1/1 1 1 3m5s
deployment.apps/kube-prom-stack-kube-state-metrics 1/1 1 1 3m5s
NAME DESIRED CURRENT READY AGE
replicaset.apps/kube-prom-stack-grafana-8457cd64c4 1 1 1 3m5s
replicaset.apps/kube-prom-stack-kube-prome-operator-6f8b64b6f 1 1 1 3m5s
replicaset.apps/kube-prom-stack-kube-state-metrics-5f46fffbc8 1 1 1 3m5s
NAME READY AGE
statefulset.apps/alertmanager-kube-prom-stack-kube-prome-alertmanager 1/1 3m3s
statefulset.apps/prometheus-kube-prom-stack-kube-prome-prometheus 1/1 3m3s
Debería tener los siguientes recursos implementados: prometheus-node-exporter
, kube-prome-operator
, kube-prome-alertmanager
, kube-prom-stack-grafana
y kube-state-metrics
. La salida se ve similar a:
Luego, puede conectarse a Grafana (usando credenciales predeterminadas: admin/prom-operator
– consulte el archivo prom-stack-values-v35.5.1), mediante el reenvío de puertos a la máquina local:
No debe exponer Grafana a la red pública (por ejemplo, crear un mapeo de ingreso o un servicio de equilibrio de carga) con credenciales de inicio de sesión/contraseña predeterminadas
.
La instalación de Grafana viene con varios paneles de control. Abra un navegador web en localhost:3000. Una vez dentro, puede ir a Paneles -> Explorar y elegir diferentes paneles de control.
En la siguiente parte, descubrirá cómo configurar Prometheus para descubrir objetivos para el monitoreo. Como ejemplo, se utilizará la aplicación de muestra Emojivoto
. También aprenderá qué es un ServiceMonitor
.
Paso 2 – Configurar Prometheus y Grafana
Ya desplegó Prometheus y Grafana en el clúster. En este paso, aprenderá a usar un ServiceMonitor
. Un ServiceMonitor es una de las formas preferidas de indicar a Prometheus cómo descubrir un nuevo objetivo para monitoreo.
El despliegue de Emojivoto creado en el Paso 5 de la sección de Prerrequisitos proporciona el punto final /metrics
de forma predeterminada en el puerto 8801
a través de un servicio de Kubernetes.
A continuación, descubrirá los servicios de Emojivoto responsables de exponer datos de métricas para que los consuma Prometheus. Los servicios en cuestión se llaman emoji-svc
y voting-svc
(tenga en cuenta que se está utilizando el espacio de nombres emojivoto
):
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
emoji-svc ClusterIP 10.245.135.93 <none> 8080/TCP,8801/TCP 22h
voting-svc ClusterIP 10.245.164.222 <none> 8080/TCP,8801/TCP 22h
web-svc ClusterIP 10.245.61.229 <none> 80/TCP 22h
La salida se parece a lo siguiente:
A continuación, realice un port-forward
para inspeccionar las métricas:
Las métricas expuestas pueden visualizarse navegando con un navegador web a localhost o mediante curl:
La salida se parece a lo siguiente:
go_gc_duration_seconds{quantile="0"} 5.317e-05
go_gc_duration_seconds{quantile="0.25"} 0.000105305
go_gc_duration_seconds{quantile="0.5"} 0.000138168
go_gc_duration_seconds{quantile="0.75"} 0.000225651
go_gc_duration_seconds{quantile="1"} 0.016986437
go_gc_duration_seconds_sum 0.607979843
go_gc_duration_seconds_count 2097
# TYPE go_gc_duration_seconds resumen
Para inspeccionar las métricas del servicio voting-svc
, detenga el reenvío de puerto de emoji-svc
y realice los mismos pasos para el segundo servicio.
- A continuación, conecte Prometheus al servicio de métricas Emojivoto. Hay varias formas de hacer esto:
- <static_config> – permite especificar una lista de objetivos y un conjunto de etiquetas común para ellos.
- <kubernetes_sd_config> – permite recuperar objetivos de raspado desde la API REST de Kubernetes y mantenerse siempre sincronizado con el estado del clúster.
Prometheus Operator – simplifica la supervisión de Prometheus dentro de un clúster de Kubernetes mediante CRDs.
A continuación, hará uso del CRD ServiceMonitor
expuesto por Prometheus Operator para definir un nuevo objetivo para la supervisión.
Primero, cambie el directorio (si aún no lo ha hecho) donde se clonó el repositorio Git del Kit de Inicio:
A continuación, abre el archivo 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
proporcionado en el repositorio del Starter Kit utilizando un editor de texto de tu elección (preferiblemente con soporte para linting de YAML). Por favor, elimina los comentarios que rodean la sección additionalServiceMonitors
. La salida se verá similar a:
- Explicaciones para la configuración anterior:
selector -> matchExpressions
– indica aServiceMonitor
qué servicio monitorear. Se dirigirá a todos los servicios con la clave de etiquetaapp
y los valoresemoji-svc
yvoting-svc
. Las etiquetas se pueden obtener ejecutando:kubectl get svc --show-labels -n emojivoto
namespaceSelector
– aquí, quieres hacer coincidir el espacio de nombres donde se implementóEmojivoto
.
endpoints -> port
– hace referencia al puerto del servicio a monitorear.
Finalmente, aplica los cambios usando Helm:
A continuación, verifica si el objetivo Emojivoto
se ha agregado a Prometheus para ser raspado. Crea un reenvío de puerto para Prometheus en el puerto 9090
:
Abre un navegador web en localhost:9090. Luego, navega hasta la página Status -> Targets, e inspecciona los resultados (nota la ruta serviceMonitor/monitoring/emojivoto-monitor/0
):
Hay 2 entradas bajo los objetivos descubiertos porque la implementación de Emojivoto
consiste en 2 servicios que exponen el punto de métricas.
En el siguiente paso, descubrirás PromQL junto con algunos ejemplos simples, para comenzar y familiarizarte con el lenguaje.
Paso 3 – PromQL (Prometheus Query Language)
En este paso, aprenderás los conceptos básicos del Lenguaje de Consulta de Prometheus (PromQL). PromQL te ayuda a realizar consultas sobre diversas métricas provenientes de todos los Pods y aplicaciones de tu clúster DOKS.
PromQL es un DSL o Lenguaje Específico de Dominio que está diseñado específicamente para Prometheus y te permite hacer consultas sobre métricas. La expresión general define el valor final, mientras que las expresiones anidadas representan valores para argumentos y operandos. Para explicaciones más detalladas, visita la página oficial de PromQL.
A continuación, vas a inspeccionar una de las métricas de Emojivoto
, específicamente emojivoto_votes_total
, que representa el número total de votos. Es un valor contador que aumenta con cada solicitud contra el punto final de votos de Emojivoto
.
Primero, crea un reenvío de puerto para Prometheus en el puerto 9090
:
A continuación, abre el navegador de expresiones.
emojivoto_votes_total{container="voting-svc", emoji=":100:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 20
emojivoto_votes_total{container="voting-svc", emoji=":bacon:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 17
emojivoto_votes_total{container="voting-svc", emoji=":balloon:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 21
emojivoto_votes_total{container="voting-svc", emoji=":basketball_man:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 10
emojivoto_votes_total{container="voting-svc", emoji=":beach_umbrella:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 10
emojivoto_votes_total{container="voting-svc", emoji=":beer:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 11
En el campo de entrada de consulta, pega emojivoto_votes_total
y presiona enter. La salida se verá similar a:
Navega hasta la aplicación Emojivoto
y desde la página de inicio haz clic en el emoji 100 para votar por él.
emojivoto_votes_total{container="voting-svc", emoji=":100:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 21
emojivoto_votes_total{container="voting-svc", emoji=":bacon:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 17
emojivoto_votes_total{container="voting-svc", emoji=":balloon:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 21
emojivoto_votes_total{container="voting-svc", emoji=":basketball_man:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 10
emojivoto_votes_total{container="voting-svc", emoji=":beach_umbrella:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 10
emojivoto_votes_total{container="voting-svc", emoji=":beer:", endpoint="prom", instance="10.244.25.31:8801", job="voting-svc", namespace="emojivoto", pod="voting-74ff7f8b55-jl6qs", service="voting-svc"} 11
Navega hasta la página de resultados de la consulta del Paso 3 y haz clic en el botón Ejecutar. Deberías ver que el contador del emoji 100 aumenta en uno. La salida se ve similar a:
PromQL agrupa datos similares en lo que se llama un vector. Como se ve arriba, cada vector tiene un conjunto de atributos que los diferencia entre sí. Puedes agrupar resultados basados en un atributo de interés. Por ejemplo, si solo te interesan las solicitudes que provienen del servicio voting-svc
, entonces por favor escribe lo siguiente en el campo de consulta:
emojivoto_votes_total{container="voting-svc", emoji=":100:", endpoint="prom", instance="10.244.6.91:8801", job="voting-svc", namespace="emojivoto", pod="voting-6548959dd7-hssh2", service="voting-svc"} 492
emojivoto_votes_total{container="voting-svc", emoji=":bacon:", endpoint="prom", instance="10.244.6.91:8801", job="voting-svc", namespace="emojivoto", pod="voting-6548959dd7-hssh2", service="voting-svc"} 532
emojivoto_votes_total{container="voting-svc", emoji=":balloon:", endpoint="prom", instance="10.244.6.91:8801", job="voting-svc", namespace="emojivoto", pod="voting-6548959dd7-hssh2", service="voting-svc"} 521
La salida se ve similar a (nota que selecciona solo los resultados que coinciden con tus criterios):
El resultado anterior muestra las solicitudes totales para cada Pod del despliegue Emojivoto
que emite métricas (que consta de 2).
Esto es solo una introducción muy simple a lo que es PromQL y a lo que es capaz de hacer. Pero puede hacer mucho más que eso, como contar métricas, calcular la tasa durante un intervalo predefinido, etc. Por favor, visita la página oficial de PromQL para más características del lenguaje.
En el siguiente paso, aprenderás cómo usar Grafana para visualizar métricas para la muestra de la aplicación Emojivoto
.
Paso 4 – Visualización de métricas utilizando Grafana
Aunque Prometheus tiene cierto soporte incorporado para visualizar datos, una mejor manera de hacerlo es a través de Grafana, que es una plataforma de código abierto para monitoreo y observabilidad, que te permite visualizar y explorar el estado de tu clúster.
La página oficial se describe como capaz de:
Consultar, visualizar, alertar y comprender tus datos sin importar dónde se almacenen.
No se necesitan pasos adicionales para instalar Grafana porque el Paso 1 – Instalación del conjunto Prometheus instaló Grafana por ti. Todo lo que tienes que hacer es un reenvío de puerto como se muestra a continuación y obtener acceso inmediato a los paneles (credenciales predeterminadas: admin/prom-monitor
):
Para ver todas las métricas de Emojivoto
, vas a utilizar uno de los paneles instalados por defecto desde Grafana.
Navega hasta la sección de Paneles de Grafana.
A continuación, busca el panel General/Kubernetes/Recursos de cómputo/Namespace (Pods) y accede a él.
Finalmente, selecciona la Fuente de datos de Prometheus y agrega el namespace emojivoto
.
Puedes jugar y agregar más paneles en Grafana para visualizar otras fuentes de datos, así como agruparlas según el alcance. Además, puedes explorar los paneles de control disponibles para Kubernetes del proyecto kube-mixin de Grafana.
En el siguiente paso, configurarás almacenamiento persistente para Prometheus utilizando el almacenamiento de bloques de DigitalOcean para conservar tus métricas de DOKS y de la aplicación en caso de reinicios del servidor o fallos del clúster.
Paso 5 – Configurar Almacenamiento Persistente para Prometheus
En este paso, aprenderás cómo habilitar almacenamiento persistente para Prometheus para que los datos de métricas se conserven en caso de reinicios del servidor o fallos del clúster.
Primero, necesitas una clase de almacenamiento para continuar. Ejecuta el siguiente comando para verificar cuál está disponible.
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
do-block-storage (default) dobs.csi.digitalocean.com Delete Immediate true 4d2h
La salida debería ser similar a la siguiente. Observa que el almacenamiento de bloques de DigitalOcean está disponible para que lo utilices.
A continuación, cambia el directorio (si aún no lo has hecho) donde se clonó el repositorio de Git del Kit de Inicio:
Entonces, abre el archivo 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
proporcionado en el repositorio del Kit de Inicio usando un editor de texto de tu elección (preferiblemente con soporte para linting YAML). Busca la línea storageSpec
y descomenta la sección requerida para Prometheus. La definición de storageSpec
debería lucir así:
- Explicaciones para la configuración anterior:
volumeClaimTemplate
– define un nuevo PVC.storageClassName
– define la clase de almacenamiento (debería usar el mismo valor que se muestra en la salida del comandokubectl get storageclass
).
resources
– establece el valor de solicitudes de almacenamiento. En este caso, se solicita una capacidad total de 5 Gi para el nuevo volumen.
Finalmente, aplica los ajustes usando Helm:
Después de completar los pasos anteriores, verifica el estado del PVC:
NAME STATUS VOLUME CAPACITY ACCESS MODES AGE
kube-prome-prometheus-0 Bound pvc-768d85ff-17e7-4043-9aea-4929df6a35f4 5Gi RWO do-block-storage 4d2h
A new Volume should appear in the Volumes web page from your DigitalOcean account panel:
La salida se verá similar a la siguiente. La columna STATUS
debería mostrar Bound
.
Paso 6 – Configurando Almacenamiento Persistente para Grafana
En este paso, aprenderás cómo habilitar el almacenamiento persistente para Grafana para que los gráficos se conserven a través de reinicios del servidor o en caso de fallos del clúster. Definirás una Reclamación de Volumen Persistente (PVC) de 5 Gi, utilizando el Almacenamiento en Bloque de DigitalOcean. Los siguientes pasos son iguales que el Paso 5 – Configuración de Almacenamiento Persistente para Prometheus.
Primero, abre el archivo 04-setup-observability/assets/manifests/prom-stack-values-v35.5.1.yaml
proporcionado en el repositorio del Kit de Inicio, utilizando un editor de texto de tu elección (preferiblemente con soporte para linting YAML). La sección de almacenamiento persistente para Grafana debería lucir así:
A continuación, aplica la configuración utilizando Helm:
Después de completar los pasos anteriores, verifica el estado del PVC:
NAME STATUS VOLUME CAPACITY ACCESS MODES AGE
kube-prom-stack-grafana Bound pvc-768d85ff-17e7-4043-9aea-4929df6a35f4 5Gi RWO do-block-storage 4d2h
A new Volume should appear in the Volumes web page from your DigitalOcean account panel:
La salida se verá similar a la siguiente. La columna STATUS
debería mostrar Bound
.
Mejores Prácticas para el Dimensionamiento de PV
- Para calcular el tamaño necesario para el volumen según tus necesidades, sigue el consejo y la fórmula oficial de la documentación:
- Prometheus almacena un promedio de solo 1-2 bytes por muestra. Por lo tanto, para planificar la capacidad de un servidor Prometheus, puedes usar la fórmula aproximada:
espacio_disco_necesario = tiempo_retención_segundos * muestras_ingestadas_por_segundo * bytes_por_muestra
Para reducir la tasa de muestras ingestadas, puedes reducir el número de series temporales que escaneas (menos objetivos o menos series por objetivo), o puedes aumentar el intervalo de escaneo. Sin embargo, reducir el número de series es probablemente más efectivo, debido a la compresión de muestras dentro de una serie.
Por favor, sigue la sección Aspectos Operativos para obtener más detalles sobre el tema.
En este tutorial, aprendiste cómo instalar y configurar el conjunto de herramientas Prometheus, luego usaste Grafana para instalar nuevos paneles y visualizar métricas de aplicaciones de clúster DOKS. También aprendiste cómo realizar consultas de métricas utilizando PromQL. Finalmente, configuraste y habilitaste almacenamiento persistente para Prometheus para almacenar las métricas de tu clúster.
- Aprender más
- Monitoreo y retención de registros de Kubernetes usando Grafana Loki y DigitalOcean Spaces
- Mejores prácticas en el monitoreo de un clúster de Kubernetes con Prometheus, Grafana y Loki
Configurar el monitoreo del clúster DOKS con Helm y el operador Prometheus