-
Notifications
You must be signed in to change notification settings - Fork 2.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New component: Flex Metrics Receiver #14753
Comments
This looks similar to what we wanted to do for filelog definitions from stanza for logs. Is there a way to have any uniformity of this metric scraping capability with logs parsing capabilities? cc @djaglowski |
It would be great if the configuration of operators (e.g. jq, regex) is uniform with what we do for logs operators. |
Discussed in SIG:
|
I think this would be quite a challenge, but I'll try to provide enough of an analysis that we can consider it further. The first thing to note is that the filelog operators are built around a particular representation of the log data model. Specifically, This would also introduce a notion that is essentially "pipeline type" to Beyond that, we can consider the implications by grouping the filelog operators into a few categories:
It's an interesting idea and does make some sense. |
@djaglowski I think you are implying that the implementations of these operators need to be shared. That's an option but not a requirement. From end user perspective it is important the behavior of these operators are uniform for metrics and logs, but implementations may be done in different bits of code. Of course we need to be very careful with this approach to ensure the behaviors are truly uniform and don't drift apart, but that is probably a matter of proper automated testing of observable behaviors. I am not saying we should not aim to also have shared implementations. Shared implementations are desirable if it is reasonably doable, but it is not an absolute requirement. |
That's fair. It'd be possible to just share some of the more complex bits of code, such as timestamp configuration & parsing. |
This issue has been inactive for 60 days. It will be closed in 60 days if there is no activity. To ping code owners by adding a component label, see Adding Labels via Comments, or if you are unsure of which component this issue relates to, please ping |
This issue has been inactive for 60 days. It will be closed in 60 days if there is no activity. To ping code owners by adding a component label, see Adding Labels via Comments, or if you are unsure of which component this issue relates to, please ping |
This issue has been closed as inactive because it has been stale for 120 days with no activity. |
The purpose and use-cases of the new component
Description:
Flex Metrics Receiver
will be an application-agnostic cross-platform receiver with which users can instrument any application that exposes metrics over a standard protocol (HTTP, file, shell) in any format (for example, JSON or plain text). The receiver will scrape and parse the data which will be transformed into OTEL metrics format, based on the rules defined in the yaml configuration.This solution would be best suited for monitoring custom solutions for which a dedicated receiver doesn't exist.
Context:
This solution is inspired by the NewRelic flex integration which is an application-agnostic, all-in-one tool that allows you to collect metric data from a wide variety of services. It comes bundled with NewRelic infrastructure agent. You can instrument any app that exposes metrics over a standard protocol (HTTP, file, shell) in a standard format (for example, JSON or plain text): you create a YAML config file, start the Infrastructure agent, and your data is reported to New Relic.
NewRelic flex already has dozens (200+) of example yaml config files that can be shared and these contributions would increase the surface area of OTEL instrumentation. Each config yaml file can be viewed as an independent/different Receiver.
Also, after learning the flex syntax, we can create new Receivers easily without development/releasing a new collector version.
Community contributes with new examples without having knowledge of the Collector internals.
Example configuration for the component
The following examples illustrate the most common use cases: HTTP, db and shell. This configuration structure is inspired by the logs operator pattern.
HTTP Example:
Database query example
Shell command example
Telemetry data types supported
Currently flex supports only metrics
Is this a vendor-specific component?
Sponsor (optional)
No response
Additional context
Flex library will be maintained by New Relic, however this library will be an agnostic data fetcher and parser without any backend specific features.
Documentation
OTEL flex receiver will contain documentation on how to use the existing configuration examples as well as on how to use each input/processor in order to enable users to build their own integrations
The text was updated successfully, but these errors were encountered: