概要
Stackdriver logging はログ情報をクラウドに貯めることができるサービスです
普段アプリを実装するときと同じようにロギングするだけでクラウドにログを貯められます
今回は GCE から Ruby で書き込む方法を紹介します (なぜ GCE からわざわざやっているのかは最後の「トラブルシューティング」のところで説明しています)
環境
- macOS 10.13.6
- Ruby 2.5.1p57
- google-cloud-logging (1.5.2)
- Google Stackdriver Logging API (2018/08/22 時点)
Stackdriver Logging API を有効にする
ここ から有効にします
まずは API を有効にするプロジェクトを選択します
認証情報は作成する必要はないです
GCE を作成する際に Stackdriver logging API へのアクセスをフルアクセスにすることがで制御します
GCE の Cloud API アクセススコープを設定する
GCE のインスタンスの編集から「Cloud API アクセススコープ」を設定しましょう
これを設定するにはインスタンスが停止状態でなければいけないので一旦停止します
Stackdriver Logging API の部分を「フル」にしましょう
ライブラリインストール
GCE 上で行います
ruby, gem, bundler などがインストールされていない場合はインストールしてください
- bundle init
- vim Gemfile
gem "google-cloud-logging"
bundle install --path vendor
Rails で使う場合は「stackdriver」というライブラリなのですが今回は Rails は使わないのでこの方法で実装します
サンプルコード
- vim sd_test.rb
require "google/cloud/logging"
project_id = 'your_project_id'
logging = Google::Cloud::Logging.new project: project_id
entry = logging.entry
entry.payload = "Hello, world!"
entry.log_name = "my-log"
entry.resource.type = "global"
ret = logging.write_entries entry
puts ret
GCE を作成したプロジェクト ID を設定してください
動作確認
bundle exec ruby sd_test.rb
で動作するはずです
Stackdriver Logging の画面がから「グローバル」スコープでログを確認すると送信したログがあるのが確認できると思います
おまけ (gcloud コマンドでロギングする)
例えば Google Cloud Shell を使って以下のように実行するだけで Stackdriver にログを貯めることができます
GCE のインスタンスにはデフォルトで gcloud コマンドがインストールされています
gcloud logging write my-test-log "A simple entry"
おまけ2 (ログを削除する)
gcloud logging logs delete my-test-log
トラブルシューティング
今回は GCE から使いました
実はローカルホストや AWS など他の環境からアクセスする際にはサービスアカウントを作成して API の認証情報を作成する必要があります
それを使ってアクセスすることができるらしいのですが自分が何度やっても以下のエラーでできませんでした
- The caller does not have permission
作成したサービスアカウントのロールを「オーナー」などにしてみましたがダメでした
ここに書いてある通りに project_id
の他に認証用の JSON ファイルを指定してやってみたのですがダメでした
もしかするとサービスアカウントのロール以外にもどこか設定するところがあるのかもしれません
最後に
GCE のインスタンスから Stackdriver Logging API を使ってみました
GCE からであれば簡単に使えます
実は当初はずっとローカルの Mac からやっていたのですがずっとエラーが出たのでドキュメントを見直してみたら GCE or GKE or GAE からやるのが定石ってぽかったので諦めて GCE からやりました
今回は諦めましたができる方法は絶対にあると思うのでもし情報があればコメントいただけると助かります
0 件のコメント:
コメントを投稿