Fluentd의 로그 운영

9086 단어 도입 절차Fluentd

Fluentd란?


  • 그런 느낌 (인용: h tp : // 코데지네. jp / s 들 c / 속눈썹 s / arc c / 6958/6958_02. 기 f )

  • fluentd

    설정


  • Rails 로그와 웹 서버의 표준 로그를 S3에 집계하는 구성
  • fluentd 에이전트 설치는 아래 URL에서 각 배포판별로 자습서를 볼 수 있습니다
  • htp // // cs. t 어째서였다. 코 m / r 치 c ぇ s / td-agen t # an s tai ltd-agen t

  • conf



    td-agent.conf
    <match *.**>
      type forest
      subtype s3
    
      <template>
       aws_key_id xxx #IAMでS3への書き込み権限をもったものを指定(後述)
       aws_sec_key xxx #IAMでS3への書き込み権限をもったものを指定(後述)
       s3_bucket fluentd-logging
       path others/
       buffer_path /var/log/td-agent/buffer/${tag}
    
       time_slice_format ${tag}/%Y%m%d%H
       time_slice_wait 10m
       flush_interval 1m
    
       format_json true
       include_time_key true
       include_tag_key true
    
       buffer_chunk_limit 256m
      </template>
    </match>
    
    <source>
     type forward
    </source>
    
    <source>
     type config_expander
     <config>
      type tail
      format apache2
      path /var/log/httpd/access_log
      pos_file /var/log/td-agent/apache2.access_log.pos
      tag ${hostname}/apache.access
     </config>
    </source>
    
    <source>
     type config_expander
     <config>
      type tail
      format /^\[[^ ]* (?<time>[^\]]*)\] \[(?<level>[^\]]*)\] \[pid (?<pid>[^\]]*)\] \[client (?<client>[^\]]*)\] (?<message>.*)$/
      path /var/log/httpd/error_log
      pos_file /var/log/td-agent/apache2.error_log.pos
      tag ${hostname}/apache.error
     </config>
    </source>
    
    <source>
     type config_expander
     <config>
      type tail
      format syslog
      path /var/log/messages
      pos_file /var/log/td-agent/syslog.messages.pos
      tag ${hostname}/syslog.messages
     </config>
    </source>
    
    <source>
     type config_expander
     <config>
      type tail
      format syslog
      path /var/log/cron
      pos_file /var/log/td-agent/syslog.cron.pos
      tag ${hostname}/syslog.cron
     </config>
    </source>
    
    <source>
     type config_expander
     <config>
      type tail
      format syslog
      path /var/log/secure
      pos_file /var/log/td-agent/syslog.secure.pos
      tag ${hostname}/syslog.secure
     </config>
    </source>
    
    gem 'act-fluent-logger-rails', '0.0.4' #まだ自社環境が Rails3系だったので、0.0.4を指定
    

    config/fluent-logger.yml
    development:
      fluent_host: '0.0.0.0'
      fluent_port: 24224
      tag: 'rails.log'
      messages_type: 'string'
    
    staging:
      fluent_host: '0.0.0.0'
      fluent_port: 24224
      tag: 'rails.log'
      messages_type: 'string'
    
    production:
      fluent_host: '0.0.0.0'
      fluent_port: 24224
      tag: 'rails.log'
      messages_type: 'string'
    

    environments/production.rb
      config.log_level = :info
      config.logger = ActFluentLoggerRails::Logger.new
    

    권한 변경


  • 로그 수집을 위한 권한 설정: htp : //에서 v.ぁsss d. jp / c ぉ d / 아마 존 - ぃ 無 x - f ぅ 엔 td 셋 pp ㎅ 긴 /
  • IAM 역할에서 특정 S3 버킷에 대한 쓰기 권한 설정 : htps : // 기주 b. 코 m / f ぅ 엔 t / f ぅ 엔 t p ぅ 긴 s3 # 이아 mpo cy

  • 하마 리소


  • S3에 업로드 타이밍
  • flush_interval을 지정하지 않으면 다음 타이밍에 업로드됩니다.
    WARNING: By default, files are created on an hourly basis (around xx:10). This means that when you first import records using the plugin, no file is created immediately. The file will be created when the time_slice_format condition has been met. To change the output frequency, please modify the time_slice_format value. To write files every minute, please use %Y%m%d%H%M for the time_slice_format.
    

    수집 설계를 생각



    수집 포인트



    Rails 애플리케이션 로그


  • htps : // 기주 b. 코 m / f ぅ t / f ぅ t ぉ

  • htps : // 기주 b. 코 m / 아 c 짱 / 아 c t f (0.0.4까지가 Rails3.*계)

  • 아파치


  • access_log: htp // // cs. fen td. 오 rg / ar chi c ぇ s / apachi ぇ - s3
  • error_log: h tp // w w. s와 r 또는 cq. 이 m / s torin g-apachi-Ass s-an d-Ero r-gs--Amazon-s3-u-th-f-en td /

  • 로그 집계


  • Apache 로그 집계 설정 참고가 될 것 같습니다 htps : // st. 기주 b. 코m/ゔ아나나안/4215057

  • 활용


  • 우선 붙어, 나중에 EMR에서 노력
  • htp : //에서 v.ぁsss d. jp / c ぉ d / 아 ws / 쿠에 ry-f ぅ 엔 td ぉ g ぃ ぇ s ー ー s 3 ー ぃ th 에 mr /

  • Redshift는 어려울 것 같다. 높아 보인다. .
  • h tp // 기효. jp /에서 v / 세리아 l / 01 / re d ft
  • htp : //에서 v.ぁsss d. jp / c ぉ d / a ws / 껄껄 gs r d dd d ft 1st - lf /
  • htps : // 기주 b. 이 m /은 pyu s / f ぅ 엔 tp
  • ぇぇぺぺr. s rt 네 ws. 베/bぉg/2013/10/03/에아 sy-다타-아나 ly 하고 s-우신 gf

  • MongoDB라면 Capping Collection에서 DB상에서 데이터베이스의 상한을 결정할 수 있기 때문에, 「최근의 DB는 고속으로 검색」 「그 이전의 데이터는 S3(더 이전의 데이터는 Glacier)로 관리만」이다 그리고 좋은 느낌이 든다. 그 쪽이 설계 방침도 점점 정할 수 있을 것 같다
  • h tp // w w. 몽고 hq. 코m/p리신g/

  • 그리고는, elasticsearch로 하는 옵션도. 이것도 간단해.
  • htp // // cs. fen td. 오 rg / reshpe / apachi ぇ gs / e s sc rch


  • 나중에


  • 분석을 예측하는 각 로그 형식 조정
  • 실제로 무엇으로 데이터 분석 하는가
  • 좋은 웹페이지 즐겨찾기