Google Cloud Loggingが突然ログ出力しなくなった時にやったこと
はじめに
nginxのログをCloud Loggingに保存、BigQueryに転送して日次集計していますが、ある日BigQueryに保存されなくなり、原因を調べてみた時のメモです。
Cloud Loggingにもログが表示されていない
Cloud LoggingからBigQueryエクスポートの設定を行うと、日次でテーブルが作成されます(クエリー対象の容量を削減できるので便利です)。本来作成されるはずの2016-01-06
分が作成されていませんでした。
BigQueryの画面
さらに調べてみると、そもそもCloud Loggingにある時間以降からログ出力されていませんでした。
xxx.xxx.xxx.xxx - - [06/Jan/2016:03:20:09 +0900] "GET / HTTP/1.1"
google-fluentd再起動
とりあえずgoogle-fluentdのプロセスを確認します。
zono@hostname:~$ ps ax | grep fluentd /usr/sbin/google-fluentd
プロセスは存在します。テストでsyslogにログを出力します。
logger "Some test message"
ログはsyslogには出力しますが、Cloud Loggingの画面には表示されません。 再起動して、再度ログ出力をテストします。
zono@hostname:~$ sudo service google-fluentd restart Restarting google-fluentd: * google-fluentd
logger "Some test message"
今度はCloud Loggingの画面に表示されています。
BigQueryへのストリーミング
google-fluentdリスタート後すぐにBigQueryの本日分のテーブルができていました。
まとめ
結論として原因不明だけど、とりあえずgoogle-fluentdをリスタートしたら直った。というメモでした。
Cloud Loggingが動作しなかった時のログがBigQueryに保存されていません。nginxのaccess.logにはログ出力されているので、それをBigQueryにロードできるので今度試してみます。
また今回の障害をすぐ検知するための仕組みも今後用意しないといけませんね。(psコマンドでプロセスが生きていたので他の方法で検知できるか調べないと)
参考
Google Cloud Logging(beta)を試す!
Real-time logs analysis using Fluentd and BigQuery
GAE/GCEのログ監視 & GAE/GCEのエラーログをCloud Logging -> Cloud Pub/Sub からの GASでSlackへ流す
Installing the Cloud Logging Agent