logo

Select Sidearea

Populate the sidearea with useful widgets. It’s simple to add images, categories, latest post, social media icon links, tag clouds, and more.
hello@youremail.com
+1234567890

Добавление Curator в стек ELK на docker

 > Все  > ELK  > Добавление Curator в стек ELK на docker

Добавление Curator в стек ELK на docker

Стек ELK разворачивается с помощью роли ansible, на docker узле с помощью docker-compose. Подробнее о конфигурации стека и роли можно посмотреть здесь. Для контроля индексов на кластере Elasticsearch необходимо установить Curator. Это приложение, которое по расписанию делает запрос к Elasticsearch для удаления устаревших индексов.

В кластер Elasticsearch собирается полный технологический журнал двух баз с примерно сотней пользователей. Среднее количество событий в час в течение рабочего дня составляет примерно 2.7 миллиона. Такое большое количество событий, которое может собраться за несколько дней, не нужно на этом кластере. Нужно оставлять события за последние 2 дня, чтобы при возникновении проблем можно было отыскать их источник.

Роль создана на базе docker-elk https://github.com/deviantony/docker-elk, у них же в репозитории есть расширение для запуска Curator. Но сделано будет не по рекомендации разработчиков, запуск в качестве дополнения, а путем добавления в основной файл docker-compose.yml.

Структура каталога docker-elk/tree/master/extensions/curator следующая:

.
├── config
│   ├── curator.yml
│   └── delete_log_files_curator.yml
├── curator-compose.yml
├── Dockerfile
├── entrypoint.sh
└── README.md

Содержимое файла curator-compose.yml:

version: '2'
services:
  curator:
    build:
      context: extensions/curator/
    environment:
      ELASTICSEARCH_HOST: elasticsearch
      CRON: 0 0 * * *
      CONFIG_FILE: /usr/share/curator/config/curator.yml
      COMMAND: /usr/share/curator/config/delete_log_files_curator.yml
      UNIT_COUNT: 2
    networks:
      - elk
    depends_on:
      - elasticsearch

Необходимо взять описание сервиса и добавить в файл шаблона docker-compose.yml.j2 роли ansible и, заодно, в files/docker-elk/docker-compose.yml чтобы ansible-viz нарисовал блок-схему нового стека. Файл docker-compose.yml.j2 должен принять следующий вид:

version: '2'
services:
  elasticsearch:
    build:
      context: elasticsearch/
    args:
      ELK_VERSION: {{ elk.version }}
    volumes:
      - ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
    ports:
      - "{{ elk.elasticsearch.ports.rest }}:9200"
      - "{{ elk.elasticsearch.ports.nc }}:9300"
    environment:
      ES_JAVA_OPTS: "-Xmx256m -Xms256m"
    networks:
      - elk
  logstash:
    build:
      context: logstash/
    args:
      ELK_VERSION: {{ elk.version }}
    volumes:
      - ./logstash/config/logstash.yml:/usr/share/logstash/config/logstash.yml:ro
      - ./logstash/pipeline:/usr/share/logstash/pipeline:ro
    ports:
      - "{{ elk.logstash.ports.mon }}:9600"
      - "{{ elk.logstash.ports.beats }}:5000"
    environment:
      LS_JAVA_OPTS: "-Xmx256m -Xms256m"
    networks:
      - elk
    depends_on:
      - elasticsearch
  kibana:
    build:
      context: kibana/
    args:
      ELK_VERSION: {{ elk.version }}
    volumes:
      - ./kibana/config/:/usr/share/kibana/config:ro
    ports:
      - "{{ elk.kibana.port }}:5601"
    networks:
      - elk
    depends_on:
      - elasticsearch
  curator:
    build:
      context: extensions/curator/
    environment:
      ELASTICSEARCH_HOST: elasticsearch
      CRON: 0 0 * * *
      CONFIG_FILE: /usr/share/curator/config/curator.yml
      COMMAND: /usr/share/curator/config/delete_log_files_curator.yml
      UNIT_COUNT: 2
    networks:
      - elk
    depends_on:
      - elasticsearch
    networks:
      elk:
        driver: bridge

Теперь необходимо изменить структуру каталогов. В каталог files/docker-elk роли необходимо поместить каталог extensions из репозитория. Сохранить оригинальную структуру очень важно, чтобы сохранялась возможность актуализировать стек из репозитория разработчика.

Перед запуском необходимо разобраться с конфигурационными файлами Curator. Они находятся в docker-elk/extensions/curator/config. Они содержат настройки по умолчанию для стека, их вполне можно использовать. Также по умолчанию удаляются индексы старше, чем 2 дня. Имя индексов, которые необходимо чистить можно указать после развертывания, с помощью других ролей ansible или же вручную. Эти фильтры настраиваются в файле delete_log_files_curator.yml.

Теперь необходимо применить отредактированную роль к тому хосту, где она была развернута. Отсутствующие или изменившиеся файлы стека перезапишутся, стек перезапустится и Curator начнет работать.

roox
3 комментария
  • shadowrunner
    Ответить
    Posted at 17:58, 23.04.2026

    Пытаюсь добавить Curator в ELK через Docker, но при запуске контейнера получаю ошибку «Failed to connect to Elasticsearch». Проверил конфиг, всё по документации. Может, кто сталкивался? Может, стоит отдельно запускать Elasticsearch для Curator отдельно от общего стека?

  • router_rider
    Ответить
    Posted at 17:58, 23.04.2026

    Вчера целый день гонял ELK в Docker, чтобы добавить Curator — вышло, что без правильного монтирования volume он вообще не видит индексы. Никак не могу понять, где у меня путь к данным указан неверно. Есть у кого-то working config для curator.yml? Или просто подскажите, куда копать? Спасибо!

  • Posted at 17:58, 23.04.2026

    Решил попробовать добавить Curator в ELK через Docker, но после настройки стал получать ошибки при запуске логов. Вроде все по инструкции, но elastic search не хочет соединяться с curator. Может, кто сталкивался? Может, я где-то криво прописал network mode?

Post a Comment

Comment
Name
Email
Website