Рубрики
Uncategorized

Docker централизованная регистрация с стеком лося

Когда ваша инфраструктура растет, становится решающим, чтобы иметь роботы и надежную централизованную регистрацию SY … Теги с докером, дежоптом.

По мере роста вашей инфраструктуры становится решающим к роботам и надежной централизованной системе регистрации. Централизация журнала становится ключевым аспектом различных его задач и предоставляет вам обзор всей вашей системы.

Лучшим решением является совокупность журналов из всех контейнеров, которые обогащены метаданными, чтобы он предоставляет вам лучшую варианту прослеживаемости и поставляется с удивительной поддержкой сообщества. Это где стек лосятся в картинку. Лось, также известный как упругий стек, представляет собой комбинацию современных инструментов с открытым исходным кодом, таким как Elasticsearch, Logstash и Kibana. Это полное решение для концов, вы можете использовать для вашей системы.

Каждый компонент имеет определенную роль для воспроизведения: elasticsearch лучше всего подходит для хранения RAW logs, logstash помогает собирать и преобразовать журналы в постоянный формат, и Kibana добавляет большой слой визуализации и помогает вам управлять своей системой в удобном манера.

В этом руководстве вы узнаете, как развернуть лося и начать агрегационные журналы контейнеров. Здесь мы собираемся комбинировать лось с Filebeat Чтобы агрегировать контейнерные журналы. Для этого мы собираемся построить пользовательский документ докера.

Шаг 1 — Настройка файлаBeat:

Давайте начнем с конфигурации файла. Во-первых, вы должны создать DockerFile для создания изображения

$ mkdir filebeat_docker && cd $_
$ touch Dockerfile && nano Dockerfile

Теперь откройте Dockerfile В вашем предпочтительном текстовом редакторе и скопируйте/вставьте ниже указанные строки:

FROM docker.elastic.co/beats/filebeat:7.5.1

COPY filebeat.yml /usr/share/filebeat/filebeat.yml
USER root
RUN mkdir /usr/share/filebeat/dockerlogs
RUN chown -R root /usr/share/filebeat/
RUN chmod -R go-w /usr/share/filebeat/

В filebeat_docker каталог, создать filebeat.yml Файл, который содержит конфигурацию для файла. Для этого руководства мы собираемся использовать минимальный filebeat.yml файл.

filebeat.inputs:
  - type: docker
    containers:
      path: "/usr/share/dockerlogs/data"
      stream: "stdout"
      ids:
        - "*"
      cri.parse_flags: true
      combine_partial: true
      exclude_files: ['\.gz$']

processors:
  - add_docker_metadata:
      host: "unix:///var/run/docker.sock"

filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false

output.logstash:
  hosts: ["127.0.0.1:5044"]

log files:
logging.level: error
logging.to_files: false
logging.to_syslog: false
loggins.metrice.enabled: false
logging.files:
  path: /var/log/filebeat
  name: filebeat
  keepfiles: 7
  permissions: 0644
ssl.verification_mode: none

Теперь пришло время создать изображение Docker FileBeat:

$ docker build -t filebeatimage .
Sending build context to Docker daemon  3.584kB
Step 1/6 : FROM docker.elastic.co/beats/filebeat:7.5.1
7.5.1: Pulling from beats/filebeat
c808caf183b6: Already exists 
a07383b84bc8: Pull complete 
a3c8dd4531b4: Pull complete 
5547f4a87d0c: Pull complete 
d68e041d92cd: Pull complete 
7cfb3f76a272: Pull complete 
748d7fe7bf07: Pull complete 
Digest: sha256:68d87ae7e7bb99832187f8ed5931cd253d7a6fd816a4bf6a077519c8553074e4
Status: Downloaded newer image for docker.elastic.co/beats/filebeat:7.5.1
 ---> 00c5b17745d1
Step 2/6 : COPY filebeat.yml /usr/share/filebeat/filebeat.yml
 ---> f6b75829d8d6
Step 3/6 : USER root
 ---> Running in 262c41d7ce58
Removing intermediate container 262c41d7ce58
 ---> 1ffcda8f39cf
Step 4/6 : RUN mkdir /usr/share/filebeat/dockerlogs
 ---> Running in 8612b1895ac7
Removing intermediate container 8612b1895ac7
 ---> 483d29e65dc7
Step 5/6 : RUN chown -R root /usr/share/filebeat/
 ---> Running in 4a6ad8b22705
Removing intermediate container 4a6ad8b22705
 ---> b779a9da7ac9
Step 6/6 : RUN chmod -R go-w /usr/share/filebeat/
 ---> Running in bb9638d12090
