Conversation
9b3e25b to
b374f97
Compare
|
LGTM |
35c308a to
250a6fb
Compare
|
@sjwang90 The |
|
LGTM |
|
I need to make the int64 aligned to a 64-bit boundary to get the 386 tests passing. |
052b554 to
6ff4ab1
Compare
Should be fixed if you rebase, now we are running |
6ff4ab1 to
05450f8
Compare
|
@danielnelson All tests passed now, although Github still shows some pending that did pass on CircleCI that I manually reran due to unrelated test failures. |
plugins/outputs/signalfx/signalfx.go
Outdated
| ## Maximum batch size of datapoints to send to ingest at once | ||
| batch_size = 1000 | ||
|
|
||
| ## Maximum number of datapoints or events to buffer in the agent before dropping data | ||
| max_buffered = 100000 |
There was a problem hiding this comment.
The library used by this PR doesn't integrate very well with Telegraf, as it wants to take over responsibilities that Telegraf typically controls.
For example, batch size and max bufferer are essentially the same as theTelegraf metric_batch_size and metric_buffer_limit options. The Write method should be able to indicate when a write has failed/succeeded so that Telegraf can manage retries and know when collected data has been written.
I think we should consider removing the SignalFX library and writing a simple client using the http package instead.
There was a problem hiding this comment.
Ok, I simplified the plugin to synchronously send using our low-level client library. Removed the now unneeded config in the plugin.
9f98634 to
ed801e5
Compare
|
@danielnelson are there any other changes needed? |
|
We are currently a customer of influxdb and I was wondering when this was going to get merged in I know it has been moved in the milestones a few times. |
|
@danielnelson +1 for @mcmiv413 comment on needing this for another customer. I have a fairly large influx customer who needs this so they continue on with their internal projects. |
4d1d264 to
fcb11f3
Compare
|
@ssoroka Is there anything else needed for this PR? Would be good to get it merged soon. |
|
@keitwb is it possible to remove the signalfx-go library from the dependencies? |
fcb11f3 to
c79977f
Compare
This output plugin converts the `telegraf.Metrics` into signalfx `datapoint`s and then transmits them to the ingest servers using signalfx golang client lib. As of this commit, the client lib is allowed to pick sane defaults and none of its fields are overridable via telegraf config. This can be changed in the future if needed. The unit tests only test for conversion of `telegraf.Metric`s to the `datapoint` structs. All code that executes after that is assumed to be tested in the signalfx client lib itself (and not worth writing end-to-end tests for). Further enhancements: - Custom ingest urls - Better batching - More extensive tests - Support for events, sent by whitelist only Co-authored-by: Ben Keith <benkeith@splunk.com>
c79977f to
51fa20f
Compare
|
@ssoroka anything else needed to get this merged? |
|
@ssoroka what else is needed to get this merged? |
ssoroka
left a comment
There was a problem hiding this comment.
So the only remaining thing is i'm a bit concerned about the dependencies. The signalfx golib seems to import a lot:
- github.com/jaegertracing/jaeger is a distributed tracing platform
- somehow we ended up importing a javascript interpreter: github.com/gopherjs/gopherjs
|
It does but none of it is actually used by any of the code here so it would get pruned by the go linker. It isn't very feasible to extract the client from golib without doing major refactoring of it. |
|
@ssoroka thanks for taking a look. I ran a few tests and the net increase in binary size from this PR is ~1.5MB (most of this comes from
Tracing is currently part of the SignalFx client library which uses the Jaegar protobuf definitions. Unfortunately it doesn't look like Jaeger has protobufs as their own consumable which is why this module gets included.
This comes from goconvey (testing framework we use). It is only used in Unfortunately reducing the dependencies in golib or extracting the client to a minimal set would require a lot of internal rework. I think we have two options (more welcome if you have other ideas):
Would one of those options be acceptable for Telegraf? Would one be better than the other? Thanks! |
|
👏 🎉 - thank you everyone for making this happen! Can't wait for the next release (that includes this) to drop! |
* [outputs.signalfx] Add output plugin for SignalFX This output plugin converts the `telegraf.Metrics` into signalfx `datapoint`s and then transmits them to the ingest servers using signalfx golang client lib. As of this commit, the client lib is allowed to pick sane defaults and none of its fields are overridable via telegraf config. This can be changed in the future if needed. The unit tests only test for conversion of `telegraf.Metric`s to the `datapoint` structs. All code that executes after that is assumed to be tested in the signalfx client lib itself (and not worth writing end-to-end tests for). Further enhancements: - Custom ingest urls - Better batching - More extensive tests - Support for events, sent by whitelist only Co-authored-by: Ben Keith <benkeith@splunk.com> Co-authored-by: Akshay <akshay.moghe@gmail.com> Co-authored-by: Jay Camp <jcamp@splunk.com>
Add a basic SignalFx output plugin.
This is a continuation of #5204. Closes #923
Downgraded go-logfmt by one minor version to meet compatibility with SignalFx golib.
I can squash all of this into a single commit is preferred but left it separate to show history for now.
Required for all PRs: