Minor usability fixes to config

This commit is contained in:
Evan Phoenix 2015-05-18 15:22:04 -07:00
parent 82cbc4daa2
commit 13e6018eb0
4 changed files with 103 additions and 38 deletions

View File

@ -9,12 +9,8 @@ import (
"github.com/influxdb/tivan/plugins"
)
type Server struct {
Address string
}
type Mysql struct {
Servers []*Server
Servers []string
}
var sampleConfig = `
@ -32,7 +28,7 @@ func (m *Mysql) Description() string {
return "Read metrics from one or many mysql servers"
}
var localhost = &Server{}
var localhost = ""
func (m *Mysql) Gather(acc plugins.Accumulator) error {
if len(m.Servers) == 0 {
@ -80,8 +76,8 @@ var mappings = []*mapping{
},
}
func (m *Mysql) gatherServer(serv *Server, acc plugins.Accumulator) error {
db, err := sql.Open("mysql", serv.Address)
func (m *Mysql) gatherServer(serv string, acc plugins.Accumulator) error {
db, err := sql.Open("mysql", serv)
if err != nil {
return err
}

View File

@ -31,7 +31,7 @@ var sampleConfig = `
# to sslmode=disable as well.
#
address = "localhost"
address = "sslmode=disable"
# A list of databases to pull metrics about. If not specified, metrics for all
# databases are gathered.
@ -69,6 +69,10 @@ func (p *Postgresql) Gather(acc plugins.Accumulator) error {
}
func (p *Postgresql) gatherServer(serv *Server, acc plugins.Accumulator) error {
if serv.Address == "" {
serv = localhost
}
db, err := sql.Open("postgres", serv.Address)
if err != nil {
return err

View File

@ -94,11 +94,19 @@ func (g *Redis) Gather(acc plugins.Accumulator) error {
return outerr
}
const defaultPort = "6379"
func (g *Redis) gatherServer(addr string, acc plugins.Accumulator) error {
if g.c == nil {
_, _, err := net.SplitHostPort(addr)
if err != nil {
addr = addr + ":" + defaultPort
}
c, err := net.Dial("tcp", addr)
if err != nil {
return err
return fmt.Errorf("Unable to connect to redis server '%s': %s", addr, err)
}
g.c = c

View File

@ -1,44 +1,101 @@
# This config file tells tivan how and what to collect stats from this
# system.
# Tivan configuration
# These are the setting that govern the agents overall operation.
[agent]
# Tivan is entirely plugin driven. All metrics are gathered from the
# declared plugins.
# How often to gather stats. 5s = 5 seconds, 10m = 10 minutes, etc.
interval = "5s"
# Even if a plugin has no configuration, it must be declared in here
# to be active. Declaring a plugin means just specifying the name
# as a section with no variables.
# If the agent should run in debug mode, printing out the stats it
# gathers as well as sending them to InfluxDB.
debug = true
# Configuration for influxdb server to send metrics to
# [influxdb]
# url = "http://10.20.2.4"
# username = "tivan"
# password = "metricsmetricsmetricsmetrics"
# database = "tivan"
# user_agent = "tivan"
# tags = { "dc": "us-east-1" }
# Tags can also be specified via a normal map, but only one form at a time:
# This section governs how tivan talks to influxdb
[influxdb]
# [influxdb.tags]
# dc = "us-east-1"
# The location, in http url form, of your influxdb server
url = "http://localhost:8086"
# PLUGINS
# Username to connect to influx as
username = "root"
# Read metrics about cpu usage
[cpu]
# no configuration
# Password for said user
password = "root"
# Read metrics about disk usage by mount point
[disk]
# no configuration
# The database to store the metrics into
database = "tivan"
# Read metrics about docker containers
[docker]
# no configuration
# A map of addition tags to apply to all metrics, for instance:
# Read metrics about disk IO by device
[io]
# no configuration
# Read metrics about memory usage
[mem]
# no configuration
# Read metrics from one or many mysql servers
[mysql]
# specify servers via a url matching:
# [username[:password]@][protocol[(address)]]/[?tls=[true|false|skip-verify]]
#
# tags = { dc = "us-east-1" }
#
# could be used to add a indicate which datacenter the metrics are
# coming from
# If no servers are specified, then localhost is used as the host.
servers = ["localhost"]
# This section governs how and if tivan gathers stats from redis
# Read metrics about network interface usage
[net]
# no configuration
# Read metrics from one or many postgresql servers
[postgresql]
# specify servers via an array of tables
[[postgresql.servers]]
# specify address via a url matching:
# postgres://[pqgotest[:password]]@localhost?sslmode=[disable|verify-ca|verify-full]
# or a simple string:
# host=localhost user=pqotest password=... sslmode=...
#
# All connection parameters are optional. By default, the host is localhost
# and the user is the currently running user. For localhost, we default
# to sslmode=disable as well.
#
address = "sslmode=disable"
# A list of databases to pull metrics about. If not specified, metrics for all
# databases are gathered.
# databases = ["app_production", "blah_testing"]
# [[postgresql.servers]]
# address = "influx@remoteserver"
# Read metrics from one or many redis servers
[redis]
# Do not gather stats on redis, even if the address is configured
# disabled = true
# An array of address to gather stats about. Specify an ip on hostname
# with optional port. ie localhost, 10.10.3.33:18832, etc.
#
# If no servers are specified, then localhost is used as the host.
servers = ["localhost"]
# Read metrics about swap memory usage
[swap]
# no configuration
# Read metrics about system load
[system]
# no configuration
# The address of your redis server to gather stats on
# address = ":6379"