Skip to content

Commit 1bd81ac

Browse files
authored
Merge pull request #2 from planetscale/socket-option
Add --mysqld.socket option
2 parents 221481c + 8d31f6f commit 1bd81ac

File tree

3 files changed

+21
-13
lines changed

3 files changed

+21
-13
lines changed

config/config.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ func (ch *MySqlConfigHandler) GetConfig() *Config {
8686
return ch.Config
8787
}
8888

89-
func (ch *MySqlConfigHandler) ReloadConfig(filename string, mysqldAddress string, mysqldUser string, tlsInsecureSkipVerify bool, logger log.Logger) error {
89+
func (ch *MySqlConfigHandler) ReloadConfig(filename, mysqldAddress, mysqldSocket, mysqldUser string, tlsInsecureSkipVerify bool, logger log.Logger) error {
9090
var host, port string
9191
defer func() {
9292
if err != nil {
@@ -116,6 +116,9 @@ func (ch *MySqlConfigHandler) ReloadConfig(filename string, mysqldAddress string
116116
if cfgPort := clientSection.Key("port"); cfgPort.String() == "" {
117117
cfgPort.SetValue(port)
118118
}
119+
if cfgSocket := clientSection.Key("socket"); cfgSocket.String() == "" {
120+
cfgSocket.SetValue(mysqldSocket)
121+
}
119122
if cfgUser := clientSection.Key("user"); cfgUser.String() == "" {
120123
cfgUser.SetValue(mysqldUser)
121124
}

config/config_test.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ func TestValidateConfig(t *testing.T) {
2828
c := MySqlConfigHandler{
2929
Config: &Config{},
3030
}
31-
if err := c.ReloadConfig("testdata/client.cnf", "localhost:3306", "", true, log.NewNopLogger()); err != nil {
31+
if err := c.ReloadConfig("testdata/client.cnf", "localhost:3306", "", "", true, log.NewNopLogger()); err != nil {
3232
t.Error(err)
3333
}
3434

@@ -60,7 +60,7 @@ func TestValidateConfig(t *testing.T) {
6060
c := MySqlConfigHandler{
6161
Config: &Config{},
6262
}
63-
if err := c.ReloadConfig("testdata/child_client.cnf", "localhost:3306", "", true, log.NewNopLogger()); err != nil {
63+
if err := c.ReloadConfig("testdata/child_client.cnf", "localhost:3306", "", "", true, log.NewNopLogger()); err != nil {
6464
t.Error(err)
6565
}
6666
cfg := c.GetConfig()
@@ -73,14 +73,15 @@ func TestValidateConfig(t *testing.T) {
7373
Config: &Config{},
7474
}
7575
os.Setenv("MYSQLD_EXPORTER_PASSWORD", "supersecretpassword")
76-
if err := c.ReloadConfig("", "testhost:5000", "testuser", true, log.NewNopLogger()); err != nil {
76+
if err := c.ReloadConfig("", "testhost:5000", "/test.sock", "testuser", true, log.NewNopLogger()); err != nil {
7777
t.Error(err)
7878
}
7979

8080
cfg := c.GetConfig()
8181
section := cfg.Sections["client"]
8282
convey.So(section.Host, convey.ShouldEqual, "testhost")
8383
convey.So(section.Port, convey.ShouldEqual, 5000)
84+
convey.So(section.Socket, convey.ShouldEqual, "/test.sock")
8485
convey.So(section.User, convey.ShouldEqual, "testuser")
8586
convey.So(section.Password, convey.ShouldEqual, "supersecretpassword")
8687
})
@@ -90,7 +91,7 @@ func TestValidateConfig(t *testing.T) {
9091
Config: &Config{},
9192
}
9293
os.Setenv("MYSQLD_EXPORTER_PASSWORD", "supersecretpassword")
93-
err := c.ReloadConfig("", "testhost", "testuser", true, log.NewNopLogger())
94+
err := c.ReloadConfig("", "testhost", "", "testuser", true, log.NewNopLogger())
9495
convey.So(
9596
err,
9697
convey.ShouldBeError,
@@ -102,7 +103,7 @@ func TestValidateConfig(t *testing.T) {
102103
Config: &Config{},
103104
}
104105
os.Setenv("MYSQLD_EXPORTER_PASSWORD", "supersecretpassword")
105-
if err := c.ReloadConfig("testdata/client.cnf", "localhost:3306", "fakeuser", true, log.NewNopLogger()); err != nil {
106+
if err := c.ReloadConfig("testdata/client.cnf", "localhost:3306", "", "fakeuser", true, log.NewNopLogger()); err != nil {
106107
t.Error(err)
107108
}
108109

@@ -117,7 +118,7 @@ func TestValidateConfig(t *testing.T) {
117118
Config: &Config{},
118119
}
119120
os.Clearenv()
120-
err := c.ReloadConfig("testdata/missing_user.cnf", "localhost:3306", "", true, log.NewNopLogger())
121+
err := c.ReloadConfig("testdata/missing_user.cnf", "localhost:3306", "", "", true, log.NewNopLogger())
121122
convey.So(
122123
err,
123124
convey.ShouldResemble,
@@ -130,7 +131,7 @@ func TestValidateConfig(t *testing.T) {
130131
Config: &Config{},
131132
}
132133
os.Clearenv()
133-
if err := c.ReloadConfig("testdata/missing_password.cnf", "localhost:3306", "", true, log.NewNopLogger()); err != nil {
134+
if err := c.ReloadConfig("testdata/missing_password.cnf", "localhost:3306", "", "", true, log.NewNopLogger()); err != nil {
134135
t.Error(err)
135136
}
136137

@@ -151,7 +152,7 @@ func TestFormDSN(t *testing.T) {
151152
)
152153

153154
convey.Convey("Host exporter dsn", t, func() {
154-
if err := c.ReloadConfig("testdata/client.cnf", "localhost:3306", "", false, log.NewNopLogger()); err != nil {
155+
if err := c.ReloadConfig("testdata/client.cnf", "localhost:3306", "", "", false, log.NewNopLogger()); err != nil {
155156
t.Error(err)
156157
}
157158
convey.Convey("Default Client", func() {
@@ -191,7 +192,7 @@ func TestFormDSNWithSslSkipVerify(t *testing.T) {
191192
)
192193

193194
convey.Convey("Host exporter dsn with tls skip verify", t, func() {
194-
if err := c.ReloadConfig("testdata/client.cnf", "localhost:3306", "", true, log.NewNopLogger()); err != nil {
195+
if err := c.ReloadConfig("testdata/client.cnf", "localhost:3306", "", "", true, log.NewNopLogger()); err != nil {
195196
t.Error(err)
196197
}
197198
convey.Convey("Default Client", func() {
@@ -223,7 +224,7 @@ func TestFormDSNWithCustomTls(t *testing.T) {
223224
)
224225

225226
convey.Convey("Host exporter dsn with custom tls", t, func() {
226-
if err := c.ReloadConfig("testdata/client_custom_tls.cnf", "localhost:3306", "", false, log.NewNopLogger()); err != nil {
227+
if err := c.ReloadConfig("testdata/client_custom_tls.cnf", "localhost:3306", "", "", false, log.NewNopLogger()); err != nil {
227228
t.Error(err)
228229
}
229230
convey.Convey("Target tls enabled", func() {

mysqld_exporter.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ var (
5454
"mysqld.address",
5555
"Address to use for connecting to MySQL",
5656
).Default("localhost:3306").String()
57+
mysqldSocket = kingpin.Flag(
58+
"mysqld.socket",
59+
"Unix-domain socket to use for connecting to MySQL",
60+
).String()
5761
mysqldUser = kingpin.Flag(
5862
"mysqld.username",
5963
"Hostname to use for connecting to MySQL",
@@ -241,7 +245,7 @@ func main() {
241245
level.Info(logger).Log("msg", "Build context", "build_context", version.BuildContext())
242246

243247
var err error
244-
if err = c.ReloadConfig(*configMycnf, *mysqldAddress, *mysqldUser, *tlsInsecureSkipVerify, logger); err != nil {
248+
if err = c.ReloadConfig(*configMycnf, *mysqldAddress, *mysqldSocket, *mysqldUser, *tlsInsecureSkipVerify, logger); err != nil {
245249
level.Info(logger).Log("msg", "Error parsing host config", "file", *configMycnf, "err", err)
246250
os.Exit(1)
247251
}
@@ -284,7 +288,7 @@ func main() {
284288
http.HandleFunc("/probe", handleProbe(enabledScrapers, logger))
285289
http.Handle("/-/extras", extras)
286290
http.HandleFunc("/-/reload", func(w http.ResponseWriter, r *http.Request) {
287-
if err = c.ReloadConfig(*configMycnf, *mysqldAddress, *mysqldUser, *tlsInsecureSkipVerify, logger); err != nil {
291+
if err = c.ReloadConfig(*configMycnf, *mysqldAddress, *mysqldSocket, *mysqldUser, *tlsInsecureSkipVerify, logger); err != nil {
288292
level.Warn(logger).Log("msg", "Error reloading host config", "file", *configMycnf, "error", err)
289293
return
290294
}

0 commit comments

Comments
 (0)