opentelemetry-collector-contrib

module
v0.0.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 17, 2020 License: Apache-2.0

README

OpenTelemetry Collector Contrib

This is a repository for OpenTelemetry Collector contributions that are not part of the core repository and core distribution of the Collector. Typically, these contributions are vendor specific receivers/exporters and/or components that are only useful to a relatively small number of users.

Docker Images

Docker images for all releases are published at https://hub.docker.com/r/omnition/opentelemetry-collector-contrib

Contributing

If you would like to contribute please read contributing guidelines before you begin your work.

Adding New Components

Before you start please read the contributing guidelines.

Any component (receiver, processor, exporter, or extension) needs to implement the interfaces defined on the core repository. Familiarize yourself with the interface of the component that you want to write, and use existing implementations as reference.

NOTICE: The Collector is in Alpha stage and as such the interfaces may undergo breaking changes. Component creators must be available to update or review their components when such changes happen, otherwise the component will be excluded from the default builds.

  • Create your component under the proper folder and use Go standard package naming recommendations.
  • Use a boiler-plate Makefile that just references the one at top level, ie.: include ../../Makefile.Common - this allows you to build your component with required build configurations for the contrib repo while avoiding building the full repo during development.
  • Each component has its own go.mod file. This allows custom builds of the collector to take a limited sets of dependencies - so run go mod commands as appropriate for your component.
  • Implement the needed interface on your component by importing the appropriate component from the core repo.
 Follow the pattern of existing components regarding config and factory source files and tests.

  • Implement your component as appropriate. Provide end-to-end tests (or mock backend/client as appropriate). Target is to get 80% or more of code coverage.
  • Add a README.md on the root of your component describing its configuration and usage, likely referencing some of the yaml files used in the component tests. We also suggest that the yaml files used in tests have comments for all available configuration settings so users can copy and modify them as needed.
  • Add a replace directive at the root go.mod file so your component is included in the build of the contrib executable.
General Recommendations

Below are some recommendations that apply to typical components. These are not rigid rules and there are exceptions to them, but, take care considering when you are not following them.

  • Avoid introducing batching, retries or worker pools directly on receivers and exporters. Typically, these are general cases that can be better handled via processors (that also can be reused by other receivers and exporters).
  • When implementing exporters try to leverage the exporter helpers from the core repo, see exporterhelper package. This will ensure that the exporter provides zPages and a standard set of metrics.
Questions?

Reach the Collector community on gitter if you have further questions.

Directories

Path Synopsis
cmd
otelcontribcol
Program otelcontribcol is the Omnition Telemetry Service built on top of OpenTelemetry Service.
Program otelcontribcol is the Omnition Telemetry Service built on top of OpenTelemetry Service.
chloggen Module
configschema Module
githubgen Module
mdatagen Module
telemetrygen Module
tracegen Module
confmap
connector
sumconnector Module
examples
demo/client Module
demo/server Module
exporter
awss3exporter Module
dorisexporter Module
fileexporter Module
humioexporter Module
kafkaexporter Module
lokiexporter Module
mezmoexporter Module
sapmexporter Module
extension
ackextension Module
awsproxy Module
awsxrayproxy Module
encoding Module
headerssetter Module
httpforwarder Module
observer Module
storage Module
internal
aws Module
aws/awsutil Module
aws/cwlogs Module
aws/ecsutil Module
aws/k8s Module
aws/metrics Module
aws/proxy Module
aws/xray Module
awsxray Module
collectd Module
common Module
comparetest Module
containertest Module
coreinternal Module
datadog Module
docker Module
exp/metrics Module
filter Module
grpcutil Module
influx Module
interval Module
k8sconfig Module
k8stest Module
kafka Module
kubelet Module
otelarrow Module
pdatautil Module
rabbitmq Module
scrapertest Module
splunk Module
sqlquery Module
stanza Module
pkg
batchpertrace Module
datadog Module
golden Module
kafka/topic Module
ottl Module
pdatatest Module
pdatautil Module
sampling Module
stanza Module
status Module
processor
k8sprocessor Module
spanprocessor Module
receiver
awss3receiver Module
bigipreceiver Module
filereceiver Module
httpdreceiver Module
iisreceiver Module
jmxreceiver Module
kafkareceiver Module
lokireceiver Module
mysqlreceiver Module
nginxreceiver Module
nsxtreceiver Module
ntpreceiver Module
redisreceiver Module
riakreceiver Module
sapmreceiver Module
scrapererror Module
scraperhelper Module
snmpreceiver Module
testbed module
tracegen module

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL