Grafana: Alerta: restrições de hora do dia

Criado em 16 nov. 2016  ·  83Comentários  ·  Fonte: grafana/grafana

Restrições de horário.

Veja duas maneiras de implementar isso.

1) Como condição de alerta
2) Como filtro de notificações

arealerting typfeature-request

Comentários muito úteis

Como solução alternativa, usando o prometheus como back-end:

  • Adicione a seguinte consulta à sua métrica: hour() , que retorna a hora do dia (0-23). Você pode torná-lo oculto no gráfico.
  • Adicione uma condição extra AND ao seu alerta, para que ele seja alertado apenas se a consulta hour() estiver entre o intervalo desejado (por exemplo: horário comercial).

O mesmo pode ser feito com day_of_week() .

Todos 83 comentários

Alguém conseguiu alguma solução para esse cenário? Estou chocado que apenas 4 pessoas votaram positivamente neste ticket, pois todo o recurso de alerta é essencialmente inútil para mim, a menos que meus sistemas estejam funcionando 24 horas por dia, 7 dias por semana. Sinto que devo estar perdendo algum outro recurso ou técnica que todo mundo está fazendo para contornar esse problema ...

Do jeito que está agora, eu tenho que desligar todas as notificações de alerta ou apenas aceitar o fato de que receberei um monte de notificações espúrias quando meus processos encerrarem o EOD.

Não estou tentando parecer crítico, apenas confuso como todo mundo está gerenciando esses alertas. Eu amo o Grafana há anos e tenho acompanhado o recurso de alerta desde que foi introduzido pela primeira vez na v4. Mas é um pouco complicado toda vez que há uma atualização de alerta e essa limitação não é abordada.

@bblazei você está certo! é um recurso incrível que precisa ser priorizado e com certeza será útil ppl com certeza!
@torkelo você sabe quando esse recurso será planejado?

Não, não Eta agora, pois não está em nosso roteiro para os próximos dois lançamentos (4.3 e 4.4)

Hmm bem, isso é lamentável. Como você recomendaria o uso da estrutura de alertas em sistemas que não funcionam 24 horas por dia, 7 dias por semana?

Isso é algo que gostaríamos muito, pois precisamos ter níveis de alerta diferentes, dependendo da hora do dia

Estamos (não tão) esperando pacientemente por isso também. Atualmente, utilizamos gráficos curl to Slack periodicamente.

@torkelotorkelo . faz um tempo que eu não vejo uma atualização sobre isso. também estamos procurando algo como se podemos desativar os alertas do grafana para um horário específico. isso é possível?

Alguém tem alguma atualização para esse recurso?

Consigo pausar manualmente os alertas na página Lista de alertas, mas (por exemplo) durante nosso backup diário do servidor de banco de dados às 2h30, recebemos um alerta sobre "Aguardas de E/S de rede em andamento". Certamente seria bom criar alertas que não notificam durante determinados períodos de tempo.

O grafana suporta uma operação de módulo? Em seguida, você poderá usar a função de identidade para obter o tempo unix como uma métrica adicional em seu painel. Com a função módulo você pode obter o restante da divisão do tempo unix por 86400 (o número de segundos em um dia). Em seguida, você pode adicionar uma condição de intervalo na métrica de tempo em seu alerta. Direito?

Seria difícil adicionar a operação do módulo para esta finalidade?

Realmente preciso desse recurso!

Alguma atualização sobre isso? É um WIP ou algo que ainda está sendo 'considerado' agora?

Realmente gostaríamos de usar prazos diferentes para determinados alertas, como o uso, que esperamos estar acima de um determinado limite durante o dia, mas não à noite.

+1

+1

+1

Por que as pessoas ( @bascarsija & @maizy) estão votando negativamente nos pedidos das pessoas para isso?

as pessoas estão "reprovando" essas mensagens "+1" que fazem com que notificações por e-mail sejam enviadas para todos os inscritos neste tópico. o efeito cumulativo de muitas pessoas adicionando essas mensagens "+1" aos encadeamentos reduz significativamente o valor do recurso de assinatura de encadeamento, reduzindo drasticamente a relação sinal-ruído.

você pode indicar seu interesse ou concordar com propostas ou comentários específicos feitos por outras pessoas sem acionar nenhuma dessas notificações por e-mail simplesmente "votando a favor" ou "votando negativamente" por meio das reações. a demonstração mais proeminente de solidariedade/interesse agregado em um problema geralmente é a contagem de reações na descrição inicial/primária do problema - considere adicionar suas reações lá.

francamente, este é um problema sistêmico com o Github -- aplica-se igualmente a todos os tópicos de problemas em todos os projetos. você encontrará muitos pedidos em vários tópicos solicitando tal uso porque a interface do usuário do Github não informa os usuários sobre essa consequência ou a desencoraja de forma óbvia, e os usuários que estão cientes do problema (e/ou são impactados negativamente por ele) são provavelmente hesitante em fornecer esse feedback adicionando mais uma mensagem ao tópico (diminuindo ainda mais a relação sinal-ruído).

Obrigada pelo esclarecimento. Eu estou supondo que as pessoas postando esses +1 s não teriam feito isso se soubessem que era apenas um aborrecimento. Postar uma breve explicação sobre isso pode ter parado alguns deles... assim como minha pergunta. Polegares para baixo podem significar várias coisas.

Alguma atualização no(s) alerta(s) de programação durante determinada hora do dia, semana, mês e ano?

Como solução alternativa, usando o prometheus como back-end:

  • Adicione a seguinte consulta à sua métrica: hour() , que retorna a hora do dia (0-23). Você pode torná-lo oculto no gráfico.
  • Adicione uma condição extra AND ao seu alerta, para que ele seja alertado apenas se a consulta hour() estiver entre o intervalo desejado (por exemplo: horário comercial).

O mesmo pode ser feito com day_of_week() .

Também precisamos desse recurso se quisermos oferecer serviço 24H com base em diferentes equipes do mundo... há algum plano para isso?

Enquanto isso, esse recurso está ficando pronto, estou tentando usar a solução alternativa.

Exemplo:

```
métrica A : production.application_a.actual_metric = 123 (Esta é minha métrica real)
métrica B : helper.time_helper.hour = 1 to 24 (Falso métrica de tempo que é enviada hora do dia a cada minuto para grafite)

   alert requirement :

(a métrica A está abaixo de 100 E a hora está dentro do intervalo 10 e 20)
OU
(a métrica A está abaixo de 50 E a hora está fora do intervalo 10 e 20)
```

em outras palavras:

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

Minha pergunta :

Para o cenário acima, posso conseguir com um painel gráfico único ou realmente dois painéis gráficos diferentes, um para o intervalo interno e o intervalo externo? Ou existe alguma outra maneira no grafana de conseguir isso? (Nota: estou usando grafite 0.9.)

image

Também aguardando esse recurso, abordagem interessante para enviar algumas métricas falsas para o grafana... apenas imaginando que opção legal e simples seria gerar as métricas?

+1 podemos ter uma consulta arbitrária que podemos usar expressões para limitar a condição de alerta?

hora entre 1 e 2 E

+1 seria muito apreciado!

Apenas um comentário sobre um trabalho bruto ao redor
Eu uso collectd/Influxdb
Eu tenho um processo cron que grava o valor da hora em um arquivo ext simples
O plugin collect Table lê isso como um Table_Value - Instance "Hour"
Em qualquer alerta em que preciso usar apenas um intervalo, adiciono a métrica hora (máx.) ao painel como uma métrica oculta e, em seguida, no alerta, uso um valor de intervalo AND - acionar apenas se a hora estiver entre X e Y
A mesma coisa funciona no dia da semana também

Cru, mas eficaz

@torkelo algum convidado sobre quando isso pode ser implementado?

Não, desculpe, não está no roteiro da equipe principal

qualquer solução alternativa para evitar que alertas sejam enviados quando uma instância do Cloud vm estiver agendada para ser desativada devido a ser agendada. a maioria dos sistemas tem isso por muitos anos.
por favor, adicione isso ;) configuração de fadiga de alerta.

Eu tenho um processo cron que grava o valor da hora em um arquivo ext simples
Em qualquer alerta em que preciso usar apenas um intervalo, adiciono a métrica hora (máx.) ao painel como uma métrica oculta e, em seguida, no alerta, uso um valor de intervalo AND - acionar apenas se a hora estiver entre X e Y

Esta é uma solução bastante eficaz com uma vantagem sutil, mas útil, sobre apenas ignorar alertas entre X - Y: Se a situação não for corrigida antes de Y, recebo meu primeiro alerta em Y. Se eu apenas ignorei alertas entre X - Y, eu não seria alertado mesmo depois de Y (embora se pudesse usar o recurso "Enviar lembretes", eu acho).

Descobriu-se que um cron job não era necessário ao usar grafite como fonte de dados:

Adicionei uma métrica C de timeSlice(isNonNull(identity(1)), '02:30 -9h', '06:00 -9h') e adicionei a condição de alerta AND max() OF query(C, 1m, now) HAS NO VALUE para excluir alertas entre 2h30 e 6h. (Esse -9h é porque meu deslocamento de fuso horário é +9:00 e timeSlice() parece estar em UTC.)

EDIT: Depois de alguns dias tentando isso, esse truque timeSlice() não parece estar funcionando ... Parece estar preso ao tempo que salvei o painel e não se move para cada dia.

Este é um enorme recurso ausente. Por que isso não está no roteiro? Parece trivial para implementar

Muito obrigado a @albertvaka por sua solução alternativa usando a função hour() do Prometheus.

Infelizmente, parece que não há como considerar automaticamente o fuso horário ao usar a função hour() (e é um problema quando há DST). Só conseguimos calcular o fuso horário manualmente com base no mês e no dia, mas não é uma boa solução.

Mais informações sobre prometheus/prometheus#4160

seria bom poder definir diferentes níveis de limite para diferentes períodos de data e hora
por exemplo, tudo bem se quase não houver eventos de atividade do usuário à noite, mas não durante o dia

Há algum progresso neste pedido?

Não tenho certeza, mas não encontrei nada de novo relacionado a isso no Grafana 6.1.3

Adoraria ver esse recurso implementado. Usamos o Grafana para alertas críticos de negócios, seria ótimo não notificar as pessoas da empresa quando não for necessário, por exemplo, em seu tempo livre.

+1, adoraria que isso fosse implementado.

+1 Deus me livre eu esqueço de pausar o monitoramento antes de ir para casa no fim de semana, vou voltar na segunda-feira para milhares de e-mails para o comportamento esperado

+1 implemente isso o mais rápido possível - vou ter que portar tudo para o thingsboard se isso não for implementado em breve https://thingsboard.io/

@torkelo você poderia nos dar algumas informações sobre esse problema? Há algum progresso?

Oi, existe alguém com conhecimento suficiente para implementá-lo e fazer um pull request?

Posso dizer o que fiz para "obter" esse recurso. Não posso compartilhar o código por ser proprietário, mas posso compartilhar uma ideia, que não está sujeita a nenhum bull * * proprietário.

Implementei algumas funções do Lambda com agendamento cron [SomeCloudProviderOfYourChoice] que usavam a API REST do Grafana para atualizar painéis inteiros de cargas JSON exportadas com seus alertas e limites, dependendo dos períodos ativos/ociosos do sistema (nosso sistema está ativo diariamente de 8 a 10 horas fora dos finais de semana). Funciona muito bem.

Mas.

