Enhance HTTP connection options for phpfpm input plugin (#5713)
This commit is contained in:
		
							parent
							
								
									08080bbc1f
								
							
						
					
					
						commit
						72695228b3
					
				|  | @ -27,6 +27,16 @@ Get phpfpm stats using either HTTP status page or fpm socket. | ||||||
|   ## Example of multiple gathering from local socket and remote host |   ## Example of multiple gathering from local socket and remote host | ||||||
|   ## urls = ["http://192.168.1.20/status", "/tmp/fpm.sock"] |   ## urls = ["http://192.168.1.20/status", "/tmp/fpm.sock"] | ||||||
|   urls = ["http://localhost/status"] |   urls = ["http://localhost/status"] | ||||||
|  | 
 | ||||||
|  |   ## Duration allowed to complete HTTP requests. | ||||||
|  |   # timeout = "5s" | ||||||
|  | 
 | ||||||
|  |   ## Optional TLS Config | ||||||
|  |   # tls_ca = "/etc/telegraf/ca.pem" | ||||||
|  |   # tls_cert = "/etc/telegraf/cert.pem" | ||||||
|  |   # tls_key = "/etc/telegraf/key.pem" | ||||||
|  |   ## Use TLS but skip chain & host verification | ||||||
|  |   # insecure_skip_verify = false | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| When using `unixsocket`, you have to ensure that telegraf runs on same | When using `unixsocket`, you have to ensure that telegraf runs on same | ||||||
|  |  | ||||||
|  | @ -13,6 +13,8 @@ import ( | ||||||
| 	"sync" | 	"sync" | ||||||
| 
 | 
 | ||||||
| 	"github.com/influxdata/telegraf" | 	"github.com/influxdata/telegraf" | ||||||
|  | 	"github.com/influxdata/telegraf/internal" | ||||||
|  | 	"github.com/influxdata/telegraf/internal/tls" | ||||||
| 	"github.com/influxdata/telegraf/plugins/inputs" | 	"github.com/influxdata/telegraf/plugins/inputs" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
|  | @ -36,6 +38,8 @@ type poolStat map[string]metric | ||||||
| 
 | 
 | ||||||
| type phpfpm struct { | type phpfpm struct { | ||||||
| 	Urls    []string | 	Urls    []string | ||||||
|  | 	Timeout internal.Duration | ||||||
|  | 	tls.ClientConfig | ||||||
| 
 | 
 | ||||||
| 	client *http.Client | 	client *http.Client | ||||||
| } | } | ||||||
|  | @ -58,9 +62,19 @@ var sampleConfig = ` | ||||||
|   ##       "fcgi://10.0.0.12:9000/status" |   ##       "fcgi://10.0.0.12:9000/status" | ||||||
|   ##       "cgi://10.0.10.12:9001/status" |   ##       "cgi://10.0.10.12:9001/status" | ||||||
|   ## |   ## | ||||||
|   ## Example of multiple gathering from local socket and remove host |   ## Example of multiple gathering from local socket and remote host | ||||||
|   ## urls = ["http://192.168.1.20/status", "/tmp/fpm.sock"] |   ## urls = ["http://192.168.1.20/status", "/tmp/fpm.sock"] | ||||||
|   urls = ["http://localhost/status"] |   urls = ["http://localhost/status"] | ||||||
|  | 
 | ||||||
|  |   ## Duration allowed to complete HTTP requests. | ||||||
|  |   # timeout = "5s" | ||||||
|  | 
 | ||||||
|  |   ## Optional TLS Config | ||||||
|  |   # tls_ca = "/etc/telegraf/ca.pem" | ||||||
|  |   # tls_cert = "/etc/telegraf/cert.pem" | ||||||
|  |   # tls_key = "/etc/telegraf/key.pem" | ||||||
|  |   ## Use TLS but skip chain & host verification | ||||||
|  |   # insecure_skip_verify = false | ||||||
| ` | ` | ||||||
| 
 | 
 | ||||||
| func (r *phpfpm) SampleConfig() string { | func (r *phpfpm) SampleConfig() string { | ||||||
|  | @ -96,8 +110,17 @@ func (g *phpfpm) Gather(acc telegraf.Accumulator) error { | ||||||
| // Request status page to get stat raw data and import it
 | // Request status page to get stat raw data and import it
 | ||||||
| func (g *phpfpm) gatherServer(addr string, acc telegraf.Accumulator) error { | func (g *phpfpm) gatherServer(addr string, acc telegraf.Accumulator) error { | ||||||
| 	if g.client == nil { | 	if g.client == nil { | ||||||
| 		client := &http.Client{} | 		tlsCfg, err := g.ClientConfig.TLSConfig() | ||||||
| 		g.client = client | 		if err != nil { | ||||||
|  | 			return err | ||||||
|  | 		} | ||||||
|  | 		tr := &http.Transport{ | ||||||
|  | 			TLSClientConfig: tlsCfg, | ||||||
|  | 		} | ||||||
|  | 		g.client = &http.Client{ | ||||||
|  | 			Transport: tr, | ||||||
|  | 			Timeout:   g.Timeout.Duration, | ||||||
|  | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if strings.HasPrefix(addr, "http://") || strings.HasPrefix(addr, "https://") { | 	if strings.HasPrefix(addr, "http://") || strings.HasPrefix(addr, "https://") { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue