Grafana: Alertas: Restricciones de hora del día

Creado en 16 nov. 2016  ·  83Comentarios  ·  Fuente: grafana/grafana

Restricciones de hora del día.

Vea dos formas en que esto podría implementarse.

1) Como condición de alerta
2) Como filtro en las notificaciones

arealerting typfeature-request

Comentario más útil

Como solución alternativa, usando Prometheus como backend:

  • Agregue la siguiente consulta a su métrica: hour() , que devuelve la hora del día (0-23). Puedes ocultarlo en el gráfico.
  • Agregue una condición adicional AND a su alerta, de modo que solo envíe una alerta si la consulta hour() está dentro del rango que desea (por ejemplo, horas de oficina).

Lo mismo se puede hacer con day_of_week() .

Todos 83 comentarios

¿Alguien ha encontrado una solución para este escenario? Me sorprende que solo 4 personas hayan votado a favor de este ticket, ya que toda la función de alerta se vuelve esencialmente inútil para mí a menos que mis sistemas estén activos las 24 horas del día, los 7 días de la semana. Siento que debo estar perdiendo alguna otra característica o técnica que todos los demás están haciendo para evitar este problema...

Tal como está ahora, tengo que desactivar todas las notificaciones de alerta o simplemente aceptar el hecho de que recibiré un montón de notificaciones falsas cuando mis procesos cierren EOD.

Realmente no intento sonar crítico, solo confundido sobre cómo todos los demás manejan estas alertas. Me encanta Grafana desde hace años, y he estado rastreando la función de alerta desde que se introdujo por primera vez en v4. Pero es un poco desconcertante cada vez que hay una actualización de alerta y esta limitación no se aborda.

@bblazei tienes razón! ¡Es una característica increíble que debe priorizarse y seguro que será útil para las personas!
@torkelo , ¿sabe cuándo se planeará esta característica?

No, no Eta en este momento, ya que no está en nuestra hoja de ruta para las próximas dos versiones (4.3 y 4.4)

Hmm bueno, eso es desafortunado. ¿Cómo recomendaría usar el marco de alertas en sistemas que no funcionan las 24 horas, los 7 días de la semana?

Esto es algo que nos gustaría mucho ya que necesitamos tener diferentes niveles de alerta dependiendo de la hora del día.

Estamos (no tan) esperando esto pacientemente también. Actualmente utilizamos gráficos curl to Slack periódicamente.

@torkelo torkelo. Ha pasado un tiempo que no veo una actualización sobre esto. también estamos buscando algo como si podemos deshabilitar las alertas de grafana por un tiempo específico. ¿es eso posible?

¿Alguien tiene alguna actualización para esta función?

Puedo pausar manualmente las alertas en la página Lista de alertas, pero (por ejemplo) durante nuestra copia de seguridad diaria del servidor de base de datos a las 2:30 a.m. recibimos una alerta sobre "Esperas de E/S de red en curso". Sin duda sería bueno crear alertas que no notifique durante ciertos períodos de tiempo.

¿Grafana admite una operación de módulo? Luego, debería poder usar la función de identidad para obtener el tiempo de Unix como una métrica adicional en su panel. Con la función de módulo, podría obtener el resto de la división del tiempo de Unix por 86400 (la cantidad de segundos en un día). Luego, podría agregar una condición de rango en la métrica de tiempo en su alerta. ¿Correcto?

¿Sería difícil agregar la operación de módulo para este propósito?

¡Realmente necesito esta característica!

¿Alguna actualización sobre esto? ¿Es un WIP o algo que todavía se está 'considerando' en este momento?

Realmente nos gustaría usar diferentes marcos de tiempo para ciertas alertas como el uso, que esperamos que esté por encima de cierto umbral durante el día pero no por la noche.

+1

+1

+1

¿Por qué la gente ( @bascarsija y @maizy) rechaza las solicitudes de la gente para esto?