Sempre que você trabalha com painéis no Grafana Web GUI, deve ter em mente que, sempre que fizer alterações em qualquer coisa, despejar painéis JSON e enviá-los para o repositório "Grafana Scheduler" é OBRIGATÓRIO . Se você esquecer de descarregar sua carga útil (South Park S11E09), suas alterações serão perdidas sempre que o agendador entrar em ação (recuperável, mas doloroso). E você precisa propagar sua alteração para os dumps JSON ativos/inativos, o que basicamente significa o dobro do esforço (e ainda mais se as diferenças não forem documentadas adequadamente). Efetivamente, essa "solução" significa que você precisa de um _processo_ bem documentado, mantido, visível e estritamente seguido para lidar, o que em um longo prazo pode ser ainda mais chato do que não ter esse recurso. Mudamos nossos limites de alerta tão raramente que parece não ser muito trabalhoso lidar com a sobrecarga de _process_.

De qualquer forma...

Estou trabalhando com Aiven Grafana agora, que está sendo executado em cima do SQLite (imposto pelo provedor), portanto, se o banco de dados foi alterado para algo mais simultâneo e rico em recursos, pode-se descobrir como empregar gatilhos de banco de dados + eventos para lidar com esses pequenos atualizações parciais feitas via Grafana Web GUI para tornar todo o processo mais simples.

Fique atento, boa sorte!

Por favor, adicione isso para fazer, isso é definitivamente necessário para migrações de outras plataformas.

A maneira mais simples com consultas T-SQL é enganar o GRAFANA (solução 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

Qual é o status dessa implementação? No momento, estamos usando seyren e cabot para alertas e gostaríamos de migrar para alertas do Grafana. Sem a restrição de tempo, não poderemos avançar.

No caso do Elastic search, encontrei uma maneira fácil de resolver esse problema.
Use matemática de data: https://www.elastic.co/guide/en/elasticsearch/client/net-api/7.x/date-math-expressions.htm.

por exemplo, se você deseja dados com intervalo (AM 00:00 ~ PM:12:00), @timestamp :[now/d TO now/d+12h] pode retornar o resultado desejado

@sukjoonhong Não consigo fazer funcionar. Você tem uma captura de tela por favor?

Eu tenho uma solução para isso que usa o cron para ativar e desativar os alertas. Isso só funcionaria se você deseja desativar TODOS os alertas durante a noite (ou se você pode se incomodar em criar scripts de alertas individuais).

No crontab na caixa de grafana, adicionei:

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

E em /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'
)

Basta substituir Somewhere/Sometime pelo seu fuso horário (dica: execute timedatectl list-timezones para obter uma lista) e adicione suas credenciais em vez de [email protected] . Este ponto de extremidade de administrador só funciona no modo de autenticação básico de acordo com a documentação .

Espero que isto seja útil a alguém.

@Atem18
2019-10-14-094215_3840x1080_scrot

No meu caso, essa consulta funcionou.

@sukjoonhong Obrigado, vou tentar!

Eu tenho uma solução para isso que usa o cron para ativar e desativar os alertas. Isso só funcionaria se você deseja desativar TODOS os alertas durante a noite (ou se você pode se incomodar em criar scripts de alertas individuais).

No crontab na caixa de grafana, adicionei:

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

E em /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'
)

Basta substituir Somewhere/Sometime pelo seu fuso horário (dica: execute timedatectl list-timezones para obter uma lista) e adicione suas credenciais em vez de [email protected] . Este ponto de extremidade de administrador só funciona no modo de autenticação básico de acordo com a documentação .

Espero que isto seja útil a alguém.

Eu tentei isso e funciona, mas no grafana ui ele diz que só pausa por uma hora. Então eu teria que fazer um crontab que se repete a cada hora até ....?

Eu abordei isso de um ângulo diferente, onde você gera uma métrica de ativação/desativação do prometheus com base na saída de um script, por exemplo, um comando ps que verifica se o script de backup está em execução. Então, no meu painel, tenho um "Backup Active" para exibir o status do backup e no meu painel principal com todas as minhas consultas e alerta, adiciono a verificação de condição que não alertará se a métrica de backup for = 1. Essa abordagem seria também permitem que você adicione um alerta separado que é acionado se o backup for executado por mais tempo do que deveria quando você considera os dados históricos da métrica.

