Информирование с помощью Nagios
OpenTSDB замечателен, но он (ещё) не является полной платформой мониторинга. Теперь, когда у вас есть набор метрик в OpenTSDB, вы хотите начать отправлять оповещения, когда пороги становятся слишком высокими. Это легко!
В каталоге tools находится скрипт Python check_tsd. Этот скрипт запрашивает данные из OpenTSDB и возвращает совместимый с Nagios вывод, который предоставляет состояние OK/ПРЕДУПРЕЖДЕНИЕ/КРИТИЧНО.
Параметры
Options:
-h, --help show this help message and exit
-H HOST, --host=HOST Hostname to use to connect to the TSD.
-p PORT, --port=PORT Port to connect to the TSD instance on.
-m METRIC, --metric=METRIC
Metric to query.
-t TAG, --tag=TAG Tags to filter the metric on.
-d SECONDS, --duration=SECONDS
How far back to look for data. Default 600s.
-D METHOD, --downsample=METHOD
Downsample function, e.g. one of avg, min, sum, max ... etc
-W SECONDS, --downsample-window=SECONDS
Window size over which to downsample.
-a METHOD, --aggregator=METHOD
Aggregation method: avg, min, sum (default), max .. etc
-x METHOD, --method=METHOD
Comparison method: gt, ge, lt, le, eq, ne.
-r, --rate Use rate value as comparison operand.
-w THRESHOLD, --warning=THRESHOLD
Threshold for warning. Uses the comparison method.
-c THRESHOLD, --critical=THRESHOLD
Threshold for critical. Uses the comparison method.
-v, --verbose Be more verbose.
-T SECONDS, --timeout=SECONDS
How long to wait for the response from TSD.
-E, --no-result-ok Return OK when TSD query returns no result.
-I SECONDS, --ignore-recent=SECONDS
Ignore data points that are that are that recent.
-P PERCENT, --percent-over=PERCENT
Only alarm if PERCENT of the data points violate the
threshold.
-N UTC, --now=UTC Set unix timestamp for "now", for testing
-S, --ssl Make queries to OpenTSDB via SSL (https)
Полный список режимов усреднения и агрегации см. на странице http://opentsdb.net/docs/build/html/user_guide/query/aggregators.html#available-aggregators
Настройка Nagios
Поместите скрипт в свой путь Nagios и настройте команду следующим образом:
define command{
command_name check_tsd
command_line $USER1$/check_tsd -H $HOSTADDRESS$ $ARG1$
}
Затем определите хост в nagios для вашего сервера TSD. Вы можете предоставить ему команду проверки, которая гарантированно всегда вернёт что-то, если бэкенд здоров.
define host{
host_name tsd
address tsd
check_command check_tsd!-d 60 -m rate:tsd.rpc.received -t type=put -x lt -c 1
[...]
}
Затем определите некоторые проверки служб для мониторинга интересующих вас показателей.
define service{
host_name tsd
service_description Apache too many internal errors
check_command check_tsd!-d 300 -m rate:apache.stats.hits -t status=500 -w 1 -c 2
[...]
}
Тестирование
Если вы хотите протестировать свои параметры по отношению к определённой точке во времени, вы можете использовать параметр --now <UTC> для указания явного метки Unix, которая используется в качестве текущей метки времени вместо фактического текущего времени. Если он установлен, скрипт будет извлекать данные, начиная с UTC - duration, заканчивая UTC.
Чтобы увидеть полученные значения и потенциально пропущенные (из-за продолжительности), используйте опцию --verbose.
© 2010–2016 The OpenTSDB Authors
Licensed under the GNU LGPLv2.1+ and GPLv3+ licenses.
http://opentsdb.net/docs/build/html/user_guide/utilities/nagios.html