概要
前回はHTTPのAPIサーバの監視の仕方を説明しました。
今回はgRPCでのメトリクスの作り方を説明します。
環境
- Prometheus 2.11.1
- Golang 1.12.7
- Grafana 6.2.5
- prometheus/client_golang 1.0.0
- go-grpc-prometheus 1.2.0
メトリクスの追加
実際の処理をするServer側と、コールするClient側の両方にメトリクスを追加していきます。
サンプルコードは
にあります。
続きを読む前回は既存のexporterを利用せず、自分でメトリクスを生成する方法を説明しました。
その方法を使って実際にAPIサーバ(HTTP)のメトリクスを生成し、可視化してみます。
分散システムで何をモニタリングすべきかについては、The Four Golden Signalsが有名です。
それを踏まえてマイクロサービスではREDメソッドという指標があります。
項目 | 説明 |
---|---|
Rate | リクエスト数/sec |
Errors | エラー数 |
Duration | リクエスト毎のduration |
今回はこのREDメソッドに基づいて可視化できるようにします。
続きを読むMetric types | Prometheus で定義されているようにPrometheusでは大きく4つのメトリクスタイプがあります。
今回はGoのPrometheusクライアントライブラリを用いて各メトリクスを独自で用意する方法を説明します。
まずはPrometheusが監視対象のメトリクスをPullできるよう/metrics
のエンドポイントを用意します。
公式クライアントとしてpromhttp
というライブラリが提供されているのでそれを使います。
package main import ( "log" "net/http" "github.com/prometheus/client_golang/prometheus/promhttp" ) func main() { http.Handle("/metrics", promhttp.Handler()) log.Fatal(http.ListenAndServe(":8080", nil)) }続きを読む
Pull型の監視サービスであるPrometheusの使い方を説明します。
Prometheusのアーキテクチャはこの様になっています。
大まかな特徴としては以下です。
GitHubではMergeコミットなどで
といったマークを見ます。これは署名されたcommitを示すものなのですが、
を今回説明します。
gitのコミットは
commit 91e8e61ee6601576e358201315b6624181529879 (HEAD -> refactor-chain, origin/refactor-chain) Author: Junpei Tsuji <junpei.tsuji.ams@gmail.com> Date: Sun Jul 14 11:42:29 2019 +0900 Fixed a bug
のようにAuther名やEmailが付きますが、これらは自分で設定可能です。
ということは他人の名前やEmailを設定してcommitすることもできるため、なりすましが可能です。
GitHub上ではcommitにそういったなりすましではないことを保証するための仕組みとして署名をしたらVerified
マークが付くようになってます。