Какой экспортер используется для отправки данных из Kubernetes в Elasticsearch?

Ответ

Прямого "экспортера" из Kubernetes в Elasticsearch не существует. Вместо этого используется связка из агента для сбора логов и плагина для Elasticsearch. Стандартным выбором в экосистеме CNCF является Fluent Bit (легковесный) или Fluentd (более функциональный).

Типичный стек:

  1. Fluent Bit развертывается как DaemonSet на каждой ноде K8s.
  2. Он собирает логи контейнеров и системные логи с ноды.
  3. Через выходной плагин Elasticsearch (es) он отправляет структурированные логи в кластер Elasticsearch.

Пример конфигурации Fluent Bit (ConfigMap):

apiVersion: v1
kind: ConfigMap
metadata:
  name: fluent-bit-config
data:
  fluent-bit.conf: |
    [SERVICE]
        Parsers_File parsers.conf
    [INPUT]
        Name tail
        Path /var/log/containers/*.log
        Parser docker
        Tag kube.*
    [OUTPUT]
        Name es
        Match kube.*
        Host elasticsearch-logging.monitoring.svc.cluster.local
        Port 9200
        Logstash_Format On
        Logstash_Prefix fluent-bit-k8s
        Time_Key @timestamp

Альтернативы и нюансы:

  • Filebeat из стека ELK также может собирать логи через DaemonSet, но Fluent Bit стал де-факто стандартом для K8s из-за низкого потребления ресурсов.
  • Для отправки метрик из Prometheus в Elasticsearch используется отдельный инструмент — prometheus-elasticsearch-exporter, но это менее распространенная практика. Обычно метрики остаются в Prometheus, а логи идут в Elasticsearch.
  • Ключевые задачи при настройке: обеспечить правильные RBAC-права для DaemonSet, настроить буферизацию для устойчивости к сбоям Elasticsearch и определить политику индексов (ротация, шаблоны) на стороне Elasticsearch.

Ответ 18+ 🔞

А, ну это же классика, ёпта! Ситуация, когда новичок гуглит "как экспортировать из кубера в эластик" и ждёт одну волшебную кнопку, а там — хуй с горы. Прямого-то экспортёра, блядь, и нету! Вообще нихуя такого.

Вот смотри, как мир устроен, ядрёна вошь. Вместо одной жирной утилиты тебе подсовывают связку: агент, который логи собирает и плагин, который их в Elasticsearch пихает. В мире облачных нанотехнологий (CNCF, блядь) все как один топят за Fluent Bit — он лёгкий, прожорливый как мартышлюшка, или за его старшего брата Fluentd, если тебе функционала овердохуища нужно.

Как это обычно выглядит, бля:

  1. Fluent Bit тебе на каждую ноду кубера впаивается как DaemonSet. Представь — мелкий шпион на каждой машине.
  2. Этот шпион сидит и смотрит в хвост всех логов контейнеров (да и системные тоже может хапнуть).
  3. А потом, через свой выходной плагин для Elasticsearch (просто es), он аккуратненько эти структурированные логи отправляет прямиком в кластер эластика. Всё, доверия ебать ноль, но работает.

Вот тебе кусок конфига этого дела (ConfigMap), чтоб не пиздеть просто так:

apiVersion: v1
kind: ConfigMap
metadata:
  name: fluent-bit-config
data:
  fluent-bit.conf: |
    [SERVICE]
        Parsers_File parsers.conf
    [INPUT]
        Name tail
        Path /var/log/containers/*.log
        Parser docker
        Tag kube.*
    [OUTPUT]
        Name es
        Match kube.*
        Host elasticsearch-logging.monitoring.svc.cluster.local
        Port 9200
        Logstash_Format On
        Logstash_Prefix fluent-bit-k8s
        Time_Key @timestamp

Что ещё за альтернативы, спросишь?

  • Ну, можно Filebeat из того самого стека ELK прикрутить, тоже через DaemonSet. Но все уже, блядь, подсели на Fluent Bit, потому что он ресурсов жрёт как хитрая жопа — мало.
  • Если тебе метрики из Prometheus вдруг в Elasticsearch захотелось — это, чувак, отдельная история с prometheus-elasticsearch-exporter. Но это такой изврат, честно. Все нормальные люди метрики в Прометее оставляют, а логи уже в Эластик гонят.
  • И главное, не обольщайся! Основная ебля начинается потом: настроить права (RBAC) для этого DaemonSet'а, чтобы он не слишком много мог, отказоустойчивость наладить на случай, если эластик накрылся медным тазом, и в самом Elasticsearch индексы правильно настроить, чтобы они не сожрали всё место. Вот тут-то и начинается настоящий террор, волнение ебать.