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
|
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]
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue