Docker 클러스터 로그 수집의 EFK 구현

2963 단어
docker 집단에서 로그 수집은 EFK(elasticsearch,fluent,kibana) 방안을 사용합니다.
  • Elasticsearch: 분산 검색 엔진.신축성이 높고 믿을 만하며 관리가 쉽다는 특징을 가지고 있다.전문 검색, 구조화 검색과 분석에 사용할 수 있고 이 세 가지를 결합시킬 수 있다.Elasticsearch는 Lucene을 기반으로 개발되었고 현재 가장 광범위한 소스 검색 엔진 중 하나를 사용하고 있습니다. 위키백과, Stack Overflow, Github 등은 이를 바탕으로 자신의 검색 엔진을 구축합니다
  • Fluentd: docker의logdriver는 기본적으로 Fluentd를 지원하기 때문에 송신단에서 기본적으로 Fluentd를 선택합니다.
  • Kibana: 가시화 플랫폼.Elasticsearch에 저장된 인덱스 데이터를 검색하고 표시할 수 있습니다.그것을 사용하면 도표, 표, 지도로 데이터를 쉽게 전시하고 분석할 수 있다..

  • 우선 모든 docker 숙주 호스트에 Fluentd가 설치되어 있는지 확인하고, docker가 거울을 시작할 때, docker run --log-driver Fluentd를 사용합니다.용기 안의 컨트롤러의 정보를 Fluentd에 전달하고, Fluentd가 elasticsearch에 저장합니다.다시 키바나를 통해 전시하고 분석한다.
    방문https://www.elastic.co/cn/최신 Elasticsearch와 Kibana를 다운로드하려면 두 버전이 일치해야 합니다.직접 압축을 풀고 실행하면 됩니다. 환경 변수를 설정할 필요가 없습니다. (Elasticsearch는 jdk 환경에 의존합니다.)Elasticsearch와 kibana의 프로필 서버를 수정하십시오.host=0.0.0.0, 외부 네트워크를 통해 접근할 수 있습니다.
    elasticsearch 다운로드
    $wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.0.0.tar.gz
    

    Kibana 다운로드
    $wget https://artifacts.elastic.co/downloads/kibana/kibana-6.0.0-linux-x86_64.tar.gz
    

    압축 해제 설치
    $tar -zxvf elasticsearch-6.0.0.tar.gz
    $tar -zxvf kibana-6.0.0-linux-x86_64.tar.gz
    

    운행
    $./elasticsearch-6.0.0/bin/elasticsearch
    $./kibana-6.0.0-linux-x86_64/bin/kibana
    

    그리고 fluentd를 직접 설치합니다.프론트, 현재 최대 열기 파일 수:
    $ ulimit -n
    1024
    

    1024를 보았다면, 이 수치가 부족합니다. 프로필을 수정해서 수치를 높여야 합니다.
    vi /etc/security/limits.conf
    

    설정 값은 다음과 같습니다.
    root soft nofile 65536
    root hard nofile 65536
    * soft nofile 65536
    * hard nofile 65536
    

    네트워크 매개변수 수정
    vi /etc/sysctl.conf
    

    설정 값은 다음과 같습니다.
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.ip_local_port_range = 10240    65535
    

    그리고 시스템을 다시 시작해서 fluentd를 설치합니다.
    curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh
    

    fluentd 시작
    $ /etc/init.d/td-agent start 
    Starting td-agent: [  OK  ]
    $ /etc/init.d/td-agent status
    td-agent (pid  21678) is running...
    

    필요한 플러그인 설치
    $ /usr/sbin/td-agent-gem install fluent-plugin-elasticsearch
    $ /usr/sbin/td-agent-gem install fluent-plugin-typecast
    $ /usr/sbin/td-agent-gem install fluent-plugin-secure-forward
    
    $ systemctl restart td-agent
    

    td-agent를 설정하여docker에서 생성한 로그를elasticsearch로 출력합니다
    $ vi /etc/td-agent/td-agent.conf
    

    수정 내용은 다음과 같습니다. (여기 포트를 입력하지 않았습니다. 기본적으로 9200 포트를 사용합니다.)
    
      @type forward
      port 24224
      bind 0.0.0.0
    
    
    
      @type elasticsearch
      logstash_format true
      flush_interval 10s # for testing
      host 127.0.0.1
    
    

    td-agent 재부팅
     systemctl restart td-agent
    

    좋은 웹페이지 즐겨찾기