Skip to content

Commit d648a56

Browse files
AkhigbeEromoandrzej-stencel
authored andcommitted
[exporter/sematext] New component: Sematext Exporter (open-telemetry#37161)
#### Description First PR of New component: Sematext Exporter. <!-- Issue number (e.g. open-telemetry#1234) or full URL to issue, if applicable. --> #### Link to tracking issue open-telemetry#36465 --------- Co-authored-by: Andrzej Stencel <[email protected]>
1 parent 51274d8 commit d648a56

20 files changed

+596
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Use this changelog template to create an entry for release notes.
2+
# One of 'breaking', 'deprecation', 'new_component', 'enhancement', 'bug_fix'
3+
change_type: new_component
4+
# The name of the component, or a single word describing the area of concern, (e.g. filelogreceiver)
5+
component: exporter/sematext
6+
# A brief description of the change. Surround your text with quotes ("") if it needs to start with a backtick (`).
7+
note: "Add a new component for exporting metrics and logs to Sematext"
8+
# Mandatory: One or more tracking issues related to the change. You can use the PR number here if no issue exists.
9+
issues: [36465]
10+
# (Optional) One or more lines of additional information to render under the primary note.
11+
# These lines will be padded with 2 spaces and then inserted directly into the document.
12+
# Use pipe (|) for multiline entries.
13+
subtext:
14+
# If your change doesn't affect end users or the exported elements of any package,
15+
# you should instead start your pull request title with [chore] or use the "Skip Changelog" label.
16+
# Optional: The change log or logs in which this entry should be included.
17+
# e.g. '[user]' or '[user, api]'
18+
# Include 'user' if the change is relevant to end users.
19+
# Include 'api' if there is a change to a library API.
20+
# Default: '[user]'
21+
change_logs: [user]

.github/CODEOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ exporter/prometheusremotewriteexporter/ @open-telemetry
7373
exporter/pulsarexporter/ @open-telemetry/collector-contrib-approvers @dmitryax @dao-jun
7474
exporter/rabbitmqexporter/ @open-telemetry/collector-contrib-approvers @swar8080 @atoulme
7575
exporter/sapmexporter/ @open-telemetry/collector-contrib-approvers @dmitryax @atoulme
76+
exporter/sematextexporter/ @open-telemetry/collector-contrib-approvers @AkhigbeEromo
7677
exporter/sentryexporter/ @open-telemetry/collector-contrib-approvers @AbhiPrasad
7778
exporter/signalfxexporter/ @open-telemetry/collector-contrib-approvers @dmitryax @crobert-1
7879
exporter/splunkhecexporter/ @open-telemetry/collector-contrib-approvers @atoulme @dmitryax

.github/ISSUE_TEMPLATE/bug_report.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ body:
7878
- exporter/pulsar
7979
- exporter/rabbitmq
8080
- exporter/sapm
81+
- exporter/sematext
8182
- exporter/sentry
8283
- exporter/signalfx
8384
- exporter/splunkhec

.github/ISSUE_TEMPLATE/feature_request.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ body:
7272
- exporter/pulsar
7373
- exporter/rabbitmq
7474
- exporter/sapm
75+
- exporter/sematext
7576
- exporter/sentry
7677
- exporter/signalfx
7778
- exporter/splunkhec

.github/ISSUE_TEMPLATE/other.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ body:
7272
- exporter/pulsar
7373
- exporter/rabbitmq
7474
- exporter/sapm
75+
- exporter/sematext
7576
- exporter/sentry
7677
- exporter/signalfx
7778
- exporter/splunkhec

.github/ISSUE_TEMPLATE/unmaintained.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ body:
7777
- exporter/pulsar
7878
- exporter/rabbitmq
7979
- exporter/sapm
80+
- exporter/sematext
8081
- exporter/sentry
8182
- exporter/signalfx
8283
- exporter/splunkhec

cmd/githubgen/allowlist.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
abhishek-at-cloudwerx
2+
AkhigbeEromo
23
Caleb-Hurshman
34
cemdk
45
dlopes7

exporter/sematextexporter/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
include ../../Makefile.Common

exporter/sematextexporter/README.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
# Sematext Exporter
2+
<!-- status autogenerated section -->
3+
| Status | |
4+
| ------------- |-----------|
5+
| Stability | [development]: metrics, logs |
6+
| Distributions | [] |
7+
| Issues | [![Open issues](https://img.shields.io/github/issues-search/open-telemetry/opentelemetry-collector-contrib?query=is%3Aissue%20is%3Aopen%20label%3Aexporter%2Fsematext%20&label=open&color=orange&logo=opentelemetry)](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues?q=is%3Aopen+is%3Aissue+label%3Aexporter%2Fsematext) [![Closed issues](https://img.shields.io/github/issues-search/open-telemetry/opentelemetry-collector-contrib?query=is%3Aissue%20is%3Aclosed%20label%3Aexporter%2Fsematext%20&label=closed&color=blue&logo=opentelemetry)](https://github.com/open-telemetry/opentelemetry-collector-contrib/issues?q=is%3Aclosed+is%3Aissue+label%3Aexporter%2Fsematext) |
8+
| [Code Owners](https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/CONTRIBUTING.md#becoming-a-code-owner) | [@AkhigbeEromo](https://www.github.com/AkhigbeEromo) |
9+
10+
[development]: https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/component-stability.md#development
11+
<!-- end autogenerated section -->
12+
13+
This exporter supports sending metrics to [Sematext Cloud](https://sematext.com/) in Influx line protocol format and logs using the Bulk Index Api format.
14+
15+
## Configuration
16+
17+
The following configuration options are supported:
18+
* `timeout` (default = 5s) Timeout for requests
19+
* `region` Region specifies the Sematext region the user is operating in; must be one of:
20+
* `US`
21+
* `EU`
22+
* `retry_on_failure` [details here](https://github.com/open-telemetry/opentelemetry-collector/blob/v0.25.0/exporter/exporterhelper/README.md#configuration)
23+
* `enabled` (default = true)
24+
* `initial_interval` (default = 5s) Time to wait after the first failure before retrying
25+
* `max_interval` (default = 30s) Upper bound on backoff interval
26+
* `max_elapsed_time` (default = 120s) Maximum amount of time (including retries) spent trying to send a request/batch
27+
* `metrics.app_token` specifies the token of the Sematext Monitoring App to which metrics data will be sent. It must be a valid UUID string in the format `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`. For example: `2046e37c-4fac-45f6-831d-922d43fde759`.
28+
* `logs.app_token` specifies the token of the Sematext Logs App to which logs data will be sent. It must be a valid UUID string in the format `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`. For example: `9604e37c-49ac-49f6-831d-922d43fde759`.
29+
* `metrics.payload_max_lines` (default = 1_000) Maximum number of lines allowed per HTTP POST request
30+
* `metrics.payload_max_bytes` (default = 300_000) Maximum number of bytes allowed per HTTP POST request
31+
* `metrics.metrics_schema` (default = telegraf-prometheus-v2) The chosen metrics schema to write
32+
* `metrics.sending_queue` [details here](https://github.com/open-telemetry/opentelemetry-collector/blob/v0.25.0/exporter/exporterhelper/README.md#configuration)
33+
* `enabled` (default = true)
34+
* `num_consumers` (default = 10) The number of consumers from the queue
35+
* `queue_size` (default = 1000) Maximum number of batches allowed in queue at a given time
36+
37+
38+
The full list of settings exposed for this exporter are documented in [config.go](config.go).
39+
40+
Example:
41+
```yaml
42+
timeout: 500ms
43+
region: US
44+
retry_on_failure:
45+
enabled: true
46+
initial_interval: 1s
47+
max_interval: 3s
48+
max_elapsed_time: 10s
49+
metrics:
50+
app_token: 2064e37c-4fac-45f6-831d-922d43fde759
51+
sending_queue:
52+
enabled: true
53+
num_consumers: 3
54+
queue_size: 10
55+
payload_max_lines: 100
56+
payload_max_bytes: 1000
57+
logs:
58+
app_token: 9064e37c-4gac-49f6-831d-922l43fse759
59+
```

exporter/sematextexporter/config.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
package sematextexporter // import "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sematextexporter"
5+
6+
type Config struct{}

exporter/sematextexporter/doc.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
//go:generate mdatagen metadata.yaml
5+
6+
// Package sematextexporter sends metrics and logs to sematext cloud.
7+
package sematextexporter // import "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sematextexporter"

exporter/sematextexporter/factory.go

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
// Copyright The OpenTelemetry Authors
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
//go:generate mdatagen metadata.yaml
5+
6+
package sematextexporter // import "github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sematextexporter"
7+
8+
import (
9+
"context"
10+
11+
"go.opentelemetry.io/collector/component"
12+
"go.opentelemetry.io/collector/exporter"
13+
"go.opentelemetry.io/collector/exporter/exporterhelper"
14+
"go.opentelemetry.io/collector/pdata/plog"
15+
"go.opentelemetry.io/collector/pdata/pmetric"
16+
17+
"github.com/open-telemetry/opentelemetry-collector-contrib/exporter/sematextexporter/internal/metadata"
18+
)
19+
20+
// NewFactory creates a factory for the Sematext metrics exporter.
21+
func NewFactory() exporter.Factory {
22+
return exporter.NewFactory(
23+
metadata.Type,
24+
createDefaultConfig,
25+
exporter.WithMetrics(createMetricsExporter, metadata.MetricsStability),
26+
exporter.WithLogs(createLogsExporter, metadata.LogsStability),
27+
)
28+
}
29+
30+
func createDefaultConfig() component.Config {
31+
cfg := &Config{}
32+
return cfg
33+
}
34+
35+
func createMetricsExporter(
36+
ctx context.Context,
37+
set exporter.Settings,
38+
config component.Config,
39+
) (exporter.Metrics, error) {
40+
cfg := config.(*Config)
41+
42+
return exporterhelper.NewMetrics(
43+
ctx,
44+
set,
45+
cfg,
46+
func(_ context.Context, _ pmetric.Metrics) error {
47+
return nil
48+
},
49+
)
50+
}
51+
52+
func createLogsExporter(
53+
ctx context.Context,
54+
set exporter.Settings,
55+
config component.Config,
56+
) (exporter.Logs, error) {
57+
cfg := config.(*Config)
58+
59+
return exporterhelper.NewLogs(
60+
ctx,
61+
set,
62+
cfg,
63+
func(_ context.Context, _ plog.Logs) error {
64+
return nil
65+
},
66+
)
67+
}

exporter/sematextexporter/generated_component_test.go

Lines changed: 141 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

exporter/sematextexporter/generated_package_test.go

Lines changed: 13 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)