Removing intermediate container bb9638d12090
 ---> 85ec125594ee
Successfully built 85ec125594ee
Successfully tagged filebeatimage:latest

Чтобы проверить, было ли изображение было успешно построено:

$ docker images
REPOSITORY      TAG           IMAGE ID            CREATED             SIZE
filebeatimage   latest        85ec125594ee        7 seconds ago       514MB

Для filebeat_elk Контейнер, вы создали два монтажа с помощью параметра ;

  • /var/lib/docker/контейнеры:/usr/share/dockerlogs/data : У вас есть сопоставленные журналы Docker Host Machine, которые находятся в /var/lib/docker/контейнеры к /usr/share/dockerlogs/data внутри контейнера докера. Обратите внимание, что вы использовали : к Что обозначает, что имеет разрешение только для чтения.
  • Тогда как /var/run/docker.sock Связывается с демоном Docker контейнера FileBeat, который позволяет контейнеру FileBeaT собирать метаданные докера и записываний контейнеров.

Установка файлов по деб:

Есть альтернативный способ установить файлбет в вашем хост-машине. На момент написания, версия FileBeat — 7.5.1 Вы можете скачать последнюю версию файлов FileBeat из здесь Отказ

Чтобы установить загруженные .deb файл:

$ wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.5.1-amd64.deb

$ sudo dpkg -i filebeat-7.5.1-amd64.deb

Вы можете найти файл конфигурации в /etc/filebeat/filebeat.yml каталог.

Шаг 2 — Настройка лося или упругих стеков

Вы можете использовать удаленный сервер для проведения стека ELK или может запустить контейнеры в пределах вашей существующей системы.

Прежде чем идти, убедитесь, что следующие порты слушают:

  • Elasticsearch — Порт 9200 и порт 9300.
  • Логисташ — порт 5044.
  • Кибана — Порт 5601.

Elasticsearch:

Мы собираемся использовать последний официальный образ Elasticsearch по настоящее время. Так что начните, потянув изображение из докера Hub:

$ docker pull docker.elastic.co/elasticsearch/elasticsearch:7.5.1
7.5.1: Pulling from elasticsearch/elasticsearch
c808caf183b6: Already exists 
05ff3f896999: Pull complete 
82fb7fb0a94e: Pull complete 
c4d0024708f4: Pull complete 
136650a16cfe: Pull complete 
968db096c092: Pull complete 
42547e91692f: Pull complete 
Digest: sha256:b0960105e830085acbb1f9c8001f58626506ce118f33816ea5d38c772bfc7e6c
Status: Downloaded newer image for docker.elastic.co/elasticsearch/elasticsearch:7.5.1
docker.elastic.co/elasticsearch/elasticsearch:7.5.1

Теперь создайте имя каталога как Docker_elk , где все ваши файлы конфигурации и DockerFile будут проживать:

$ mkdir docker_elk && cd $ _

Внутри Docker_elk Создайте другой каталог для elasticsearch и создать Dockerfile и elasticsearch.yml Файлы:

$ mkdir elasticsearch && cd $_
$ touch Dockerfile && touch elasticsearch.yml

Открыть elasticsearch.yml Файл в предпочтительном текстовом редакторе и скопируйте настройку конфигурации, как это:

---
cluster.name: "docker-cluster"
network.host: 0.0.0.0

xpack.license.self_generated.type: basic
xpack.security.enabled: true
xpack.monitoring.collection.enabled: true

Обратите внимание, что вы можете установить xpack.license.sels_generated.type от Базовый к пробный Если вы хотите оценить коммерческую особенность X-PACK в течение 30 дней.

Откройте dockerfile в предпочтительном текстовом редакторе и скопируйте указанные ниже строки и вставьте его как оно:

FROM docker.elastic.co/elasticsearch/elasticsearch:7.5.1
COPY --chown=elasticsearch:elasticsearch ./elasticsearch.yml /usr/share/elasticsearch/config/

Команда Chowne это изменить владелец файла в elasticsearch как другие файлы в контейнере.

Кибана:

Теперь вы собираетесь настроить DockerFile для Kibana, и снова вы должны вытащить новейшее изображение из эластичного реестра Docker:

$ docker pull docker.elastic.co/kibana/kibana:7.5.1
7.5.1: Pulling from kibana/kibana
c808caf183b6: Already exists 
e12a414b7b04: Pull complete 
20714d0b39d8: Pull complete 
393e0a5bccf2: Pull complete 
b142626e938b: Pull complete 
b28e35a143ca: Pull complete 
728725922476: Pull complete 
96692e1a8406: Pull complete 
e4c3cbe1dbbe: Pull complete 
bb6fc46a19d1: Pull complete 
Digest: sha256:12b5e37e0f960108750e84f6b2f8acce409e01399992636b2a47d88bbc7c2611
Status: Downloaded newer image for docker.elastic.co/kibana/kibana:7.5.1
docker.elastic.co/kibana/kibana:7.5.1

