メインコンテンツまでスキップ

モニタリング

この章では、Go-Sailのモニタリング機能について紹介します。

はじめに

アプリケーションサービスを運用する上で、サービスのモニタリングは非常に重要です。モニタリングによってアプリケーションの稼働状況がより可視化・明確になり、パフォーマンス最適化にも大きな効果を発揮します。特にマイクロサービス環境では、弾力的なリソース拡張などにも寄与します。

現在、Go-SailではPrometheusとPProfの2つの方法を活用し、テレメトリーとオブザーバビリティ(可観測性)を実現しています。

メトリクス

Go-SailはPrometheusを用いて、様々なサービスメトリクスを監視します。メトリクスエンドポイントを通じて、これらのデータを収集し、任意の用途で活用できます。現在収集している主なメトリクスは以下の通りです:

  • HTTPリクエスト遅延
  • HTTPステータスコードのカウント
  • CPU使用率
  • メモリ使用率
  • ディスク使用率
  • ネットワークトラフィック

設定

メトリクス監視を有効化するには、設定が必要です。下記は設定すべき該当部分の抜粋です。

config.example.yaml
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 です。

config.example.yaml
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