github.com/influxdata/influxdb/v2@v2.7.6/telegraf/plugins/inputs/nginx.go (about) 1 package inputs 2 3 import ( 4 "errors" 5 "fmt" 6 "strconv" 7 "strings" 8 ) 9 10 // Nginx is based on telegraf nginx plugin. 11 type Nginx struct { 12 baseInput 13 URLs []string `json:"urls"` 14 } 15 16 // PluginName is based on telegraf plugin name. 17 func (n *Nginx) PluginName() string { 18 return "nginx" 19 } 20 21 // TOML encodes to toml string 22 func (n *Nginx) TOML() string { 23 s := make([]string, len(n.URLs)) 24 for k, v := range n.URLs { 25 s[k] = strconv.Quote(v) 26 } 27 return fmt.Sprintf(`[[inputs.%s]] 28 # An array of Nginx stub_status URI to gather stats. 29 urls = [%s] 30 31 ## Optional TLS Config 32 tls_ca = "/etc/telegraf/ca.pem" 33 tls_cert = "/etc/telegraf/cert.cer" 34 tls_key = "/etc/telegraf/key.key" 35 ## Use TLS but skip chain & host verification 36 insecure_skip_verify = false 37 38 # HTTP response timeout (default: 5s) 39 response_timeout = "5s" 40 `, n.PluginName(), strings.Join(s, ", ")) 41 } 42 43 // UnmarshalTOML decodes the parsed data to the object 44 func (n *Nginx) UnmarshalTOML(data interface{}) error { 45 dataOK, ok := data.(map[string]interface{}) 46 if !ok { 47 return errors.New("bad urls for nginx input plugin") 48 } 49 urls, ok := dataOK["urls"].([]interface{}) 50 if !ok { 51 return errors.New("urls is not an array for nginx input plugin") 52 } 53 for _, url := range urls { 54 n.URLs = append(n.URLs, url.(string)) 55 } 56 return nil 57 }