las personas están "votando negativamente" estos mensajes "+1" que hacen que se envíen notificaciones por correo electrónico a todos los que están suscritos a este hilo. el efecto acumulativo de muchas personas que agregan estos mensajes "+1" a los hilos reduce significativamente el valor de la función de suscripción al hilo al reducir drásticamente la relación señal-ruido.

puede indicar su interés o acuerdo con propuestas específicas o comentarios hechos por otros sin activar dichas notificaciones por correo electrónico simplemente "votando a favor" o "votando en contra" a través de las reacciones. la muestra más destacada de solidaridad/interés agregado en un problema suele ser la reacción que cuenta con la descripción inicial/principal del problema; considere agregar sus reacciones allí.

francamente, este es un problema sistémico con Github: se aplica por igual a todos los hilos de problemas en todos los proyectos. encontrará muchas súplicas en los diversos hilos que solicitan dicho uso porque la interfaz de usuario de Github no informa a los usuarios de esta consecuencia ni la desalienta de ninguna manera obvia, y los usuarios que conocen el problema (y/o se ven afectados negativamente por él) son probablemente dude en proporcionar dicha retroalimentación agregando otro mensaje al hilo (disminuyendo así aún más la relación señal-ruido).

Gracias por la explicación. Supongo que las personas que publican esos +1 no lo habrían hecho si supieran que solo era una molestia. Publicar una breve explicación sobre eso podría haber detenido algunos de esos... así como mi pregunta. Pulgar hacia abajo podría significar varias cosas.

¿Alguna actualización sobre las alertas programadas durante una determinada hora del día, la semana, el mes y el año?

Como solución alternativa, usando Prometheus como backend:

  • Agregue la siguiente consulta a su métrica: hour() , que devuelve la hora del día (0-23). Puedes ocultarlo en el gráfico.
  • Agregue una condición adicional AND a su alerta, de modo que solo envíe una alerta si la consulta hour() está dentro del rango que desea (por ejemplo, horas de oficina).

Lo mismo se puede hacer con day_of_week() .

También necesitamos esta función si queremos poder ofrecer un servicio de 24 horas basado en diferentes equipos en el mundo... ¿hay algún plan para esto?

Mientras tanto, esta característica se está preparando, estoy tratando de usar una solución alternativa.

Ejemplo:

```
métrica A: production.application_a.actual_metric = 123 (Esta es mi métrica real)
métrica B: helper.time_helper.hour = 1 a 24 (métricas de tiempo falsas que se envían hora del día cada minuto a Graphite)

   alert requirement :

(la métrica A está por debajo de 100 Y la hora está dentro del rango 10 y 20)
O
(la métrica A está por debajo de 50 Y la hora está fuera del rango 10 y 20)
```

en otras palabras:

metric A threshold is 100 between 10AM to 8PM and it is 50 for rest of the time

Mi pregunta :

Para el escenario anterior, ¿puedo lograrlo con un solo panel gráfico o realmente tengo dos paneles gráficos diferentes, uno para el rango interno y el externo? ¿O hay alguna otra forma en grafana para lograr esto? (Nota: estoy usando grafito 0.9.)

image

También estoy esperando esta función, un enfoque interesante para enviar algunas métricas falsas a grafana... solo me pregunto qué opción agradable y simple sería generar las métricas.

+1 ¿Podemos simplemente tener una consulta arbitraria que podamos usar expresiones para limitar la condición de alerta?

hora entre 1 y 2 Y

¡+1 sería muy apreciado!

Solo un comentario sobre un trabajo rudimentario
Yo uso collectd/Influxdb
Tengo un proceso cron que escribe el valor de la hora en un archivo ext plano
El complemento de recopilación de tablas lee esto como Table_Value - Instancia "Hora"
En cualquier alerta donde necesito usar solo un rango, agrego la hora métrica (máx.) al tablero como una métrica oculta, luego en la alerta uso un valor de rango AND: solo se activa si la hora está entre X e Y
Lo mismo funciona en el día de la semana también.

