Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Watcher ›Примеры наблюдений

Наблюдение за состоянием кластера Elasticsearch

Вы можете легко настроить базовое наблюдение за мониторингом состояния вашего кластера Elasticsearch:

  • Установите расписание наблюдения и добавьте входные данные, которые получают состояние здоровья кластера.
  • Добавьте условие, которое оценивает состояние здоровья, чтобы определить, требуется ли действие.
  • Принять действие, если кластер находится в состоянии КРАСНЫЙ.

Расписание наблюдения и добавление входных данных

Расписание наблюдения расписание контролирует частоту срабатывания наблюдения. Входные данные наблюдения входные данные получают данные, которые вы хотите оценить.

Самый простой способ определения расписания — указать интервал. Например, следующее расписание выполняется каждые 10 секунд:

PUT _watcher/watch/cluster_health_watch
{
  "trigger" : {
    "schedule" : { "interval" : "10s" } 
  }
}

Расписания обычно настраиваются на менее частую работу. В этом примере интервал установлен на 10 секунд, чтобы вы могли легко наблюдать за срабатыванием наблюдений. Поскольку это наблюдение выполняется так часто, не забудьте удалить наблюдение, когда закончите эксперименты.

Чтобы получить состояние вашего кластера, вы можете вызвать API состояния кластера:

GET _cluster/health?pretty

Чтобы загрузить состояние здоровья в ваше наблюдение, просто добавьте HTTP входные данные, которые вызывают API состояния кластера:

PUT _watcher/watch/cluster_health_watch
{
  "trigger" : {
    "schedule" : { "interval" : "10s" }
  },
  "input" : {
    "http" : {
      "request" : {
        "host" : "localhost",
        "port" : 9200,
        "path" : "/_cluster/health"
      }
    }
  }
}

Если вы используете Security, вам также потребуется предоставить некоторые учетные данные аутентификации в качестве части конфигурации наблюдения:

PUT _watcher/watch/cluster_health_watch
{
  "trigger" : {
    "schedule" : { "interval" : "10s" }
  },
  "input" : {
    "http" : {
      "request" : {
        "host" : "localhost",
        "port" : 9200,
        "path" : "/_cluster/health",
        "auth": {
          "basic": {
            "username": "elastic",
            "password": "x-pack-test-password"
          }
        }
      }
    }
  }
}

Было бы неплохо создать пользователя с минимальными необходимыми правами для использования такой конфигурации наблюдения.

В зависимости от конфигурации вашего кластера, могут потребоваться дополнительные настройки, прежде чем наблюдение сможет получить доступ к вашему кластеру, такие как хранилища ключей, хранилища доверенных сертификатов или сертификаты. Более подробная информация приведена в Настройках Watcher.

Если вы проверите историю наблюдения, вы увидите, что состояние кластера записывается в качестве части watch_record каждый раз, когда выполняется наблюдение.

Например, следующий запрос извлекает последние десять записей истории наблюдения:

GET .watcher-history*/_search
{
  "sort" : [
    { "result.execution_time" : "desc" }
  ]
}

Добавление условия

Условие оценивает данные, загруженные в наблюдение, и определяет, требуется ли какое-либо действие. Поскольку вы определили входные данные, которые загружают состояние кластера в наблюдение, вы можете определить условие, которое проверяет это состояние.

Например, вы можете добавить условие, чтобы проверить, является ли состояние КРАСНЫМ.

PUT _watcher/watch/cluster_health_watch
{
  "trigger" : {
    "schedule" : { "interval" : "10s" } 
  },
  "input" : {
    "http" : {
      "request" : {
       "host" : "localhost",
       "port" : 9200,
       "path" : "/_cluster/health"
      }
    }
  },
  "condition" : {
    "compare" : {
      "ctx.payload.status" : { "eq" : "red" }
    }
  }
}

Расписания обычно настраиваются на менее частую работу. В этом примере интервал установлен на 10 секунд, чтобы вы могли легко наблюдать за срабатыванием наблюдений.

Если вы проверите историю наблюдения, вы увидите, что результат условия записан в качестве части watch_record каждый раз, когда выполняется наблюдение.

Чтобы проверить, было ли выполнено условие, вы можете запустить следующий запрос.

GET .watcher-history*/_search?pretty
{
  "query" : {
    "match" : { "result.condition.met" : true }
  }
}

Принятие действия

Запись watch_records в истории наблюдения — это хорошо, но реальная мощь Watcher заключается в возможности выполнить что-то в ответ на оповещение. Действия наблюдения действия определяют, что делать, когда условие наблюдения истинно — вы можете отправлять электронные письма, вызывать веб-хуки сторонних сервисов или записывать документы в индекс Elasticsearch или журнал, когда выполняется условие наблюдения.

Например, вы можете добавить действие для индексирования информации о состоянии кластера, когда состояние равно КРАСНОМУ.

PUT _watcher/watch/cluster_health_watch
{
  "trigger" : {
    "schedule" : { "interval" : "10s" }
  },
  "input" : {
    "http" : {
      "request" : {
       "host" : "localhost",
       "port" : 9200,
       "path" : "/_cluster/health"
      }
    }
  },
  "condition" : {
    "compare" : {
      "ctx.payload.status" : { "eq" : "red" }
    }
  },
  "actions" : {
    "send_email" : {
      "email" : {
        "to" : "username@example.org",
        "subject" : "Cluster Status Warning",
        "body" : "Cluster status is RED"
      }
    }
  }
}

Для отправки электронных писем Watcher необходимо настроить учетную запись электронной почты в файле конфигурации elasticsearch.yml и перезапустить Elasticsearch. Чтобы добавить учетную запись электронной почты, установите свойство xpack.notification.email.account.

Например, следующий фрагмент настраивает одну учетную запись Gmail под названием work:

xpack.notification.email.account:
  work:
    profile: gmail
    email_defaults:
      from: <email> 
    smtp:
      auth: true
      starttls.enable: true
      host: smtp.gmail.com
      port: 587
      user: <username> 
      password: <password> 

Замените <email> на адрес электронной почты, с которого вы хотите отправлять уведомления.

Замените <username> на имя пользователя Gmail (обычно это ваш адрес Gmail).

Замените <password> на ваш пароль Gmail.

Если для вашей учетной записи электронной почты включены расширенные параметры безопасности, вам необходимо выполнить дополнительные действия для отправки электронных писем из Watcher. Более подробная информация приведена в разделе Настройка учетных записей электронной почты.

Вы можете проверить историю наблюдения или status_index, чтобы убедиться, что действие было выполнено.

GET .watcher-history*/_search?pretty
{
  "query" : {
    "match" : { "result.condition.met" : true }
  }
}

Удалить наблюдение

Поскольку cluster_health_watch настроен на выполнение каждые 10 секунд, убедитесь, что вы удалите его, когда закончите эксперименты. В противном случае вы будете бесконечно спамить себя.

Чтобы удалить наблюдение, используйте API удаления наблюдения:

DELETE _watcher/watch/cluster_health_watch

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/watch-cluster-status.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API