ROBOT PAYMENT TECH-BLOG

株式会社ROBOT PAYMENTのテックブログです

Athenaのおかげでログ調査が楽になったお話

こんにちは、サブスクペイサービスでCREを担当してますmurakamiCPです。

CREチームの日々の業務の中で、最も多い問い合わせは「ログ調査」だったりします。 何らかのエラーが起こった際や、お客様の問い合わせでログを追っての確認だったりと要因は様々です。 (この「問い合わせ」自体を減らすことができるサービス作りも取り組んでますが、それはまた別のお話ということで) 端的に「ログ調査」といっても、日々増え続ける膨大なログから該当箇所を見つけるのはなかなか骨が折れますよね。 そんな調査がちょっと楽になったお話をしたいと思います。

AWS移行してでてきた課題

AWSへ移行した際に、アプリケーション関連のログもAWSの「CloudWatch」で取得するようになり、物理的なlogファイルの保管ではなくなりました。

aws.amazon.com

そんなCloudWatchを使用してログ調査をする際、以下のような課題がでてきたのです。

・1ファイル分のログが一気に表示されるわけではないのでロードに時間がかかる ・検索機能があるにはあるが、複数条件が設定できない ・複数ファイルにまたがっての検索ができない

…時間が…時間がかかる!! ある程度見る場所が決まっているログはまだしも、期間にまたがって複数ピックアップして探したいときにどうしても手間がかかってしまうことに。 AWS移行前は実ファイル(いわゆるlog形式)があったので、sakuraエディタなどのGrep機能でちょちょいって検索できてたことができなくなってしまったのです。

Athena導入

そこでインフラチームの提案と協力と実行力のもと(つまりは全てやっていただいた)、Athenaが導入されました

aws.amazon.com

これによって、CloudWatchに保管されているログ(正確にはアーカーイブしてS3に保存しているところから)がすべてSQL感覚で検索・抽出できるようになったのです。 ログのグループ、ファイル名、タイムスタンプ、キーワードなど様々な複数条件で検索できるので、調査が本当に楽になりました。 特に、愛用しているのが、対象のキーワードに対して前後の数分を出力できる下記SQLです。

--1分前後のログ取得サンプルSQL
WITH T1 AS (
        SELECT
            *
        FROM
            データベース.テーブル名
        WHERE
            orderhour BETWEEN 'yyyy/MM/dd/00' AND 'yyyy/MM/dd/23'
            AND loggroup = '対象のロググループ'
            AND message like 'キーワード'
    )

SELECT
        T1.message AS search_message,
        T2.*
    FROM
        T1,
        データベース.テーブル名  T2
    WHERE
        T1.orderhour = T2.orderhour
        AND T1.loggroup = T2.loggroup
        AND T1.logstream = T2.logstream
        AND FROM_UNIXTIME(T2.timestamp)
          BETWEEN FROM_UNIXTIME(T1.timestamp) + interval '-1' minute AND
                  FROM_UNIXTIME(T1.timestamp) + interval '1' minute
ORDER BY
  T2.timestamp,
  search_message

上記で指定したロググループ内のキーワードにヒットする前後1分のログが検索できます。

ほかの構文などは下記を参考にしてください。
SQLの構文についてはこちら:

docs.aws.amazon.com


関数はこちら:

docs.aws.amazon.com

Athenaを使うにあたっての注意

検索した量に応じてお金がかかります! なので、使用する際は、なるべくロググループ・期間指定・リミット指定(TOP100など)して検索する対象を絞って実施しましょう。 お財布にやさしく。

以上、murakamiCPでした。



We are hiring!!

ROBOT PAYMENTでは一緒に働く仲間を募集しています!!!

speakerdeck.com
www.robotpayment.co.jp