Skip to content
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

[receiver/apachedruidreceiver] Add Apache Druid receiver #31804

Open
wants to merge 10 commits into
base: main
Choose a base branch
from
1 change: 1 addition & 0 deletions .github/CODEOWNERS
Validating CODEOWNERS rules …
Expand Up @@ -180,6 +180,7 @@ processor/transformprocessor/ @open-telemetry/collect

receiver/activedirectorydsreceiver/ @open-telemetry/collector-contrib-approvers @djaglowski @BinaryFissionGames
receiver/aerospikereceiver/ @open-telemetry/collector-contrib-approvers @djaglowski @antonblock
receiver/apachedruidreceiver/ @open-telemetry/collector-contrib-approvers @atoulme @yuanlihan
receiver/apachereceiver/ @open-telemetry/collector-contrib-approvers @djaglowski
receiver/apachesparkreceiver/ @open-telemetry/collector-contrib-approvers @djaglowski @Caleb-Hurshman @mrsillydog
receiver/awscloudwatchmetricsreceiver/ @open-telemetry/collector-contrib-approvers @jpkrohling
Expand Down
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yaml
Expand Up @@ -177,6 +177,7 @@ body:
- receiver/activedirectoryds
- receiver/aerospike
- receiver/apache
- receiver/apachedruid
- receiver/apachespark
- receiver/awscloudwatch
- receiver/awscloudwatchmetrics
Expand Down
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yaml
Expand Up @@ -171,6 +171,7 @@ body:
- receiver/activedirectoryds
- receiver/aerospike
- receiver/apache
- receiver/apachedruid
- receiver/apachespark
- receiver/awscloudwatch
- receiver/awscloudwatchmetrics
Expand Down
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/other.yaml
Expand Up @@ -171,6 +171,7 @@ body:
- receiver/activedirectoryds
- receiver/aerospike
- receiver/apache
- receiver/apachedruid
- receiver/apachespark
- receiver/awscloudwatch
- receiver/awscloudwatchmetrics
Expand Down
3 changes: 2 additions & 1 deletion cmd/otelcontribcol/builder-config.yaml
Expand Up @@ -119,6 +119,7 @@ receivers:
- gomod: go.opentelemetry.io/collector/receiver/otlpreceiver v0.96.1-0.20240315172937-3b5aee0c7a16
- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver v0.96.0
- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/aerospikereceiver v0.96.0
- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachedruidreceiver v0.96.0
- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachereceiver v0.96.0
- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachesparkreceiver v0.96.0
- gomod: github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscloudwatchreceiver v0.96.0
Expand Down Expand Up @@ -265,6 +266,7 @@ replaces:
- github.com/open-telemetry/opentelemetry-collector-contrib/extension/headerssetterextension => ../../extension/headerssetterextension
- github.com/open-telemetry/opentelemetry-collector-contrib/exporter/googlemanagedprometheusexporter => ../../exporter/googlemanagedprometheusexporter
- github.com/open-telemetry/opentelemetry-collector-contrib/receiver/aerospikereceiver => ../../receiver/aerospikereceiver
- github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachedruidreceiver => ../../receiver/apachedruidreceiver
- github.com/open-telemetry/opentelemetry-collector-contrib/processor/cumulativetodeltaprocessor => ../../processor/cumulativetodeltaprocessor
- github.com/open-telemetry/opentelemetry-collector-contrib/processor/intervalprocessor => ../../processor/intervalprocessor
- github.com/open-telemetry/opentelemetry-collector-contrib/receiver/sapmreceiver => ../../receiver/sapmreceiver
Expand Down Expand Up @@ -446,4 +448,3 @@ replaces:
- github.com/open-telemetry/opentelemetry-collector-contrib/extension/sumologicextension => ../../extension/sumologicextension
- github.com/open-telemetry/opentelemetry-collector-contrib/receiver/namedpipereceiver => ../../receiver/namedpipereceiver
- github.com/open-telemetry/opentelemetry-collector-contrib/internal/sqlquery => ../../internal/sqlquery

