Eu uso o zabbix no meu ambiente, mas suponho que esse método possa funcionar em outras configurações também. Eu configurei o seguinte comando que o zabbix tem permissão para usar:
UserParameter=elasticsearch.commits,/usr/bin/curl -s 'localhost:9200/_cat/count?v' | /bin/sed -n '2p' | /bin/awk '{print $3}'
Isso retornará o número total de registros comprometidos no elasticsearch. Então, eu pego esse valor e divido pelo número de segundos desde que tirei a última amostra (eu verifico a cada minuto), se esse número cair abaixo de um limite arbitrário, posso alertá-lo. Eu também uso o zabbix para verificar se o PID do logstash morreu, e também o alerta, e execute o seguinte comando:
UserParameter=elasticsearch.health,/usr/bin/curl -s 'http://localhost:9200/_cluster/health?pretty=true' | /bin/sed -n '3p' | /bin/awk -F'\"' '{print $4}' | /bin/sed s/yellow/0/ | /bin/sed s/green/0/ | /bin/sed s/red/1/
Isso retornará 1 se a integridade do cluster ficar vermelha (amarelo e verde estão bem), o que eu também posso alertar.