Goでプロセス監視を実現する方法

GolangではPrometheusやGinなどのライブラリを用いてプロセス監視を行うことができます。以下にGinとPrometheusライブラリを用いたプロセス監視の実装例を示します。

まず、Goプロジェクトにgithub.com/gin-gonic/ginとgithub.com/prometheus/client_golang/prometheusパッケージをインポートする必要があります。

import (
    "github.com/gin-gonic/gin"
    "github.com/prometheus/client_golang/prometheus"
    "github.com/prometheus/client_golang/prometheus/promhttp"
)

Ginエンジンインスタンスを生成し、Prometheusメトリクスを登録します。

func main() {
    r := gin.Default()

    // 创建一个计数器指标
    counter := prometheus.NewCounter(prometheus.CounterOpts{
        Name: "myapp_request_total",
        Help: "Total number of requests",
    })

    // 注册该指标
    prometheus.MustRegister(counter)

    // 定义一个路由处理函数
    r.GET("/", func(c *gin.Context) {
        // 每次请求时增加计数器的值
        counter.Inc()
        c.String(200, "Hello, world!")
    })

    // 将Prometheus指标暴露为/metrics接口
    r.GET("/metrics", gin.WrapH(promhttp.Handler()))

    // 启动Gin服务
    r.Run(":8080")
}

この例では、myapp_request_total というカウンター指標を作成し、リクエストのたびにカウンター値が増えます。その後、ルーター処理関数でカウンターの Inc() メソッドを呼び出すことで、モニタリングを実現しています。

最後に、gin.WrapH(promhttp.Handler())関数を使ってPrometheusのメトリクスを「/metrics」インターフェースとして公開し、r.Run(“:8080”)を使用してGinサービスを開始します。

この仕組みを使えば、http://localhost:8080/metrics にアクセスすることで、現在のプロセスに関するモニタリングメトリクスを見ることができます。

bannerAds