Added check for read-only indices in ESv6
Change-Id: I25a9e33497d5cc6205c269ba8cc0db427827486f
Related-Bug: PROD-26666
diff --git a/elasticsearch/files/v6/es_check_read_only.sh b/elasticsearch/files/v6/es_check_read_only.sh
new file mode 100755
index 0000000..55098f3
--- /dev/null
+++ b/elasticsearch/files/v6/es_check_read_only.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+{%- from "elasticsearch/map.jinja" import server with context %}
+{%- set bind = server.get('bind', {}) %}
+val=$(curl --silent -XGET {{ bind.address|default('127.0.0.1') }}:{{ bind.port|default(9200) }}/_all/_settings?pretty=true|grep -c -e "\"read_only_allow_delete\" : \"true\"")
+echo "{ \"elasticsearch_indices_read_only_allow_delete\": ${val} }"
diff --git a/elasticsearch/meta/prometheus.yml b/elasticsearch/meta/prometheus.yml
index 46ab505..6d0445f 100644
--- a/elasticsearch/meta/prometheus.yml
+++ b/elasticsearch/meta/prometheus.yml
@@ -28,6 +28,18 @@
summary: "Elasticsearch cluster status is RED"
description: "The Elasticsearch cluster status is RED for 2 minutes."
{%- endraw %}
+ ElasticsearchIndicesInReadOnlyMode:
+ if: >-
+ exec_elasticsearch_indices_read_only_allow_delete > 0
+ {%- raw %}
+ for: 2m
+ labels:
+ severity: critical
+ service: elasticsearch
+ annotations:
+ summary: "Elasticsearch indices are read-only"
+ description: "The Elasticsearch service has indices in read-only mode for 2 minutes."
+ {%- endraw %}
{%- endif %}
{%- if server.get('enabled', False) %}
ElasticsearchServiceDown:
diff --git a/elasticsearch/meta/telegraf.yml b/elasticsearch/meta/telegraf.yml
index 6ccac3f..2fc3166 100644
--- a/elasticsearch/meta/telegraf.yml
+++ b/elasticsearch/meta/telegraf.yml
@@ -13,6 +13,12 @@
cluster_health: false
cluster_stats: true
local: true
+ exec:
+ commands:
+ - "/usr/local/bin/elasticsearch_check_read_only.sh"
+ interval: "30s"
+ timeout: "15s"
+ data_format: "json"
{%- endif %}
{%- if client.get('enabled', False) %}
diff --git a/elasticsearch/server/init.sls b/elasticsearch/server/init.sls
index e8ae754..273e214 100644
--- a/elasticsearch/server/init.sls
+++ b/elasticsearch/server/init.sls
@@ -42,6 +42,15 @@
- pkg: elasticsearch_packages
{%- endif %}
+{%- if server.version == 6 %}
+elasticsearch_telegraf_exec_plugin_script:
+ file.managed:
+ - name: /usr/local/bin/elasticsearch_check_read_only.sh
+ - source: salt://elasticsearch/files/v{{ server.version }}/es_check_read_only.sh
+ - template: jinja
+ - mode: 755
+{%- endif %}
+
{%- if server.version in [5, 6] %}
elasticsearch_logging:
file.managed: