Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Write data in UTC by default and use 's' precision #164

Merged
merged 1 commit into from
Sep 2, 2015
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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