skillup

技術ブログ

プログラミング全般

ログ検索について(Application Insightsを例に)

投稿日:

現在のプロジェクトではインフラ環境をAzureで構築していますが、ログをApplication Insights(Azure上の管理画面から使えるサービス)で管理してます。

世界一わかりみの深いAPM 〜Application Insightsでアプリケーションパフォーマンス管理に全集中!!〜

テスト、ログ、エラーハンドリングはどの現場でも重要になる最大事項ですが、ログについてはどのようにだすかもそうですが、どこに出すか、どのように抽出するかも重要になってきますね・・・・

どこに出すか(告知をするか)

レガシーな環境ですとサーバーに出すのが一般的かとは思いますが、サーバーに出すと

  • 適度な抽出や複雑な検索(IPが××でレベルがINFOで検索語句に’〇〇’が入っている)がしづらい
  • ログローテが不完全だとサーバーパンクする(過去に数回ありました・・・汗)
  • サーバーに入れない環境などでは当然見れない(今だと結構増えてると思います。)
  • 定期的なログのトレース(アクセス解析的なもの)をするのには当然独自にスクリプトを組む必要がある

のようなデメリットがあります。

そのため、管理画面から見れるツールなどを使うことが一般的ではないでしょうか。AWSでしたらcloudwatchとかazureだとApplication Insightsのようなものになると思います。

これらのサービスを使うと上記に挙げたデメリットが解決できます。

またエラー(特に例外系のシステムエラー)の場合はSentryなどのエラーレポートサービスやそうでなくてもメールなどで告知する仕組みが必要になるでしょう。

どのように抽出するか

今回Application Insightsで驚いたのですが、検索対象のカラムが10から20ぐらいありました。

sessionIDやAPIの場合はアクセスURL、IP、国、都市、クラス、システム名などなど・・・

まあわけがわからないものが多かったのですが・・・汗

自分が実務で検索するときに必要になるキーなどについて触れておこうと思います。

ログレベル

これを考えない方はいないと思いますが、debug,info,warning,error,fatalのうちどれで抽出するのかということになります。一般的にはfatalやerrorを元にそこにいくまでを辿る必要が出てきます。

特定の検索語句

エラーが起こった時のログの解析としてはなんらかのエラーが起こり、エラーが起こっているリクエスト開始からエラーの起こる地点までの調査・・となることが多いと思います。

その場合、一般的には

  • リクエストパラメーターに含まれているクエリの一部
  • エラーコード

などで検索することが多いでしょう。

システム名やアクセス元

今まではあまり意識することはなかったんですが、複数のアプリやAPIが混合していると、自分が関わっているシステムのログを抽出するだけでもものすごい大変だったりします。

その場合、自分のシステム名やあるいはアクセスしているIPなどで抽出することができればログの解析が容易になります。

その他の注意点

一般的には本番環境ではある程度のレベル以上のログ(ある程度のレベル)を出すことが多いようなのですが、少なくともリリースまでは全レベルを出しておかないととても追えないと思います。(特にSQL)

-プログラミング全般
-,

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

画面テストのツールに関して

Unitテストに関してはxUnit一択だと思いますが、UI系のテストツールについて。 IDE(コードを書かずにすむマクロ系)に関して全てChromeで動くことを確認しています。 Contents1 ツ …

no image

プログラミングを習得するときに必要な2つの大事なこと

元々私は塾で仕事をしていましたが、いろいろ紆余曲折ありましていまではWEBエンジニアとして仕事をしております。 エンジニアとしてのキャリアは3年ぐらいなので正直あまりないのですが、開発者と平行してプロ …

no image

オブジェクト指向設計 単一責任のクラスの設計

オブジェクト指向をするうえでの大事なポイントなど Contents1 単一責任のクラス設計1.1 メモ1.2 実際のコーディング上のコツ1.3 感想1.4 参考文献 単一責任のクラス設計 メモ 単一責 …

no image

シェルスクリプト ファイル読み込み・switchなど

以前のエントリーに引き続き、シェルスクリプトでログを解析する処理があってそこで覚えたことなどをまとめておきます。 Contents1 ファイル読み込み2 switch文2.1 基本パターン2.2 条件 …

no image

オブジェクト指向 値オブジェクトの活用と場合分けに関して

オブジェクト指向 その1 オブジェクト指向 その2 オブジェクト指向 その3 でオブジェクト指向に触れたんですが、基本から勉強しなおす必要があると思い、まとめ&追記 参考文献 現場で役に立つシステム設 …

アーカイブ