Visão geral
O Ops Manager oferece suporte à criação de modelos de webhook usando a sintaxe de modeloFreeMarker . Você pode personalizar os cabeçalhos HTTP e solicitar o conteúdo do corpo enviado para o endpoint do webhook. Ambos os modelos devem produzir uma saída JSON válida.
Variáveis do modelo
Você pode usar uma variedade de variáveis nos modelos de cabeçalhos e corpo. Para obter mais detalhes, consulte a documentação do Modelo de alerta, clique no post test message botão (dados aleatórios) ou salve um alerta e inspecione a carga útil do webhook (os nomes das variáveis correspondem às chaves JSON).
Observação
Nem todas as variáveis estão incluídas em cada chamada de webhook. Os campos disponíveis dependem do tipo de alerta e status. Certifique-se de que seus modelos manipulem valores nulos para evitar erros de renderização.
As seguintes variáveis estão disponíveis em modelos de webhook:
Variável | Descrição |
|---|---|
| Registro de data/hora no formato de data e hora ISO 8601 em UTC até o qual o alerta foi confirmado. |
| Comentário deixado pelo usuário que reconheceu o alerta. |
| Nome de usuário do usuário que reconheceu o alerta. |
| Identificador exclusivo para a configuração de alerta que acionou este alerta. |
| Identificador único do cluster ao qual este alerta se aplica. |
| Nome do cluster ao qual este alerta se aplica. |
| Carimbo de data/hora no formato de data e hora ISO 8601 em UTC quando o alerta foi aberto. |
| (Objeto) Valor atual da métrica que acionou o alerta. |
| Valor da métrica. |
| Unidades para o valor. O valor depende do tipo de métrica. |
| A alteração de ação ou estado para esta notificação de alerta (cabeçalho |
| Nome do evento que acionou o alerta. |
| Identificador único do grupo (projeto) para o qual este alerta foi aberto. |
| Identificador exclusivo do host ao qual a métrica se refere. |
| Nome do host e porta de cada host ao qual o alerta se aplica. Pode ser um nome de host, um FQDN, um endereço IPv4 ou um endereço IPv6. |
| Descrição legível por humanos do alerta. |
| Identificador único para o alerta. |
| Registro de data/hora no formato de data e hora ISO 8601 em UTC quando a última notificação foi enviada para este alerta. |
| (Array de objeto) Um ou mais links para sub-recursos e/ou recursos relacionados. |
| Descreve o tipo de relacionamento do recurso vinculado (por exemplo, |
| Link para o recurso. |
| Nome da medição cujo valor ficou fora do limite. |
| Identificador único da organização para a qual este alerta foi aberto. |
| Nome da organização para a qual este alerta foi aberto. |
| Nome do projeto (grupo) para o qual este alerta foi aberto. |
| Nome do conjunto de réplicas. |
| Identificador exclusivo da solicitação. (Cabeçalho |
| Registro de data/hora no formato de data e hora ISO 8601 em UTC quando o alerta foi fechado. |
| Solicitar assinatura, disponível apenas no modelo de cabeçalhos. (Cabeçalho |
| Estado atual do alerta ( |
| Tipo de host sendo copiado quando |
| Identificar rótulos definidos para este alerta. |
| Registro de data/hora no formato de data e hora ISO 8601 em UTC quando o alerta foi atualizado pela última vez. |
Auxiliar de Regex
Além disso, há um assistente personalizado disponível, o assistente re , que permite utilizar expressões regulares para extrair dados de texto dentro de seus modelos.
re.group(input, regex, group)Retorna o grupo de captura especificado da primeira correspondência. Se não houver correspondência, retorna uma string vazia.
Exemplo:
${re.group("abc-123", "([a-z]+)-(\\d+)", 2)}→123re.findAllGroup(input, regex, group)Retorna uma lista de todas as correspondências de grupo.
Exemplo:
<#list re.findAllGroup("error1:12;error2:98;error3:33", "error\\d+:(\\d+)", 1) as val>${val} </#list> Saídas:
12 98 33
Observação
O índice do grupo é baseado em 1. Se nenhuma correspondência for encontrada, retorna uma string vazia ou uma lista vazia.
Exemplos de modelo
Modelo de cabeçalhos personalizados
{ "X-Static": "static-value", "X-Secret": "${signature}", "X-Request-Id": "${requestId}", "X-Event": "${event}", "X-Org-Name": "${orgName!''}", "X-Test-Regex-Helper": "${re.group(\"abc-123\", \"([a-z]+)-(\\d+)\", 2)}" }
Modelo de corpo personalizado
{ "staticValue": "This value is static", "testRegexHelper": [ <#list re.findAllGroup("error1:12;error2:98;error3:33", "error\\d+:(\\d+)", 1) as val> "${val}"<#if val_has_next>,</#if></#list> ], "replicaSetName": "${replicaSetName!''}", "metricName": "${metricName!''}", "orgName": "${orgName!''}", "created": "${created!''}", "groupId": "${groupId!''}", "hostId": "${hostId!''}", "hostnameAndPort": "${hostnameAndPort!''}", "humanReadable": "${humanReadable?js_string}", "orgId": "${orgId!''}", "alertConfigId": "${alertConfigId!''}", "eventTypeName": "${eventTypeName!''}", "links": [ <#list links![] as link> { "rel": "${link.rel!''}", "href": "${link.href!''}" }<#if link_has_next>,</#if> </#list> ], "id": "${id!''}", "projectName": "${projectName!''}", "updated": "${updated!''}", "currentValue": { "number": ${(currentValue.number)!0}, "units": "${(currentValue.units)!''}" }, "status": "${status!''}" }
Testando modelos de webhook
Após configurar seus modelos de webhook, você pode testá-los usando o botão Test Alert na interface de configuração de alerta . Isso envia uma notificação de teste com dados de amostra para verificar se seu modelo é renderizado corretamente.