Последнее обновление: августа 10, 2026

Настройка источника данных Elasticsearch

Grafana поставляется с предустановленным источником данных Elasticsearch. Вы можете создавать самые разные запросы для визуализации журналов или метрик, хранящихся в Elasticsearch, и накладывать на графики аннотации с событиями журналов, хранящимися в Elasticsearch. Подробности об обновлении отдельного плагина см. в разделе Обновления плагина.

Инструкции о том, как добавить источник данных в Grafana, см. в документации по администрированию. Администраторы также могут настроить источник данных через YAML с помощью системы провижининга Grafana.

Прежде чем начать

Чтобы настроить источник данных Elasticsearch, вам потребуются:

  • Права администратора Grafana: добавлять источники данных могут только пользователи с ролью организации administrator.
  • Поддерживаемая версия Elasticsearch: v7.17 или более поздняя, v8.x, v9.x или Elastic Cloud Serverless.
  • URL-адрес сервера Elasticsearch: конечная точка HTTP или HTTPS вашего экземпляра Elasticsearch, включая порт (по умолчанию: 9200).
  • Учётные данные для аутентификации: в зависимости от конфигурации безопасности Elasticsearch вам потребуется одно из следующего:
    • имя пользователя и пароль для базовой аутентификации
    • ключ API
    • отсутствие учётных данных (если безопасность Elasticsearch отключена)
  • Сетевой доступ: Grafana должна иметь возможность обратиться к вашему серверу Elasticsearch. Для Grafana Cloud рассмотрите использование Private data source connect (PDC), если ваш экземпляр Elasticsearch находится в частной сети.

Разрешения Elasticsearch

Когда функции безопасности Elasticsearch включены, для пользователя или ключа API, которые Grafana использует для подключения, необходимо настроить следующие привилегии кластера:

  • monitor — требуется для проверки работоспособности соединения. Даёт доступ к конечной точке _cluster/health и позволяет получить информацию о версии подключённого экземпляра Elasticsearch.
  • view_index_metadata — требуется для доступа к определениям сопоставлений индексов.
  • read — даёт возможность выполнять операции поиска и извлечения данных по индексам. Это необходимо для запроса и извлечения данных из кластера.

Добавление источника данных

Чтобы добавить источник данных Elasticsearch, выполните следующие шаги:

  1. Нажмите Connections в меню слева.
  2. В разделе Connections нажмите Add new connection.
  3. Введите Elasticsearch в строке поиска.
  4. Нажмите Elasticsearch в разделе Data source.
  5. Нажмите Add new data source в правом верхнем углу.

Вы попадёте на вкладку Settings, где настроите конфигурацию Elasticsearch.

Параметры конфигурации

Настройте следующие базовые параметры источника данных Elasticsearch:

  • Name — имя источника данных. Именно так вы ссылаетесь на источник данных в панелях и запросах. Примеры: elastic-1, elasticsearch_metrics.

  • Default — включите, чтобы сделать этот источник данных используемым по умолчанию. Новые панели и запросы Explore используют источник данных по умолчанию.

Подключение

Задайте конечную точку HTTP, которую Grafana использует для доступа к вашему кластеру Elasticsearch.

  • URL — URL-адрес вашего сервера Elasticsearch, включая порт. Примеры: http://localhost:9200, http://elasticsearch.example.com:9200.

Аутентификация

Выберите, как Grafana аутентифицируется в Elasticsearch. Выберите способ аутентификации в раскрывающемся меню:

  • Basic authentication — введите имя пользователя и пароль для вашего пользователя Elasticsearch.

  • Forward OAuth identity — передать дальше OAuth-токен доступа (и OIDC ID-токен, если он доступен) пользователя, запрашивающего данные источника.

  • No authentication — подключение без учётных данных. Используйте этот вариант только если ваш экземпляр Elasticsearch не требует аутентификации.

  • Serverless API Key — введите ваш ключ API для подключения к бессерверному экземпляру Elastic. Инструкции по поиску или генерации ключа API см. в разделе Ключи API Elastic Cloud.

