2

各エンドポイントのメトリックを使用して、サービスの状態を確認したいと考えています。私のサービスは他のいくつかのサービスを呼び出し、Json コードを受け取ります。それを使用してテンプレートを作成し、それを http.ResponseWriter に送信します。

検索したところ、このパッケージ「gocraft/health」が見つかりましたが、その仕組みがよくわかりませんでした。

メトリクスを生成する他の方法やパッケージはありますか、それとも単に「gocraft/health.

前もって感謝します

4

2 に答える 2

2

最後に、素晴らしいライブラリである"gocraft/health"を選択します。

使用例:

package main

import (
    "log"
    "net/http"
    "os"
    "time"

    "github.com/gocraft/health"
)

//should be global Var
var stream = health.NewStream()

func main() {
    // Log to stdout!
    stream.AddSink(&health.WriterSink{os.Stdout})
    // Make sink and add it to stream
    sink := health.NewJsonPollingSink(time.Minute*5, time.Minute*20)
    stream.AddSink(sink)
    // Start the HTTP server! This will expose metrics via a JSON API.
    adr := "127.0.0.1:5001"
    sink.StartServer(adr)

    http.HandleFunc("/api/getVastPlayer", vastPlayer)
    log.Println("Listening...")
    panic(http.ListenAndServe(":2001", nil))
}

上記の初期化オプションに従って、メトリクスは 5 分間のチャンクで集計されます。20 分分のデータをメモリに保持します。ディスクに永続化されるものはありません。

必要な数のジョブを作成できます

func vastPlayer(w http.ResponseWriter, r *http.Request) {
  job_1 := stream.NewJob("/api/getVastPlayer")

  ...
  ...

  if bol {
    job_1.Complete(health.Success)
  } else {
    job_1.Complete(health.Error)
  }
}

アプリを起動すると、JSON API を介してメトリックが公開されます。/healthエンドポイント (例: 127.0.0.1:5001/health) を参照して、メトリックを表示できます。あなたはそのようなものを得るでしょう:

{
  "instance_id": "sd-69536.29342",
  "interval_duration": 86400000000000,
  "aggregations": [
    {
      "interval_start": "2015-06-11T02:00:00+02:00",
      "serial_number": 1340,
      "jobs": {
        "/api/getVastPlayer": {
          "timers": {},
          "events": {},
          "event_errs": {},
          "count": 1328,
          "nanos_sum": 140160794784,
          "nanos_sum_squares": 9.033775178022173E+19,
          "nanos_min": 34507863,
          "nanos_max": 2736850494,
          "count_success": 62,
          "count_validation_error": 1266,
          "count_panic": 0,
          "count_error": 0,
          "count_junk": 0
        },
        "timers": {},
        "events": {},
        "event_errs": {}
      }
    }
  ]
}

詳細と機能については、次のリンクを確認してください。

https://github.com/gocraft/health

于 2015-06-11T12:53:55.377 に答える