Fluentd에서 S3로 보낸 로그를 Amazon Athena에서 집계합니다. 2018-03-26

6541 단어 AthenaS3glueAWS

내용


Fluentd 에서 S3 로 보낸 로그를 Amazon Athena 로 집계하는 방법을 기록합니다.

td-agent3(Fluentd v1.0)에서 S3에 "LTSV 형식 로그" 저장 계속이지만 일부 설정을 변경합니다.

일부 변경하는 설정 내용


  • <match> 에 다음 3점 추가
  • output_tag false
  • output_time false
  • S3의 키에 hostname 추가

  • <filter>에서 hostname을 부여하는 설정 추가

  • /etc/td-agent/td-agent.conf 부분 발췌
    # hostname追加
    <filter ltsv.log>
      @type record_transformer
      <record>
        hostname ${hostname}
      </record>
    </filter>
    
    <match ltsv.log>
      @type s3
    ...
      # S3のkeyにもhostnameを追加
      s3_object_key_format %{path}%{hostname}/%{time_slice}_%{index}.%{file_extension}
    
      # 以下の2つの設定を入れることで、S3に保存されるログがJSONのみになる
      output_tag false
      output_time false
    ...
    </match>
    

    추가:
  • %{hostname} 은 deprecated
  • #{Socket.gethostname} 사용하기
  • 이전: s3_object_key_format %{path}%{time_slice}_%{hostname}%{index}.%{file_extension}
  • 앞으로: s3_object_key_format "%{path}%{time_slice}_#{Socket.gethostname}%{index}.%{file_extension}"


  • 이 설정을 넣으면 hostname 정보가 부여된 JSON 전용 로그가 S3에 저장됩니다.

    YOUR_S3_BUCKET_NAME/logs/ltsv.log/2018-03-26/{HOSTNAME}/201803260820_0.gz
    {"datetime":"2018-03-26 08:20:12","id":"16509","hostname":"ubuntu-xenial"}
    {"datetime":"2018-03-26 08:20:32","id":"6217","hostname":"ubuntu-xenial"}
    

    Amazon Athena에서 선택하기 전까지의 흐름



    Get Started



    AWS Management Console에서 설정합니다.



    Get Started로 시작합니다.

    AWS Glue Data Catalog로 전환



    이번 select하기 위한 DB와 테이블을 만들어 갑니다.
    상단의 메뉴 "AWS Glue Data Catalog"에서 설정합니다.



    Add tables



    (이 후의 작업은 AWS Glue 에서의 작업입니다)

    Add tables에서 작성합니다.





    "Add information about your crawler"에서 설정하겠습니다.



    메뉴를 따라 설정합니다.



    crawler name 넣기


    데이터 스토어 설정

    Include path 에는 S3의 key의 중간까지(prefix)를 넣어 두면 됩니다

    "Add another data store"는 "No"


    이번에는 IAM role를 신규 작성해 보았습니다
    (롤 이름을 입력했습니다)


    "Create a schedule for this crawler"는 일단 "Hourly"


    새 DB를 추가했습니다.


    다음은 확인 화면이었습니다. "Finish"하고 완료되었습니다.

    Crawler를 실행



    Glue의 'Crawlers' 메뉴에 지금 추가한 Crawler가 표시된다고 생각합니다.
    선택하고 "Run Crawler"를 누르면 수동으로 Crawler가 움직입니다.

    Craler가 움직이면, Glue의 「Databases > Tables」에 table가 추가됩니다.
    JSON 만 보내도록 설정했으므로 Schema도 잘 설정되어 있습니다.


    Amazon Athena로 돌아가서 선택



    Glue로 여기까지 작업이 끝나면 Athena에서 select 할 수 있습니다.

    뛰어난 간단한 선택







    뛰어난 심플한 where







    요약



    간단하지만 Fluentd에서 S3로 보낸 로그를 Amazon Athena에서 집계 선택하는 방법에 대해 썼습니다.
    여기까지 주면 나머지는 보통 SQL을 쓸 뿐이므로 집계도 할 수 있을 것입니다!

    좋은 웹페이지 즐겨찾기