feat(inputs/teamspeak): allow to configure nickname (#10934)
This commit is contained in:
parent
efffe89572
commit
70334b9691
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
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
|
||||
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)
|
||||
|
||||
## Configuration
|
||||
|
|
@ -16,6 +16,8 @@ the [Teamspeak 3 ServerQuery Manual](http://media.teamspeak.com/ts3_literature/T
|
|||
username = "serverqueryuser"
|
||||
## Password for ServerQuery
|
||||
password = "secret"
|
||||
## Nickname of the ServerQuery client
|
||||
nickname = "telegraf"
|
||||
## Array of virtual servers
|
||||
# virtual_servers = [1]
|
||||
```
|
||||
|
|
|
|||
|
|
@ -13,27 +13,50 @@ type Teamspeak struct {
|
|||
Server string
|
||||
Username string
|
||||
Password string
|
||||
Nickname string
|
||||
VirtualServers []int `toml:"virtual_servers"`
|
||||
|
||||
client *ts3.Client
|
||||
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 {
|
||||
var err error
|
||||
|
||||
if !ts.connected {
|
||||
ts.client, err = ts3.NewClient(ts.Server)
|
||||
err = ts.connect()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
err = ts.client.Login(ts.Username, ts.Password)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
ts.connected = true
|
||||
}
|
||||
|
||||
for _, vserver := range ts.VirtualServers {
|
||||
|
|
@ -73,6 +96,7 @@ func (ts *Teamspeak) Gather(acc telegraf.Accumulator) error {
|
|||
|
||||
acc.AddFields("teamspeak", fields, tags)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue