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

1oss > Все  > 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
No Comments

Post a Comment

Comment
Name
Email
Website