@@ -10,6 +10,7 @@ import (
1010 "time"
1111
1212 "github.com/influxdata/telegraf"
13+ "github.com/influxdata/telegraf/internal"
1314 "github.com/influxdata/telegraf/internal/errchan"
1415 "github.com/influxdata/telegraf/plugins/inputs"
1516 "gopkg.in/mgo.v2"
@@ -20,6 +21,15 @@ type MongoDB struct {
2021 Ssl Ssl
2122 mongos map [string ]* Server
2223 GatherPerdbStats bool
24+
25+ // Path to CA file
26+ SSLCA string `toml:"ssl_ca"`
27+ // Path to host cert file
28+ SSLCert string `toml:"ssl_cert"`
29+ // Path to cert key file
30+ SSLKey string `toml:"ssl_key"`
31+ // Use SSL but skip chain & host verification
32+ InsecureSkipVerify bool
2333}
2434
2535type Ssl struct {
@@ -35,6 +45,13 @@ var sampleConfig = `
3545 ## 10.0.0.1:10000, etc.
3646 servers = ["127.0.0.1:27017"]
3747 gather_perdb_stats = false
48+
49+ ## Optional SSL Config
50+ # ssl_ca = "/etc/telegraf/ca.pem"
51+ # ssl_cert = "/etc/telegraf/cert.pem"
52+ # ssl_key = "/etc/telegraf/key.pem"
53+ ## Use SSL but skip chain & host verification
54+ # insecure_skip_verify = false
3855`
3956
4057func (m * MongoDB ) SampleConfig () string {
@@ -105,8 +122,11 @@ func (m *MongoDB) gatherServer(server *Server, acc telegraf.Accumulator) error {
105122 dialInfo .Direct = true
106123 dialInfo .Timeout = 5 * time .Second
107124
125+ var tlsConfig * tls.Config
126+
108127 if m .Ssl .Enabled {
109- tlsConfig := & tls.Config {}
128+ // Deprecated SSL config
129+ tlsConfig = & tls.Config {}
110130 if len (m .Ssl .CaCerts ) > 0 {
111131 roots := x509 .NewCertPool ()
112132 for _ , caCert := range m .Ssl .CaCerts {
@@ -119,6 +139,13 @@ func (m *MongoDB) gatherServer(server *Server, acc telegraf.Accumulator) error {
119139 } else {
120140 tlsConfig .InsecureSkipVerify = true
121141 }
142+ } else {
143+ tlsConfig , err = internal .GetTLSConfig (
144+ m .SSLCert , m .SSLKey , m .SSLCA , m .InsecureSkipVerify )
145+ }
146+
147+ // If configured to use TLS, add a dial function
148+ if tlsConfig != nil {
122149 dialInfo .DialServer = func (addr * mgo.ServerAddr ) (net.Conn , error ) {
123150 conn , err := tls .Dial ("tcp" , addr .String (), tlsConfig )
124151 if err != nil {
0 commit comments