以下のような構成のWebアプリで、ビルトイン+簡単なコーディングだけで、どのくらいのモニタリングを行えるのかを確認します。
- Google Cloud
- Cloud Run
- Python
- Flaskアプリ
Logging
標準出力に出力するだけで自動的にCloud Loggingにログが集約されます。
単純なテキストも、JSONなどの構造化ログもOKです。
- コーディングの例
logger.info("query string: " + request.query_string)
logger.info(json.dumps({"query_string": request.query_string}))
- ログの例
INFO:app:query string: hoge=fuga&foo=bar
INFO:app:{"query_string": "hoge=fuga&foo=bar"}
Monitoring
Profiler
Cloud Runサポートと記述されていませんが、使えます。
プログラム先頭でProfilerを有効にします。
- コーディングの例
try:
googlecloudprofiler.start(service='example')
except Exception as e:
app.logger.error("failed to start Google Cloud Profiler: " + str(e))
- Profilerの例
注意
本記事執筆時点では、Python 3.11でGoogle Cloud Profilerを使用できませんでした。
Python 3.10では問題ありませんでした。
Trace
- 特にコーディングしなくても、リクエスト単位の処理時間を見られます。
- OpenTelemetry対応すると、さらに細かいトレースを取得できます。