Hello - I'm looking to evaluate Signoz with the Op...
# support
j
Hello - I'm looking to evaluate Signoz with the OpenTelemetry collector, but I'm a bit confused. I'm running
otelcol
locally on my host, SigNoz is running via Docker, and I have applications running locally on the host as well. My applications are able to collect and send data to otelcol successfully, I can see the data being written when a file exporter is configured. Now I'd like otelcol to send data to Signoz. However, I've seen a lot of conflicting guides, and most produces an error. One example I've been trying to work with is here: https://signoz.io/blog/opentelemetry-collector-complete-guide/ However, attempting to configure these
clickhousetraces
exporters always results in an error from otelcol when attempting to start of:
Copy code
error decoding 'exporters': unknown type: "clickhousetraces" for id: "clickhousetraces" (valid values: [opencensus zipkin file jaeger otlphttp kafka prometheus prometheusremotewrite logging otlp])
Interestingly, with that SAME URL, we see two other exporters mentioned that are not included later on,
kafka/traces
and
kafka/metrics
. When I attempt to configure these I receive the error that effectively nothing is running on port 9092, and I can confirm the local docker configuration doesn't expose anything on port 9092 and I'm not entirely sure if that configuration even includes kafka anything: https://github.com/SigNoz/signoz/blob/develop/deploy/docker/clickhouse-setup/docker-compose.yaml I feel like this situation should be fairly straightforward - what should my exporter(s) be configured as when using otelcol locally and the Signoz local docker instance?
p
@Srikanth Chekuri do you have more ideas on this?
a
@James Lai did you use signoz's otel-collector distribution?
clickhousetraces
is part of signoz's distribution. You need to use a different image `signoz/signoz-otel-collector:0.79.1`https://github.com/SigNoz/signoz/blob/develop/deploy/docker/clickhouse-setup/docker-compose.yaml#L196
I receive the error that effectively nothing is running on port 9092, and I can confirm the local docker configuration doesn't expose anything on port 9092 and I'm not entirely sure if that configuration even includes kafka anything:
this is true...Maybe the blog just shows an example config (@Ashu please note). @James Lai the kafkaexporter in the blog needs a kafka already running. The broker of kafka has a port address of 9092 which would make the above config work then.
users usually don't get started with that guide. They usually pick a language for APM and traces integration. Some start with logs integration which out-of-box for k8s.
What do you want to get started with? We can help you with the right docs to get you started with your use cases
j
Appreciated. I'd like to bring-my-own-otel-collector. I have it running as a service on my host machine. I'd like to configure that otel collector to export data to SigNoz, which I have running in docker via the
deply/docker/clickhouse-setup/docker-compose.yaml
configuration. Having trouble knowing how to export what it receives to SigNoz atm
a
got it... then just use otlp exporter at your otel-collector to send data to SigNoz. SigNoz has otlp receivers enabled by default
like this:
Copy code
exporters:
   otlp:
     endpoint: "<IP of machine hosting SigNoz>:4317"
     tls:
       insecure: true
j
Beautiful - thank you and will give this a shot soon! This is much more consistent with how I felt it should have been, was getting thrown off track unfortunately it seems
a
yeah... we need to work more in organising docs it seems 🙂
j
SigNoz has otlp receivers enabled by default
Started looking back at this and I'm a bit confused. I configured my otelcol to send data to Signoz on port 4317, but a connection was refused. Nothing was listening on that port. Looking to the Docker configuration, we have this: https://github.com/SigNoz/signoz/blob/develop/deploy/docker/clickhouse-setup/docker-compose.yaml#L208 This appears to indicate the service which I could potentially route traffic from port 4317 to is...another otel collector? Is that the correct way to get data ingested into SigNoz? Basically: App -> OTel Collector -> SigNoz OTel Collector -> SigNoz?
s
This appears to indicate the service which I could potentially route traffic from port 4317 to is...another otel collector?
No, it makes the port accessible to the host machine, which otherwise could only be accessed by other containers. The flow will be
Copy code
App -> OTel Collector (optional) -> SigNoz
j
Getting back to this - unfortunately from what I can tell it's exactly as I described. To get data to SigNoz it seems to require the use of its own otel collector. We can see the repo, Dockerfile and code the
signoz-otel-collector
is based on in this repo, and specifically where it creates its own instance of an otel collector here: https://github.com/SigNoz/signoz-otel-collector/blob/main/cmd/signozcollector/main.go. I assumed this was the case as the configuration passed to this collector was, in fact, the identical shape of the configuration for otel. So, in other words, if I wanted to have my own generic otel collector that I can use to send data to both Signoz AND other endpoints, such as my own company's database, the process would look like:
Copy code
App > Otel > SigNoz Otel > Signoz
This is a bit challenging since, at least locally for a PoC, my own Otel is binding on port 4318 to receive telemetry, but of course the SigNoz Otel Collector wants to bind on the same port.
I'll remap the port bindings, but its a little funny this is a situation
a
You should think of signoz otel as part of SigNoz.