モニタリング
この章では、Go-Sailのモニタリング機能について紹介します。
はじめに
アプリケーションサービスを運用する上で、サービスのモニタリングは非常に重要です。モニタリングによってアプリケーションの稼働状況がより可視化・明確になり、パフォーマンス最適化にも大きな効果を発揮します。特にマイクロサービス環境では、弾力的なリソース拡張などにも寄与します。
現在、Go-SailではPrometheusとPProfの2つの方法を活用し、テレメトリーとオブザーバビリティ(可観測性)を実現しています。
メトリクス
Go-SailはPrometheusを用いて、様々なサービスメトリクスを監視します。メトリクスエンドポイントを通じて、これらのデータを収集し、任意の用途で活用できます。現在収集している主なメトリクスは以下の通りです:
- HTTPリクエスト遅延
- HTTPステータスコードのカウント
- CPU使用率
- メモリ使用率
- ディスク使用率
- ネットワークトラフィック
設定
メトリクス監視を有効化するには、設定が必要です。下記は設定すべき該当部分の抜粋です。
http_conf:
debug: false
addr: ""
swagger_conf:
enable: false
redoc_ui_path: ""
json_path: ""
favicon_path: ""
prometheus_conf:
enable: true
addr: ""
access_path: ""
disable_system_sample: false
disk_path: ""
sample_interval: ""
収集
設定が完了すると、Go-SailでPrometheusによるモニタリングが有効化されます。ただしこのモニタリングはメトリクスのデータを能動的にプッシュするものではなく、access_path で外部公開されるため、Grafanaなどツールでそのエンドポイントから収集します。
PProf
設定
PProfの設定はHTTP設定と連動しています。HTTP設定セクション内の debug パラメータを true にするだけで有効化されます。アクセスURLは /debug/pprof です。
http_conf:
debug: true
addr: ""
swagger_conf:
enable: false
redoc_ui_path: ""
json_path: ""
favicon_path: ""
prometheus_conf:
enable: false
addr: ""
access_path: ""
disable_system_sample: false
disk_path: ""
sample_interval: ""
利用方法
PProfでは以下の情報を可視化・分析できます。
-
メモリ使用量
/debug/pprof/heap -
CPUプロファイリング
/debug/pprof/profile -
goroutine 状況
/debug/pprof/goroutine -
ブロッキング分析
/debug/pprof/block -
ロック競合
/debug/pprof/mutex
go tool コマンドを使って詳細分析が可能です。たとえば:
go tool pprof http://localhost:8080/debug/pprof/heap