Fluentd, Elasticsearch, Kibana 공통 구성 요소를 사용한 실시간 로그 분석 플랫폼

2148 단어
  • Elasticsearch는 소스 분포식 검색 엔진으로 분포식, 제로 설정, 자동 발견, 인덱스 자동 분할, 인덱스 던전 메커니즘,restful 스타일 인터페이스, 다중 데이터 소스, 자동 검색 부하 등이 특징이다.
  • Fluentd는 로그 수집 시스템으로 그 각 부분은 모두 맞춤형 것이 특징이다. 간단한 설정을 통해 로그를 다른 곳으로 수집할 수 있다.
  • Kibana도 오픈소스와 무료 도구입니다. Kibana는 Logstash와 ElasticSearch가 제공하는 로그 분석에 우호적인 웹 인터페이스를 제공하여 중요한 데이터 로그를 통합, 분석, 검색하는 데 도움을 줄 수 있습니다.

  • Fluentd의 설치는 블로그에서 언급되었는데, 여기에서 주소를 많이 설명하지 않았다.Elasticsearch 및 Kibana 설치에 대한 자세한 내용은 주소를 참조하십시오.
    본고는 주로 Fluentd와 Elasticsearch의 연결에 대해 설명하고 Python 스크립트를 만들어서 Python App을 위해 로그를 제출합니다.
    Fluentd 구성 파일
    
      type copy
      
        type stdout
        output_type json
      
      
        type elasticsearch
        host localhost
        port 9200
        index_name project
        type_name project
        flush_interval 5s
        logstash_format true
        logstash_prefix project
     
    
    

    match에 대한 로그는 project.* stdout와elasticsearch에 각각 출력됩니다.왜 index_name은elasticsearch의 _index와는 다른지 모르겠다.오히려 logstash_prefix는 _index의 접두사이며 현재 날짜와 연결되어 완전합니다_index.logstash_format은true로 설정되어 있지만 logstash_format 이 매개 변수는elasticsearch에서 Fluentd 로그를 받을 수 없습니다.
    파이썬 스크립트
    # coding: utf-8
    import os
    import logging
    from fluent import handler
    
    custom_format = {
        'host': '%(hostname)s',
        'where': '%(module)s.%(funcName)s',  #  、 
        'loglevel': '%(levelname)s',
        'stack_trace': '%(exc_text)s'
    }
    
    logging.basicConfig(level=logging.ERROR)
    
    env = os.environ.get('PROJECT_ENV') if os.environ.get(
        'PROJECT_ENV') else 'local'
    l = logging.getLogger('project.' + env)
    
    h = handler.FluentHandler('project.' + env, host='127.0.0.1', port=24224)
    formatter = handler.FluentRecordFormatter(custom_format)
    h.setFormatter(formatter)
    
    l.addHandler(h)
    

    fluent-logger, 설치 명령pip install fluent-logger이 필요합니다.해당 파일에서 참조l, l.info(...), l.error(...) 등의 명령을 사용하면 해당 로그를 Elasticsearch에 출력하고 Kibana에 표시할 수 있습니다.

    좋은 웹페이지 즐겨찾기