github.com/klaytn/klaytn@v1.12.1/cmd/homi/docker/service/prometheus.go (about) 1 package service 2 3 import ( 4 "bytes" 5 "fmt" 6 "text/template" 7 ) 8 9 // docker-compose service 10 type PrometheusService struct { 11 Config PrometheusConfig 12 Name string 13 IP string 14 } 15 16 func (prom PrometheusService) String() string { 17 tmpl, err := template.New("PrometheusService").Parse(prometheusServieTemplate) 18 if err != nil { 19 fmt.Printf("Failed to parse template, %v", err) 20 return "" 21 } 22 23 result := new(bytes.Buffer) 24 err = tmpl.Execute(result, prom) 25 if err != nil { 26 fmt.Printf("Failed to render template, %v", err) 27 return "" 28 } 29 return result.String() 30 } 31 32 var prometheusServieTemplate = `{{ .Name }}: 33 hostname: {{ .Name }} 34 image: prom/prometheus:v2.3.2 35 ports: 36 - 9090:9090 37 volumes: 38 - "./prometheus.yml:/etc/prometheus/prometheus.yml" 39 networks: 40 app_net: 41 ipv4_address: {{ .IP }} 42 restart: "no" 43 ` 44 45 func NewPrometheusService(ip string, targetHostNames []string) *PrometheusService { 46 return &PrometheusService{ 47 Name: "prometheus", 48 IP: ip, 49 Config: NewPrometheusConfig(targetHostNames), 50 } 51 } 52 53 // prometheus server config 54 type PrometheusConfig struct { 55 Targets []string 56 } 57 58 func NewPrometheusConfig(targetHostNames []string) PrometheusConfig { 59 return PrometheusConfig{ 60 Targets: targetHostNames, 61 } 62 } 63 64 func (promConfig PrometheusConfig) String() string { 65 tmpl, err := template.New("PrometheusConfig").Parse(prometheusConfigTemplate) 66 if err != nil { 67 fmt.Printf("Failed to parse template, %v", err) 68 return "" 69 } 70 71 result := new(bytes.Buffer) 72 err = tmpl.Execute(result, promConfig) 73 if err != nil { 74 fmt.Printf("Failed to render template, %v", err) 75 return "" 76 } 77 78 return result.String() 79 } 80 81 var prometheusConfigTemplate = `global: 82 scrape_interval: 15s 83 evaluation_interval: 15s 84 85 scrape_configs: 86 - job_name: 'klaytn' 87 static_configs: 88 - targets: 89 {{- range .Targets }} 90 - "{{ . }}:61001" 91 {{- end }} 92 `