Аутентификация по ключу API

Чтобы аутентифицироваться с помощью ключа API Elasticsearch, выберите No authentication и настройте ключ API через заголовки HTTP:

  1. В разделе HTTP headers нажмите + Add header.
  2. Задайте для Header значение Authorization.
  3. Задайте для Value значение ApiKey <your-api-key>, заменив <your-api-key> на ваш ключ API Elasticsearch в кодировке base64.

Информацию о создании ключей API см. в документации по ключам API Elasticsearch.

Amazon OpenSearch Service и SigV4

Amazon OpenSearch Service — преемник Amazon Elasticsearch Service. Для Amazon OpenSearch Service вместо этого источника данных Elasticsearch используйте источник данных OpenSearch.

Если вы всё же подключаете источник данных Grafana Elasticsearch к домену, требующему AWS Signature Version 4 (AWS SigV4), например к устаревшему домену Amazon Elasticsearch Service или другой конечной точке, совместимой с OpenSearch и защищённой SigV4, необходимо подписывать все запросы с помощью SigV4.

Подробности о AWS SigV4 см. в документации AWS.

Чтобы подписывать запросы, включите SigV4 в конфигурации Grafana. После включения SigV4 настройте его на странице конфигурации источника данных Elasticsearch. Дополнительную информацию о вариантах аутентификации AWS см. в разделе Аутентификация AWS.

Настройка SigV4 для доменов, совместимых с Elasticsearch и размещённых в AWS
Настройка SigV4 для доменов, совместимых с Elasticsearch и размещённых в AWS

Параметры TLS

Note

Используйте TLS (Transport Layer Security) для дополнительного уровня безопасности при работе с Elasticsearch. Информацию о настройке шифрования TLS в Elasticsearch см. в разделе Настройка TLS. Вы должны добавить параметры TLS в файл конфигурации Elasticsearch до того, как зададите эти параметры в Grafana.

  • Add self-signed certificate — установите флажок, чтобы аутентифицироваться с помощью сертификата CA. Следуйте инструкциям CA (Certificate Authority), чтобы скачать файл сертификата. Требуется для проверки самоподписанных сертификатов TLS.

  • TLS client authentication — установите флажок, чтобы аутентифицироваться с помощью клиента TLS, когда сервер аутентифицирует клиента. Добавьте Server name, Client certificate и Client key. ServerName используется для проверки имени хоста в полученном сертификате. Client certificate может быть выпущен центром сертификации (CA) или быть самоподписанным. Client key также может быть выпущен центром сертификации (CA) или быть самоподписанным. Клиентский ключ шифрует данные между клиентом и сервером.

  • Skip TLS certificate validation — установите флажок, чтобы обойти проверку сертификата TLS. Пропускать проверку сертификата TLS не рекомендуется, если только это не абсолютно необходимо или не делается для тестирования.

Заголовки HTTP

Нажмите + Add header, чтобы добавить один или несколько заголовков HTTP. Заголовки HTTP передают дополнительный контекст и метаданные о запросе/ответе.

  • Header — добавьте пользовательский заголовок. Это позволяет передавать собственные заголовки в зависимости от потребностей вашего экземпляра Elasticsearch.

  • Value — значение заголовка.

Дополнительные параметры

Дополнительные параметры — это необязательные настройки, которые можно задать для большего контроля над источником данных.

Расширенные параметры HTTP

  • Allowed cookies — укажите по имени файлы cookie, которые следует передавать источнику данных. Прокси Grafana по умолчанию удаляет все передаваемые cookie.

  • Timeout — тайм-аут HTTP-запроса. Должен быть указан в секундах. Значения по умолчанию нет, поэтому выбор за вами.

Сведения об Elasticsearch

