iT邦幫忙

第 12 屆 iT 邦幫忙鐵人賽

DAY 27
0
Elastic Stack on Cloud

Elastic Stack 是一把梭,用起來再說!!!系列 第 27

Day27-用APM監控應用程序(二)

安裝APM agent

這邊使用Golang來示範Agent

APM Server也是用golang寫的

監控http

package main

import (
	"fmt"
	"net/http"

	"go.elastic.co/apm/module/apmhttp"
)

func main() {
	mux := http.NewServeMux()

	mux.HandleFunc("/apm", func(w http.ResponseWriter, r *http.Request) {
		fmt.Fprint(w, "30day apm test", "\n")
	})

	http.ListenAndServe(":8080", apmhttp.Wrap(mux))
}

接著執行時需要帶三個環境變數

ELASTIC_APM_SERVICE_NAME=30day #Server Name方便辨識用
ELASTIC_APM_SERVER_URL=https://29701a126a544****30a979e4535a22a.apm.asia-east1.gcp.elastic-cloud.com:443 #APM Server位置
ELASTIC_APM_SECRET_TOKEN=CYBeuzHJtWFas8QFz1 #APM Server Token

接著我們在遊覽器打http://localhost:8080/apm,接著就可以在Kibana APM裡面看到這些數據
透過圖表很方便的查看執行時間

apm
apm

透過官方的module可以很方便的監控一些需要i/o的性能

  • module/apmecho
  • module/apmgin
  • module/apmbeego
  • module/apmgorilla
  • module/apmgrpc
  • module/apmhttp
  • module/apmhttprouter
  • module/apmnegroni
  • module/apmlambda
  • module/apmsql
  • module/apmgopg
  • module/apmgorm
  • module/apmgocql
  • module/apmredigo
  • module/apmgoredis
  • module/apmrestful
  • module/apmchi
  • module/apmlogrus
  • module/apmzap
  • module/apmzerolog
  • module/apmelasticsearch
  • module/apmmongo

自定義監控

透過一些func也可以自定義一些片段的監控,針對每段區間的監控

package main

import (
	"fmt"
	"net/http"
	"time"

	"go.elastic.co/apm"
)

func main() {
	mux := http.NewServeMux()

	mux.HandleFunc("/apm", func(w http.ResponseWriter, r *http.Request) {
		tx := apm.DefaultTracer.StartTransaction("GET /apm", "request")

		defer tx.End()

		tx.Result = "HTTP 2xx"
		tx.Context.SetLabel("region", "us-east-1")

		step1(tx)
		step2(tx)

		fmt.Fprint(w, "30day apm test", "\n")

	})

	http.ListenAndServe(":8080", mux)
}

func step1(tx *apm.Transaction) {
	s := tx.StartSpan("step1", "step1", nil)
	defer s.End()

	time.Sleep(time.Second * 1)
}

func step2(tx *apm.Transaction) {
	s := tx.StartSpan("step2", "step2", nil)
	defer s.End()

	time.Sleep(time.Second * 1)
}

透過APM介面可以清楚的知道step1和step2花了多少時間,以及執行哪些東西

apm
apm


上一篇
Day26-用APM監控應用程序(一)
下一篇
Day28-Elasticsearch滾動升級
系列文
Elastic Stack 是一把梭,用起來再說!!!30

尚未有邦友留言

立即登入留言