-
Notifications
You must be signed in to change notification settings - Fork 6
/
generate-prof.go
58 lines (48 loc) · 1.46 KB
/
generate-prof.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package model_convert
import (
"strings"
)
// help generate go server side pprof
func GenerateNginxConf(serverName string, host string, port string) string {
var tmpl = `
server {
listen 80;
server_name ${server_name};
# request header
proxy_set_header Host $http_host;
proxy_set_header Cookie $http_cookie;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
}
location /ping {
return 200 'pone';
}
location /debug/pprof/ {
proxy_pass http://${host}${port};
}
}
`
rs := strings.Replace(tmpl, "${server_name}", serverName, -1)
rs = strings.Replace(rs, "${host}", host, -1)
rs = strings.Replace(rs, "${port}", port, -1)
return rs
}
func GenerateGoProfSdk(port string) string {
var tmpl = `
// Auto generated by github.com/fwhezfwhez/model_convert.GenerateGoProfSdk()
// Don't forget import (_ "net/http/pprof")
go func() {
var url = fmt.Sprintf("localhost%s", "${port}")
if e := http.ListenAndServe(url, nil); e != nil {
fmt.Println("prof_at:error", errorx.Wrap(e).Error())
return
}
}()
`
return strings.Replace(tmpl, "${port}", port, -1)
}
func GenerateProf(host string, port string, serverName string) (string, string) {
return GenerateNginxConf(serverName, host, port), GenerateGoProfSdk(port)
}