Skip to content

Commit

Permalink
Write data in UTC by default and use 's' precision
Browse files Browse the repository at this point in the history
Closes #159
Closes #162
  • Loading branch information
sparrc committed Sep 2, 2015
1 parent 13061d1 commit 5bfb6df
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 12 deletions.
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
## v0.1.8 [unreleased]

### Release Notes
Telegraf will now write data in UTC at second precision by default

### Features
- [#150](https://github.com/influxdb/telegraf/pull/150): Add Host Uptime metric to system plugin
- [#158](https://github.com/influxdb/telegraf/pull/158): Apache Plugin. Thanks @KPACHbIuLLIAnO4
- [#159](https://github.com/influxdb/telegraf/pull/159): Use second precision for InfluxDB writes
- [#165](https://github.com/influxdb/telegraf/pull/165): Add additional metrics to mysql plugin. Thanks @nickscript0
- [#162](https://github.com/influxdb/telegraf/pull/162): Write UTC by default, provide option
- [#166](https://github.com/influxdb/telegraf/pull/166): Upload binaries to S3

### Bugfixes
Expand Down
31 changes: 28 additions & 3 deletions agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,14 @@ type Agent struct {
// Interval at which to gather information
Interval Duration

// Run in debug mode?
// Option for outputting data in UTC
UTC bool `toml:"utc"`

// Precision to write data at
// Valid values for Precision are n, u, ms, s, m, and h
Precision string

// Option for running in debug mode
Debug bool
Hostname string

Expand All @@ -43,8 +50,14 @@ type Agent struct {

// NewAgent returns an Agent struct based off the given Config
func NewAgent(config *Config) (*Agent, error) {
agent := &Agent{Config: config, Interval: Duration{10 * time.Second}}
agent := &Agent{
Config: config,
Interval: Duration{10 * time.Second},
UTC: true,
Precision: "s",
}

// Apply the toml table to the agent config, overriding defaults
err := config.ApplyAgent(agent)
if err != nil {
return nil, err
Expand Down Expand Up @@ -199,7 +212,11 @@ func (a *Agent) crankParallel() error {

var bp BatchPoints
bp.Time = time.Now()
if a.UTC {
bp.Time = bp.Time.UTC()
}
bp.Tags = a.Config.Tags
bp.Precision = a.Precision

for sub := range points {
bp.Points = append(bp.Points, sub.Points...)
Expand All @@ -223,8 +240,12 @@ func (a *Agent) crank() error {
}
}

bp.Time = time.Now()
bp.Tags = a.Config.Tags
bp.Time = time.Now()
if a.UTC {
bp.Time = bp.Time.UTC()
}
bp.Precision = a.Precision

return a.flush(&bp)
}
Expand All @@ -250,6 +271,10 @@ func (a *Agent) crankSeparate(shutdown chan struct{}, plugin *runningPlugin) err

bp.Tags = a.Config.Tags
bp.Time = time.Now()
if a.UTC {
bp.Time = bp.Time.UTC()
}
bp.Precision = a.Precision

if err := a.flush(&bp); err != nil {
outerr = errors.New("Error encountered processing plugins & outputs")
Expand Down
5 changes: 3 additions & 2 deletions cmd/telegraf/telegraf.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,8 +126,9 @@ func main() {
log.Printf("Loaded plugins: %s", strings.Join(plugins, " "))
if ag.Debug {
log.Printf("Debug: enabled")
log.Printf("Agent Config: Interval:%s, Debug:%#v, Hostname:%#v\n",
ag.Interval, ag.Debug, ag.Hostname)
log.Printf("Agent Config: Interval:%s, Debug:%#v, Hostname:%#v, "+
"Precision:%#v, UTC: %#v\n",
ag.Interval, ag.Debug, ag.Hostname, ag.Precision, ag.UTC)
}
log.Printf("Tags enabled: %s", config.ListTags())

Expand Down
27 changes: 20 additions & 7 deletions config.go
Original file line number Diff line number Diff line change
Expand Up @@ -131,10 +131,11 @@ func (c *Config) ApplyOutput(name string, v interface{}) error {
return nil
}

// ApplyAgent loads the toml config into the given interface
func (c *Config) ApplyAgent(v interface{}) error {
// ApplyAgent loads the toml config into the given Agent object, overriding
// defaults (such as collection duration) with the values from the toml config.
func (c *Config) ApplyAgent(a *Agent) error {
if c.agent != nil {
return toml.UnmarshalTable(c.agent, v)
return toml.UnmarshalTable(c.agent, a)
}

return nil
Expand Down Expand Up @@ -350,11 +351,23 @@ var header = `# Telegraf configuration
[tags]
# dc = "us-east-1"
# Configuration for telegraf itself
# Configuration for telegraf agent
[agent]
# interval = "10s"
# debug = false
# hostname = "prod3241"
# Default data collection interval for all plugins
interval = "10s"
# If utc = false, uses local time (utc is highly recommended)
utc = true
# Precision of writes, valid values are n, u, ms, s, m, and h
# note: using second precision greatly helps InfluxDB compression
precision = "s"
# run telegraf in debug mode
debug = false
# Override default hostname, if empty use os.Hostname()
hostname = ""
###############################################################################
Expand Down

0 comments on commit 5bfb6df

Please sign in to comment.