feat(inputs/teamspeak): allow to configure nickname (#10934)

This commit is contained in:
Pascal Sthamer 2022-04-13 18:06:01 +02:00 committed by GitHub
parent efffe89572
commit 70334b9691
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 35 additions and 9 deletions

View File

@ -2,7 +2,7 @@
This plugin uses the Teamspeak 3 ServerQuery interface of the Teamspeak server to collect statistics of one or more This plugin uses the Teamspeak 3 ServerQuery interface of the Teamspeak server to collect statistics of one or more
virtual servers. If you are querying an external Teamspeak server, make sure to add the host which is running Telegraf virtual servers. If you are querying an external Teamspeak server, make sure to add the host which is running Telegraf
to query_ip_whitelist.txt in the Teamspeak Server directory. For information about how to configure the server take a look to query_ip_allowlist.txt in the Teamspeak Server directory. For information about how to configure the server take a look
the [Teamspeak 3 ServerQuery Manual](http://media.teamspeak.com/ts3_literature/TeamSpeak%203%20Server%20Query%20Manual.pdf) the [Teamspeak 3 ServerQuery Manual](http://media.teamspeak.com/ts3_literature/TeamSpeak%203%20Server%20Query%20Manual.pdf)
## Configuration ## Configuration
@ -16,6 +16,8 @@ the [Teamspeak 3 ServerQuery Manual](http://media.teamspeak.com/ts3_literature/T
username = "serverqueryuser" username = "serverqueryuser"
## Password for ServerQuery ## Password for ServerQuery
password = "secret" password = "secret"
## Nickname of the ServerQuery client
nickname = "telegraf"
## Array of virtual servers ## Array of virtual servers
# virtual_servers = [1] # virtual_servers = [1]
``` ```

View File

@ -13,27 +13,50 @@ type Teamspeak struct {
Server string Server string
Username string Username string
Password string Password string
Nickname string
VirtualServers []int `toml:"virtual_servers"` VirtualServers []int `toml:"virtual_servers"`
client *ts3.Client client *ts3.Client
connected bool connected bool
} }
func (ts *Teamspeak) connect() error {
var err error
ts.client, err = ts3.NewClient(ts.Server)
if err != nil {
return err
}
err = ts.client.Login(ts.Username, ts.Password)
if err != nil {
return err
}
if len(ts.Nickname) > 0 {
for _, vserver := range ts.VirtualServers {
if err = ts.client.Use(vserver); err != nil {
return err
}
if err = ts.client.SetNick(ts.Nickname); err != nil {
return err
}
}
}
ts.connected = true
return nil
}
func (ts *Teamspeak) Gather(acc telegraf.Accumulator) error { func (ts *Teamspeak) Gather(acc telegraf.Accumulator) error {
var err error var err error
if !ts.connected { if !ts.connected {
ts.client, err = ts3.NewClient(ts.Server) err = ts.connect()
if err != nil { if err != nil {
return err return err
} }
err = ts.client.Login(ts.Username, ts.Password)
if err != nil {
return err
}
ts.connected = true
} }
for _, vserver := range ts.VirtualServers { for _, vserver := range ts.VirtualServers {
@ -73,6 +96,7 @@ func (ts *Teamspeak) Gather(acc telegraf.Accumulator) error {
acc.AddFields("teamspeak", fields, tags) acc.AddFields("teamspeak", fields, tags)
} }
return nil return nil
} }