You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Apisix is running fine in standalone mode, providing upstream access to some API routes as well as a PHP middleware. However, I would like to integrate Opentelemetry for tracing and Prometheus for metrics. Having tried various approaches, I can't get it to work.
Opentelemetry:
Plugin is enabled as I can see the OT parent span information arriving in the API backend
Plugin cannot transmit data to the OTEL collector, all I can see in the docker logs is:
172.31.0.1 is the IP address of the running docker image of Apisix. I can not observe any traffic to port 4318 from inside the docker network, so to me it looks like the default collector address of 127.0.0.1:4318 is used. But the LUA error in the log does not say anything about which address it tried to connect to.
I will paste my full configuration (redacted slightly) below.
Prometheus:
Since I am in standalone mode I guess I need to export the plugin URI via public-api. I tried that but can't access that URL afterwards. I am not sure what to specify as the upstream URI as the API port is not listening in standalone mode.
My current config:
ssls:
-
cert: |
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
key: |
-----BEGIN PRIVATE KEY-----
snis:
- "test.local.lan"
global_rules:
- id: 1
plugins:
response-rewrite:
headers:
set:
X-Content-Type-Options: nosniff
remove:
- Server
# I tried configuring the plugin here (found this in How to configure plugins in the standalone section of the documentation)
plugins:
- name: opentelemetry
resource:
service.name: APISIX # Set the service name for OpenTelemetry traces.
service.version: 3.9.0
service.instance.id: test-01
collector:
address: otelcollect.local.lan:4318
- name: prometheus
# I tried configuring the plugin here (found this in the opentelemetry plugin section of the documentation)
plugin_attr:
opentelemetry: # Plugin: opentelemetry
resource:
service.name: APISIX # Set the service name for OpenTelemetry traces.
service.version: 3.9.0
service.instance.id: test-01
collector:
address: otelcollect.local.lan:4318
prometheus:
enable_export_server: false
routes:
-
methods: ["GET", "POST"]
uris: [ "/portal" ]
plugins:
redirect:
http_to_https: true
opentelemetry: # the plugin does get activated as the OT headers are present in each request
sampler:
name: always_on
upstream:
nodes:
"upstream.local.lan:80": 1
type: chash
hash_on: cookie
key: cookie_PHPSESSID
Any help would be highly appreciated.
Environment
APISIX version (run apisix version): 3.9.0
Operating system (run uname -a): Debian docker image running on Rocky Linux 8
OpenResty / Nginx version (run openresty -V or nginx -V): 1.25.3.1
etcd version, if relevant (run curl http://127.0.0.1:9090/v1/server_info): none, standalone mode
APISIX Dashboard version, if relevant:
Plugin runner version, for issues related to plugin runners:
LuaRocks version, for installation issues (run luarocks --version):
The text was updated successfully, but these errors were encountered:
Description
Apisix is running fine in standalone mode, providing upstream access to some API routes as well as a PHP middleware. However, I would like to integrate Opentelemetry for tracing and Prometheus for metrics. Having tried various approaches, I can't get it to work.
Opentelemetry:
Plugin is enabled as I can see the OT parent span information arriving in the API backend
Plugin cannot transmit data to the OTEL collector, all I can see in the docker logs is:
172.31.0.1 is the IP address of the running docker image of Apisix. I can not observe any traffic to port 4318 from inside the docker network, so to me it looks like the default collector address of 127.0.0.1:4318 is used. But the LUA error in the log does not say anything about which address it tried to connect to.
I will paste my full configuration (redacted slightly) below.
Prometheus:
Since I am in standalone mode I guess I need to export the plugin URI via public-api. I tried that but can't access that URL afterwards. I am not sure what to specify as the upstream URI as the API port is not listening in standalone mode.
My current config:
Any help would be highly appreciated.
Environment
apisix version
): 3.9.0uname -a
): Debian docker image running on Rocky Linux 8openresty -V
ornginx -V
): 1.25.3.1curl http://127.0.0.1:9090/v1/server_info
): none, standalone modeluarocks --version
):The text was updated successfully, but these errors were encountered: