Вопрос или проблема
У меня есть следующее правило уведомления:
curl -X POST http://influx:8086/api/v2/notificationRules -H "Authorization: Token <мой токен>" -H "Content-Type: application/json" -d '{
"description": "Уведомление о скачках, обнаруженных в данных о трафике",
"endpointID": "1261ec31969a7d96",
"every": "15s",
"messageTemplate": "Обнаружен скачок в {{ .Name }}: Последнее значение: {{ index .Fields \"last\" }}, Среднее: {{ index .Fields \"mean\" }}, Стандартное отклонение: {{ index .Fields \"stddev\" }}",
"name": "правило_обнаружения_скачков",
"orgID": "a6ce0bd763dc7a0b",
"query": {
"text": "option task = {name: \"spike_detection_task\", every: 15s}\n\nfrom(bucket: \"one_hour\")\n |> range(start: -15m)\n |> filter(fn: (r) => r._measurement == \"convs_traffic_over_time_15m\")\n |> filter(fn: (r) => r._field == \"all_data\")\n |> mean()\n |> yield(name: \"mean\")\n |> stddev()\n |> yield(name: \"stddev\")\n |> last()",
"type": "flux"
},
"status": "active",
"statusRules": [
{
"currentLevel": "OK"
},
{
"currentLevel": "CRITICAL"
}
],
"type": "http"
}
Когда задача правила выполняется, она завершает выполнение успешно. Однако http POST-запрос не отправляется из influx. Конечная точка определена в уведомлении, для которой я указываю endpointID в скрипте. Данные в бакете ‘one_hour’ выглядят так:
Результат: _result
Таблица: ключи: [_start, _stop, _field, _measurement]
_start:время _stop:время _field:строка _measurement:строка _time:время _value:int
------------------------------ ------------------------------ ---------------------- --------------------------- ------------------------------ --------------------------
2024-09-26T14:06:07.862164087Z 2024-09-26T15:06:07.862164087Z all_data convs_traffic_over_time_15m 2024-09-26T14:06:17.272195842Z 0
Таблица: ключи: [_start, _stop, _field, _measurement]
_start:время _stop:время _field:строка _measurement:строка _time:время _value:int
------------------------------ ------------------------------ ---------------------- --------------------------- ------------------------------ --------------------------
2024-09-26T14:06:07.862164087Z 2024-09-26T15:06:07.862164087Z count convs_traffic_over_time_15m 2024-09-26T14:06:17.272195842Z 0
Не хватает ли информации в бакете, чтобы задача правила сработала? Есть ли что-то неверное в моем скрипте правила? Логи influx не показывают никаких деталей о http POST-запросе. Любая помощь будет оценена.
Ответ или решение
Проблема, с которой вы столкнулись, заключается в том, что HTTP-запросы, связанные с вашим правилом уведомления в InfluxDB, не отправляются, несмотря на успешное выполнение задачи. Давайте разберем основные моменты, которые могут привести к этой ситуации, и предложим решения.
-
Проверка Конфигурации Endpoint:
Убедитесь, что настройки вашего HTTP-эндпоинта, связанного сendpointID: "1261ec31969a7d96"
, корректны. Убедитесь, что URL-адрес, на который вы отправляете запрос, доступен и правильно настроен для приема данных. -
Статус Правила:
Ваше правило имеет статусactive
. Однако убедитесь, что оно действительно активно. Попробуйте временно изменить статус наinactive
, а затем снова обратно наactive
, чтобы убедиться, что событие триггерится правильно. -
Состояние Данных в Бакете:
Судя по представленной вами информации об этих данных, оба результата имеют значение_value
равное0
. Если ваше правило основано на определенных критических уровнях, убедитесь, что триггеры действительно срабатывают. Вам необходимо проверить, что данные в бакете соответствуют условиям критического и предупреждающего уровней (currentLevel: "CRITICAL"
). -
Логи InfluxDB:
Так как вы упомянули, что в логах InfluxDB нет информации о попытках отправки HTTP-запроса, возможно, стоит увеличить уровень подробности логирования. Это можно сделать в конфигурационном файле InfluxDB. После изменения настроек перезапустите сервер и проверьте логи на наличие ошибок или предупреждений. -
Тестирование Запроса:
Проверьте, что ваш HTTP-запрос работает, используя инструмент вродеcurl
или Postman. Убедитесь, что конечная точка, на которую будет направлен запрос, действительно отвечает на запросы и может обрабатывать приходящие данные. -
Проверка Правил Уведомлений:
Убедитесь, что все ваши условия для срабатывания уведомлений правильно настроены. Например, если вы ожидаете триггер при "Spike detected", то убедитесь, что логика фильтрации в Flux-запросе правильно настроена для определения такого состояния. -
Элементы Отладки:
Возможно, вам стоит вставить отладочные сообщения или временные метки в вашmessageTemplate
, чтобы видеть, когда именно генерируется уведомление. Это поможет вам удостовериться, что уведомления генерируются, но не отправляются.
Если после всех этих проверок вы по-прежнему сталкиваетесь с проблемой, рекомендуется обратиться к официальной документации InfluxDB о настройке уведомлений и задать вопрос на форумах сообщества, предоставив как можно больше информации о вашей конфигурации и проблемах.
Надеюсь, данные рекомендации помогут вам найти и устранить проблему. Если у вас возникнут дополнительные вопросы или потребуется помощь, не стесняйтесь обращаться.