2015-06-02 11:47 阅读 130

Golang:实现http服务器运行状况检查。 gocraft /健康

I want to check the health of my service,having the metrics of each endPoint. My service calls some other services and recieves a Json code, I make templates with it, and then I send it to a http.ResponseWriter.

I searched and I found this package "gocraft/health" but I didn't really understand how it works.

Is there any other way or package to generate metrics or should I just use "gocraft/health.

Thank you in advance

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

1条回答 默认 最新

  • 已采纳
    doujiao1949 doujiao1949 2015-06-11 12:53

    Finally, I choose "gocraft/health", a great library.

    Example of usage:

    package main
    import (
    //should be global Var
    var stream = health.NewStream()
    func main() {
        // Log to stdout!
        // Make sink and add it to stream
        sink := health.NewJsonPollingSink(time.Minute*5, time.Minute*20)
        // Start the HTTP server! This will expose metrics via a JSON API.
        adr := ""
        http.HandleFunc("/api/getVastPlayer", vastPlayer)
        panic(http.ListenAndServe(":2001", nil))

    Per the initialization options above, your metrics are aggregated in 5-minute chunks. We'll keep 20 minutes worth of data in memory. Nothing is ever persisted to disk.

    You can create as many jobs as you want

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

    Once you start your app, this will expose metrics via a JSON API. You can browse the /health endpoint (eg, to see the metrics. You will get something like that:

      "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": {}

    For more information and functionality check this link:

    点赞 评论 复制链接分享