Eu uso o zabbix no meu ambiente, mas acho que esse método também poderia funcionar em outras configurações. 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 confirmados da pesquisa elástica. Então, pego esse valor e divido pelo número de segundos desde que tirei a última amostra (verifico a cada minuto); se esse número cair abaixo de um limite arbitrário, posso alertá-lo. Também uso o zabbix para verificar se o PID do logstash morreu, alertar sobre isso também e executar 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 corretos), o que também posso alertar.