Eu tenho uma solução para isso que usa o cron para ativar e desativar os alertas. Isso só funcionaria se você deseja desativar TODOS os alertas durante a noite (ou se você pode se incomodar em criar scripts de alertas individuais).
No crontab na caixa de grafana, adicionei:
1 * * * * root /root/do-alert-thing.sh
E em /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'
)

Basta substituir Somewhere/Sometime pelo seu fuso horário (dica: execute timedatectl list-timezones para obter uma lista) e adicione suas credenciais em vez de [email protected] . Este ponto de extremidade de administrador só funciona no modo de autenticação básico de acordo com a documentação .
Espero que isto seja útil a alguém.

Eu tentei isso e funciona, mas no grafana ui ele diz que só pausa por uma hora. Então eu teria que fazer um crontab que se repete a cada hora até ....?

Não tenho certeza por que você está vendo esse comportamento; para mim, ele pausa e fica pausado por 9 horas, até eu despausá-lo usando a linha cron da manhã.

Eu tenho uma solução para isso que usa o cron para ativar e desativar os alertas. Isso só funcionaria se você deseja desativar TODOS os alertas durante a noite (ou se você pode se incomodar em criar scripts de alertas individuais).
No crontab na caixa de grafana, adicionei:
1 * * * * root /root/do-alert-thing.sh
E em /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'
)

Basta substituir Somewhere/Sometime pelo seu fuso horário (dica: execute timedatectl list-timezones para obter uma lista) e adicione suas credenciais em vez de [email protected] . Este ponto de extremidade de administrador só funciona no modo de autenticação básico de acordo com a documentação .
Espero que isto seja útil a alguém.

Eu tentei isso e funciona, mas no grafana ui ele diz que só pausa por uma hora. Então eu teria que fazer um crontab que se repete a cada hora até ....?

Não tenho certeza por que você está vendo esse comportamento; para mim, ele pausa e fica pausado por 9 horas, até eu despausá-lo usando a linha cron da manhã.

Não estou dizendo que estou vendo esse comportamento, mas literalmente diz isso na interface do usuário do grafana. Pausado por 1 hora. Então eu assumi que o truque da pausa só funciona por 1 hora.

Mas se isso for falso, estou corrigido.

Não estou dizendo que estou vendo esse comportamento, mas literalmente diz isso na interface do usuário do grafana. Pausado por 1 hora. Então eu assumi que o truque da pausa só funciona por 1 hora.

Mas se isso for falso, estou corrigido.

Isso pode ser apenas o status de alerta; por exemplo, se o alerta estivesse OK, ele mostraria:

image

Eu estou supondo que se ele foi pausado por uma hora, ele diria "PAUSED for 1 hour"?

Estúpido, acho que devo ter interpretado mal 🍡

Obrigado pelo esclarecimento!

Existe algum plano para implementar este recurso nas versões 6.6.x > após quatro anos?

Ainda estamos ansiosos para ver isso implementado também. Este é um sistema de alerta muito ineficaz se os usuários que estão livres, de férias ou indisponíveis receberem spam com alertas quando não precisam responder.

Gostaríamos muito de incluir a opção de definir vários horários (para o horário comercial do nosso caso) para alerta.

Mesmo aqui, seria muito bom ter isso.

Existem soluções alternativas para alguns back-ends (eu uso uma para MySQL que envolve filtrar eventos fora de determinados intervalos de tempo por meio da consulta), mas ter isso como "recurso adequado" definitivamente seria uma vantagem.

Também adoraríamos ver esse recurso em uma versão futura. Seria útil poder filtrar/suprimir alertas durante nossas janelas 'depois do expediente'. Por exemplo, se pudéssemos filtrar os alertas se eles ocorrerem após as 20h e antes das 8h do dia seguinte.

Seria ótimo obter esse recurso, por favor. Do jeito que está agora, é como o menino chorando lobo à noite. Acabei de colocar meu telefone na gaveta. O alerta é inútil. Obrigada.

Estamos precisando seriamente da funcionalidade de reconhecimento do Grafana. Sem a função Acknowledge Alert , a função Grafana Alerting não pode ser usada no Critical Production Service Environment.