Внутри вашего Docker_elk Создайте каталог и внутри него, вы должны создать Dockerfile а также kibana.yml Файлы:

$ mkdir kibana && cd $_
$ touch Dockerfile && touch kibana.yml

kibana.yml будет состоять из следующих конфигураций. Обратите внимание, что вы должны изменить значения elasticsearch.user и elasticsearch.password. :

---
server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://elasticsearch:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true

elasticsearch.username: elastic
elasticsearch.password: yourstrongpasswordhere

Тогда как в Dockerfile , будет выглядеть что-то вроде этого:

FROM docker.elastic.co/kibana/kibana:7.5.1
COPY ./kibana.yml /usr/share/kibana/config/

Logstash:

Контейнерное изображение для logstash доступно от эластичного реестра Docker. Опять же на момент написания текущей версии 7.5.1, вы можете найти последнюю версию logstash здесь Отказ

$ docker pull docker.elastic.co/logstash/logstash:7.5.1
7.5.1: Pulling from logstash/logstash
c808caf183b6: Already exists 
7c07521065ed: Pull complete 
d0d212a3b734: Pull complete 
418bd04a229b: Pull complete 
b22f374f97b1: Pull complete 
b65908943591: Pull complete 
2ee12bfc6e9c: Pull complete 
309701bd1d88: Pull complete 
b3555469618d: Pull complete 
2834c4c48906: Pull complete 
bae432e5da20: Pull complete 
Digest: sha256:5bc89224f65459072931bc782943a931f13b92a1a060261741897e724996ac1a
Status: Downloaded newer image for docker.elastic.co/logstash/logstash:7.5.1
docker.elastic.co/logstash/logstash:7.5.1

Теперь создайте каталог для logstash внутри Docker_elk и добавьте необходимые файлы, как показано ниже:

$ mkdir logstash && cd $_
$ touch Dockerfile && touch logstash.yml

Скопируйте ниже упомянутую строку в logstash.yml Отказ Убедитесь, что вы вводите правильное имя пользователя и пароль в xpack.monitoring.elasticsearch.username. и xpack.monitoring.elasticsearch.password соответственно:

---
http.host: "0.0.0.0"
xpack.monitoring.elasticsearch.hosts: [ "http://elasticsearch:9200" ]

xpack.monitoring.enabled: true
xpack.monitoring.elasticsearch.username: elastic
xpack.monitoring.elasticsearch.password: yourstrongpasswordhere

Теперь добавьте следующие строки в свой Dockerfile :

FROM docker.elastic.co/logstash/logstash:7.5.1
COPY ./logstash.yml /usr/share/logstash/config/
COPY ./logstash.conf /usr/share/logstash/pipeline/

Помимо этого, вы должны создать logstash.conf file. . Здесь, в эластичном обществе, вы найдете хозяин , Пользователь и пароль Убедитесь, что вы измените значения согласно вашей системе:

input {
    tcp {
    port => 5000
    codec => json
  }
}
output {
  elasticsearch {
    hosts => "elasticsearch:9200"
    user => elastic
    password => yourstrongpasswordhere
  }
}

Как вы проходите с настройкой компонентов вашего стека, структура каталогов вашего проекта должна выглядеть что-то подобное:

.
├── elasticsearch
│   ├── Dockerfile
│   └── elasticsearch.yml
├── kibana
│   ├── Dockerfile
│   └── kibana.yml
└── logstash
    ├── Dockerfile
    ├── logstash.conf
    └── logstash.yml

3 directories, 7 files

Теперь пришло время создать Docker Compose файл, который позволит вам запустить стек.

Шаг 3 — Docker Compose

Создать Docker-Compose.yml Файл в Docker_elk каталог. Здесь вы собираетесь определить и запустить вашу многофункциональную приложение состоят из elasticsearch, kibana и logstash.

Вы можете скопировать указанный ниже контекст в файле docker-compose.yml. Пожалуйста, убедитесь, что вы измените Elastic_password и Es_java_opts значения. Для этого руководства Es_java_opts Установлено на 256 МБ, но в реальных мировых сценариях вы можете увеличить размер кучи согласно требованию.

version: '3.2'