Crudo pero efectivo

@torkelo, ¿ alguna estimación sobre cuándo podría implementarse esto?

No, lo siento, no está en la hoja de ruta del equipo central.

cualquier solución para evitar que se envíen alertas cuando una instancia de Cloud vm está programada para estar apagada debido a que está apagada. la mayoría de los sistemas tienen esto durante muchos años.
por favor agregue esto;) configuración de alerta de fatiga.

Tengo un proceso cron que escribe el valor de la hora en un archivo ext plano
En cualquier alerta donde necesito usar solo un rango, agrego la hora métrica (máx.) al tablero como una métrica oculta, luego en la alerta uso un valor de rango AND: solo se activa si la hora está entre X e Y

Esta es una solución bastante efectiva con una ventaja sutil pero útil sobre simplemente ignorar las alertas entre X - Y: si la situación no se rectifica antes de Y, recibo mi primera alerta en Y. Si simplemente ignoré las alertas entre X - Y, no sería alertado incluso después de Y (aunque supongo que uno podría usar la función "Enviar recordatorios").

Resultó que un trabajo cron no era necesario cuando se usaba grafito como fuente de datos:

Agregué una métrica C de timeSlice(isNonNull(identity(1)), '02:30 -9h', '06:00 -9h') y agregué la condición de alerta AND max() OF query(C, 1m, now) HAS NO VALUE para excluir alertas entre las 2:30 y las 6:00. (Ese -9h se debe a que mi desplazamiento de zona horaria es +9:00 y timeSlice() parece estar en UTC).

EDITAR: Después de algunos días de probar esto, ese truco timeSlice() no parece estar funcionando... Parece estar atascado en el tiempo que guardé en el tablero y no se mueve a cada día.

Esta es una gran característica que falta. ¿Por qué no está esto en la hoja de ruta? Parece trivial de implementar.

Realmente gracias a @albertvaka por su solución usando la función hora() de Prometheus.

Desafortunadamente, parece que no hay forma de considerar automáticamente la zona horaria cuando se usa la función hora () (y es un problema cuando hay horario de verano). Solo podríamos calcular la zona horaria manualmente en función del mes y el día, pero no es una buena solución.

Más información sobre prometeo/prometeo#4160

sería bueno poder establecer diferentes niveles de umbral para diferentes períodos de fecha y hora
por ejemplo, está bien si casi no hay eventos de actividad del usuario por la noche, pero no está bien durante el día

¿Hay algún progreso en esta solicitud?

No estoy seguro, pero no pude encontrar nada nuevo relacionado con esto en Grafana 6.1.3

Me encantaría ver esta función implementada. Usamos Grafana para alertas críticas de negocios. Sería genial no notificar a las personas de la empresa cuando no es necesario, por ejemplo, en su tiempo libre.

+1, me encantaría que esto se implementara.

+1 Dios no lo quiera, olvidé pausar el monitoreo antes de irme a casa el fin de semana, volveré el lunes a miles de correos electrónicos para conocer el comportamiento esperado

+1, implemente esto lo antes posible: tendré que transferir todo a Thingsboard si esto no se implementa pronto https://thingsboard.io/

@torkelo , ¿podría darnos alguna información sobre este tema? ¿Hay algún avance?

Hola, ¿hay alguien con suficiente conocimiento para implementarlo y hacer una solicitud de extracción?

Puedo decirle lo que hice para "obtener" esta característica. No puedo compartir el código, ya que es propietario, pero puedo compartir una idea, que no está sujeta a ninguna tontería propietaria * * en absoluto.

Implementé un par de funciones Lambda [SomeCloudProviderOfYourChoice] programadas por cron que usaban la API REST de Grafana para actualizar paneles completos de cargas JSON exportadas con sus alertas y umbrales dependiendo de los períodos activo/inactivo del sistema en consecuencia (nuestro sistema está activo de 8 a 10 horas al día fuera de los fines de semana). Funciona bastante bien.