Seria ótimo ver esse recurso no Grafana. Apenas alertas durante horários específicos são relevantes para nós, horário de trabalho +-2hrs, durante a noite há um aumento (planejado) dos valores monitorados que atualmente resulta em alertas :-(

+1 na solicitação de recurso

Este será um ótimo recurso se pudermos adicionar alarmes para regiões de tempo específicas. As regras de alarme só devem funcionar para uma região de tempo específica.

Poderia ser ótimo ter uma maneira de configurar diferentes canais de notificação sobre períodos de tempo, como:

  • uma segunda-feira normal -> notificar via Slack
  • 1 de janeiro segunda-feira -> notificar via SMS

Os períodos de tempo podem ser definidos pelo usuário e vinculados a um canal de notificação.

Dei uma olhada na maioria dos comentários, então peço desculpas se alguém articulou o seguinte caso de uso, mas não percebi.

Um motivo para dar suporte a restrições de hora do dia para alertas é para séries de dados esparsas. Considere uma configuração quando um trabalho em lote é executado uma vez por dia, em algum momento entre a meia-noite e as 2h, para preparar os dados para um briefing diário às 8h. O único ponto de dados de "trabalho concluído" é emitido após a conclusão.

Não há uma boa maneira de alertar sobre isso sem uma restrição de tempo.

"Alertar se não houver ponto de dados nas últimas X horas" não funcionará para nenhuma contagem de X horas. Por exemplo, se eu alertar sobre "nenhum ponto de dados nas últimas 24 horas", isso funcionará desde que todos os trabalhos sejam executados corretamente todos os dias. No entanto, se eu tiver uma falha e executar novamente o trabalho às 11h para recuperar o atraso. Então meu alerta para o dia seguinte está quebrado (já que não será acionado até depois das 11h). Este é meu caso de uso principal para restrição de tempo. O único alerta praticável é ter a lógica de avaliação de alerta LIGADA das 2h às 8h e alertar se "nenhum ponto de dados nas últimas 8 horas".

Este caso de uso não se trata de suprimir alertas durante o horário de trabalho ou reduzir o ruído em uma hora específica do dia. Mesmo com resposta de plantão 24 horas por dia, 7 dias por semana, o alerta acima não pode ser expresso com precisão sem restrições de horário do dia.

+1 para este recurso.
No nosso caso, é necessário enviar um alerta com informações dos últimos N dias uma vez por dia/hora/semana. Tudo é complicado pelo fato de que a newsletter deve ser feita em um horário estritamente fixo (8:00, 13:00 e assim por diante).

Como solução alternativa, planejamos gerenciar alertas via HTTP Api, mas gostaríamos de ver essa funcionalidade na parte cliente do grafana.

Precisa desse recurso. Exemplo: Rede PROD com Horas de Manutenção - Agora deseja parar algumas notificações durante esta janela de manutenção. por exemplo, todos os domingos à noite entre um período de tempo específico. Não é possível no momento.

Eu realmente vou gostar desse recurso quando disponível. Gostaria de parar de alertar para o período de tempo específico em um intervalo de 24 horas.

+100000

👍 +1
Eu acho que é um recurso essencial usar o Grafana como um verdadeiro mecanismo de alerta.

Embora o serviço real mantenha um estado íntegro, a métrica pode mudar de acordo com a programação especificada.
Precisamos de uma maneira geral de controlar nossos alertas durante essa programação.

+1

Este seria um bom recurso para ter no lado do cliente. No momento, temos que derivar campos como hourOfDay, dayOfWeek, no Logstash para tê-los presentes no ES para adicionar uma métrica extra ao conjunto de métricas e adicioná-la nas regras de alerta.

Alerte-me se a métrica média A, que é o uso da CPU, for superior a 90% para 1m
E
se a métrica B, que é o máximo de hourOfDay dos mesmos documentos, estiver entre RANGE.

Funciona, mas parece estranho trabalhar assim, como uma solução alternativa.
Principalmente porque o Grafana evoluiu tremendamente desde 2016 em outras áreas, mas isso está meio esquecido desde 2016.

Eu tenho uma solução para isso que usa o cron para ativar e desativar os alertas. Isso só funcionaria se você deseja desativar TODOS os alertas durante a noite (ou se você pode se incomodar em criar scripts de alertas individuais).

No crontab na caixa de grafana, adicionei:

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

E em /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'
)

