logstash를 Docker 로그 드라이버로 사용하여 로그 수집

머리말

Logstash는 오픈 소스 로그 통합 처리 데이터 수집기로서 ELK의 L에 속하며 로그 수집 분야에서 널리 사용됩니다.

docker의 기본 로그 드라이버는 json-file 이며 각 컨테이너는 /var/lib/docker/containers/containerID/containerID-json.log를 로컬로 생성하며 로그 드라이버는 확장을 지원합니다.이 장에서는 주로 logstash Collect 사용에 대해 설명합니다. 도커 로그.

Docker에는 logstash 드라이버가 없지만 logstash의 gelf 입력 플러그인을 통해 gelf 구동 로그를 수집 할 수 있습니다.

전제

  1. 도커
  2. logstash 구성 이해
  3. 도커 작성

구성 파일 준비

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에 속하며 활동과 신뢰성이 향상되었습니다.

도커 로그를 수집하기 위해 logstash를 도입하는 이유는 무엇입니까?

이미 회사 나 기업에서 ELK 기술 스택을 사용하고 있다면 유창한 사람을 소개 할 필요는 없지만 계속해서 logstash를 사용하여 도커 로그를 통과합니다. 여기는 주로 공유이므로 이러한 상황에 직면 한 학생들이 하나 더 선택할 수 있습니다.

추천 자료 :

fluentd를 도커 로그 드라이버로 사용하여 로그 수집

에서 발생하는 네 개의 커피 콩 , 복제, 소스를 선언하십시오.

공개 계정 팔로우-> [Four Coffee Beans] 최신 콘텐츠 받기

커피 원두 4 개

추천

출처blog.csdn.net/lypgcs/article/details/104352611