diff --git a/CHANGELOG.md b/CHANGELOG.md index 74deab7f2..eb5a8c1ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ of metrics collected and from how many plugins. - [#244](https://github.com/influxdb/telegraf/pull/244): netstat plugin, thanks @shirou! - [#262](https://github.com/influxdb/telegraf/pull/262): zookeeper plugin, thanks @jrxFive! - [#237](https://github.com/influxdb/telegraf/pull/237): statsd service plugin, thanks @sparrc +- [#273](https://github.com/influxdb/telegraf/pull/273): puppet agent plugin, thats @jrxFive! ### Bugfixes - [#228](https://github.com/influxdb/telegraf/pull/228): New version of package will replace old one. Thanks @ekini! diff --git a/README.md b/README.md index 7d79c8138..c87d5679f 100644 --- a/README.md +++ b/README.md @@ -182,6 +182,7 @@ Telegraf currently has support for collecting metrics from * postgresql * procstat * prometheus +* puppetagent * rabbitmq * redis * rethinkdb diff --git a/plugins/puppetagent/puppetagent.go b/plugins/puppetagent/puppetagent.go index 83e87549a..67b01dce3 100644 --- a/plugins/puppetagent/puppetagent.go +++ b/plugins/puppetagent/puppetagent.go @@ -2,12 +2,13 @@ package puppetagent import ( "fmt" - "github.com/influxdb/telegraf/plugins" "gopkg.in/yaml.v2" "io/ioutil" "os" "reflect" "strings" + + "github.com/influxdb/telegraf/plugins" ) // PuppetAgent is a PuppetAgent plugin @@ -16,8 +17,8 @@ type PuppetAgent struct { } var sampleConfig = ` - #Location of puppet last run summary file - location = "/var/lib/puppet/state/last_run_summary.yaml" + # Location of puppet last run summary file + location = "/var/lib/puppet/state/last_run_summary.yaml" ` type State struct { @@ -57,7 +58,7 @@ type time struct { Exec float64 `yaml:"exec"` Anchor float64 `yaml:"anchor"` SSHAuthorizedKey float64 `yaml:"ssh_authorized_key"` - Service float64 `yaml:"server"` + Service float64 `yaml:"service"` Package float64 `yaml:"package"` Total float64 `yaml:"total"` ConfigRetrieval float64 `yaml:"config_retrieval"` diff --git a/plugins/puppetagent/puppetagent_test.go b/plugins/puppetagent/puppetagent_test.go index 81180932a..4d6a4c5f4 100644 --- a/plugins/puppetagent/puppetagent_test.go +++ b/plugins/puppetagent/puppetagent_test.go @@ -14,32 +14,61 @@ func TestGather(t *testing.T) { } pa.Gather(&acc) - assert.True(t, acc.HasIntValue("events_failure")) - assert.True(t, acc.HasIntValue("events_total")) - assert.True(t, acc.HasIntValue("events_success")) - assert.True(t, acc.HasIntValue("resources_failed")) - assert.True(t, acc.HasIntValue("resources_scheduled")) - assert.True(t, acc.HasIntValue("resources_changed")) - assert.True(t, acc.HasIntValue("resources_skipped")) - assert.True(t, acc.HasIntValue("resources_total")) - assert.True(t, acc.HasIntValue("resources_failedtorestart")) - assert.True(t, acc.HasIntValue("resources_restarted")) - assert.True(t, acc.HasIntValue("resources_outofsync")) - assert.True(t, acc.HasIntValue("changes_total")) + checkInt := []struct { + name string + value int64 + }{ + {"events_failure", 0}, + {"events_total", 0}, + {"events_success", 0}, + {"resources_failed", 0}, + {"resources_scheduled", 0}, + {"resources_changed", 0}, + {"resources_skipped", 0}, + {"resources_total", 109}, + {"resources_failedtorestart", 0}, + {"resources_restarted", 0}, + {"resources_outofsync", 0}, + {"changes_total", 0}, + {"time_lastrun", 1444936531}, + {"version_config", 1444936521}, + } - assert.True(t, acc.HasIntValue("time_lastrun")) - assert.True(t, acc.HasIntValue("version_config")) + for _, c := range checkInt { + assert.Equal(t, true, acc.CheckValue(c.name, c.value)) + } + + checkFloat := []struct { + name string + value float64 + }{ + {"time_user", 0.004331}, + {"time_schedule", 0.001123}, + {"time_filebucket", 0.000353}, + {"time_file", 0.441472}, + {"time_exec", 0.508123}, + {"time_anchor", 0.000555}, + {"time_sshauthorizedkey", 0.000764}, + {"time_service", 1.807795}, + {"time_package", 1.325788}, + {"time_total", 8.85354707064819}, + {"time_configretrieval", 4.75567007064819}, + {"time_cron", 0.000584}, + } + + for _, f := range checkFloat { + assert.Equal(t, true, acc.CheckValue(f.name, f.value)) + } + + checkString := []struct { + name string + value string + }{ + {"version_puppet", "3.7.5"}, + } + + for _, s := range checkString { + assert.Equal(t, true, acc.CheckValue(s.name, s.value)) + } - assert.True(t, acc.HasFloatValue("time_user")) - assert.True(t, acc.HasFloatValue("time_schedule")) - assert.True(t, acc.HasFloatValue("time_filebucket")) - assert.True(t, acc.HasFloatValue("time_file")) - assert.True(t, acc.HasFloatValue("time_exec")) - assert.True(t, acc.HasFloatValue("time_anchor")) - assert.True(t, acc.HasFloatValue("time_sshauthorizedkey")) - assert.True(t, acc.HasFloatValue("time_service")) - assert.True(t, acc.HasFloatValue("time_package")) - assert.True(t, acc.HasFloatValue("time_total")) - assert.True(t, acc.HasFloatValue("time_configretrieval")) - assert.True(t, acc.HasFloatValue("time_cron")) }