diff --git a/CHANGELOG.md b/CHANGELOG.md index 699d0f602..020a06cfe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ - [#979](https://github.com/influxdata/telegraf/pull/979): Reduce allocations in the TCP listener. - [#935](https://github.com/influxdata/telegraf/pull/935): AWS Cloudwatch input plugin. Thanks @joshhardy & @ljosa! - [#943](https://github.com/influxdata/telegraf/pull/943): http_response input plugin. Thanks @Lswith! +- [#939](https://github.com/influxdata/telegraf/pull/939): sysstat input plugin. Thanks @zbindenren! ### Bugfixes - [#968](https://github.com/influxdata/telegraf/issues/968): Processes plugin gets unknown state when spaces are in (command name) diff --git a/Godeps b/Godeps index aa5be999d..14430ea5d 100644 --- a/Godeps +++ b/Godeps @@ -14,7 +14,7 @@ github.com/docker/go-connections f549a9393d05688dff0992ef3efd8bbe6c628aeb github.com/docker/go-units 5d2041e26a699eaca682e2ea41c8f891e1060444 github.com/eapache/go-resiliency b86b1ec0dd4209a588dc1285cdd471e73525c0b3 github.com/eapache/queue ded5959c0d4e360646dc9e9908cff48666781367 -github.com/eclipse/paho.mqtt.golang 4ab3e867810d1ec5f35157c59e965054dbf43a0d +github.com/eclipse/paho.mqtt.golang 0f7a459f04f13a41b7ed752d47944528d4bf9a86 github.com/go-sql-driver/mysql 1fca743146605a172a266e1654e01e5cd5669bee github.com/golang/protobuf 552c7b9542c194800fd493123b3798ef0a832032 github.com/golang/snappy 427fb6fc07997f43afa32f35e850833760e489a7 diff --git a/Godeps_windows b/Godeps_windows index ab3004bb8..cc3077fd4 100644 --- a/Godeps_windows +++ b/Godeps_windows @@ -16,7 +16,7 @@ github.com/docker/go-connections f549a9393d05688dff0992ef3efd8bbe6c628aeb github.com/docker/go-units 5d2041e26a699eaca682e2ea41c8f891e1060444 github.com/eapache/go-resiliency b86b1ec0dd4209a588dc1285cdd471e73525c0b3 github.com/eapache/queue ded5959c0d4e360646dc9e9908cff48666781367 -github.com/eclipse/paho.mqtt.golang 4ab3e867810d1ec5f35157c59e965054dbf43a0d +github.com/eclipse/paho.mqtt.golang 0f7a459f04f13a41b7ed752d47944528d4bf9a86 github.com/go-ole/go-ole 50055884d646dd9434f16bbb5c9801749b9bafe4 github.com/go-sql-driver/mysql 1fca743146605a172a266e1654e01e5cd5669bee github.com/golang/protobuf 552c7b9542c194800fd493123b3798ef0a832032 diff --git a/README.md b/README.md index 8621238dd..994c6803d 100644 --- a/README.md +++ b/README.md @@ -206,6 +206,7 @@ Currently implemented sources: * [zfs](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/zfs) * [zookeeper](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/zookeeper) * [win_perf_counters ](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/win_perf_counters) (windows performance counters) +* [sysstat](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/sysstat) * [system](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/system) * cpu * mem diff --git a/plugins/inputs/dovecot/README.md b/plugins/inputs/dovecot/README.md index 262328d2a..865e24490 100644 --- a/plugins/inputs/dovecot/README.md +++ b/plugins/inputs/dovecot/README.md @@ -38,7 +38,7 @@ domains. You can read Dovecot's documentation last_update time.Time num_logins int64 num_cmds int64 - num_connected_sessions int64 + num_connected_sessions int64 ## not in type user_cpu float32 sys_cpu float32 clock_time float64 @@ -62,12 +62,13 @@ domains. You can read Dovecot's documentation ### Example Output: ``` -telegraf -config telegraf.cfg -input-filter dovecot -test ->>>>>>> upstream/master +telegraf -config t.cfg -input-filter dovecot -test * Plugin: dovecot, Collection 1 -> dovecot,domain=xxxxx.it,server=dovecot--1.mail.sys clock_time=12105746411632.5,disk_input=115285225472i,disk_output=4885067755520i,invol_cs=169701886i,last_update="2016-02-09 08:49:47.000014113 +0100 CET",mail_cache_hits=441828i,mail_lookup_attr=0i,mail_lookup_path=25323i,mail_read_bytes=241188145i,mail_read_count=11719i,maj_faults=3168i,min_faults=321438988i,num_cmds=51635i,num_connected_sessions=2i,num_logins=17149i,read_bytes=7939026951110i,read_count=3716991752i,reset_timestamp="2016-01-28 09:34:36 +0100 CET",sys_cpu=222595.288,user_cpu=267468.08,vol_cs=3288715920i,write_bytes=4483648967059i,write_count=1640646952i 1455004219924838345 -> dovecot,domain=yyyyy.com,server=dovecot-1.mail.sys clock_time=6650794455331782,disk_input=61957695569920i,disk_output=2638244004487168i,invol_cs=2004805041i,last_update="2016-02-09 08:49:49.000251296 +0100 CET",mail_cache_hits=2499112513i,mail_lookup_attr=506730i,mail_lookup_path=39128227i,mail_read_bytes=1076496874501i,mail_read_count=32615262i,maj_faults=1643304i,min_faults=4216116325i,num_cmds=85785559i,num_connected_sessions=1177i,num_logins=11658255i,read_bytes=4289150974554145i,read_count=1112000703i,reset_timestamp="2016-01-28 09:31:26 +0100 CET",sys_cpu=121125923.032,user_cpu=145561336.428,vol_cs=205451885i,write_bytes=2420130526835796i,write_count=2991367252i 1455004219925152529 -> dovecot,domain=xxxxx.it,server=dovecot-2.mail.sys clock_time=10710826586999.143,disk_input=79792410624i,disk_output=4496066158592i,invol_cs=150426876i,last_update="2016-02-09 08:48:19.000209134 +0100 CET",mail_cache_hits=5480869i,mail_lookup_attr=0i,mail_lookup_path=122563i,mail_read_bytes=340746273i,mail_read_count=44275i,maj_faults=1722i,min_faults=288071875i,num_cmds=50098i,num_connected_sessions=0i,num_logins=16389i,read_bytes=7259551999517i,read_count=3396625369i,reset_timestamp="2016-01-28 09:31:29 +0100 CET",sys_cpu=200762.792,user_cpu=242477.664,vol_cs=2996657358i,write_bytes=4133381575263i,write_count=1497242759i 1455004219924888283 -> dovecot,domain=yyyyy.com,server=dovecot-2.mail.sys clock_time=6522131245483702,disk_input=48259150004224i,disk_output=2754333359087616i,invol_cs=2294595260i,last_update="2016-02-09 08:49:49.000251919 +0100 CET",mail_cache_hits=2139113611i,mail_lookup_attr=520276i,mail_lookup_path=37940318i,mail_read_bytes=1088002215022i,mail_read_count=31350271i,maj_faults=994420i,min_faults=1486260543i,num_cmds=40414997i,num_connected_sessions=978i,num_logins=11259672i,read_bytes=4445546612487315i,read_count=1763534543i,reset_timestamp="2016-01-28 09:31:24 +0100 CET",sys_cpu=123655962.668,user_cpu=149259327.032,vol_cs=4215130546i,write_bytes=2531186030222761i,write_count=2186579650i 1455004219925398372 -``` - +> dovecot,ip=192.168.0.1,server=dovecot-1.domain.test,type=ip clock_time=0,disk_input=0i,disk_output=0i,invol_cs=0i,last_update="2016-04-08 10:59:47.000208479 +0200 CEST",mail_cache_hits=0i,mail_lookup_attr=0i,mail_lookup_path=0i,mail_read_bytes=0i,mail_read_count=0i,maj_faults=0i,min_faults=0i,num_cmds=12i,num_connected_sessions=0i,num_logins=6i,read_bytes=0i,read_count=0i,reset_timestamp="2016-04-08 10:33:34 +0200 CEST",sys_cpu=0,user_cpu=0,vol_cs=0i,write_bytes=0i,write_count=0i 1460106251633824223 +* Plugin: dovecot, Collection 1 +> dovecot,server=dovecot-1.domain.test,type=user,user=user-1@domain.test clock_time=0.00006,disk_input=405504i,disk_output=77824i,invol_cs=67i,last_update="2016-04-08 11:02:55.000111634 +0200 CEST",mail_cache_hits=26i,mail_lookup_attr=0i,mail_lookup_path=6i,mail_read_bytes=86233i,mail_read_count=5i,maj_faults=0i,min_faults=975i,num_cmds=41i,num_logins=3i,read_bytes=368833i,read_count=394i,reset_timestamp="2016-04-08 11:01:32 +0200 CEST",sys_cpu=0.008,user_cpu=0.004,vol_cs=323i,write_bytes=105086i,write_count=176i 1460106256637049167 +* Plugin: dovecot, Collection 1 +> dovecot,domain=domain.test,server=dovecot-1.domain.test,type=domain clock_time=100896189179847.7,disk_input=6467588263936i,disk_output=17933680439296i,invol_cs=1194808498i,last_update="2016-04-08 11:04:08.000377367 +0200 CEST",mail_cache_hits=46455781i,mail_lookup_attr=0i,mail_lookup_path=571490i,mail_read_bytes=79287033067i,mail_read_count=491243i,maj_faults=16992i,min_faults=1278442541i,num_cmds=606005i,num_connected_sessions=6597i,num_logins=166381i,read_bytes=30231409780721i,read_count=1624912080i,reset_timestamp="2016-04-08 10:28:45 +0200 CEST",sys_cpu=156440.372,user_cpu=216676.476,vol_cs=2749291157i,write_bytes=17097106707594i,write_count=944448998i 1460106261639672622 +* Plugin: dovecot, Collection 1 +> dovecot,server=dovecot-1.domain.test,type=global clock_time=101196971074203.94,disk_input=6493168218112i,disk_output=17978638815232i,invol_cs=1198855447i,last_update="2016-04-08 11:04:13.000379245 +0200 CEST",mail_cache_hits=68192209i,mail_lookup_attr=0i,mail_lookup_path=653861i,mail_read_bytes=86705151847i,mail_read_count=566125i,maj_faults=17208i,min_faults=1286179702i,num_cmds=917469i,num_connected_sessions=8896i,num_logins=174827i,read_bytes=30327690466186i,read_count=1772396430i,reset_timestamp="2016-04-08 10:28:45 +0200 CEST",sys_cpu=157965.692,user_cpu=219337.48,vol_cs=2827615787i,write_bytes=17150837661940i,write_count=992653220i 1460106266642153907 +``` \ No newline at end of file diff --git a/plugins/inputs/dovecot/dovecot_test.go b/plugins/inputs/dovecot/dovecot_test.go index 4f7e36204..c801d4f0c 100644 --- a/plugins/inputs/dovecot/dovecot_test.go +++ b/plugins/inputs/dovecot/dovecot_test.go @@ -15,14 +15,6 @@ func TestDovecot(t *testing.T) { t.Skip("Skipping integration test in short mode") } - // Test type=global - var acc testutil.Accumulator - tags := map[string]string{"server": "dovecot.test", "type": "global"} - buf := bytes.NewBufferString(sampleGlobal) - - err := gatherStats(buf, &acc, "dovecot.test", "global") - require.NoError(t, err) - fields := map[string]interface{}{ "reset_timestamp": time.Unix(1453969886, 0), "last_update": time.Unix(1454603963, 39864), @@ -49,6 +41,67 @@ func TestDovecot(t *testing.T) { "mail_cache_hits": int64(1557255080), } + var acc testutil.Accumulator + + // Test type=global + tags := map[string]string{"server": "dovecot.test", "type": "global"} + buf := bytes.NewBufferString(sampleGlobal) + + err := gatherStats(buf, &acc, "dovecot.test", "global") + require.NoError(t, err) + + acc.AssertContainsTaggedFields(t, "dovecot", fields, tags) + + // Test type=domain + tags = map[string]string{"server": "dovecot.test", "type": "domain", "domain": "domain.test"} + buf = bytes.NewBufferString(sampleDomain) + + err = gatherStats(buf, &acc, "dovecot.test", "domain") + require.NoError(t, err) + + acc.AssertContainsTaggedFields(t, "dovecot", fields, tags) + + // Test type=ip + tags = map[string]string{"server": "dovecot.test", "type": "ip", "ip": "192.168.0.100"} + buf = bytes.NewBufferString(sampleIp) + + err = gatherStats(buf, &acc, "dovecot.test", "ip") + require.NoError(t, err) + + acc.AssertContainsTaggedFields(t, "dovecot", fields, tags) + + // Test type=user + fields = map[string]interface{}{ + "reset_timestamp": time.Unix(1453969886, 0), + "last_update": time.Unix(1454603963, 39864), + "num_logins": int64(7503897), + "num_cmds": int64(52595715), + "user_cpu": 1.00831175372e+08, + "sys_cpu": 8.3849071112e+07, + "clock_time": 4.3260019315281835e+15, + "min_faults": int64(763950011), + "maj_faults": int64(1112443), + "vol_cs": int64(4120386897), + "invol_cs": int64(3685239306), + "disk_input": int64(41679480946688), + "disk_output": int64(1819070669176832), + "read_count": int64(2368906465), + "read_bytes": int64(2957928122981169), + "write_count": int64(3545389615), + "write_bytes": int64(1666822498251286), + "mail_lookup_path": int64(24396105), + "mail_lookup_attr": int64(302845), + "mail_read_count": int64(20155768), + "mail_read_bytes": int64(669946617705), + "mail_cache_hits": int64(1557255080), + } + + tags = map[string]string{"server": "dovecot.test", "type": "user", "user": "user.1@domain.test"} + buf = bytes.NewBufferString(sampleUser) + + err = gatherStats(buf, &acc, "dovecot.test", "user") + require.NoError(t, err) + acc.AssertContainsTaggedFields(t, "dovecot", fields, tags) } @@ -59,11 +112,8 @@ const sampleGlobal = `reset_timestamp last_update num_logins num_cmds num_connec const sampleDomain = `domain reset_timestamp last_update num_logins num_cmds num_connected_sessions user_cpu sys_cpu clock_time min_faults maj_faults vol_cs invol_cs disk_input disk_output read_count read_bytes write_count write_bytes mail_lookup_path mail_lookup_attr mail_read_count mail_read_bytes mail_cache_hits domain.test 1453969886 1454603963.039864 7503897 52595715 1204 100831175.372000 83849071.112000 4326001931528183.495762 763950011 1112443 4120386897 3685239306 41679480946688 1819070669176832 2368906465 2957928122981169 3545389615 1666822498251286 24396105 302845 20155768 669946617705 1557255080` -const sampleUser = `user reset_timestamp last_update num_logins num_cmds user_cpu sys_cpu clock_time min_faults maj_faults vol_cs invol_cs disk_input disk_output read_count read_bytes write_count write_bytes mail_lookup_path mail_lookup_attr mail_read_count mail_read_bytes mail_cache_hits -user.1@tiscali.it 1460041745 1460041745.258851 2 0 8.868000 6.344000 2920083490.361458 706804 448916 48979 268148736 950759424 632685 1556937725 219865 907305251 0 0 0 0 0 -user.2@tiscali.it 1460041657 1460041658.284800 2 0 1.192000 0.660000 2920083316.276633 13873 0 60226 5584 31674368 122347520 78251 207879097 27095 118197529 0 0 0 0 0 -user.3@tiscali.it 1460041657 1460041717.175634 1 7 0.0 0.0 0.20 319 0 50 9 61440 1228867 73508 28 3174 0 0 0 0 0` - const sampleIp = `ip reset_timestamp last_update num_logins num_cmds num_connected_sessions user_cpu sys_cpu clock_time min_faults maj_faults vol_cs invol_cs disk_input disk_output read_count read_bytes write_count write_bytes mail_lookup_path mail_lookup_attr mail_read_count mail_read_bytes mail_cache_hits -192.168.0.100 1460041847 1460041847.849766 1 0 0 0.4000 0.0 0.49 449 0 70 3 4096 1228861 45414 24 1606 0 0 0 0 0 -192.168.0.201 1460041772 1460041772.737830 1 0 0 0.0 0.0 0.0 0 0 0 0 0 0 00 0 0 0 0 0 0 0` +192.168.0.100 1453969886 1454603963.039864 7503897 52595715 1204 100831175.372000 83849071.112000 4326001931528183.495762 763950011 1112443 4120386897 3685239306 41679480946688 1819070669176832 2368906465 2957928122981169 3545389615 1666822498251286 24396105 302845 20155768 669946617705 1557255080` + +const sampleUser = `user reset_timestamp last_update num_logins num_cmds user_cpu sys_cpu clock_time min_faults maj_faults vol_cs invol_cs disk_input disk_output read_count read_bytes write_count write_bytes mail_lookup_path mail_lookup_attr mail_read_count mail_read_bytes mail_cache_hits +user.1@domain.test 1453969886 1454603963.039864 7503897 52595715 100831175.372000 83849071.112000 4326001931528183.495762 763950011 1112443 4120386897 3685239306 41679480946688 1819070669176832 2368906465 2957928122981169 3545389615 1666822498251286 24396105 302845 20155768 669946617705 1557255080` diff --git a/plugins/inputs/sysstat/sysstat.go b/plugins/inputs/sysstat/sysstat.go index d57bd10dc..c8c17ac45 100644 --- a/plugins/inputs/sysstat/sysstat.go +++ b/plugins/inputs/sysstat/sysstat.go @@ -72,8 +72,10 @@ func (*Sysstat) Description() string { var sampleConfig = ` ## Path to the sadc command. # - ## On Debian and Arch Linux the default path is /usr/lib/sa/sadc whereas - ## on RHEL and CentOS the default path is /usr/lib64/sa/sadc + ## Common Defaults: + ## Debian/Ubuntu: /usr/lib/sysstat/sadc + ## Arch: /usr/lib/sa/sadc + ## RHEL/CentOS: /usr/lib64/sa/sadc sadc_path = "/usr/lib/sa/sadc" # required # # diff --git a/plugins/inputs/sysstat/sysstat_notlinux.go b/plugins/inputs/sysstat/sysstat_notlinux.go new file mode 100644 index 000000000..e97e71e78 --- /dev/null +++ b/plugins/inputs/sysstat/sysstat_notlinux.go @@ -0,0 +1,3 @@ +// +build !linux + +package sysstat diff --git a/plugins/inputs/sysstat/sysstat_test.go b/plugins/inputs/sysstat/sysstat_test.go index 3c8f93d04..e344d307d 100644 --- a/plugins/inputs/sysstat/sysstat_test.go +++ b/plugins/inputs/sysstat/sysstat_test.go @@ -15,6 +15,7 @@ import ( var s = Sysstat{ interval: 10, Sadc: "/usr/lib/sa/sadc", + Sadf: "/usr/bin/sadf", Group: false, Activities: []string{"DISK", "SNMP"}, Options: map[string]string{