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  }