En esta página, se explica cómo usar Cloud Logging y Cloud Monitoring, además de Prometheus y Grafana para el registro y la supervisión de la implementación de los clústeres de Anthos alojados en VMware (GKE On-Prem). Para obtener un resumen de las opciones de configuración disponibles, consulta la descripción general del registro y la supervisión.
Usa Cloud Logging y Cloud Monitoring
En las siguientes secciones, se explica cómo usar Cloud Logging y Cloud Monitoring con clústeres de Anthos alojados en VMware (GKE On-Prem).
Recursos supervisados
Los recursos supervisados son la forma en que Google representa recursos como clústeres, nodos, Pods y contenedores. Para obtener más información, consulta la documentación de los Tipos de recursos supervisados de Cloud Monitoring.
Para consultar los registros y las métricas, debes conocer al menos estas etiquetas de recursos:
project_id
: ID del proyecto para el ID del proyecto de supervisión de registro del clúster. Proporcionaste este valor en el campostackdriver.projectID
del archivo de configuración del clúster.location
: Es una región de Google Cloud en la que deseas almacenar los registros de Cloud Logging y las métricas de Cloud Monitoring. Es recomendable elegir una región cercana al centro de datos local. Proporcionaste este valor durante la instalación en el campostackdriver.clusterLocation
del archivo de configuración del clúster.cluster_name
: Es el nombre del clúster que elegiste cuando creaste el clúster.Puedes recuperar el valor
cluster_name
para el clúster de administrador o de usuario si inspeccionas el recurso personalizado de Stackdriver:kubectl -n kube-system get stackdrivers stackdriver -o yaml | grep 'clusterName:'
Accede a los datos de registro
Puedes acceder a los registros con el Explorador de registros de la consola de Google Cloud. Por ejemplo, para acceder a los registros de un contenedor, sigue estos pasos:
- En la consola de Google Cloud, abre el Visor de registros del proyecto.
- Para buscar registros de un contenedor, haz lo siguiente:
- Haz clic en el cuadro desplegable del catálogo de registros en la parte superior izquierda y selecciona Contenedor de Kubernetes.
- Selecciona el nombre del clúster, el espacio de nombres y un contenedor de la jerarquía.
Crea paneles para supervisar el estado del clúster
De manera predeterminada, los clústeres de Anthos alojados en VMware están configurados para supervisar las métricas del sistema y del contenedor. Después de crear un clúster (administrador o usuario), se recomienda crear los siguientes paneles con Cloud Monitoring para permitir que el equipo de operaciones de los clústeres de Anthos alojados en VMware supervise el estado del clúster:
- Panel del tiempo de actividad del plano de control
- Panel de estado del Pod
- Panel de estado de nodos
- Panel de estado de VM
Los paneles se crean de forma automática durante la instalación del clúster de administrador si Cloud Monitoring está habilitado.
En esta sección, se describe cómo crear estos paneles. Para obtener más información sobre el proceso de creación de paneles que se describe en las siguientes secciones, consulta Administra paneles mediante API.
Requisitos previos
La Cuenta de Google debe tener los siguientes permisos para crear paneles:
monitoring.dashboards.create
monitoring.dashboards.delete
monitoring.dashboards.update
Tendrás estos permisos si la cuenta tiene una de las siguientes funciones. Puedes verificar los permisos (en la consola de Google Cloud):
monitoring.dashboardEditor
monitoring.editor
editor
del proyectoowner
del proyecto
Además, para usar gcloud
(CLI de gcloud) a fin de crear paneles, tu Cuenta de Google debe tener el permiso serviceusage.services.use
.
Tu cuenta tendrá este permiso si tiene uno de los siguientes roles:
roles/serviceusage.serviceUsageConsumer
roles/serviceusage.serviceUsageAdmin
roles/owner
roles/editor
editor
del proyectoowner
del proyecto
Crea un panel de tiempo de actividad del plano de control
El plano de control de los clústeres de Anthos alojados en VMware está compuesto por el servidor de API, el programador, el administrador del controlador y etcd. Para supervisar el estado del plano de control, crea un panel que supervise el estado de estos componentes.
Descarga la configuración del panel:
control-plane-uptime.json
Ejecuta el siguiente comando para crear un panel personalizado con el archivo de configuración:
gcloud monitoring dashboards create --config-from-file=control-plane-uptime.json
En la consola de Google Cloud, selecciona Monitoring o usa el siguiente botón:
Selecciona Recursos > Paneles y consulta el panel llamado Tiempo de actividad del plano de control local de GKE. El tiempo de actividad del plano de control de cada clúster de usuario se recopila de espacios de nombres separados dentro del clúster de administrador. El campo namespace_name es el nombre del clúster de usuario.
De manera opcional, puedes crear políticas de alertas.
Crea un panel de estado de Pods
Para crear un panel que incluya la fase de cada Pod, los tiempos de reinicio y el uso de recursos de cada contenedor, sigue estos pasos.
Descarga la configuración del panel:
pod-status.json
Ejecuta el siguiente comando para crear un panel personalizado con el archivo de configuración:
gcloud monitoring dashboards create --config-from-file=pod-status.json
En la consola de Google Cloud, selecciona Monitoring o usa el siguiente botón:
Selecciona Recursos > Paneles y consulta el panel llamado Estado del pod de GKE On-Prem.
De manera opcional, puedes crear políticas de alertas.
Crea un panel de estado de nodo
Si deseas crear un panel de estado de nodo para supervisar su estado, la CPU, la memoria y el uso del disco, sigue estos pasos:
Descarga la configuración del panel:
node-status.json
Ejecuta el siguiente comando para crear un panel personalizado con el archivo de configuración:
gcloud monitoring dashboards create --config-from-file=node-status.json
En la consola de Google Cloud, selecciona Monitoring o usa el siguiente botón:
Selecciona Recursos > Paneles y consulta el panel llamado Estado del nodo de GKE On-Prem.
De manera opcional, puedes crear políticas de alertas.
Crea un panel de estado de VM
Un panel de estado de VM supervisa las señales de contención de recursos de CPU, memoria y disco para las VM del clúster de administrador y del usuario.
Para crear un panel de estado de la VM, sigue estos pasos:
Asegúrate de que
stackdriver.disableVsphereResourceMetrics
esté configurado como falso. Consulta el archivo de configuración del clúster de usuario.Descarga la configuración del panel:
vm-health-status.json
Ejecuta el siguiente comando para crear un panel personalizado con el archivo de configuración:
gcloud monitoring dashboards create --config-from-file=vm-health-status.json
En la consola de Google Cloud, selecciona Monitoring o usa el siguiente botón:
Selecciona Recursos > Paneles y visualiza el panel denominado Estado de la VM de GKE On-Prem.
De manera opcional, puedes crear políticas de alertas.
Configura los recursos del componente de Stackdriver
Cuando creas un clúster, los clústeres de Anthos alojados en VMware crean automáticamente un recurso personalizado de Stackdriver. Puedes editar la especificación en el recurso personalizado a fin de anular los valores predeterminados para las solicitudes de CPU y memoria y los límites de un componente de Stackdriver, y puedes anular por separado el tamaño y la clase de almacenamiento predeterminados.
Anula valores predeterminados para solicitudes y límites de CPU y memoria
Sigue estos pasos para anular estos valores predeterminados:
Abre tu recurso personalizado de Stackdriver en un editor de línea de comandos:
kubectl --kubeconfig=KUBECONFIG -n kube-system edit stackdriver stackdriver
donde KUBECONFIG es la ruta de acceso a tu archivo kubeconfig del clúster. Puede ser un clúster de administrador o de usuario.
En el recurso personalizado de Stackdriver, agrega el campo
resourceAttrOverride
en la secciónspec
:resourceAttrOverride: POD_NAME_WITHOUT_RANDOM_SUFFIX/CONTAINER_NAME: LIMITS_OR_REQUESTS: RESOURCE: RESOURCE_QUANTITY
Ten en cuenta que el campo
resourceAttrOverride
anula todos los límites y solicitudes predeterminados existentes para el componente que especificas. Un archivo de ejemplo se ve de la siguiente manera:apiVersion: addons.sigs.k8s.io/v1alpha1 kind: Stackdriver metadata: name: stackdriver namespace: kube-system spec: projectID: my-project clusterName: my-cluster clusterLocation: us-west-1a resourceAttrOverride: stackdriver-prometheus-k8s/prometheus-server: limits: cpu: 500m memory: 3000Mi requests: cpu: 300m memory: 2500Mi
Guarda los cambios y cierra el editor de la línea de comandos.
Verifica el estado de los Pods:
kubectl --kubeconfig=KUBECONFIG -n kube-system get pods | grep stackdriver
Por ejemplo, un Pod en buen estado se ve de la siguiente manera:
stackdriver-prometheus-k8s-0 2/2 Running 0 5d19h
Verifica las especificaciones del pod del componente para asegurarte de que los recursos estén configurados correctamente.
kubectl --kubeconfig=KUBECONFIG -n kube-system describe pod POD_NAME
En el ejemplo anterior,
POD_NAME
es el nombre del Pod que acabas de cambiar. Por ejemplo,stackdriver-prometheus-k8s-0
La respuesta es similar a la siguiente:
Name: stackdriver-prometheus-k8s-0 Namespace: kube-system ... Containers: prometheus-server: Limits: cpu: 500m memory: 3000Mi Requests: cpu: 300m memory: 2500Mi ...
Anula los valores predeterminados del tamaño de almacenamiento
Sigue estos pasos para anular estos valores predeterminados:
Abre tu recurso personalizado de Stackdriver en un editor de línea de comandos:
kubectl --kubeconfig=KUBECONFIG -n kube-system edit stackdriver stackdriver
Agrega el campo
storageSizeOverride
en la secciónspec
. Puedes usar el componentestackdriver-prometheus-k8s
ostackdriver-prometheus-app
. Esta sección tiene el siguiente formato:storageSizeOverride: STATEFULSET_NAME: SIZE
En este ejemplo, se usan el statefulset
stackdriver-prometheus-k8s
y el tamaño120Gi
.apiVersion: addons.sigs.k8s.io/v1alpha1 kind: Stackdriver metadata: name: stackdriver namespace: kube-system spec: projectID: my-project clusterName: my-cluster clusterLocation: us-west-1a storageSizeOverride: stackdriver-prometheus-k8s: 120Gi
Guarda las modificaciones y cierra el editor de la línea de comandos.
Verifica el estado de los Pods:
kubectl --kubeconfig=KUBECONFIG -n kube-system get pods | grep stackdriver
Por ejemplo, un Pod en buen estado se ve de la siguiente manera:stackdriver-prometheus-k8s-0 2/2 Running 0 5d19h
Verifica las especificaciones del Pod del componente para asegurarte de que el tamaño de almacenamiento se anule de forma correcta.
kubectl --kubeconfig=KUBECONFIG -n kube-system describe statefulset STATEFULSET_NAME
La respuesta es similar a la siguiente:
Volume Claims: Name: my-statefulset-persistent-volume-claim StorageClass: my-storage-class Labels: Annotations: Capacity: 120Gi Access Modes: [ReadWriteOnce]
Anula los valores predeterminados de la clase de almacenamiento
Requisito previo
Primero debes crear una StorageClass que desees usar.
A fin de anular la clase de almacenamiento predeterminada para volúmenes persistentes reclamados por componentes de registro y supervisión, sigue estos pasos:
Abre tu recurso personalizado de Stackdriver en un editor de línea de comandos:
kubectl --kubeconfig=KUBECONFIG -n kube-system edit stackdriver stackdriver
donde KUBECONFIG es la ruta de acceso a tu archivo kubeconfig del clúster. Puede ser un clúster de administrador o de usuario.
Agrega el campo
storageClassName
en la secciónspec
:storageClassName: STORAGECLASS_NAME
Ten en cuenta que el campo
storageClassName
anula la clase de almacenamiento predeterminada existente y se aplica a todos los componentes de registro y supervisión con volúmenes persistentes reclamados. Un archivo de ejemplo se ve de la siguiente manera:apiVersion: addons.sigs.k8s.io/v1alpha1 kind: Stackdriver metadata: name: stackdriver namespace: kube-system spec: projectID: my-project clusterName: my-cluster clusterLocation: us-west-1a proxyConfigSecretName: my-secret-name enableVPC:
optimizedMetrics: true storageClassName: my-storage-class Guarden los cambios.
Verifica el estado de los Pods:
kubectl --kubeconfig=KUBECONFIG -n kube-system get pods | grep stackdriver
Por ejemplo, un Pod en buen estado se ve de la siguiente manera:
stackdriver-prometheus-k8s-0 1/1 Running 0 5d19h
Verifica las especificaciones del pod de un componente para asegurarte de que la clase de almacenamiento esté configurada correctamente.
kubectl --kubeconfig=KUBECONFIG -n kube-system describe statefulset STATEFULSET_NAME
Por ejemplo, si usas el conjunto con estado
stackdriver-prometheus-k8s
, la respuesta se verá de la siguiente manera:Volume Claims: Name: stackdriver-prometheus-data StorageClass: my-storage-class Labels: Annotations: Capacity: 120Gi Access Modes: [ReadWriteOnce]
Accede a los datos de las métricas
Puedes elegir entre más de 1,500 métricas mediante el Explorador de métricas. Para acceder al Explorador de métricas, sigue estos pasos:
En la consola de Google Cloud, selecciona Monitoring o usa el siguiente botón:
Selecciona Recursos > Explorador de métricas.
Accede a los metadatos de Monitoring
Los metadatos se usan de forma indirecta a través de las métricas. Cuando filtras las métricas en el Explorador de métricas de Monitoring, verás opciones para filtrar métricas por metadata.systemLabels
y metadata.userLabels
. Las etiquetas del sistema son etiquetas, como el nombre del nodo y el nombre del Service de los Pods. Las etiquetas de usuario son etiquetas asignadas a los Pods en los archivos YAML de Kubernetes en la sección “metadatos” de la especificación del Pod.
Límites predeterminados de cuota de Cloud Monitoring
La supervisión de los clústeres de Anthos alojados en VMware tiene un límite predeterminado de 6,000 llamadas a la API por minuto para cada proyecto. Si superas este límite, es posible que no se muestren las métricas. Si necesitas un límite de supervisión más alto, solicita uno a través de la consola de Google Cloud.
Problema conocido: condición de error de Cloud Monitoring
(ID de problema 159761921)
En ciertas condiciones, el pod predeterminado de Cloud Monitoring, implementado de forma predeterminada en cada clúster nuevo, puede dejar de responder.
Cuando se actualizan los clústeres, por ejemplo, los datos de almacenamiento se pueden dañar cuando se reinician los pods en statefulset/prometheus-stackdriver-k8s
.
En particular, el pod de supervisión stackdriver-prometheus-k8s-0
puede originar un bucle cuando los datos dañados evitan que prometheus-stackdriver-sidecar
escriba en el PersistentVolume
de almacenamiento del clúster.
Sigue los pasos que aparecen a continuación para diagnosticar y recuperar el error de forma manual.
Diagnostica la falla de Cloud Monitoring
Cuando el pod de supervisión tenga errores, los registros informarán lo siguiente:
{"log":"level=warn ts=2020-04-08T22:15:44.557Z caller=queue_manager.go:534 component=queue_manager msg=\"Unrecoverable error sending samples to remote storage\" err=\"rpc error: code = InvalidArgument desc = One or more TimeSeries could not be written: One or more points were written more frequently than the maximum sampling period configured for the metric.: timeSeries[0-114]; Unknown metric: kubernetes.io/anthos/scheduler_pending_pods: timeSeries[196-198]\"\n","stream":"stderr","time":"2020-04-08T22:15:44.558246866Z"}
{"log":"level=info ts=2020-04-08T22:15:44.656Z caller=queue_manager.go:229 component=queue_manager msg=\"Remote storage stopped.\"\n","stream":"stderr","time":"2020-04-08T22:15:44.656798666Z"}
{"log":"level=error ts=2020-04-08T22:15:44.663Z caller=main.go:603 err=\"corruption after 29032448 bytes: unexpected non-zero byte in padded page\"\n","stream":"stderr","time":"2020-04-08T22:15:44.663707748Z"}
{"log":"level=info ts=2020-04-08T22:15:44.663Z caller=main.go:605 msg=\"See you next time!\"\n","stream":"stderr","time":"2020-04-08T22:15:44.664000941Z"}
Recuperación del error de Cloud Monitoring
Para recuperar manualmente Cloud Monitoring, haz lo siguiente:
Detén la supervisión del clúster. Reduce el operador
stackdriver
para evitar la conciliación de la supervisión:kubectl --kubeconfig /ADMIN_CLUSTER_KUBCONFIG --namespace kube-system scale deployment stackdriver-operator --replicas 0
Borra las cargas de trabajo de la canalización de supervisión:
kubectl --kubeconfig /ADMIN_CLUSTER_KUBCONFIG --namespace kube-system delete statefulset stackdriver-prometheus-k8s
Borre las canalizaciones de supervisión de PersistentVolumeClaims (PVC):
kubectl --kubeconfig /ADMIN_CLUSTER_KUBCONFIG --namespace kube-system delete pvc -l app=stackdriver-prometheus-k8s
Reinicia la supervisión del clúster. Escala verticalmente el operador de Stackdriver para volver a instalar una nueva canalización de supervisión y reanudar la conciliación:
kubectl --kubeconfig /ADMIN_CLUSTER_KUBCONFIG --namespace kube-system scale deployment stackdriver-operator --replicas=1
Prometheus y Grafana
En las siguientes secciones, se explica cómo usar Prometheus y Grafana con clústeres de Anthos alojados en VMware.
Habilita Prometheus y Grafana
A partir de la versión 1.2 de los clústeres de Anthos alojados en VMware, puedes elegir si deseas habilitar o inhabilitar Prometheus y Grafana. En los clústeres de usuario nuevos, Prometheus y Grafana están inhabilitados de forma predeterminada.
El clúster de usuario tiene un objeto Monitoring llamado
monitoring-sample
. Abre el objeto para editarlo:kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] edit \ monitoring monitoring-sample --namespace kube-system
En el ejemplo anterior, [USER_CLUSTER_KUBECONFIG] es el archivo kubeconfig para el clúster de usuario.
Para habilitar Prometheus y Grafana, establece
enablePrometheus
entrue
. Para inhabilitar Prometheus y Grafana, estableceenablePrometheus
enfalse
:apiVersion: addons.k8s.io/v1alpha1 kind: Monitoring metadata: labels: k8s-app: monitoring-operator name: monitoring-sample namespace: kube-system spec: channel: stable ... enablePrometheus: true
Cierra la sesión de edición para guardar los cambios.
Problema conocido
En los clústeres de usuario, Prometheus y Grafana se inhabilitan de forma automática durante la actualización. Sin embargo, los datos y las métricas de configuración no se pierden.
Para solucionar este problema, después de la actualización, abre monitoring-sample
a fin de editarlo y establece enablePrometheus
en true
.
Accede a las métricas de supervisión desde los paneles de Grafana
Grafana muestra las métricas recopiladas de los clústeres. Para ver estas métricas, debes acceder a los paneles de Grafana:
Obtén el nombre del Pod de Grafana que se ejecuta en el espacio de nombres
kube-system
de un clúster de usuario:kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system get pods
En el ejemplo anterior, [USER_CLUSTER_KUBECONFIG] es el archivo kubeconfig del clúster de usuario.
El Pod de Grafana tiene un servidor HTTP que escucha en el puerto localhost 3000 de TCP. Reenvía un puerto local al puerto 3000 en el Pod para que puedas ver los paneles de Grafana desde un navegador web.
Por ejemplo, supongamos que el nombre del Pod es
grafana-0
. Para reenviar el puerto 50000 al puerto 3000 en el Pod, ingresa este comando:kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system port-forward grafana-0 50000:3000
Desde un navegador web, ve a
http://localhost:50000
.En la página de acceso, accede
admin
para el nombre de usuario y la contraseña.Si el acceso se realiza correctamente, verás un mensaje para cambiar la contraseña. Después de cambiar la contraseña predeterminada, se debe cargar el panel principal de Grafana del clúster de usuario.
Para acceder a otros paneles, haz clic en el menú desplegable Página principal en la esquina superior izquierda de la página.
Para ver un ejemplo del uso de Grafana, consulta Crea un panel de Grafana.
Accede a las alertas
Prometheus Alertmanager recopila alertas del servidor de Prometheus. Puedes ver estas alertas en un panel de Grafana. Para ver las alertas, debes acceder al panel:
El contenedor en el Pod
alertmanager-0
escucha en el puerto TCP 9093. Reenvía un puerto local al puerto 9093 en el Pod:kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] port-forward \ -n kube-system alertmanager-0 50001:9093
Desde un navegador web, ve a
http://localhost:50001
.
Cambia la configuración de Prometheus Alertmanager
Puedes cambiar la configuración predeterminada de Prometheus Alertmanager si editas el archivo monitoring.yaml
del clúster de usuario. Debes hacerlo si deseas enviar alertas a un destino específico, en lugar de mantenerlas en el panel. Puedes obtener información sobre cómo configurar Alertmanager en la documentación de Configuración de Prometheus.
Para cambiar la configuración de Alertmanager, sigue estos pasos:
Realiza una copia del archivo de manifiesto
monitoring.yaml
del clúster de usuario:kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system \ get monitoring monitoring-sample -o yaml > monitoring.yaml
Para configurar Alertmanager, realiza los cambios en los campos de
spec.alertmanager.yml
. Cuando termines, guarda el manifiesto que cambiaste.Aplica el manifiesto al clúster:
kubectl apply --kubeconfig [USER_CLUSTER_KUBECONIFG] -f monitoring.yaml
Escala recursos de Prometheus
La configuración de supervisión predeterminada admite hasta cinco nodos. Para clústeres más grandes, puedes ajustar los recursos del servidor de Prometheus. La recomendación es de 50m núcleos de CPU y 500Mi de memoria por nodo de clúster. Asegúrate de que el clúster contenga dos nodos, cada uno con recursos suficientes para ajustarse a Prometheus. Para obtener más información, consulta Cambia el tamaño de un clúster de usuario.
Para cambiar los recursos del servidor de Prometheus, sigue estos pasos:
Realiza una copia del archivo de manifiesto
monitoring.yaml
del clúster de usuario:kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] -n kube-system get monitoring monitoring-sample -o yaml > monitoring.yaml
Para anular los recursos, realiza cambios en los campos de
spec.resourceOverride
. Cuando termines, guarda el manifiesto que cambiaste. Ejemplo:spec: resourceOverride: - component: Prometheus resources: requests: cpu: 300m memory: 3000Mi limits: cpu: 300m memory: 3000Mi
Aplica el manifiesto al clúster:
kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] apply -f monitoring.yaml
Crea un panel de Grafana
Implementaste una aplicación que expone una métrica, verificaste que la métrica se exponga y verificaste que Prometheus recopile la métrica. Ahora puedes agregar la métrica a nivel de la aplicación a un panel personalizado de Grafana.
Para crear un panel de Grafana, sigue estos pasos:
- Si es necesario, obtén acceso a Grafana.
- En el Panel principal, haz clic en el menú desplegable Página principal en la esquina superior izquierda de la página.
- En el menú del lado derecho, haz clic en Panel nuevo.
- En la sección Panel nuevo, haz clic en Grafo. Aparecerá un panel de grafo vacío.
- Haz clic en Título del panel y, luego, en Editar. En el panel Grafo inferior, se abrirá en la pestaña Métricas.
- En el menú desplegable Fuente de datos, selecciona usuario. Haz clic en Agregar consulta y, luego, ingresa
foo
en el campo búsqueda. - Haz clic en el botón Volver al panel en la esquina superior derecha de la pantalla. Se muestra el panel.
- Para guardar el panel, haz clic en Guardar panel en la esquina superior derecha de la pantalla. Elige un nombre para el panel y, luego, haz clic en Guardar.
Inhabilita la supervisión en el clúster
Para inhabilitar la supervisión en el clúster, revierte los cambios realizados en el objeto monitoring-sample
:
Abre el objeto
monitoring-sample
para editarlo:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG edit \ monitoring monitoring-sample --namespace kube-system
Reemplaza USER_CLUSTER_KUBECONFIG por el archivo kubeconfig del clúster de usuario.
Para inhabilitar Prometheus y Grafana, establece
enablePrometheus
enfalse
:apiVersion: addons.k8s.io/v1alpha1 kind: Monitoring metadata: labels: k8s-app: monitoring-operator name: monitoring-sample namespace: kube-system spec: channel: stable ... enablePrometheus: false
Cierra la sesión de edición para guardar los cambios.
Confirma que se borraron los conjuntos de estado
prometheus-0
,prometheus-1
ygrafana-0
:kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get pods --namespace kube-system
Ejemplo: agrega métricas a nivel de la aplicación a un panel de Grafana
En las siguientes secciones, se explica cómo agregar métricas en una aplicación. En esta sección, completarás las siguientes tareas:
- Implementar una aplicación de ejemplo que exponga una métrica llamada
foo
- Verificar que Prometheus exponga y extraiga la métrica
- Crear un panel de Grafana personalizado
Implementa la aplicación de ejemplo
La aplicación de ejemplo se ejecuta en un Pod único. El contenedor del Pod expone una métrica, foo
, con un valor constante de 40
.
Crea el siguiente manifiesto del Pod, pro-pod.yaml
:
apiVersion: v1
kind: Pod
metadata:
name: prometheus-example
annotations:
prometheus.io/scrape: 'true'
prometheus.io/port: '8080'
prometheus.io/path: '/metrics'
spec:
containers:
- image: registry.k8s.io/prometheus-dummy-exporter:v0.1.0
name: prometheus-example
command:
- /bin/sh
- -c
- ./prometheus_dummy_exporter --metric-name=foo --metric-value=40 --port=8080
Luego, aplica el manifiesto del Pod al clúster de usuario:
kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] apply -f pro-pod.yaml
Verifica que la métrica esté expuesta y recopilada
El contenedor en el Pod
prometheus-example
escucha en el puerto TCP 8080. Reenvía un puerto local al puerto 8080 en el Pod:kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] port-forward prometheus-example 50002:8080
Para verificar que la aplicación exponga la métrica, ejecuta el siguiente comando:
curl localhost:50002/metrics | grep foo
El comando muestra el siguiente resultado:
# HELP foo Custom metric # TYPE foo gauge foo 40
El contenedor en el Pod
prometheus-0
escucha en el puerto TCP 9090. Reenvía un puerto local al puerto 9090 en el Pod:kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] port-forward prometheus-0 50003:9090
Para verificar que Prometheus copie la métrica, navega a http://localhost:50003/targets, que te llevará al Pod
prometheus-0
en el grupo de destinoprometheus-io-pods
.Para ver las métricas en Prometheus, navega a http://localhost:50003/graph. En el campo de búsqueda, ingresa
foo
y, luego, haz clic en Ejecutar. La página debe mostrar la métrica.