Golang Agent 0.1.8
2022-01-19
베타
업데이트
동시접속 사용자 수집 설정을 추가했습니다.
동시접속 사용자 지표는 5분전 부터 현재까지의 고유한 사용자의 수를 표시합니다. 5분간 합산된 사용자 수가 표시 됩니다.
고유한 사용자 정보를 HyperLogLog 알고리즘으로 처리합니다.
고유한 사용자 정보는 초기에 IP로 설정됩니다.
추가로 HTTP Header , Cookie 항목의 값으로 사용자 식별 정보를 설정할 수 있습니다.
액티브 스테이터스
액티브 스테이터스 기능을 추가 합니다.
대시보드 화면에 액티브 스테이터스 그래프가 표기됩니다. 상태는 일반 함수, SQL, DB connection, 외부 HTTP 연결, 소켓 연결이 있으며 각 상태별로 진행중인 요청 개수를 표시합니다.

내부 지표 수집
별도의 goroutine을 실행하여 5초 간격으로 지표를 수집합니다.
수집되는 지표
지표이름 |
설명 |
NumCpu |
현재 프로세스에서 사용할 수있는 논리 CPU 수 |
NumCgoCall |
현재 프로세스에서 수행 한 cgo 호출 수 |
NumGoroutine |
현재 존재하는 고 루틴의 수 |
Alloc |
할당 된 힙 개체의 바이트 |
TotalAlloc |
힙 개체에 할당 된 누적 바이트 |
Sys |
OS에서 얻은 총 메모리 바이트 |
Lookups |
|
Mallocs |
할당 된 힙 개체의 누적 개수 |
Frees |
해제 된 힙 개체의 누적 개수 |
HeapAlloc |
할당 된 힙 개체의 바이트 |
HeapSys |
OS에서 얻은 힙 메모리의 바이트 |
HeapIdel |
사용되지 않는 바이트 |
HeapInuse |
사용중인 바이트 |
HeapReleased |
OS에 반환 된 물리적 메모리의 바이트 |
HeapObjects |
할당 된 힙 개체의 수 |
StackInuse |
사용중인 스택 바이트 |
StackSys |
OS에서 얻은 스택 메모리의 바이트 |
MSpanInuse |
할당 된 mspan 바이트 |
MSpanSys |
mspan에 대해 OS에서 얻은 메모리 바이트 |
MCacheInuse |
할당 된 mcache 바이트 |
MCacheSys |
OS에서 얻은 메모리의 mcache 바이트 |
BuckHashSys |
버킷 해시 테이블을 프로파일 링하는 메모리의 바이트 |
GCSys |
가비지 컬렉션 메타 데이터의 메모리 바이트 |
OtherSys |
기타 off-heap 메모리 바이트 (런타임 할당) |
NextGC |
다음 GC주기의 대상 힙 크기 |
LastGC |
마지막 가비지 수집이 완료된 시간 (unixstamp nanosecond) |
PauseTotalNs |
GC의 누적 나노초 |
NumGC |
|
완료된 GC주기의 수 |
NumForcedGC |
net/http 라이브러리의 RoundTripper를 지원합니다.
http transport 에 RoundTripper를 사용할 수 있도록 지원합니다. 패키지의 sql.Open 함수 대신 whatapsql.OpenContext 함수를 사용합니다. PrepareContext, QueryContext, ExecContext 등 context를 전달하는 함수를 사용하기를 권장합니다.
전달하는 context는 trace.Start()를 통해서 whatap TraceCtx 정보가 있어야합니다.
설치 안내
import (
"github.com/whatap/go-api/instrumentation/net/http/whataphttp"
)
func main() {
config := make(map[string]string)
trace.Init(config)
defer trace.Shutdown()
ctx, _ := trace.Start(context.Background(), "Http call")
defer trace.End(ctx, nil)
callUrl := "http://aaa.com/xxx"
client := http.DefaultClient
// Use WhaTap RoundTripper. whatap의 TraceCtx가 있는 context 를 전달합니다.
client.Transport = whataphttp.NewRoundTrip(ctx, http.DefaultTransport)
resp, err := client.Get(callUrl)
if err != nil {
...
}
defer resp.Body.Close()
...
}