Go ( mackerel-client-go ) を利用してMackerelにカスタムメトリクスをPostする
- やったこと
- mackerel-client-goについて
- Mackerelダッシュボードにサービス名を指定してサービスメトリックに投稿する
- mackerelにメトリクスをPostするコード
- 実行結果
- MackerelダッシュボードにホストIDを指定してメトリクスを投稿する
- まとめ
やったこと
Goを使ってMackerelに対してカスタムメトリクスを登録してみました。 投稿したデータをグラフ化できるし便利なのでぜひ使ってみてください。
- 開発環境
- Go: 1.12.4
- Goland
mackerel-client-goについて
今回はMackerelが公式に提供している mackerel-client-go
を利用しました。
Mackerelダッシュボードにサービス名を指定してサービスメトリックに投稿する
PostServiceMetricValues
を利用する。
func (c *Client) PostServiceMetricValues(serviceName string, metricValues [](*MetricValue)) error
■ metricValues [](*MetricValue)
type MetricValue struct { Name string `json:"name,omitempty"` Time int64 `json:"time,omitempty"` Value interface{} `json:"value,omitempty"` }
mackerelにメトリクスをPostするコード
package main import ( "fmt" "github.com/mackerelio/mackerel-client-go" "time" ) var ( client = mackerel.NewClient("<MACKEREL_API_KEY>") nowTime = time.Now() ) func main() { err := client.PostServiceMetricValues("dev", []*mackerel.MetricValue{ &mackerel.MetricValue{ Name: "access_log.latency", Time: nowTime.Unix(), Value: 500, }, }) if err != nil{ fmt.Println("Error") } }
実行結果
MackerelダッシュボードにホストIDを指定してメトリクスを投稿する
PostHostMetricValuesByHostID
を利用する。
func (c *Client) PostHostMetricValuesByHostID(hostID string, metricValues [](*MetricValue)) error
■ mackerelにメトリクスをPostするコード
package main import ( "fmt" "github.com/mackerelio/mackerel-client-go" "io/ioutil" "os" "strings" "time" ) var ( IDFILE = "/var/lib/mackerel-agent/id" client = mackerel.NewClient("<MACKEREL_API_KEY>") nowTime = time.Now() ) func main() { hostID := GetHostID() err := client.PostHostMetricValuesByHostID(hostID, []*mackerel.MetricValue{ &mackerel.MetricValue{ Name: "proxy.access_log.latency", Time: nowTime.Unix(), Value: 500, }, }) if err != nil{ fmt.Println("Error") } } func GetHostID() string { var hostID string content, err := ioutil.ReadFile(IDFILE) if err != nil { fmt.Println("Error") os.Exit(1) } lines := strings.Split(string(content), "\n") hostID = lines[0] return hostID }
■ 実行結果
まとめ
mackerel-client-goを使って、Mackerelダッシュボードに、サービス名を指定、ホストIDを指定してそれぞれにメトリクスを投稿した。APIを使ってメトリクスを投稿できるようになったので可視化したいデータなどを投稿していきたいと思います。