Следующие параметры специфичны для источника данных Elasticsearch.

  • Index name — имя вашего индекса Elasticsearch. Можно использовать следующие форматы:

    • Шаблоны с подстановочными знаками — используйте * для сопоставления нескольких индексов. Примеры: logs-*, metrics-*, filebeat-*.
    • Шаблоны времени — используйте заполнители даты для индексов, основанных на времени. Заключите фиксированную часть в квадратные скобки. Примеры: [logstash-]YYYY.MM.DD, [metrics-]YYYY.MM.
    • Конкретный индекс — введите точное имя индекса. Пример: application-logs.
    • Поиск по кластерам (cross-cluster search) — используйте шаблон cluster:index для запроса удалённых кластеров, настроенных в Elasticsearch. Пример: logs-cluster:logs-*. Поиск по кластерам доступен всегда. Функциональный переключатель не требуется.
  • Pattern — выберите шаблон сопоставления, если используете шаблон времени в имени индекса. Возможные варианты:

    • no pattern
    • hourly
    • daily
    • weekly
    • monthly
    • yearly

Выбирайте вариант шаблона только если указали шаблон времени в поле Index name.

  • Time field name — имя поля времени. Значение по умолчанию — @timestamp. Можно указать другое имя.

  • Max concurrent shard requests — задаёт количество сегментов (shards), запрашиваемых одновременно. По умолчанию — 5. Дополнительную информацию о сегментах см. в документации Elasticsearch.

  • Min time interval — определяет нижнюю границу для автоматического интервала группировки (auto group-by time interval). Это значение должно быть отформатировано как число, за которым следует допустимый идентификатор времени:

    Идентификатор Описание
    y год
    M месяц
    w неделя
    d день
    h час
    m минута
    s секунда
    ms миллисекунда

Рекомендуем задать это значение в соответствии с частотой записи в Elasticsearch. Например, задайте 1m, если Elasticsearch записывает данные каждую минуту.

Вы также можете переопределить этот параметр на панели дашборда в её параметрах источника данных. Значение по умолчанию — 10s.

  • X-Pack enabled — включите, чтобы активировать возможности и параметры, специфичные для X-Pack, которые предоставляют редактору запросов дополнительные агрегации, такие как Rate и Top Metrics.

  • Include frozen indices — включайте, когда активен параметр X-Pack enabled. Включает замороженные индексы (frozen indices) в поиск. Вы можете настроить Grafana так, чтобы она включала замороженные индексы при выполнении поисковых запросов.

Note

Замороженные индексы устарели в Elasticsearch начиная с v7.14.

Журналы

Настройте, какие поля источник данных использует для сообщений журналов и уровней журналов.

  • Message field name — поле, содержащее содержимое сообщения журнала.

  • Level field name — поле, содержащее информацию об уровне журнала или серьёзности. Если оно указано, Grafana использует это поле для определения уровня журнала и цветовой кодировки каждой строки журнала. Если в журнале нет поля уровня, Grafana пытается сопоставить содержимое с поддерживаемыми выражениями. Если Grafana не может определить уровень журнала, он отображается как unknown.

Ссылки на данные создают ссылку из указанного поля, доступную в представлении журналов Explore. Вы можете добавить несколько ссылок на данные, нажимая + Add.

Каждая конфигурация ссылки на данные состоит из:

  • Field — задаёт имя поля, используемого ссылкой на данные.

  • URL/query — задаёт полный URL ссылки, если ссылка внешняя. Если ссылка внутренняя, это поле служит запросом для целевого источника данных. В обоих случаях вы можете подставить значение из поля с помощью макроса ${__value.raw }.

  • URL Label (необязательно) — задаёт пользовательскую отображаемую метку для ссылки. По умолчанию метка ссылки — это полный внешний URL или имя связанного внутреннего источника данных; этот параметр переопределяет её.

  • Internal link — включите, чтобы задать внутреннюю ссылку. Для внутренней ссылки можно выбрать целевой источник данных с помощью селектора источников данных. Поддерживаются только источники данных трассировок.

Private data source connect (PDC) и Elasticsearch

Используйте Private data source connect (PDC), чтобы подключаться к данным в защищённой сети и запрашивать их, не открывая эту сеть для входящего трафика из Grafana Cloud. Дополнительную информацию о том, как работает PDC, см. в разделе Private data source connect, а шаги по настройке подключения PDC — в разделе Настройка Grafana private data source connect (PDC).