Pero.

Siempre que trabaje con paneles en Grafana Web GUI, debe tener en cuenta que cada vez que realice cambios en cualquier cosa, es OBLIGATORIO volcar paneles JSON y enviarlos al repositorio "Grafana Scheduler". Si se olvida de descargar su carga útil (South Park S11E09), sus cambios se perderán cada vez que se active el programador (recuperable, pero doloroso). Y debe propagar su cambio a los volcados JSON tanto activos como inactivos, lo que básicamente significa duplicar el esfuerzo (y aún más si las diferencias no se documentan en consecuencia). Efectivamente, esta "solución" significa que necesita un _proceso_ bien documentado, mantenido, visible y seguido estrictamente para manejarlo, lo que en una perspectiva remota podría ser incluso más difícil que no tener esta función en absoluto. Cambiamos nuestros umbrales de alerta tan raramente que no parece ser una gran molestia para nosotros lidiar con la sobrecarga del _proceso_.

De todos modos...

Estoy trabajando con Aiven Grafana en este momento, que se ejecuta sobre SQLite (aplicado por el proveedor), por lo que si la base de datos se cambió a algo más concurrente y rico en funciones, uno puede descubrir cómo emplear activadores de base de datos + eventos para manejar esos pequeños actualizaciones parciales realizadas a través de Grafana Web GUI para que todo el proceso sea más fluido.

¡Estén atentos, buena suerte!

Agregue esto para terminar, esto definitivamente es necesario para las migraciones desde otras plataformas.

La forma más sencilla con las consultas T-SQL es engañar a GRAFANA (solución alternativa):

SELECT timestamp AS time,
        CASE 
            WHEN DATEPART(HOUR, SYSDATETIME()) NOT IN (0,1,2,3,4,5,6) 
            THEN COUNT(document_number)
            ELSE 0 
        END AS Receipts
FROM GRAFANA.dbo.ReceiptsErrorsHistory
WHERE timestamp >= DATEADD(DAY, -7, GETDATE())
AND document_type = 'receipt'
GROUP BY timestamp

¿Cuál es el estado de esta implementación? Actualmente estamos usando seyren y cabot para las alertas y nos gustaría migrar a las alertas de Grafana. Sin la restricción de tiempo, no podremos avanzar.

En el caso de búsqueda de Elastic, encontré una manera fácil de resolver este problema.
Use matemáticas de fecha: https://www.elastic.co/guide/en/elasticsearch/client/net-api/7.x/date-math-expressions.htm.

por ejemplo, si desea datos con un rango (AM 00:00 ~ PM: 12:00), entonces @timestamp :[now/d TO now/d+12h] puede devolver el resultado deseado

@sukjoonhong No puedo hacer que funcione. ¿Tienes una captura de pantalla por favor?

Tengo una solución alternativa para esto que usa cron para activar y desactivar las alertas. Esto solo funcionaría si desea desactivar TODAS las alertas durante la noche (o si puede molestarse en crear secuencias de comandos de alertas individuales).

En crontab en el cuadro de grafana, agregué:

1 * * * * root /root/do-alert-thing.sh

Y en /root/do-alert-thing.sh:

#!/bin/bash

#Enable at 6am local
TZ='Somewhere/Sometime' date +%H | grep '06' && (
  curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":false}' -u [email protected]:letmein -H 'Content-Type: application/json'
)

#Disable at 9pm local
TZ='Somewhere/Sometime' date +%H | grep '21' && (
  curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":true}' -u [email protected]:letmein -H 'Content-Type: application/json'
)

Simplemente reemplace Somewhere/Sometime con su zona horaria (consejo: ejecute timedatectl list-timezones para obtener una lista) y agregue sus credenciales en lugar de [email protected] . Este punto final de administración solo funciona en el modo de autenticación básica según la documentación .

