Это легко сделать, если вы используете платформу маршрутизации webhook (например, Pipedream или аналогичную).Вы создаете конечную точку для приема запросов webhook от Grafana, изменяете тело и перенаправляете запрос в конечную точку ServiceNow.
Я создал пример конвейера , который показывает, как это работает.Он берет пример события (я нашел его в grafana docs ) и использует немного кода Node.js для изменения тела, а затем перенаправляет запрос на другую конечную точку HTTP.
Вот пример события:
{
"title": "My alert",
"ruleId": 1,
"ruleName": "Load peaking!",
"ruleUrl": "http://url.to.grafana/db/dashboard/my_dashboard?panelId=2",
"state": "alerting",
"imageUrl": "http://s3.image.url",
"message": "Load is peaking. Make sure the traffic is real and spin up more webfronts",
"evalMatches": [
{
"metric": "requests",
"tags": {},
"value": 122
}
]
}
Я использую URL RequestBin, чтобы вы могли видеть изменяемое тело ( здесь - это корзина ).
Вот разница для события:
{
body:{
"new_data": "NEW VALUE HERE",
},
}
Если вы нажмете на конвейер выше, он должен сгенерировать пользовательский URL, специфичный для вашего конвейера.Он предоставит URL-адрес конечной точки, который вы в конечном итоге зададите в качестве получателя веб-крюка для Grafana, и вы должны начать видеть новые события.
Это предполагает, что ваш URL-адрес веб-крюка ServiceNow является общедоступным.Весь код для конвейеров Pipedream является общедоступным, поэтому, если вы хотите сохранить свою конечную точку частной, вы можете создать переменную среды и сослаться на нее в коде Node.js, заменив URL-адрес RequestBin значением этой переменной среды.
Например, я могу создать переменную среды SERVICENOW_ENDPOINT и заменить:
url: 'https://en1lkcjsapobv.x.pipedream.net'
на
url: process.env.SERVICENOW_ENDPOINT
Дайте мне знать, если это поможет или у вас есть другие вопросы.