ログ管理に最適!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で自然言語解析入門」の記事でもご紹介していますので、ご興味のある方はぜひこちらもご覧ください!
-
お問い合わせ
SiTest の導入検討や
他社ツールとの違い・比較について
弊社のプロフェッショナルが
喜んでサポートいたします。 -
コンサルティング
ヒートマップの活用、ABテストの実施や
フォームの改善でお困りの方は、
弊社のプロフェッショナルが
コンサルティングいたします。
今すぐお気軽にご相談ください。
今すぐお気軽に
ご相談ください。
(平日 10:00~19:00)
今すぐお気軽に
ご相談ください。
0120-315-465
(平日 10:00~19:00)
グラッドキューブは
「ISMS認証」を取得しています。
認証範囲:
インターネットマーケティング支援事業、インターネットASPサービスの提供、コンテンツメディア事業
「ISMS認証」とは、財団法人・日本情報処理開発協会が定めた企業の情報情報セキュリティマネジメントシステムの評価制度です。