Espero que esto ayude a alguien por ahí.

@Atem18
2019-10-14-094215_3840x1080_scrot

En mi caso, esta consulta funcionó.

@sukjoonhong ¡Gracias, lo intentaré!

Tengo una solución alternativa para esto que usa cron para activar y desactivar las alertas. Esto solo funcionaría si desea desactivar TODAS las alertas durante la noche (o si puede molestarse en crear secuencias de comandos de alertas individuales).

En crontab en el cuadro de grafana, agregué:

1 * * * * root /root/do-alert-thing.sh

Y en /root/do-alert-thing.sh:

#!/bin/bash

#Enable at 6am local
TZ='Somewhere/Sometime' date +%H | grep '06' && (
  curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":false}' -u [email protected]:letmein -H 'Content-Type: application/json'
)

#Disable at 9pm local
TZ='Somewhere/Sometime' date +%H | grep '21' && (
  curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":true}' -u [email protected]:letmein -H 'Content-Type: application/json'
)

Simplemente reemplace Somewhere/Sometime con su zona horaria (consejo: ejecute timedatectl list-timezones para obtener una lista) y agregue sus credenciales en lugar de [email protected] . Este punto final de administración solo funciona en el modo de autenticación básica según la documentación .

Espero que esto ayude a alguien por ahí.

Intenté esto y funciona, pero en grafana ui dice que solo se detiene durante una hora. Entonces, ¿tendría que hacer un crontab que se repita cada hora hasta que...?

Me acerqué a esto desde un ángulo diferente en el que genera una métrica de encendido/apagado de Prometheus basada en la salida de un script, por ejemplo, un comando ps que verifica si el script de respaldo se está ejecutando. Luego, en mi tablero, tengo una "Copia de seguridad activa" para mostrar el estado de la copia de seguridad y en mi panel principal con todas mis consultas y alertas, agrego la verificación de condición que no alertará si la métrica de la copia de seguridad es = 1. Este enfoque sería también le permite agregar una alerta separada que se activa si la copia de seguridad se ejecuta más de lo que debería cuando tiene en cuenta los datos de métricas históricas.

Tengo una solución alternativa para esto que usa cron para activar y desactivar las alertas. Esto solo funcionaría si desea desactivar TODAS las alertas durante la noche (o si puede molestarse en crear secuencias de comandos de alertas individuales).
En crontab en el cuadro de grafana, agregué:
1 * * * * root /root/do-alert-thing.sh
Y en /root/do-alert-thing.sh:

#!/bin/bash

#Enable at 6am local
TZ='Somewhere/Sometime' date +%H | grep '06' && (
  curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":false}' -u [email protected]:letmein -H 'Content-Type: application/json'
)

#Disable at 9pm local
TZ='Somewhere/Sometime' date +%H | grep '21' && (
  curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":true}' -u [email protected]:letmein -H 'Content-Type: application/json'
)

Simplemente reemplace Somewhere/Sometime con su zona horaria (consejo: ejecute timedatectl list-timezones para obtener una lista) y agregue sus credenciales en lugar de [email protected] . Este punto final de administración solo funciona en el modo de autenticación básica según la documentación .
Espero que esto ayude a alguien por ahí.

Intenté esto y funciona, pero en grafana ui dice que solo se detiene durante una hora. Entonces, ¿tendría que hacer un crontab que se repita cada hora hasta que...?

No estoy seguro de por qué estás viendo ese comportamiento; para mí se detiene y se mantiene en pausa durante 9 horas, hasta que lo despausé usando la línea cron de la mañana.

Tengo una solución alternativa para esto que usa cron para activar y desactivar las alertas. Esto solo funcionaría si desea desactivar TODAS las alertas durante la noche (o si puede molestarse en crear secuencias de comandos de alertas individuales).
En crontab en el cuadro de grafana, agregué:
1 * * * * root /root/do-alert-thing.sh
Y en /root/do-alert-thing.sh:

