-
Notifications
You must be signed in to change notification settings - Fork 120
Add new troubleshooting page - Collector not starting #2255
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
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,125 @@ | ||
--- | ||
navigation_title: Collector won't start | ||
description: Learn what to do when the EDOT Collector doesn’t start. | ||
applies_to: | ||
stack: | ||
serverless: | ||
observability: | ||
product: | ||
edot_collector: ga | ||
products: | ||
- id: cloud-serverless | ||
- id: observability | ||
- id: edot-collector | ||
--- | ||
|
||
# EDOT Collector doesn’t start | ||
|
||
|
||
If your EDOT Collector fails to start, it's often due to configuration or environment-related issues. This guide walks you through the most common root causes and how to resolve them. | ||
|
||
## Symptoms | ||
|
||
EDOT Collector fails to start or crashes immediately after launch. | ||
|
||
Possible causes include: | ||
|
||
* Invalid YAML configuration, including syntax errors or unsupported fields | ||
* Port binding conflicts, for example ports 4317 or 4318 already in use | ||
* Missing or misconfigured required components, such as `receivers` or `exporters` | ||
* Incorrect permissions or volume mounts in containerized environments | ||
|
||
## Resolution | ||
|
||
The solution depends on your EDOT Collector's setup: | ||
|
||
* [Standalone](#standalone-edot-collector) | ||
* [Kubernetes](#kubernetes-edot-collector) | ||
|
||
### Standalone EDOT Collector | ||
|
||
If you're deploying the EDOT Collector in a standalone configuration, try to: | ||
|
||
* Validate configuration syntax | ||
|
||
Run the following to validate your configuration without starting the Collector: | ||
|
||
```bash | ||
edot-collector --config=/path/to/otel-collector-config.yaml --dry-run | ||
``` | ||
|
||
This checks for syntax errors and missing components. | ||
|
||
EDOT fully supports `--dry-run`, just like the upstream Collector. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The
|
||
|
||
* Check logs for stack traces or component errors | ||
|
||
Review the Collector logs for error messages indicating configuration problems. Common examples include: | ||
|
||
``` | ||
error initializing exporter: no endpoint specified | ||
``` | ||
|
||
Most critical issues, such as missing or invalid exporters or receivers, will be logged. | ||
|
||
To increase verbosity, run the Collector with: | ||
|
||
```bash | ||
--log-level=debug | ||
``` | ||
Comment on lines
+65
to
+69
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is not available in the EDOT collector (nor in the upstream collector):
To change the log level there's two main methods:
|
||
|
||
This is especially helpful for diagnosing configuration parsing issues or startup errors. | ||
|
||
|
||
* Confirm required components are defined | ||
|
||
Ensure `service.pipelines` references valid `receivers`, `processors`, and `exporters`. The minimal configuration depends on your use case: | ||
|
||
* **For logs**: `filelog` receiver, `resourcedetection` processor, `elasticsearch` exporter | ||
|
||
* **For traces**: `otlp` receiver, `elastictrace` and `elasticapm` processors, `elasticsearch` exporter | ||
|
||
* **For managed OTLP endpoint**: use relevant receivers and export using the `otlp` exporter | ||
|
||
Refer to [Default configuration of the EDOT Collector (Standalone)](opentelemetry://reference/edot-collector/config/default-config-standalone.md) for full examples for each use case. | ||
|
||
|
||
* Check for port conflicts | ||
|
||
By default, EDOT uses: | ||
|
||
* 4317 for OTLP/gRPC | ||
* 4318 for OTLP/HTTP | ||
|
||
Run this to check if a port is in use: | ||
|
||
```bash | ||
lsof -i :4317 | ||
``` | ||
|
||
If needed, adjust your configuration or free up the port. | ||
|
||
### Kubernetes EDOT Collector | ||
|
||
If you're deploying the EDOT Collector using the Elastic Helm charts, try to: | ||
|
||
* Double-check your custom `values.yaml` or -`-set` overrides for typos or missing fields. | ||
|
||
* Ensure volume mounts are correctly defined if you're using custom configuration files. | ||
|
||
* If you're managing the Collector through {{fleet}}, confirm that the policy includes a valid configuration and hasn't been corrupted or partially applied. | ||
|
||
* Use `kubectl logs <collector-pod>` to get Collector logs and diagnose startup failures. | ||
|
||
* Check the status of the pod using: | ||
|
||
```bash | ||
kubectl describe pod <collector-pod> | ||
``` | ||
|
||
Common issues include volume mount errors, image pull failures, or misconfigured environment variables. | ||
|
||
## Resources | ||
|
||
* [Upstream Collector configuration documentation](https://opentelemetry.io/docs/collector/configuration/) | ||
* [Elastic Stack Kubernetes Helm Charts](https://github.com/elastic/helm-charts) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could you try if this works, too?
edot-collector validate --config=customconfig.yaml
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Doesn't work for me
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think this should be
otelcol validate --config=/path/to/otel-collector-config.yaml
. Based on https://www.elastic.co/docs/reference/opentelemetry/edot-collector/download binary name.The shared command works in my environment.