Remove metric.Point from metric interface

This commit is contained in:
Cameron Sparr 2017-02-03 16:41:45 +00:00 committed by Patrick Hemmer
parent 694955c87b
commit 8816ba15ca
5 changed files with 33 additions and 8 deletions

View File

@ -41,6 +41,7 @@ It is highly recommended that all users migrate to the new riemann output plugin
- [#2201](https://github.com/influxdata/telegraf/pull/2201): Add lock option to the IPtables input plugin.
- [#2244](https://github.com/influxdata/telegraf/pull/2244): Support ipmi_sensor plugin querying local ipmi sensors.
- [#2339](https://github.com/influxdata/telegraf/pull/2339): Increment gather_errors for all errors emitted by inputs.
- [#1948](https://github.com/influxdata/telegraf/pull/1948): Support adding SNMP table indexes as tags.
### Bugfixes

1
plugins/inputs/snmp/.gitignore vendored Normal file
View File

@ -0,0 +1 @@
testdata

View File

@ -168,6 +168,9 @@ If not specified, it defaults to the value of `oid`. If `oid` is numeric, an at
* `inherit_tags`:
Which tags to inherit from the top-level config and to use in the output of this table's measurement.
* `index_as_tag`:
Adds each row's index within the table as a tag.
### MIB lookups
If the plugin is configured such that it needs to perform lookups from the MIB, it will use the net-snmp utilities `snmptranslate` and `snmptable`.

View File

@ -168,6 +168,9 @@ type Table struct {
// Which tags to inherit from the top-level config.
InheritTags []string
// Adds each row's table index as a tag.
IndexAsTag bool
// Fields is the tags and values to look up.
Fields []Field `toml:"field"`
@ -464,13 +467,19 @@ func (t Table) Build(gs snmpConnection, walk bool) (*RTable, error) {
}
}
for i, v := range ifv {
rtr, ok := rows[i]
for idx, v := range ifv {
rtr, ok := rows[idx]
if !ok {
rtr = RTableRow{}
rtr.Tags = map[string]string{}
rtr.Fields = map[string]interface{}{}
rows[i] = rtr
rows[idx] = rtr
}
if t.IndexAsTag && idx != "" {
if idx[0] == '.' {
idx = idx[1:]
}
rtr.Tags["index"] = idx
}
// don't add an empty string
if vs, ok := v.(string); !ok || vs != "" {

View File

@ -413,7 +413,8 @@ func TestGosnmpWrapper_get_retry(t *testing.T) {
func TestTableBuild_walk(t *testing.T) {
tbl := Table{
Name: "mytable",
Name: "mytable",
IndexAsTag: true,
Fields: []Field{
{
Name: "myfield1",
@ -442,7 +443,10 @@ func TestTableBuild_walk(t *testing.T) {
assert.Equal(t, tb.Name, "mytable")
rtr1 := RTableRow{
Tags: map[string]string{"myfield1": "foo"},
Tags: map[string]string{
"myfield1": "foo",
"index": "0",
},
Fields: map[string]interface{}{
"myfield2": 1,
"myfield3": float64(0.123),
@ -450,7 +454,10 @@ func TestTableBuild_walk(t *testing.T) {
},
}
rtr2 := RTableRow{
Tags: map[string]string{"myfield1": "bar"},
Tags: map[string]string{
"myfield1": "bar",
"index": "1",
},
Fields: map[string]interface{}{
"myfield2": 2,
"myfield3": float64(0.456),
@ -458,14 +465,18 @@ func TestTableBuild_walk(t *testing.T) {
},
}
rtr3 := RTableRow{
Tags: map[string]string{},
Tags: map[string]string{
"index": "2",
},
Fields: map[string]interface{}{
"myfield2": 0,
"myfield3": float64(0.0),
},
}
rtr4 := RTableRow{
Tags: map[string]string{},
Tags: map[string]string{
"index": "3",
},
Fields: map[string]interface{}{
"myfield3": float64(9.999),
},