#!/bin/bash

#Enable at 6am local
TZ='Somewhere/Sometime' date +%H | grep '06' && (
  curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":false}' -u [email protected]:letmein -H 'Content-Type: application/json'
)

#Disable at 9pm local
TZ='Somewhere/Sometime' date +%H | grep '21' && (
  curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":true}' -u [email protected]:letmein -H 'Content-Type: application/json'
)

Simplemente reemplace Somewhere/Sometime con su zona horaria (consejo: ejecute timedatectl list-timezones para obtener una lista) y agregue sus credenciales en lugar de [email protected] . Este punto final de administración solo funciona en el modo de autenticación básica según la documentación .
Espero que esto ayude a alguien por ahí.

Intenté esto y funciona, pero en grafana ui dice que solo se detiene durante una hora. Entonces, ¿tendría que hacer un crontab que se repita cada hora hasta que...?

No estoy seguro de por qué estás viendo ese comportamiento; para mí se detiene y se mantiene en pausa durante 9 horas, hasta que lo despausé usando la línea cron de la mañana.

No digo que esté viendo ese comportamiento, pero literalmente lo dice en la interfaz de usuario de grafana. Pausa de 1 hora. Así que asumí que el truco de la pausa solo funciona durante 1 hora.

Pero si esto es falso, me corrijo.

No digo que esté viendo ese comportamiento, pero literalmente lo dice en la interfaz de usuario de grafana. Pausa de 1 hora. Así que asumí que el truco de la pausa solo funciona durante 1 hora.

Pero si esto es falso, me corrijo.

Este podría ser simplemente el estado de alerta; por ejemplo, si la alerta estaba bien, mostraría:

image

¿Supongo que si ha estado en pausa durante una hora, diría "EN PAUSA durante 1 hora"?

Estúpido de mí, creo que debo haberlo malinterpretado 🍡

¡Gracias por la aclaración!

¿Hay algún plan para implementar esta función en las versiones 6.6.x > después de cuatro años?

Todavía esperamos ver esto implementado también. Este es un sistema de alerta muy ineficaz si los usuarios que están libres, de vacaciones o que no están disponibles reciben alertas cuando no necesitan responder.

Nos gustaría mucho incluir la opción de establecer varias horas (para nuestro caso, el horario comercial) para alertar.

Lo mismo aquí, sería muy bueno tener esto.

Existen soluciones alternativas para algunos backends (utilizo uno para MySQL que implica filtrar eventos fuera de ciertos rangos de tiempo a través de la consulta), pero tener esto como "característica adecuada" definitivamente sería una ventaja.

También nos encantaría ver esta función en una versión futura. Sería útil poder filtrar/suprimir alertas durante nuestras ventanas 'fuera del horario de atención'. Por ejemplo, si pudiéramos tener alertas filtradas si ocurren después de las 8 p. m. y antes de las 8 a. m. del día siguiente.

Sería genial obtener esta función, por favor. Tal como está ahora, es como el niño que llora lobo en la noche. Acabo de poner mi teléfono en el cajón. La alerta es inútil. Gracias.

Tenemos una gran necesidad de la funcionalidad de Reconocimiento de Grafana. Sin la función de reconocimiento de alerta , la función de alerta de Grafana no se puede utilizar en un entorno de servicio de producción crítico.