services:
 elasticsearch:
   build:
     context: elasticsearch/
   volumes:
     - type: volume
       source: elasticsearch
       target: /usr/share/elasticsearch/data
   ports:
     - "9200:9200"
     - "9300:9300"
   environment:
     ES_JAVA_OPTS: "-Xmx256m -Xms256m"
     ELASTIC_PASSWORD: yourstrongpasswordhere
     discovery.type: single-node
   networks:
     - elk_stack

 logstash:
   build:
     context: logstash/
   ports:
     - "5000:5000"
     - "9600:9600"
   environment:
     LS_JAVA_OPTS: "-Xmx256m -Xms256m"
   networks:
     - elk_stack
   depends_on:
     - elasticsearch

 kibana:
   build:
     context: kibana/
   ports:
     - "5601:5601"
   networks:
     - elk_stack
   depends_on:
     - elasticsearch

networks:
 elk_stack:
   driver: bridge

volumes:
 elasticsearch:

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

$ docker-compose up -d
Starting elastic_elk ... done
Starting kibana_elk   ... done
Starting logstash_elk ... done

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

$ curl 'localhost:9200/_cat/indices?v' -u elastic:yourstrongpasswordhere

health status index                             uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .triggered_watches                m-l01yMmT7y2PYU4mZ6-RA   1   0          0            0      6.5kb          6.5kb
green  open   .watcher-history-10-2020.01.10    SX3iYGedRKKCC6JLx_W8fA   1   0       1523            0        2mb            2mb
green  open   .management-beats                 ThHV2q9iSfiYo__s2rouIw   1   0          6            1     40.5kb         40.5kb
green  open   .ml-annotations-6                 PwK7Zuw7RjytoWFuCCulJg   1   0          0            0       283b           283b
green  open   .monitoring-kibana-7-2020.01.10   8xVnx0ksTHShds7yDlHQvw   1   0       1006            0    385.4kb        385.4kb
green  open   .monitoring-es-7-2020.01.10       CZd89LiNS7q-RepP5ZWhEQ   1   0      36412          340     16.4mb         16.4mb
green  open   .apm-agent-configuration          e7PRBda_QdGrWtV6KECsMA   1   0          0            0       283b           283b
green  open   .ml-anomalies-shared              MddTZQ7-QBaHNTSmOtUqiQ   1   0          1            0      5.5kb          5.5kb
green  open   .kibana_1                         akgBeG32QcS7AhjBOed3LA   1   0       1105           28    687.1kb        687.1kb
green  open   .ml-config                        CTLI-eNdTkyBmgLj3JVrEA   1   0         22            0     56.6kb         56.6kb
green  open   .ml-state                         gKx28CMGQiuZyx82bNUoYg   1   0          0            0       283b           283b
green  open   .security-7                       krH4NlJeThyQRA-hwhPXEA   1   0         36            0     83.6kb         83.6kb
green  open   .logstash                         7wxswFtbR3eepuWZHEIR9w   1   0          0            0       281b           281b
green  open   .kibana_task_manager_1            ft60q2R8R8-nviAyc0caoQ   1   0          2            1     16.2kb         16.2kb
yellow open   filebeat-7.5.1-2020.01.10-000001  1-RGhyG9Tf-wGcepQ49mmg   1   1          0            0       283b           283b
green  open   .monitoring-alerts-7              TLxewhFyTKycI9IsjX0iVg   1   0          6            0     40.9kb         40.9kb
green  open   .monitoring-logstash-7-2020.01.10 dc_S5BhsRNuukwTxbrxvLw   1   0       4774            0      1.1mb          1.1mb
green  open   .watches                          x7QAcAQZTrab-pQuvonXpg   1   0          6            6    120.2kb        120.2kb
green  open   .ml-notifications-000001          vFYzmHorTVKZplMuW7VSmw   1   0         52            0     81.6kb         81.6kb

Теперь пришло время заплатить нашу приборную панель Kibana. Откройте свой браузер и войдите в URL http://your-ip-addr - здесь: 5601 Отказ Теперь введите заранее определенное имя пользователя и пароль; В нашем случае это эластичный и YourstrongPasswaswayere , соответственно.

В вашей панели инструментов Kibana перейдите на вкладку «Управление» и «Кибана» нажмите «|». Указатели индекса Отказ В первом ряду вы найдете FileBeat- * Индекс, который уже был идентифицирован Kibana.

Теперь перейдите в тег Discover на панели инструментов Kibana и просмотрите ваши журналы контейнера вместе с метаданными под выбранным узором индекса, что может выглядеть что-то подобное:

Заключение:

Теперь вы установили и настроили стек ELK на Host Machine, который собирается собрать RAW Log от вашего Docker в стек, который позже можно проанализировать или можно использовать для отладки приложений.

Оригинал: «https://dev.to/appfleet/docker-centralized-logging-with-elk-stack-5407»