16 Supervisión y alertas #
En SUSE Enterprise Storage 7, cephadm distribuye una pila de alertas y supervisión. Los usuarios deben definir los servicios (como Prometheus, Alertmanager y Grafana) que desean distribuir con cephadm en un archivo de configuración YAML, o bien pueden utilizar la interfaz de línea de comandos para distribuirlos. Cuando se distribuyen varios servicios del mismo tipo, se distribuye una configuración de alta disponibilidad. El exportador de nodos es una excepción a esta regla.
Los siguientes servicios de supervisión se pueden distribuir con cephadm:
Prometheus es el kit de herramientas de supervisión y alertas. Recopila los datos proporcionados por los exportadores de Prometheus y activa alertas preconfiguradas si se alcanzan los umbrales predefinidos.
Alertmanager gestiona las alertas enviadas por el servidor de Prometheus. Desduplica, agrupa y dirige las alertas al receptor correcto. Por defecto, Ceph Dashboard se configura automáticamente como receptor.
Grafana es el software de visualización y alertas. Esta pila de supervisión no utiliza la función de alertas de Grafana. Para las alertas, se utiliza Alertmanager.
El exportador de nodos es un exportador de Prometheus que proporciona datos sobre el nodo en el que está instalado. Se recomienda instalar el exportador de nodos en todos los nodos.
El módulo de gestor de Prometheus proporciona un exportador de Prometheus para pasar los contadores de rendimiento de Ceph desde el punto de recopilación en ceph-mgr
.
La configuración de Prometheus, incluidos los destinos de scrape (métricas que proporcionan daemons), se configura automáticamente mediante cephadm. cephadm también distribuye una lista de alertas por defecto, por ejemplo, error de estado
, 10% de OSD inactivos
o pgs inactivos
.
Por defecto, el tráfico a Grafana se cifra con TLS. Puede proporcionar su propio certificado TLS o utilizar uno autofirmado. Si no se ha configurado ningún certificado personalizado antes de la distribución de Grafana, se crea y se configura automáticamente un certificado autofirmado para Grafana.
Los certificados personalizados para Grafana se pueden configurar mediante los comandos siguientes:
cephuser@adm >
ceph config-key set mgr/cephadm/grafana_key -i $PWD/key.pemcephuser@adm >
ceph config-key set mgr/cephadm/grafana_crt -i $PWD/certificate.pem
Alertmanager gestiona las alertas enviadas por el servidor de Prometheus. Se encarga de desduplicarlos, agruparlos y enrutarlos al receptor correcto. Las alertas se pueden silenciar mediante el Alertmanager, pero los silencios también se pueden gestionar mediante Ceph Dashboard.
Se recomienda que el exportador de nodos
se distribuya en todos los nodos. Esto se puede hacer mediante el archivo monitoring.yaml
con el tipo de servicio node-exporter
. Consulte el Sección 5.4.3.8, “Distribución de la pila de supervisión” para obtener más información sobre la distribución de servicios.
16.1 Configuración de imágenes personalizadas o locales #
En esta sección se describe cómo cambiar la configuración de las imágenes de contenedor que se utilizan al distribuir o actualizar los servicios. No incluye los comandos necesarios para distribuir o volver a distribuir servicios.
El método recomendado para distribuir la pila de supervisión consiste en aplicar su especificación como se describe en el Sección 5.4.3.8, “Distribución de la pila de supervisión”.
Para distribuir imágenes de contenedor personalizadas o locales, las imágenes deben definirse en cephadm. Para ello, deberá ejecutar el comando siguiente:
cephuser@adm >
ceph config set mgr mgr/cephadm/OPTION_NAME VALUE
Donde OPTION_NAME es uno de estos nombres:
container_image_prometheus
container_image_node_exporter
container_image_alertmanager
container_image_grafana
Si no se ha definido ninguna opción o si se ha eliminado el ajuste, se utilizan las imágenes siguientes como VALUE:
registry.suse.com/caasp/v4.5/prometheus-server:2.18.0
registry.suse.com/caasp/v4.5/prometheus-node-exporter:0.18.1
registry.suse.com/caasp/v4.5/prometheus-alertmanager:0.16.2
registry.suse.com/ses/7/ceph/grafana:7.0.3
Por ejemplo:
cephuser@adm >
ceph config set mgr mgr/cephadm/container_image_prometheus prom/prometheus:v1.4.1
Al definir una imagen personalizada, el valor por defecto se anula (pero no se sobrescribe). El valor por defecto cambia cuando hay actualizaciones disponibles. Al definir una imagen personalizada, no podrá actualizar automáticamente el componente para el que ha definido la imagen personalizada. Deberá actualizar manualmente la configuración (el nombre de la imagen y la etiqueta) para poder instalar actualizaciones.
Si decide seguir las recomendaciones, puede restablecer la imagen personalizada que haya definido anteriormente. Después, se volverá a utilizar el valor por defecto. Utilice ceph config rm
para restablecer la opción de configuración:
cephuser@adm >
ceph config rm mgr mgr/cephadm/OPTION_NAME
Por ejemplo:
cephuser@adm >
ceph config rm mgr mgr/cephadm/container_image_prometheus
16.2 Actualización de los servicios de supervisión #
Como se menciona en la Sección 16.1, “Configuración de imágenes personalizadas o locales”, cephadm incluye las URL de las imágenes de contenedor recomendadas y probadas, que se utilizan por defecto.
Al actualizar los paquetes de Ceph, se pueden incluir nuevas versiones de estas URL. Esto solo actualiza de dónde se extraen las imágenes del contenedor, pero no actualiza ningún servicio.
Después de actualizar las URL de las nuevas imágenes de contenedor, ya sea manualmente como se describe en la Sección 16.1, “Configuración de imágenes personalizadas o locales”, o automáticamente mediante una actualización del paquete de Ceph, los servicios de supervisión se pueden actualizar.
Para ello, utilice ceph orch redeploy
así:
cephuser@adm >
ceph orch redeploy node-exportercephuser@adm >
ceph orch redeploy prometheuscephuser@adm >
ceph orch redeploy alertmanagercephuser@adm >
ceph orch redeploy grafana
Actualmente no existe un comando único para actualizar todos los servicios de supervisión. El orden en el que se actualizan estos servicios no es importante.
Si utiliza imágenes de contenedor personalizadas, las URL especificadas para los servicios de supervisión no cambiarán automáticamente si se actualizan los paquetes de Ceph. Si ha especificado imágenes de contenedor personalizadas, deberá especificar manualmente las URL de las nuevas imágenes de contenedor. Este puede ser el caso si utiliza un registro de contenedor local.
En la Sección 16.1, “Configuración de imágenes personalizadas o locales”, encontrará las URL de las imágenes de contenedor recomendadas.
16.3 Inhabilitación de la supervisión #
Para inhabilitar la pila de supervisión, ejecute los comandos siguientes:
cephuser@adm >
ceph orch rm grafanacephuser@adm >
ceph orch rm prometheus --force # this will delete metrics data collected so farcephuser@adm >
ceph orch rm node-exportercephuser@adm >
ceph orch rm alertmanagercephuser@adm >
ceph mgr module disable prometheus
16.4 Configuración de Grafana #
El procesador final de Ceph Dashboard requiere la URL de Grafana para poder verificar la existencia de consolas de Grafana antes de que el procesador frontal las cargue. Debido a cómo se implementa Grafana en Ceph Dashboard, esto significa que se requieren dos conexiones en funcionamiento para poder ver los gráficos de Grafana en Ceph Dashboard:
El procesador final (módulo Ceph MGR) debe verificar la existencia del gráfico solicitado. Si esta petición se realiza correctamente, el procesador frontal sabe que puede acceder a Grafana de forma segura.
A continuación, el procesador frontal pide los gráficos de Grafana directamente desde el navegador del usuario mediante un
iframe
. Se accede directamente a la instancia de Grafana sin ningún desvío a través de Ceph Dashboard.
Ahora bien, puede darse el caso de que su entorno dificulte el acceso directo del navegador del usuario a la URL configurada en Ceph Dashboard. Para solucionar este problema, es posible configurar una URL independiente que se utilizará únicamente para indicar al procesador frontal (el navegador del usuario) qué URL debe utilizar para acceder a Grafana.
Para cambiar la URL que se devuelve al procesador frontal, emita el comando siguiente:
cephuser@adm >
ceph dashboard set-grafana-frontend-api-url GRAFANA-SERVER-URL
Si no se define ningún valor para esa opción, simplemente se recurrirá al valor de la opción GRAFANA_API_URL, que cephadm define de forma automática y actualiza periódicamente. Si se define, indicará al navegador que utilice esta URL para acceder a Grafana.
16.5 Configuración del módulo de gestor de Prometheus #
El módulo de gestor de Prometheus es un módulo de Ceph que amplía la funcionalidad de Ceph. El módulo lee metadatos de Ceph acerca de su estado y actividad, proporcionando los datos extraídos en un formato que Prometheus puede consumir.
Es necesario reiniciar el módulo de gestor de Prometheus para que se apliquen los cambios de configuración.
16.5.1 Configuración de la interfaz de red #
Por defecto, el módulo de gestor de Prometheus acepta peticiones HTTP en el puerto 9283 en todas las direcciones IPv4 e IPv6 del host. El puerto y la dirección de escucha se pueden configurar con ceph config-key set
, con las claves mgr/prometheus/server_addr
y mgr/prometheus/server_port
. Este puerto está indicado en el registro de Prometheus.
Para actualizar server_addr
, ejecute el comando siguiente:
cephuser@adm >
ceph config set mgr mgr/prometheus/server_addr 0.0.0.0
Para actualizar server_port
, ejecute el comando siguiente:
cephuser@adm >
ceph config set mgr mgr/prometheus/server_port 9283
16.5.2 Configuración de scrape_interval
#
Por defecto, el módulo de gestor de Prometheus se configura con un intervalo de scrape de 15 segundos. No se recomienda utilizar un intervalo inferior a 10 segundos. Para definir un intervalo diferente en el módulo de Prometheus, defina el valor que desee en scrape_interval
:
Para que funcione correctamente y no se produzcan problemas, el valor de scrape_interval
de este módulo siempre debe coincidir con el intervalo de scrape de Prometheus.
cephuser@adm >
ceph config set mgr mgr/prometheus/scrape_interval 15
16.5.3 Configuración de caché #
En clústeres grandes (de más de 1000 OSD), el tiempo necesario para obtener las métricas puede ser considerable. Sin la memoria caché, el módulo de gestor de Prometheus puede sobrecargar el gestor y provocar que las instancias de Ceph Manager no respondan o se bloqueen. Como resultado, la memoria caché está habilitada por defecto y no se puede inhabilitar, pero esto significa que la caché puede quedarse obsoleta. Se considera obsoleta cuando el tiempo para obtener las métricas de Ceph supera el valor de scrape_interval
configurado.
Si este es el caso, se registrará una advertencia y el módulo:
Responde con un código de estado HTTP 503 (servicio no disponible).
Devuelve el contenido de la caché, aunque esté obsoleta.
Este comportamiento se puede configurar mediante los comandos ceph config set
.
Para pedirle al módulo que responda con la indicación de que los datos posiblemente estén obsoletos, añada return
:
cephuser@adm >
ceph config set mgr mgr/prometheus/stale_cache_strategy return
Para pedirle al módulo que responda con servicio no disponible
, añada fail
:
cephuser@adm >
ceph config set mgr mgr/prometheus/stale_cache_strategy fail
16.5.4 Habilitación de la supervisión de imágenes RBD #
El módulo de gestor de Prometheus puede recopilar, opcionalmente, estadísticas de E/S por imagen RBD habilitando contadores de rendimiento de OSD dinámicos. Las estadísticas se recopilan para todas las imágenes de los repositorios especificados en el parámetro de configuración mgr/prometheus/rbd_stats_pools
.
El parámetro es una lista separada por comas o espacios de entradas pool[/namespace]
. Si no se especifica el espacio de nombres, las estadísticas se recopilan para todos los espacios de nombres del repositorio.
Por ejemplo:
cephuser@adm >
ceph config set mgr mgr/prometheus/rbd_stats_pools "pool1,pool2,poolN"
El módulo explora los repositorios y espacios de nombres especificados, crea una lista de todas las imágenes disponibles y la actualiza periódicamente. El intervalo se puede configurar mediante el parámetro mgr/prometheus/rbd_stats_pools_refresh_interval
(en segundos) y es de 300 segundos (cinco minutos) por defecto
Por ejemplo, si cambia el intervalo de sincronización a 10 minutos:
cephuser@adm >
ceph config set mgr mgr/prometheus/rbd_stats_pools_refresh_interval 600
16.6 Modelo de seguridad de Prometheus #
El modelo de seguridad de Prometheus presupone que los usuarios que no son de confianza tienen acceso al puesto final HTTP y los registros de Prometheus. Los usuarios que no son de confianza tienen acceso a todos los metadatos que Prometheus recopila y que se encuentran en la base de datos, además de a distinta información operativa y de depuración.
Sin embargo, la API HTTP de Prometheus está limitada a operaciones de solo lectura. Las configuraciones no se pueden cambiar mediante la API y los secretos no se revelan. Además, Prometheus tiene medidas integradas para mitigar el impacto de los ataques de denegación de servicio.
16.7 Receptor de alertas SNMP Alertmanager de Prometheus #
Si desea recibir una notificación sobre las alertas de Prometheus mediante alertas SNMP, puede instalar el receptor de alertas SNMP Alertmanager de Prometheus a través de cephadm. Para ello, debe crear un archivo de especificación de servicio y colocación con el contenido siguiente:
Para obtener más información sobre los archivos de servicio y colocación, consulte Sección 5.4.2, “Especificación del servicio y la colocación”.
service_type: container service_id: prometheus-webhook-snmp placement: ADD_PLACEMENT_HERE image: registry.suse.com/ses/7/prometheus-webhook-snmp:latest args: - "--publish 9099:9099" envs: - ARGS="--debug --snmp-host=ADD_HOST_GATEWAY_HERE" - RUN_ARGS="--metrics" EOF
Utilice esta especificación de servicio para que el servicio se ejecute con sus ajustes por defecto.
Debe publicar el puerto en el que escucha el receptor de Prometheus mediante el argumento de línea de comandos --publish PUERTO_DE_HOST:PUERTO_DE_CONTENEDOR
cuando se ejecuta el servicio, ya que el contenedor no expone automáticamente el puerto. Esto se puede hacer añadiendo las líneas siguientes a la especificación:
args: - "--publish 9099:9099"
Como alternativa, conecte el contenedor a la red del host mediante el argumento de línea de comandos --network=host
.
args: - "--network=host"
Si el receptor de mensajes de alerta SNMP no está instalado en el mismo host que el contenedor, también debe especificar el nombre completo del host SNMP. Utilice la pasarela de red del contenedor para poder recibir mensajes de alerta SNMP fuera del contenedor/host:
envs: - ARGS="--debug --snmp-host=CONTAINER_GATEWAY"
16.7.1 Configuración del servicio prometheus-webhook-snmp
#
El contenedor se puede configurar mediante variables de entorno o mediante un archivo de configuración.
Para las variables de entorno, utilice ARGS
para definir las opciones globales y RUN_ARGS
para las opciones del comando run
. Debe adaptar la especificación de servicio de la siguiente manera:
envs: - ARGS="--debug --snmp-host=CONTAINER_GATEWAY" - RUN_ARGS="--metrics --port=9101"
Para utilizar un archivo de configuración, la especificación de servicio debe adaptarse de la siguiente forma:
files: etc/prometheus-webhook-snmp.conf: - "debug: True" - "snmp_host: ADD_HOST_GATEWAY_HERE" - "metrics: True" volume_mounts: etc/prometheus-webhook-snmp.conf: /etc/prometheus-webhook-snmp.conf
Para distribuir, ejecute el comando siguiente:
cephuser@adm >
ceph orch apply -i SERVICE_SPEC_FILE
Consulte el Sección 5.4.3, “Distribución de servicios de Ceph” para obtener más información.
16.7.2 Configuración de Alertmanager de Prometheus para SNMP #
Por último, Alertmanager de Prometheus debe configurarse específicamente para las alertas SNMP. Si este servicio aún no se ha distribuido, cree un archivo de especificación de servicio. Debe sustituir IP_OR_FQDN
por la dirección IP o el nombre completo del host en el que se ha instalado el receptor de alertas SNMP Alertmanager de Prometheus. Por ejemplo:
Si ya ha distribuido este servicio, para asegurarse de que Alertmanager está configurado correctamente para SNMP, vuelva a distribuirlo con los ajustes siguientes:
service_type: alertmanager placement: hosts: - HOSTNAME webhook_configs: - 'http://IP_OR_FQDN:9099/'
Aplique la especificación de servicio con el comando siguiente:
cephuser@adm >
ceph orch apply -i SERVICE_SPEC_FILE