【システム開発】ログ設計をすることになったので指針を立ててみる

IT知識
この記事は約7分で読めます。

 

たこやき後輩
たこやき後輩

どうも、こんばんは。たこやきです。

 

今回はIT系の記事は、システム開発におけるログ設計指針に関する記事です。前回までのサイバー攻撃に少しだけ関連があるかもしれないので、関連記事を貼っておきます。

【事例で学ぶ】サイバー攻撃 ランサムウェア 編
たこやき後輩 どうも、こんばんは。 今回はIT系の記事です。2022年4月の情報処理安全確保支援士試験に向けて、学びついでにアウトプットしていこうと思います。 情報処理安全確保支援士...

記事を書く背景としては、業務でログに関する作業をすることになったためです!!あとは、休日でつくっている掲示板アプリでもログを導入したいので、この機にログについてインプットしようと思いました!!

 

たこやき後輩
たこやき後輩

地味だけど大切なやつです。

派手な機能ではないですが、ログを出さないシステムというのはないので勉強して損はないと思いました(^^)/

 

今回の記事はこんな人向け
・これから初めてログの設計をする人
・ログの指針について知りたい人

参考までに僕の今までの経歴を簡単に書いておきます。

2017/3:大学(農学部)を卒業

2017/4:IT未経験で独立系のSIerに就職

2021/7:独立系のSIerを退職

2021/8:未経験でコンサル会社に就職 ← イマココ

 

よく読まれている記事はこちらなのでもし興味があれば見ていただけますと幸いです!

 

ログとは

ログは、コンピュータの利用状況やデータ通信など履歴や情報の記録を取る事、またその記録を指す。操作やデータの送受信が行われた日時と、行われた操作の内容や送受信されたデータの中身などが記録される。
引用:https://it-trend.jp/words/log

 

たこやき後輩
たこやき後輩

↓実物としてはこういうやつですよね!!

2022-03-17 23:18:43,617 [INFO] “GET /board/ HTTP/1.1” 200

2022-03-17 23:18:44,384 [INFO] “GET /board/ HTTP/1.1” 200

2022-03-17 23:18:45,029 [INFO] “GET /board/ HTTP/1.1” 200
2022-03-17 23:19:07,319 [INFO] “GET /board/create/ HTTP/1.1” 200
2022-03-17 23:19:22,287 [INFO] スレッドを作成しました
2022-03-17 23:19:22,288 [INFO] “POST /board/create/ HTTP/1.1” 302

 

今やシステムやコンピューターであれば「○○.log」といった形式のログが必ず出力されますよね。出力してもしなくてもシステムの動作には影響がありませんが、必須機能といえます。

プログラミングをする人のイラスト(男性)

 

ログの目的

では、システムにはなぜログを出力する必要があるのでしょうか。大きく分類して目的が2つ+最近ではもう1つあると思います。

  1. 障害やエラー発生時にログから原因を特定するため
  2. 不正アクセスや情報流出などを検知するため
  3. (最近)ビッグデータとして新たなビジネス価値創出のため

 

上記2つが基本的な従来のログの目的だと思っています。障害対応セキュリティ対応の側面がログにはあり、ビジネスという観点でいえば守りの用途で使われている機能のイメージです。

ただ、最近ではIoTやビッグデータという技術もあり、大量のログを取得して分析することで新しいニーズの発見や顧客の傾向分析にも使えるため、攻めの用途もあります。

いずれにしても目的を考えるとログは必要不可欠な機能ですね。最近ではサイバー攻撃や内部統制といったセキュリティ意識の高まりもあるので、ログに関する知見は持っていて損はないと思います。

スポンサーリンク

ログの一般的な設計指針

たこやき後輩
たこやき後輩

では、ログの一般的な設計指針についてみていきたいと思います。

Search result of “ログ 設計” - Qiita
Qiita is a technical knowledge sharing and collaboration platform for programmers. You can record and post programming tips, know-how and notes here.

Qiitaで「ログ 設計」で検索して、ログを考える際に必要になりそうな項目はざっくりと以下です。

  • ログを出すツール
    →基本的には言語やフレームワークで頻繁に使われている既存コンポーネントを使うのが推奨。(例えばjavaであればlog4j、pythonであればloggingパッケージなど)
  • ログに出す出力項目
    →ログを分析、調査に活用するために必要な項目は何か洗い出して検討する。日時や操作ユーザー、あたりは必須項目といえる。
  • ログの出力先
    →コンソールに出すのか、サーバー上のディレクトリにファイルで出すのか、DBに出力するのか、クラウドに保存するのかといった検討。
  • ログの出力タイミング
    →エラー時、ログイン時、ページアクセス時などどんなタイミングでログを取得する必要があるのか検討。
  • ログの保存期間
    →ログもデータなので無限に保管していれば、ディスク容量を消費するため、保存期間やローテーションタイミングを決定する。
  • ログの出力レベル
    →ログの役割、重要性でレベル(INFO、ERROR、DEBUGなど)を設定し、より活用しやすくする。

上記のログ設計をしたら、監視対象のログメッセージ内容や監査対象のログを決定し、それぞれ設定していくといった流れになります。

 

たこやき後輩
たこやき後輩

ざっくりですが、外せない内容は記載できたかと



ログの設計をしてみる

今ちょうど勉強のために作っている掲示板サイトがあるので、このサイトにログを盛り込みたいと思います。テストかつ無料でやっているので使えるディスク容量は最低限です。。( ;∀;)

たこやき後輩
たこやき後輩

3ちゃんねるという安易な名前ですみません。(多分他にもありますよねw)

  • ログを出すツール:logging(Python)
  • ログに出す出力項目:日時、ユーザーID、ログレベル、メッセージ(処理概要)
  • ログの出力先:とりあえずコンソール…
  • ログの出力タイミング:処理開始時、SQL実行時、判定実行時、エラー時、処理終了時
  • ログの保存期間:herokuの上限
  • ログの出力レベル:FATAL、ERROR、WARN、INFO、DEBUG

 

とりあえずこんな感じにしてみましたが、本当にとりあえずで考えたので検討不足感しかないです。。。w

まとめ

今回はログについてみてきました。

  • ログは、コンピュータの利用状況やデータ通信など履歴や情報の記録を取る事、またその記録
  • ログ取得の目的は障害対応とセキュリティ対応+ビッグデータとしての活用
  • 一般的なログ設計指針(ツール、出力項目、出力先など)

地味ではありますがとても大切な機能なので、少しでも調べることができ、自分なりにまとめられてよかったです。近日受験予定の情報処理安全確保支援士試験にもログに関する章があるので役に立つと嬉しいです!!

たこやき後輩
たこやき後輩

では、また!!

※本記事では解釈を間違えている場合もありますがそこはご了承ください。
可能であればコメントにてご指摘いただけますと幸いです。

コメント

タイトルとURLをコピーしました