Как контролировать elasticsearch с помощью nagios
Я хотел бы отслеживать elasticsearch с помощью nagios.
В основном, я хочу знать, если elasticsearch вверх.
Я думаю, что могу использовать API-интерфейс Cluster Health API elasticsearch (см. здесь)
и используйте "статус", который я возвращаю (зеленый, желтый или красный), но я до сих пор не знаю, как использовать nagios (nagios находится на одном сервере, а elasticsearc - на другом сервере).
Есть ли другой способ сделать это?
РЕДАКТИРОВАТЬ:
Я просто нашел, что check_http_json. Я думаю, что попробую.
Ответы
Ответ 1
Через некоторое время мне удалось контролировать elasticsearch, используя nrpe.
Я хотел использовать API-интерфейс Cluster Health API elasticsearch, но я не мог использовать его с другого компьютера - из-за проблем с безопасностью...
Таким образом, на сервере мониторинга я создал новую службу, которой check_command является check_command check_nrpe!check_elastic
. И теперь на удаленном сервере, где находится elasticsearch, я редактировал файл nrpe.cfg со следующим:
command[check_elastic]=/usr/local/nagios/libexec/check_http -H localhost -u /_cluster/health -p 9200 -w 2 -c 3 -s green
Что разрешено, так как эта команда запускается с удаленного сервера, поэтому здесь нет проблем безопасности...
Это работает!!!
Я все равно попробую эту команду check_http_json, которую я опубликовал в своем Qeustion, но пока что мое решение достаточно хорошее.
Ответ 2
После игры с предложениями в этом посте я написал простой check_elasticsearch script. Он возвращает статус OK
, WARNING
и CRITICAL
, соответствующий параметру "статус" в ответе на работоспособность кластера ( "зеленый", "желтый" и "красный" соответственно).
Он также захватывает все другие параметры со страницы работоспособности и выгружает их в стандартном формате Nagios.
Наслаждайтесь!
Ответ 3
Бесстыдный плагин: https://github.com/jersten/check-es
Вы можете использовать его с ZenOSS/Nagios для мониторинга состояния кластера, индексов данных и индивидуального использования кучи node.
Ответ 4
Вы можете использовать этот классный Python script для мониторинга вашего кластера Elasticsearch. Этот script проверьте ваш IP: порт для статуса Elasticsearch. Этот и более Python script для мониторинга Elasticsearch можно найти здесь.
#!/usr/bin/python
from nagioscheck import NagiosCheck, UsageError
from nagioscheck import PerformanceMetric, Status
import urllib2
import optparse
try:
import json
except ImportError:
import simplejson as json
class ESClusterHealthCheck(NagiosCheck):
def __init__(self):
NagiosCheck.__init__(self)
self.add_option('H', 'host', 'host', 'The cluster to check')
self.add_option('P', 'port', 'port', 'The ES port - defaults to 9200')
def check(self, opts, args):
host = opts.host
port = int(opts.port or '9200')
try:
response = urllib2.urlopen(r'http://%s:%d/_cluster/health'
% (host, port))
except urllib2.HTTPError, e:
raise Status('unknown', ("API failure", None,
"API failure:\n\n%s" % str(e)))
except urllib2.URLError, e:
raise Status('critical', (e.reason))
response_body = response.read()
try:
es_cluster_health = json.loads(response_body)
except ValueError:
raise Status('unknown', ("API returned nonsense",))
cluster_status = es_cluster_health['status'].lower()
if cluster_status == 'red':
raise Status("CRITICAL", "Cluster status is currently reporting as "
"Red")
elif cluster_status == 'yellow':
raise Status("WARNING", "Cluster status is currently reporting as "
"Yellow")
else:
raise Status("OK",
"Cluster status is currently reporting as Green")
if __name__ == "__main__":
ESClusterHealthCheck().run()