ログを収集するためのDockerログドライバーとしてlogstashを使用します

序文

Logstashは、ELKのLに属し、ログ収集の分野で広く使用されているオープンソースのログ統合処理データコレクターです。

dockerのデフォルトのログドライバーはjson-fileで、各コンテナーは/var/lib/docker/containers/containerID/containerID-json.logをローカルで生成し、ログドライバーは拡張機能をサポートします。この章では主にlogstashCollectの使用について説明します。 dockerログ。

Dockerにはlogstashドライバーがありませんが、gelf駆動のログはlogstashのgelf入力プラグインを介して収集できます。

前提

  1. docker
  2. logstash構成を理解する
  3. docker-compose

構成ファイルを準備する

docker-compose.yml

version: '3.7'

x-logging:
  &default-logging
  driver: gelf
  options:
    gelf-address: "udp://localhost:12201"
    mode: non-blocking
    max-buffer-size: 4m
    tag: "kafeidou.{
   
   {.Name}}"  #配置容器的tag,以kafeidou.为前缀,容器名称为后缀,docker-compose会给容器添加副本后缀,>如 logstash_1

services:

  logstash:
    ports:
      - 12201:12201/udp
    image: docker.elastic.co/logstash/logstash:7.5.1
    volumes:
      - ./logstash.yml:/usr/share/logstash/config/logstash.yml
      - /var/log/logstash:/var/log/logstash
      - ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf

  logstash-worker:
    image: docker.elastic.co/logstash/logstash:7.5.1
    depends_on:
      - logstash
    logging:
      driver: "gelf"
      options:
        gelf-address: "udp://localhost:12201"

logstash.yml

http.host: "0.0.0.0"

logstash.conf

input {
 gelf{
  use_udp => true
  port_tcp => 12202
 }
}

 output {
   file {
        path => "/var/log/logstash/%{+yyyy-MM-dd-HH}/%{container_name}.log"
   }
 }

logstashはディレクトリ構成で書き込み権限を持っている必要があるため、ログディレクトリを保存して権限を与える準備ができている必要があり
ますディレクトリを作成します

mkdir /var/log/logstash

ここで実験的なデモンストレーションのために許可を与え、777を直接許可します

chmod -R 777 /var/log/logstash

docker-compose.yml、logstash.conf、logstash.ymlファイルのディレクトリでコマンドを実行します:docker
-compose up -d

[root@master logstash]# docker-compose up -d
WARNING: The Docker Engine you're using is running in swarm mode.

Compose does not use swarm mode to deploy services to multiple nodes in a swarm. All containers will be scheduled on the current node.

To deploy your application across the swarm, use `docker stack deploy`.

Starting logstash_logstash_1 ... done
Starting logstash_logstash-worker_1 ... done

Logstashの起動は遅く、実験の効果は約90秒なので、fluentdを使用してログを収集することをお勧めします

ログディレクトリを確認してください。対応するコンテナログファイルがあるはずです。

[root@master logstash]# ls /var/log/logstash/
2020-02-16
[root@master logstash]# ls /var/log/logstash/2020-02-16/
logstash_logstash-worker_1.log

私のファイルを直接ダウンロードすることもできます:

  1. docker-compose.yml
  2. logstash.conf
  3. logstash.yml

総括する

技術的な選択には、fluentdがより推奨されます。なぜですか?

Fluentdはより軽量で柔軟性があり、現在CNCFに属しており、そのアクティビティと信頼性が向上しています。

Dockerログを収集するためにlogstashも導入するのはなぜですか?

すでに会社や企業でELKテクノロジースタックを使用している場合は、fluentdを導入する必要はないかもしれませんが、引き続きlogstashを使用してDockerログを取得します。これは主に共有であるため、この状況に遭遇した学生はもう1つの選択肢があります。

推奨読書:

ログを収集するためのDockerログドライバーとしてfluentdを使用する

4つのコーヒー豆を起源とし、複製され、出所を宣言してください。

パブリックアカウントをフォロー-> [Four CoffeeBeans]最新のコンテンツを入手

4つのコーヒー豆

おすすめ

転載: blog.csdn.net/lypgcs/article/details/104352611