Datadog Log Management를 사용하여 RDS의 SlowQuery 시각화

4164 단어 DatadogRDS

개요



RDS로 출력하는 Slow Query를 Datadog Log Management에서 시각화했으므로 그 절차를 씁니다.
로그의 Parse에 고전했으므로 좋으면 참고로 해 주세요.

환경


  • RDS (MySQL) 5.7.19

  • 사전 준비



    Slow Query 로그를 CloudWatch Logs로 출력



    미리 RDS에서 Slow Query 로그를 CloudWatch Logs에 출력해야 합니다.

    자세한 내용은 여기 참조

    CloudWatch Logs를 Slow Query를 Datadog로 전송



    CloudWatch Logs로 출력된 Slow Query를 Datadog로 전송해야 합니다.
    작동 방식은 Lambda 함수를 만들고 Lambda 함수를 사용하여 로그를 수집하고 Datadog로 보냅니다. 이쪽도 이미 절차가 있으므로 생략합니다.
    자세한 내용은 여기 참조

    절차



    여기에서 Datadog 설정입니다.
    위의 단계를 수행하면 아무 것도 Parse되지 않은 상태에서 Log Management로 전송되었음을 확인할 수 있습니다.

    로그 샘플은 이쪽
    # Time: 2019-06-28T03:52:11.487326Z
    # User@Host: username[username] @  [172.31.xxx.xxx]  Id:  6825
    # Query_time: 2.492360  Lock_time: 0.000149 Rows_sent: 1  Rows_examined: 12269468
    SET timestamp=1561693931;
    SELECT
                                hogehoge
                                FROM
                                fugafuga
    

    이번에는 이 로그를 Parse해 갑니다.

    파이프라인 만들기



    Datadog에 로그인하고 Log Explorer → → Configuration → → New Pipline로 파이프 라인을 만듭니다.
    파이프라인은 전송된 로그를 필터링하여 후술하는 프로세서에 적용합니다.

    설정 예)


    프로세서 작성



    만든 파이프라인을 선택하고 Add Processor를 클릭하여 프로세서를 추가합니다.
    프로세서에서 의미 있는 정보와 속성을 반구조화된 텍스트에서 추출하여 후술하는 패싯으로 재사용할 수 있습니다.Select the processor typeGrok Parser를 선택하고 Define 1 or multiple parsing rules는 다음과 같이 수행했습니다.
    MyRule ^\# Time: %{date("yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ"):date}\n+\# User@Host: %{notSpace: user1}\[%{notSpace: user2}\] @  \[%{ip: host}\]  Id:[\x20\t]+%{number: id}\n+\# Query_time: %{number: query_time}  Lock_time: %{number: lock_time} Rows_sent: %{number: rows_sent}  Rows_examined: %{number: rows_examined}\n+ *SET timestamp=%{number: timestamp};\n+%{regex("[a-zA-Z].*"):query}.
    

    꽤 보기 힘들지만 포인트는
  • 개행은, \n+로 쓴다
  • # \로 이스케이프 처리
  • 가변 부분은 Matcher (%{}의 부분)를 기술한다

  • 입니다.

    Matcher에 대한 자세한 내용은 여기을 참조하십시오.

    확인


    Log Exploer → → Search로 이동하여 왼쪽 메뉴의 Filterrds로 좁히면 Slow Query 로그가 Parse되어 있는지 확인할 수 있습니다.

    패싯 및 추가



    그리고는 Filter하고 싶은 Attribute의 facet를 작성하면, Filter로 검색할 수 있게 됩니다.
    facet를 작성하는 방법은 해당 로그의 Attribute를 열고 클릭하여 Create Facet하기만 하면 됩니다.

    예)


    확인



    예를 들어, query 의 facet 를 추가하는 것으로, 이하와 같이 쿼리 마다 Filter 하는 것이 가능하게 됩니다.
    또한 Slow Query의 건수를 바탕으로 경고를 낼 수도 있습니다.

    예 Query의 경우)

    Query Time 의 facet 를 작성해 두면 Query Time 로 Filter 를 걸 수 있습니다.
    예 Query Time의 경우)


    마지막으로



    Datadog Log Management는 Filter 기능, 상당히 사용할 수 있을 것 같습니다. 점점 활용해 가고 싶습니다.

    좋은 웹페이지 즐겨찾기