Sería genial ver esta función en Grafana. Solo las alertas durante horas específicas son relevantes para nosotros, horas de trabajo +-2 horas, durante la noche hay un aumento (planeado) de los valores monitoreados que actualmente resulta en alertas :-(

+1 en solicitud de función

Esta será una gran característica si podemos agregar alarmas para regiones de tiempo específicas. Las reglas de alarma solo deberían funcionar para una región de tiempo específica.

Podría ser genial tener una forma de configurar diferentes canales de notificación con respecto a los períodos de tiempo, como:

  • un lunes normal -> notificar a través de Slack
  • Lunes 1 de enero -> notificar por SMS

Los períodos de tiempo pueden ser definidos por el usuario y vinculados a un canal de notificación.

Revisé la mayoría de los comentarios, así que pido disculpas si alguien articuló el siguiente caso de uso, pero no lo noté.

Una razón para respaldar las restricciones de hora del día para las alertas es la escasez de series de datos. Considere una configuración cuando un trabajo por lotes se ejecuta una vez al día, en algún momento entre la medianoche y las 2 am para preparar datos para una sesión informativa diaria a las 8 am. El único punto de datos de "trabajo completado" se emite al finalizar.

No hay una buena manera de alertar sobre esto sin una restricción de tiempo.

"Alerta si no hay punto de datos en las últimas X horas" no funcionará durante X horas. Por ejemplo, si alerta sobre "ningún punto de datos en las últimas 24 horas", eso funciona siempre que todos los trabajos se ejecuten correctamente todos los días. Sin embargo, si obtengo una falla y vuelvo a ejecutar el trabajo a las 11 am para ponerme al día. Luego, mi alerta para el día siguiente se interrumpe (ya que no se activará hasta después de las 11 a. m.). Este es mi caso de uso principal para la restricción de tiempo. La única alerta practicable es tener la lógica de evaluación de alerta activada de 2 a. m. a 8 a. m. y alerta si "no hay punto de datos en las últimas 8 horas".

Este caso de uso no se trata de suprimir alertas durante las horas de trabajo o de reducir el ruido a una hora específica del día. Incluso con una respuesta de guardia las 24 horas del día, los 7 días de la semana, la alerta anterior no se puede expresar con precisión sin restricciones de hora del día.

+1 a esta función.
En nuestro caso, es necesario enviar una alerta con información de los últimos N días una vez al día/hora/semana. Todo se complica por el hecho de que el boletín debe realizarse en un horario estrictamente fijo (8:00, 13:00, etc.).

Como solución alternativa, planeamos administrar las alertas a través de HTTP Api, pero nos gustaría ver esta funcionalidad en la parte del cliente de grafana.

Necesita esta función. Ejemplo: red PROD con horas de mantenimiento: ahora desea detener algunas notificaciones durante esta ventana de mantenimiento. por ejemplo, todos los domingos por la noche entre un marco de tiempo específico. No es posible en el momento.

Me gustará mucho esta función cuando esté disponible. Me gustaría dejar de alertar para el período de tiempo específico en un rango de 24 horas.

+100000

👍 +1
Creo que es una característica esencial para usar Grafana como un verdadero motor de alertas.

Si bien el servicio real mantiene un estado saludable, la métrica puede cambiar de acuerdo con el programa especificado.
Necesitamos una forma general de controlar nuestras alertas durante ese horario.

+1

Esta sería una buena característica para tener en el lado del cliente. En este momento, tenemos que derivar campos como hourOfDay, dayOfWeek, en Logstash para que estén presentes en ES para agregar una métrica adicional al conjunto de métricas y agregarlo en las reglas de alerta.

Alertarme si la métrica promedio A, que es el uso de la CPU, supera el 90 % durante 1 m
Y
si la métrica B, que es max hourOfDay de los mismos documentos, está entre RANGE.

Funciona, pero se siente incómodo trabajar así, como una solución.
Más especialmente porque Grafana ha evolucionado enormemente desde 2016 en otras áreas, pero esto está algo olvidado desde 2016.

Tengo una solución alternativa para esto que usa cron para activar y desactivar las alertas. Esto solo funcionaría si desea desactivar TODAS las alertas durante la noche (o si puede molestarse en crear secuencias de comandos de alertas individuales).

En crontab en el cuadro de grafana, agregué:

1 * * * * root /root/do-alert-thing.sh

Y en /root/do-alert-thing.sh:

#!/bin/bash

#Enable at 6am local
TZ='Somewhere/Sometime' date +%H | grep '06' && (
  curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":false}' -u [email protected]:letmein -H 'Content-Type: application/json'
)

#Disable at 9pm local
TZ='Somewhere/Sometime' date +%H | grep '21' && (
  curl http://localhost:3000/api/admin/pause-all-alerts -d '{"paused":true}' -u [email protected]:letmein -H 'Content-Type: application/json'
)

Simplemente reemplace Somewhere/Sometime con su zona horaria (consejo: ejecute timedatectl list-timezones para obtener una lista) y agregue sus credenciales en lugar de [email protected] . Este punto final de administración solo funciona en el modo de autenticación básica según la documentación .

Espero que esto ayude a alguien por ahí.

Hola
¿Puede decirme cómo obtener URL de alertas individuales?

Hola
¿Puede decirme cómo obtener URL de alertas individuales?

Es una pena que después de 4 años no se haya implementado esta característica obviamente demandada. Mi caso de uso es una simple automatización del hogar donde el enrutador debe reiniciarse de vez en cuando (es uno de ISP y no puede sobrevivir más de una semana de tiempo de actividad). Tengo un adaptador de enchufe simple con un dial que reinicia el enrutador todas las noches. Entonces, todas las noches recibo muchas alertas sobre la falla de mis sensores en Telegram. Una característica simple de deshabilitar las alertas durante cierto intervalo de tiempo sería útil.

No tiene que ser una programación súper sofisticada de inmediato. En la primera versión de esta característica, podría ser solo la hora del día. Con horarios más complejos que se agregan en etapas posteriores

¿Tenemos alguna forma de programar alertas en un momento determinado?

+1 para esta función.

¿Grafana admite una operación de módulo? Luego, debería poder usar la función de identidad para obtener el tiempo de Unix como una métrica adicional en su panel. Con la función de módulo, podría obtener el resto de la división del tiempo de Unix por 86400 (la cantidad de segundos en un día). Luego, podría agregar una condición de rango en la métrica de tiempo en su alerta. ¿Correcto?

¿Sería difícil agregar la operación de módulo para este propósito?

Suena loco pero funciona y para mi caso de uso fue suficiente. 😅

time() % 86400

Aún así, es un dolor que no haya una solución más conveniente que no sea un truco obvio. 🤦

Suena loco pero funciona y para mi caso de uso fue suficiente. 😅

time() % 86400

Aún así, es un dolor que no haya una solución más conveniente que no sea un truco obvio. 🤦

@ochrstn , ¿qué versión de grafana tiene ya que probé esto en v6.6.1 y la operación de módulo se ignoró esencialmente en la consulta?

Suena loco pero funciona y para mi caso de uso fue suficiente. 😅

time() % 86400

Aún así, es un dolor que no haya una solución más conveniente que no sea un truco obvio. 🤦

@ochrstn , ¿qué versión de grafana tiene ya que probé esto en v6.6.1 y la operación de módulo se ignoró esencialmente en la consulta?

v6.6.2 🙈

¿Grafana admite una operación de módulo? Luego, debería poder usar la función de identidad para obtener el tiempo de Unix como una métrica adicional en su panel. Con la función de módulo, podría obtener el resto de la división del tiempo de Unix por 86400 (la cantidad de segundos en un día). Luego, podría agregar una condición de rango en la métrica de tiempo en su alerta. ¿Correcto?
¿Sería difícil agregar la operación de módulo para este propósito?

Suena loco pero funciona y para mi caso de uso fue suficiente.

time() % 86400

Aún así, es un dolor que no haya una solución más conveniente que no sea un truco obvio.

Hola , @ochrstn :) ¿Podrías dar detalles sobre cómo lo hiciste?

¿Fue útil esta página
0 / 5 - 0 calificaciones