Если вы используете PDC с SigV4 (AWS Signature Version 4 Authentication), агент PDC должен разрешать исходящий доступ в интернет к sts.<region>.amazonaws.com:443.

  • Private data source connect — щёлкните в поле, чтобы выбрать подключение PDC по умолчанию в раскрывающемся меню или создать новое подключение.

После настройки параметров источника данных Elasticsearch нажмите Save & test, чтобы проверить соединение. При успешном соединении отображается следующее сообщение:

Elasticsearch data source is healthy.

Провижининг источника данных

Вы можете определить и настроить источник данных в YAML-файлах в рамках системы провижининга Grafana. Дополнительную информацию о провижининге и доступных параметрах конфигурации см. в разделе Провижининг Grafana.

Note

Ранее использовавшееся поле database теперь устарело. Используйте поле index в jsonData для хранения имени индекса. См. примеры ниже.

Базовый провижининг

YAML
apiVersion: 1

datasources:
  - name: Elastic
    type: elasticsearch
    access: proxy
    url: http://localhost:9200
    jsonData:
      index: '[metrics-]YYYY.MM.DD'
      interval: Daily
      timeField: '@timestamp'

Провижининг для журналов

YAML
apiVersion: 1

datasources:
  - name: elasticsearch-v7-filebeat
    type: elasticsearch
    access: proxy
    url: http://localhost:9200
    jsonData:
      index: '[filebeat-]YYYY.MM.DD'
      interval: Daily
      timeField: '@timestamp'
      logMessageField: message
      logLevelField: fields.level
      dataLinks:
        - datasourceUid: my_jaeger_uid # Target UID needs to be known
          field: traceID
          url: '$${__value.raw}' # Careful about the double "$$" because of env var expansion

Провижининг источника данных с помощью Terraform

Вы можете провижинить источник данных Elasticsearch с помощью Terraform и провайдера Grafana Terraform.

Дополнительную информацию о провижининге ресурсов с помощью Terraform см. в документации Grafana as code с использованием Terraform.

Базовый пример Terraform

Следующий пример создаёт базовый источник данных Elasticsearch для метрик:

hcl
resource "grafana_data_source" "elasticsearch" {
  name = "Elasticsearch"
  type = "elasticsearch"
  url  = "http://localhost:9200"

  json_data_encoded = jsonencode({
    index     = "[metrics-]YYYY.MM.DD"
    interval  = "Daily"
    timeField = "@timestamp"
  })
}

Пример Terraform для журналов

Следующий пример создаёт источник данных Elasticsearch, настроенный для журналов, со ссылкой на данные в Jaeger:

hcl
resource "grafana_data_source" "elasticsearch_logs" {
  name = "Elasticsearch Logs"
  type = "elasticsearch"
  url  = "http://localhost:9200"

  json_data_encoded = jsonencode({
    index           = "[filebeat-]YYYY.MM.DD"
    interval        = "Daily"
    timeField       = "@timestamp"
    logMessageField = "message"
    logLevelField   = "fields.level"
    dataLinks = [
      {
        datasourceUid = grafana_data_source.jaeger.uid
        field         = "traceID"
        url           = "$${__value.raw}"
      }
    ]
  })
}

Пример Terraform с базовой аутентификацией

Следующий пример включает базовую аутентификацию:

hcl
resource "grafana_data_source" "elasticsearch_auth" {
  name = "Elasticsearch"
  type = "elasticsearch"
  url  = "http://localhost:9200"

  basic_auth_enabled  = true
  basic_auth_username = "elastic_user"

  secure_json_data_encoded = jsonencode({
    basicAuthPassword = var.elasticsearch_password
  })

  json_data_encoded = jsonencode({
    index     = "[metrics-]YYYY.MM.DD"
    interval  = "Daily"
    timeField = "@timestamp"
  })
}

Все доступные параметры конфигурации см. в документации по ресурсу источника данных провайдера Grafana.