Commit Graph

50 Commits

Author SHA1 Message Date
Howie 381dc22723
chore: typos across source code comments (#10361) 2022-01-05 08:20:10 -07:00
David Bennett 842a788022
Remove error return type from metric.New method (#9116)
* Remove error return type from metric.New method.

* Formatting changes for linter + gofmt

* Additional linter fixes.

* More linter fixes.

* Linter fix.

* address comments
2021-04-13 14:40:03 -04:00
Sven Rebhan 5524acfb78
Remove deprecated and unused SetAggregate() and IsAggregate() functions. (#8994) 2021-04-06 10:14:06 -06:00
Paweł Żak 5de640b855
Linter fixes - unconvert, revive:empty-lines, revive:var-naming, revive:unused-parameter (#9036)
Co-authored-by: Pawel Zak <Pawel Zak>
2021-03-24 11:27:46 -04:00
Paweł Żak 74a1acd814
Linter fixes - revive:unused-parameter, unparam, varcheck and unused (#8984)
* Linter fixes - revive:unused-parameter and unparam

* Linter fixes - revive:unused-parameter and unparam

* Linter fixes - revive:unused-parameter and unparam

* "nolint"'s removed

* Fixes for "varcheck" and "unused" added.

* Fixes for "varcheck" and "unused" added.

* Fixes for "varcheck" and "unused" added.

* Fixes for "varcheck" and "unused" added.

* Fixes for "varcheck" and "unused" added.

* Fixes for "varcheck" and "unused" added.

* Fixes for "varcheck" and "unused" added.

Co-authored-by: Pawel Zak <Pawel Zak>
2021-03-22 12:21:36 -05:00
Paweł Żak 38c61c07ef
Revive fixes - part 4: (#8981)
empty-lines

Co-authored-by: Pawel Zak <Pawel Zak>
2021-03-12 14:21:51 -06:00
Patrick Hemmer 910b726876
Optimize SeriesGrouper & aggregators.merge (#8391)
The previous implementation of SeriesGrouper required breaking a metric object apart into its constituents, converting tags and keys into unoptimized maps, only to have it put them back together into another metric object. This resulted in a significant performance overhead. This overhead was further compounded when the number of fields was large.

This change adds a new AddMetric method to SeriesGrouper which preserves the metric object and removes the back-and-forth conversion.

Additionlly the method used for calculating the metric's hash was switched to use maphash, which is optimized for this case.

----

Benchmarks

Before:

    BenchmarkMergeOne-16          106012	     11790 ns/op
    BenchmarkMergeTwo-16           48529	     24819 ns/op
    BenchmarkGroupID-16           780018	      1608 ns/op

After:

    BenchmarkMergeOne-16          907093	      1173 ns/op
    BenchmarkMergeTwo-16          508321	      2168 ns/op
    BenchmarkGroupID-16         11217788	      99.4 ns/op
2021-01-07 11:39:12 -05:00
Josh Soref bf1eb291f2
Fix assorted spelling mistakes (#7507) 2020-05-15 15:43:32 -07:00
reimda a0276385b1
Refactor InfluxDB listener (#6974)
Use streaming parser in InfluxDB listener
2020-03-04 11:13:44 -07:00
Asgaut Eng 9823952597
Fix duplicate TrackingIDs returned (#6960)
There is a small chance the newTrackingID() function in tracking.go
will return the same id to multiple simultaneous callers.
The function must return the value returned by atomic.AddUint64()
to be safe.
2020-01-31 12:03:54 -08:00
Daniel Nelson 1ea7863b9b
Add pivot and unpivot processors (#5991) 2019-06-14 15:26:56 -07:00
Greg 98e922123a Dereference pointer fields in metrics (#5525) 2019-03-04 13:34:52 -08:00
Daniel Nelson c57f2d9d48
Ignore tracking for metrics added to aggregator (#5508) 2019-03-01 11:21:31 -08:00
Daniel Nelson 843d842d02
Add stackdriver input plugin (#5406) 2019-02-20 13:23:59 -08:00
Daniel Nelson 7497a2027b
Deliver empty metric tracking group immediately (#5176) 2018-12-26 19:36:10 -08:00
Daniel Nelson 6e5c2f8bb6
Remove outputs blocking inputs when output is slow (#4938) 2018-11-05 13:34:28 -08:00
Daniel Nelson 100d11f24e
Remove unused cruft 2018-10-22 17:15:57 -07:00
Ayrdrie 9f8de25e0e Add parser processor (#4551) 2018-08-22 16:28:50 -07:00
Daniel Nelson 6d876c18e0
Fix metric can have duplicate field (#4422) 2018-07-13 22:54:34 -07:00
Daniel Nelson 0af40a8a5d
Fix dropwizard parsing error for metrics that need escaped (#4142)
If the dropwizard parser cannot convert the metric name into a valid
line protocol series then we will accept the name as is.
2018-05-14 11:00:03 -07:00
Daniel Nelson ee9a2f73a1
Fix duplicate tags when overriding tag (#4056) 2018-04-20 18:39:31 -07:00
Daniel Nelson e4009234e9
Fix HashID conflicts in pathological cases
Use "\n" as delimiter as it cannot occur in the series name.
2018-04-12 18:09:31 -07:00
Daniel Nelson bcaaeda49c
Fix precision truncation when no timestamp included (#3961) 2018-04-02 14:32:33 -07:00
Daniel Nelson 7e3ec16e15
Allow empty string field values 2018-03-30 16:57:35 -07:00
Daniel Nelson b99cd14129
Add influx uint support as a runtime option (#3948) 2018-03-29 13:31:43 -07:00
Matt a320f91516 Add line protocol uint64 support (#3946) 2018-03-28 16:43:25 -07:00
Daniel Nelson 1c0f63a90d
Add new line protocol parser and serializer, influxdb output (#3924) 2018-03-27 17:30:51 -07:00
Daniel Nelson 72682973bd
Fix typo in error message 2017-11-13 15:07:54 -08:00
faye-sama a411306fba Fail metrics parsing on unescaped quotes (#3409)
Before this change Fields() method on a metric parsed from a line with
unescaped quotes could panic. This change makes such line unparseable.

Fixes #3326
2017-11-13 15:06:47 -08:00
Maximilien Richer 5f215c22fe Fix typos in comments (#3415) 2017-10-31 17:00:06 -07:00
Daniel Nelson cafb22d145
Fix unittest for golang 1.9 2017-09-22 17:35:58 -07:00
Daniel Nelson 28d16188b3 Fix panic when handling string fields with escapes (#3188) 2017-08-30 21:16:37 -07:00
Daniel Nelson ae24a0754b Escape backslash within string fields (#3161) 2017-08-23 15:17:26 -07:00
Daniel Nelson 1388e2cf92 Do not allow metrics with trailing slashes (#3007)
It is not possible to encode a measurement, tag, or field whose last
character is a backslash due to it being an unescapable character.
Because the tight coupling between line protocol and the internal metric
model, prevent metrics like this from being created.

Measurements with a trailing slash are not allowed and the point will be
dropped.  Tags and fields with a trailing a slash will be dropped from
the point.
2017-07-11 15:54:38 -07:00
Daniel Nelson 945446b36f Fix handling of escapes within fieldset (#3003)
Line protocol does not require or allow escaping of backslash, the only
requirement for a byte to be escaped is if it is an escapable char and
preceeded immediately by a slash.
2017-07-10 19:05:18 -07:00
Daniel Nelson 9276318faf Fix bug parsing default timestamps with modified precision (#2949) 2017-06-23 10:59:04 -07:00
Daniel Nelson a275e6792a Fix metric splitting edge cases (#2896)
Metrics needing one extra byte to fit the output buffer would not be split, so we would emit lines without a line ending. Metrics which overflowed by exactly one field length would be split one field too late, causing truncated fields.
2017-06-07 13:37:54 -07:00
Daniel Nelson 5bab4616ff Fix udp metric splitting (#2880) 2017-06-05 12:44:29 -07:00
Daniel Nelson 62b5c1f7e7 Add support for precision in http_listener (#2644) 2017-04-10 16:39:40 -07:00
jeremydenoun ae6a5d2255 Remove warning if parse empty content (#2500)
closes #2448
2017-03-08 14:08:55 -08:00
Leandro Piccilli 5da40d56ad
Check if tag value is empty before allocation
closes #2390
closes #2404
2017-02-16 23:07:27 +00:00
Cameron Sparr 694955c87b
Remove metric.Point from metric interface 2017-02-03 16:53:07 +00:00
Cameron Sparr 285be648c4
Godeps update
closes #2356
2017-02-02 09:52:06 +00:00
Cameron Sparr 54cfbb5b87
metric: Fix negative number handling
closes #2324
2017-02-01 10:07:31 +00:00
Cameron Sparr 4a5d313693
Improve the InfluxDB through-put performance
This changes the current use of the InfluxDB client to instead use a
baked-in client that uses the fasthttp library.

This allows for significantly smaller allocations, the re-use of http
body buffers, and the re-use of the actual bytes of the line-protocol
metric representations.
2017-01-25 11:54:16 -08:00
Cameron Sparr 6b0e863556 Support a telegraf.Metric.Split function 2016-12-07 15:18:47 +00:00
Cameron Sparr af6e7b9531 More unit tests for new metric 2016-12-01 19:07:14 +00:00
Cameron Sparr 6fd7361364 allocation & perf improvements 2016-12-01 18:17:02 +00:00
Cameron Sparr e5c7a71d8e Fix unit tests for new metric implementation 2016-12-01 18:17:02 +00:00
Cameron Sparr db7a4b24b6 Implement telegraf's own full metric type
main reasons behind this:
- make adding/removing tags cheap
- make adding/removing fields cheap
- make parsing cheaper
- make parse -> decorate -> write out bytes metric flow much faster

Refactor serializer to use byte buffer
2016-12-01 18:17:02 +00:00