Basta substituir Somewhere/Sometime pelo seu fuso horário (dica: execute timedatectl list-timezones para obter uma lista) e adicione suas credenciais em vez de [email protected] . Este ponto de extremidade de administrador só funciona no modo de autenticação básico de acordo com a documentação .

Espero que isto seja útil a alguém.

Oi
Você pode me dizer como obter url de alertas individuais?

Oi
Você pode me dizer como obter url de alertas individuais?

É uma pena que depois de 4 anos esse recurso obviamente exigido não tenha sido implementado. Meu caso de uso é uma automação residencial simples, onde o roteador precisa ser reiniciado de tempos em tempos (é do ISP e não pode sobreviver mais de uma semana de tempo de atividade). Eu tenho um adaptador de soquete simples com um dial que redefine o roteador todas as noites. Então, toda noite eu recebo muitos alertas sobre meus sensores estarem inativos no Telegram. Um recurso simples de desabilitar o alerta durante determinado intervalo de tempo seria útil.

Não precisa ser um agendamento super sofisticado imediatamente. Na primeira versão desse recurso, poderia ser apenas a hora do dia. Com horários mais complexos sendo adicionados em estágios posteriores

Temos alguma maneira de agendar alertas em uma determinada instância de tempo.

+1 para este recurso.

O grafana suporta uma operação de módulo? Em seguida, você poderá usar a função de identidade para obter o tempo unix como uma métrica adicional em seu painel. Com a função módulo você pode obter o restante da divisão do tempo unix por 86400 (o número de segundos em um dia). Em seguida, você pode adicionar uma condição de intervalo na métrica de tempo em seu alerta. Direito?

Seria difícil adicionar a operação do módulo para esta finalidade?

Parece loucura, mas funciona e para o meu caso de uso foi suficiente. 😅

time() % 86400

Ainda assim, é uma dor que não haja uma solução mais conveniente que não seja um hack óbvio. 🤦

Parece loucura, mas funciona e para o meu caso de uso foi suficiente. 😅

time() % 86400

Ainda assim, é uma dor que não haja uma solução mais conveniente que não seja um hack óbvio. 🤦

@ochrstn qual versão do grafana você tem, pois tentei isso na v6.6.1 e a operação do módulo foi essencialmente ignorada na consulta?

Parece loucura, mas funciona e para o meu caso de uso foi suficiente. 😅

time() % 86400

Ainda assim, é uma dor que não haja uma solução mais conveniente que não seja um hack óbvio. 🤦

@ochrstn qual versão do grafana você tem, pois tentei isso na v6.6.1 e a operação do módulo foi essencialmente ignorada na consulta?

v6.6.2 🙈

O grafana suporta uma operação de módulo? Em seguida, você poderá usar a função de identidade para obter o tempo unix como uma métrica adicional em seu painel. Com a função módulo você pode obter o restante da divisão do tempo unix por 86400 (o número de segundos em um dia). Em seguida, você pode adicionar uma condição de intervalo na métrica de tempo em seu alerta. Direito?
Seria difícil adicionar a operação do módulo para esta finalidade?

Parece loucura, mas funciona e para o meu caso de uso foi suficiente.

time() % 86400

Ainda assim, é uma dor que não haja uma solução mais conveniente que não seja um hack óbvio.

Hey @ochrstn :) Você poderia fornecer detalhes sobre como você fez isso?

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

utkarshcmu picture utkarshcmu  ·  3Comentários

Minims picture Minims  ·  3Comentários

kcajf picture kcajf  ·  3Comentários

ahmetkakici picture ahmetkakici  ·  3Comentários

yuvaraj951 picture yuvaraj951  ·  3Comentários