2 changes: 2 additions & 0 deletions cmd/otelcontribcol/components.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 3 additions & 0 deletions cmd/otelcontribcol/go.mod
Expand Up @@ -107,6 +107,7 @@ require (
github.com/open-telemetry/opentelemetry-collector-contrib/processor/transformprocessor v0.96.0
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/activedirectorydsreceiver v0.96.0
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/aerospikereceiver v0.96.0
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachedruidreceiver v0.96.0
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachereceiver v0.96.0
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachesparkreceiver v0.96.0
github.com/open-telemetry/opentelemetry-collector-contrib/receiver/awscloudwatchreceiver v0.96.0
Expand Down Expand Up @@ -837,6 +838,8 @@ replace github.com/open-telemetry/opentelemetry-collector-contrib/exporter/googl

replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/aerospikereceiver => ../../receiver/aerospikereceiver

replace github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachedruidreceiver => ../../receiver/apachedruidreceiver

replace github.com/open-telemetry/opentelemetry-collector-contrib/processor/cumulativetodeltaprocessor => ../../processor/cumulativetodeltaprocessor

replace github.com/open-telemetry/opentelemetry-collector-contrib/processor/intervalprocessor => ../../processor/intervalprocessor
Expand Down
1 change: 1 addition & 0 deletions receiver/apachedruidreceiver/Makefile
@@ -0,0 +1 @@
include ../../Makefile.Common
41 changes: 41 additions & 0 deletions receiver/apachedruidreceiver/README.md
@@ -0,0 +1,41 @@
# Apache Druid Receiver

<!-- status autogenerated section -->
| Status | |
| ------------- |-----------|
| Stability | [development]: metrics, logs |
| Distributions | [] |
| Issues | [![Open issues](https://img.shields.io/github/issues-search/open-telemetry/opentelemetry-collector-contrib?query=is%3Aissue%20is%3Aopen%20label%3Areceiver%2Fapachedruid%20&label=open&color=orange&logo=opentelemetry)](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues?q=is%3Aopen+is%3Aissue+label%3Areceiver%2Fapachedruid) [![Closed issues](https://img.shields.io/github/issues-search/open-telemetry/opentelemetry-collector-contrib?query=is%3Aissue%20is%3Aclosed%20label%3Areceiver%2Fapachedruid%20&label=closed&color=blue&logo=opentelemetry)](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues?q=is%3Aclosed+is%3Aissue+label%3Areceiver%2Fapachedruid) |
| [Code Owners](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/CONTRIBUTING.md#becoming-a-code-owner) | [@atoulme](https://www.github.com/atoulme), [@yuanlihan](https://www.github.com/yuanlihan) |

[development]: https://github.com/open-telemetry/opentelemetry-collector#development
<!-- end autogenerated section -->

This receiver accepts [metrics](https://druid.apache.org/docs/latest/operations/metrics) data from the [HTTP Emitter](https://druid.apache.org/docs/latest/configuration/#http-emitter-module) of Apache Druid.

## Prerequisites

Apache Druid cluster needs to be configured to enable metrics, see [Enabling Metrics](https://druid.apache.org/docs/latest/configuration/#enabling-metrics) and the [HTTP Emitter Module](https://druid.apache.org/docs/latest/configuration/#http-emitter-module).

## Configuration

The following configuration options are supported:

- `endpoint` (default = 0.0.0.0:9000) HTTP service endpoint for the line protocol receiver
yuanlihan marked this conversation as resolved.
Show resolved Hide resolved
- `metrics_path` (default = `/services/collector/metrics`) The path accepting Apache Druid metrics.
- `logs_path` (default = `/services/collector/logs`) The path accepting Apache Druid logs.
- `cluster_name` (default = `default`) The default name of Druid cluster. Note that the [HTTP Emitter](https://druid.apache.org/docs/latest/configuration/#http-emitter-module) of Apache Druid `28.0.0` doesn't include cluster name information in metrics.

The full list of settings exposed for this receiver are documented in [config.go](config.go).

Example:

```yaml
receivers:
apachedruid:
endpoint: 0.0.0.0:9000
```

## Metrics

Details about the metrics produced by this receiver can be found in [metadata.yaml](./metadata.yaml)
19 changes: 19 additions & 0 deletions receiver/apachedruidreceiver/config.go
@@ -0,0 +1,19 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

package apachedruidreceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachedruidreceiver"

import (
"go.opentelemetry.io/collector/config/confighttp"
)

// Config defines configuration for the Apache Druid receiver.
type Config struct {
confighttp.HTTPServerSettings `mapstructure:",squash"`

// MetricsPath for metrics data collection, default is '/services/collector/metrics'
MetricsPath string `mapstructure:"metrics_path"`

// The name of Druid cluster
ClusterName string `mapstructure:"cluster_name"`
}
6 changes: 6 additions & 0 deletions receiver/apachedruidreceiver/doc.go
@@ -0,0 +1,6 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

//go:generate mdatagen metadata.yaml

package apachedruidreceiver // import "github.com/open-telemetry/opentelemetry-collector-contrib/receiver/apachedruidreceiver"