ログ管理に最適!Google Cloud Platform で Docker のログを管理しよう | SiTest (サイテスト) ブログ

メニューボタン閉じるボタン

ログ管理に最適!Google Cloud Platform で Docker のログを管理しよう

皆さんはどのようにログ管理をされていますか?

ログファイルに出力、ローテーションして一定期間経過でアーカイブや削除など、
思っている以上にやるべきことは多いですよね。
特にそれが Docker のログとなるとなおさらだと思います。

今回はGoogle Cloud Platform (以下 GCP )で
Docker のログを管理する方法をご紹介します!

Stackdriver Logging とは?


GCP では Stackdriver Logging [beta] というサービスを提供しています。
Stackdriver とは、GCP とシームレスに統合したモニタリングツールです。
その中ひとつである Logging は強力なリアルタイムログ分析機能を備えています。

今回は、Docker のログを Stackdriver Logging に対して
出力するように設定していきます。
Docker そのものについては過去記事の「1コマンドで作った。Dockerで開発環境を構築する方法」に詳しく記載していますので、ぜひこの記事をご一読下さい。

Docker のログ出力先を変更しよう

Docker のデフォルト設定では、コンテナ内のプロセスが標準出力したログはコンテナを削除してしまうと同時に削除されてしまいます。
そのため、なにかしらの方法で外部にログを保存する必要があります。

Docker では、ログの出力方式を変更できる log-driver というオプションがあります。

Log Driver 説明
none docker logs に何も出力されません
json-file JSON形式のログを出力します
デフォルトのログドライバです
journald journald に対してログを書き込みます
fluentd fluentd に対してログを書き込みます
awslogs AWS Cloud Watch に対してログを書き込みます
gcplogs GCP に対してログを書き込みます

GCP への出力は --log-driver=gcplogs をコンテナ立ち上げ時に指定することで、
Stackdriver Logging にログ書き込みができます。
また、GCP のインスタンスでコンテナを立ち上げると、
自動的にプロジェクト情報などを判別してくれます。

では、ログドライバを変更して nginx コンテナを立ててみましょう。

docker run --name nginx -p 80:80 --log-driver=gcplogs -it -d nginx

これだけで nginx から出力されるログは GCP に書き込まれるようになりました。

それでは GCP の管理画面から出力されたログを見てみましょう。

ログは1行ずつ JSON 形式で保存されています。
jsonPayload.data に出力されたログが入っており、コンテナの情報やどのリージョン、
インスタンスから送信されたかという情報が確認できます。
また、高度なログフィルタを駆使することで、
特定のログだけを簡単に抽出することもできます。

Cloud Storage にログをエクスポートしよう

Stackdriver Logging にはログを7日分までしか保存することが出来ません。
そのため、Cloud Storage や BigQuery などのサービスに
ログエクスポートができる機能を提供しています。


フィルタ条件も設定することが出来るため、
特定のログだけをエクスポートということも可能です。

Cloud Storage にエクスポート設定をした場合は1日1回、
1時間単位で自動的にローテートした JSON ファイルが保存されていきます。

Cloud Storage のストレージクラスを Nearline や Coldline にしておくことでコストを大幅削減することができますので、保存目的でほとんどログデータにアクセスしない場合はとてもおすすめです!
また、REST API もしくは gsutil コマンドからライフサイクルを設定することができ、一定期間経過で削除設定できますので、長期保存される場合は必ず設定しましょう。

まとめ

今回は GCP での Docker ログ管理方法をご紹介しました。
ログの保存先には Cloud Storage を選択しましたが、
しっかりとした分析を行うのであれば BigQuery に保存した方が
分析をしやすくなるかと思います。

GCP には他にも沢山のサービスを提供しており、「GoogleのCloud Vision APIを使って画像分析をしてみよう!」や「Google Cloud Natural Language APIで自然言語解析入門」の記事でもご紹介していますので、ご興味のある方はぜひこちらもご覧ください!

今すぐお気軽に
ご相談ください。

0120-315-465

(平日 10:00~19:00)

今すぐお気軽に
ご相談ください。

0120-315-465

(平日 10:00~19:00)

グラッドキューブは
「ISMS認証」を取得しています。

認証範囲:
インターネットマーケティング支援事業、インターネットASPサービスの提供、コンテンツメディア事業

「ISMS認証」とは、財団法人・日本情報処理開発協会が定めた企業の情報情報セキュリティマネジメントシステムの評価制度です。

いますぐ無料で
お試しください。

SiTest の革新的な機能を
お試しいただけます。
利用規約

お名前【必須】
メールアドレス【必須】
電話番号【必須】