🔍
golang の net/http で DNS 名前解決した結果をトレースする
tl; dr
golang の net/http
でアクセスしている先が Route 53 レコードセットを使って Blue/Green Deployment になっている。
ちゃんとアクセス先が切り替わっているかどうかを知るために、アプリケーションログにホスト名を名前解決した結果を残したい。
実際のコード
net/http/httptrace
を使うんじゃ。
req, err := http.NewRequest("GET", "https://example.com", nil)
if err != nil {
panic(err)
}
clientTrace := &httptrace.ClientTrace{
DNSDone: func(dnsDoneInfo httptrace.DNSDoneInfo) {
fmt.Println("DNSDoneInfo: ")
for _, v := range dnsDoneInfo.Addrs {
fmt.Println(v.String());
}
},
}
ctx := httptrace.WithClientTrace(context.Background(), clientTrace)
req = req.WithContext(ctx)
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
References
Discussion