Docker ELK+Filebeat 설치 및 구성

6616 단어

환경 설명

  • linux CentOS Linux release 7.5.1804 (Core)
  • docker Docker version 1.13.1
  • elk sebp/elk latest
  • filebeat filebeat-6.4.0

  • elk와 Filebeat는 같은 기계에 있어요.

    구조

  • Elasticsearch는 실시간 조회에 가까운 전문 검색 엔진이다.Elasticsearch의 설계 목표는 대량의 로그 데이터를 처리하고 검색하는 것입니다
  • Logstash는 원시 로그를 읽고 이를 분석하고 필터한 다음 다른 구성 요소 (예를 들어 Elasticsearch) 에 전송하여 인덱스하거나 저장합니다.Logstash는 다양한 Input 및 Output 유형을 지원하여 다양한 응용 프로그램의 로그를 처리할 수 있습니다
  • Kibana는 자바스크립트 기반의 웹 그래픽 인터페이스 프로그램으로 Elasticsearch의 데이터를 시각화하는 데 전문적으로 사용된다.Kibana는 Elasticsearch를 조회하고 풍부한 도표를 통해 결과를 보여줄 수 있습니다.사용자는 시스템의 로그를 감시하기 위해 Dashboard를 만들 수 있습니다..
  • Filebeat는 로그 수집기로 Filebeat를 도입했는데 주로 Logstash 비용이 큰 문제를 해결하기 위해서이다.Logstash에 비해 Filebeat가 차지하는 시스템의 CPU와 메모리는 거의 무시할 수 있다..

  • 로그 처리 프로세스: Filebeat는 로그를 Logstash에 전송하여 분석하고 필터링한 다음 Logstash에서 Elasticsearch로 전송하고 마지막으로 Kibana에서 Elasticsearch의 데이터를 시각화합니다.

    ELK 키트 설치


    ELK의 배치 방안은 매우 유연할 수 있다. 규모가 비교적 큰 생산 시스템에서 ELK는 자신의 집단을 가지고 고가용과 부하 균형을 실현했다.우리의 목표는 가장 짧은 시간 안에 ELK를 배우고 실천하는 것이기 때문에 최소 배치 방안을 채택할 것이다. 용기에 ELK를 구축하는 것이다.
  • ELK 미러를 실행하려면 vm가 필요합니다.max_map_count는 최소 262144 메모리가 필요합니다
  •  root sysctl.conf
    vi /etc/sysctl.conf
        
    vm.max_map_count=262144
     
    sysctl -p
    

    elk를 시작할 때 다음과 같은 오류를 알릴 수 있습니다:maxvirtual memory areas vm.max_map_count [65530] is too low, increase to atleast [262144] 용기 로그 보기:docker logs 용기 ID 참조 링크:blog.csdn.net/jiankunking…
  • docker 설치
  •  , , 
    yum install docker   
     
    systemctl start docker
     
    systemctl enable docker
    
  • ELK 미러링을 실행합니다
  • sudo docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -it --name elk sebp/elk
    
  • logstash 설정
  •  
    docker ps -a
    
     
    sudo docker exec -it elk /bin/bash
     
    sudo docker exec -it  ID /bin/bash
    
     02-beats-input.conf
    cd /etc/logstash/conf.d/
    vi 02-beats-input.conf
    

    /etc/logstash/conf.d/02-beats-input.conf는 다음 그림과 같이 수정됩니다.
    여기 vi 명령 사용에 문제가 있습니다. 저는 DEL 키를 통해 한 줄씩 그 세 줄을 지웠습니다.
    다음 세 줄을 삭제합니다.이 세 줄은 인증서를 사용하는지 여부입니다. 이 예는 인증서를 사용하지 않습니다. 인증서를 사용하려면logstash를 사용하십시오.crt 클라이언트로 복사하고 filebeat.yml에 경로를 추가하면 됩니다.
    ssl => true 
    ssl_certificate => "/pki/tls/certs/logstash.crt"
    ssl_key => "/pki/tls/private/logstash.key"
    

    주의:sebp/elkdocker는 인증서logstash를 만들었습니다.crt, 기본적으로 * 어댑터를 사용합니다. 인증서를 사용하면 filebeat.yml에서 사용하는 서버 주소는 도메인 이름을 사용해야 합니다. IP 주소를 사용할 수 없습니다. 그렇지 않으면 오류가 발생합니다.
    이 세 줄 설정을 제거하지 않으면 뒤에서 filebeat를 시작할 때 다음과 같은 오류가 발생합니다.
    2018-09-12T10:01:29.770+0800	ERROR	logstash/async.go:252	Failed to publish events caused by: lumberjack protocol error
    2018-09-12T10:01:29.775+0800	ERROR	logstash/async.go:252	Failed to publish events caused by: client is not connected
    2018-09-12T10:01:30.775+0800	ERROR	pipeline/output.go:109	Failed to publish events: client is not connected
    
  • 엘크 용기 재부팅
  • docker restart  ID
    
  • 키바나 가시화 페이지

  • 브라우저에서 다음을 입력합니다.http://ip:5601, 조금만 기다리면 키바나 시작 성공 관리 페이지를 볼 수 있습니다
    Elasticsearch의 JSON 커넥터: http://[Host IP]: 9200/_search?pretty

    Filebeat 설치


    filebeat는 여러 가지 설치 방식이 있습니다. 저는 rpm 패키지의 설치 방식을 사용하여 시스템d로 자동으로 등록할 수 있습니다.
  • filebeat의 rpm 패키지를 다운로드합니다
  • cd /opt/softwares
    wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.4.0-x86_64.rpm
    

    또는 홈페이지에 가서 최신 버전을 보고 직접 다운로드: www.elastic.co/downloads/b…
  • filebeat 설치
  • rpm -ivh filebeat-6.4.0-x86_64.rpm
    
  • filebeat 설정
  • cd /etc/filebeat
    vi filebeat.yml
    

    구성은 다음과 같이 변경됩니다.
    #=========================== Filebeat inputs =============================
    
    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /opt/datas/logs/*/*.log
      tags: [" "]
      multiline:
        pattern: '^\s*(\d{4}|\d{2})\-(\d{2}|[a-zA-Z]{3})\-(\d{2}|\d{4})'
        # pattern: '^\s*("{)'
        negate: true
        match: after
        max_lines: 1000
        timeout: 30s
    

    enabled:filebeat 6.0 이후 enabled는 기본적으로 닫힙니다. true paths로 수정해야 합니다. 분석하고자 하는 로그의 경로를 캡처하기 위해multiline: 이 통합 처리를 하지 않으면 채집된 로그가 길거나 출력 xml 형식 등 로그가 채집되지 않거나 여러 개로 분할되는 경우pattern: 설정된 정규 표현식,일치하는 표현식을 지정합니다(2017-11-15 08:04:23:889 시간 형식으로 시작하는 문자열). 일치하지 않으면 줄을 합칩니다.참조 링크
    구성이 위 그림과 같이 변경되었습니다.Elasticsearch output을 주석하고 Logstash output을 엽니다.hosts:elk가 있는 기계 IP 주소에서 로그를 Elasticsearc에 직접 보내면 이 줄을 편집하십시오: Elasticsearch output 로그를 Logstash에 직접 보내면 이 줄을 편집하십시오: Logstash output는 한 줄의 출력만 사용할 수 있고 다른 주석을 사용하면 됩니다
  • filebeat 서비스를 시작합니다
  •  filebeat
    systemctl start filebeat.service
     filebeat 
    systemctl status filebeat.service
     filebeat 
    tail -f /var/log/filebeat/filebeat
    

    참조 링크: www.jianshu.com/p/7ca38fa88…

    kibana 설정


    왼쪽 상단의 Discover 단추를 누르면 아래 그림과 같이 "index pattern"을 만들 수 있습니다. 아래 그림, 빨간 상자에 filebeat-*를 입력하고 Next step: 아래 그림을 누르십시오. 아래 상자에서 @timestamp를 선택하고 Create index pattern을 누르면 팝업 페이지에서 왼쪽 상단의 Discover 단추를 다시 클릭하고 오른쪽 상단의 Last 15 minutes를 누르면 다음과 같습니다. 이 페이지에는 최근 15분 동안의 로그가 표시됩니다.최근 15분 동안 로그가 보고되지 않으면 다음 그림의 빨간색 상자에 있는 Today 단추를 눌러 오늘의 모든 로그를 표시할 수 있습니다.
    참조 링크:blog.csdn.net/qq_39284787…blog.csdn.net/boling_cava…www.cnblogs.com/CloudMan6/p…blog.csdn.net/boling_cava…
    다음으로 전송:https://juejin.im/post/5ba4c8ef6fb9a05d082a1f53

    좋은 웹페이지 즐겨찾기