Skip to content

Commit 5232658

Browse files
authored
Refactor telemtry signals (#2225)
* refactor: align telemetry signals with otel semantic conventions * refactor: unify spans names - make aspire part of dev stack * feature: data frame cache telemetry * feature: integrate flow-php/telemetry with flow-php/postgresql * feature: telemetry attributes limits - updated collector to send its own telemetry to aspire - added asipre/collector to compose.yml.dist - unified resource name in otlp bridge tests - unified postgresql/symfony bundle span naming * feature: introduce name to dataframes - unify naming conventions across monorepo for telemetry signals * fix: incorrect tracers behavior about closing spans - introduce Scope to ContextStorage - make tracers use Scope when their stack is empty * refactor: unified naming conventions for filesystem telemetry * feature: added dataframe name to dataframe metrics/logs/traces attributes * refactor: unify telemetry conventions for caches * feature: phpunit telemetry extension * feature: collect telemetry from local infrastructure * fix: codecov configuration * fix: failing tests due to missing otel collector config * fix: website failing tests * fix: codding standards * fix: failing tests * fix: upgraded otel collector version on ci/cd fix: otel collector config on ci/cd
1 parent bac54f1 commit 5232658

182 files changed

Lines changed: 26656 additions & 2495 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.codecov.yaml

Lines changed: 45 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,18 @@ component_management:
4343
name: lib-snappy
4444
paths:
4545
- src/lib/snappy/**
46+
- component_id: lib-dremel
47+
name: lib-dremel
48+
paths:
49+
- src/lib/dremel/**
50+
- component_id: lib-postgresql
51+
name: lib-postgresql
52+
paths:
53+
- src/lib/postgresql/**
54+
- component_id: lib-telemetry
55+
name: lib-telemetry
56+
paths:
57+
- src/lib/telemetry/**
4658
- component_id: bridge-filesystem-async-aws
4759
name: bridge-filesystem-async-aws
4860
paths:
@@ -63,6 +75,26 @@ component_management:
6375
name: symfony-http-foundation
6476
paths:
6577
- src/bridge/symfony/http-foundation/**
78+
- component_id: bridge-psr18-telemetry
79+
name: bridge-psr18-telemetry
80+
paths:
81+
- src/bridge/psr18/telemetry/**
82+
- component_id: bridge-psr7-telemetry
83+
name: bridge-psr7-telemetry
84+
paths:
85+
- src/bridge/psr7/telemetry/**
86+
- component_id: bridge-telemetry-otlp
87+
name: bridge-telemetry-otlp
88+
paths:
89+
- src/bridge/telemetry/otlp/**
90+
- component_id: bridge-symfony-http-foundation-telemetry
91+
name: bridge-symfony-http-foundation-telemetry
92+
paths:
93+
- src/bridge/symfony/http-foundation-telemetry/**
94+
- component_id: bridge-symfony-telemetry-bundle
95+
name: bridge-symfony-telemetry-bundle
96+
paths:
97+
- src/bridge/symfony/telemetry-bundle/**
6698
- component_id: adapter-chartjs
6799
name: adapter-chartjs
68100
paths:
@@ -110,4 +142,16 @@ component_management:
110142
- component_id: adapter-xml
111143
name: adapter-xml
112144
paths:
113-
- src/adapter/etl-adapter-xml/**
145+
- src/adapter/etl-adapter-xml/**
146+
- component_id: adapter-avro
147+
name: adapter-avro
148+
paths:
149+
- src/adapter/etl-adapter-avro/**
150+
- component_id: adapter-excel
151+
name: adapter-excel
152+
paths:
153+
- src/adapter/etl-adapter-excel/**
154+
- component_id: adapter-postgresql
155+
name: adapter-postgresql
156+
paths:
157+
- src/adapter/etl-adapter-postgresql/**

.github/workflows/job-tests.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ jobs:
7676
docker run -d --name otel-collector \
7777
-p 4317:4317 -p 4318:4318 -p 8888:8888 -p 13133:13133 \
7878
-v ${{ github.workspace }}/docker/otel-collector-test-config.yaml:/etc/otelcol-contrib/config.yaml:ro \
79-
otel/opentelemetry-collector-contrib:0.115.1
79+
otel/opentelemetry-collector-contrib:0.144.0
8080
# Wait for container to be ready
8181
for i in {1..30}; do
8282
if curl -sf http://localhost:13133/ > /dev/null 2>&1; then

.php-cs-fixer.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@
3131
__DIR__ . '/web/landing/bin',
3232
__DIR__ . '/examples',
3333
__DIR__ . '/tools/rector/src',
34+
__DIR__ . '/tools/phpunit/extension/telemetry/src',
35+
__DIR__ . '/tools/phpunit/extension/telemetry/tests',
3436
])
3537
->exclude([
3638
'Flow/Parquet/ThriftModel',

compose.yml.dist

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
networks:
2+
flow-php:
3+
driver: bridge
4+
15
services:
26
postgres:
37
image: postgres:18-alpine
@@ -8,6 +12,8 @@ services:
812
- POSTGRES_USER=postgres
913
- POSTGRES_PASSWORD=postgres
1014
- POSTGRES_DB=postgres
15+
networks:
16+
- flow-php
1117
mysql:
1218
image: mysql:8.0.31
1319
container_name: flow-php-mysql
@@ -18,6 +24,8 @@ services:
1824
MYSQL_PASSWORD: mysql
1925
MYSQL_DATABASE: mysql
2026
MYSQL_ROOT_PASSWORD: root
27+
networks:
28+
- flow-php
2129
elasticsearch:
2230
image: elasticsearch:7.17.2
2331
container_name: flow-php-elasticsearch
@@ -28,6 +36,8 @@ services:
2836
- discovery.type=single-node
2937
- bootstrap.memory_lock=true
3038
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
39+
networks:
40+
- flow-php
3141
meilisearch:
3242
image: getmeili/meilisearch:latest
3343
container_name: flow-php-meilisearch
@@ -36,6 +46,8 @@ services:
3646
environment:
3747
- MEILI_MASTER_KEY=masterKey
3848
- MEILI_NO_ANALYTICS=true
49+
networks:
50+
- flow-php
3951
azurite:
4052
image: mcr.microsoft.com/azure-storage/azurite
4153
container_name: flow-php-azurite
@@ -48,11 +60,15 @@ services:
4860
- 10000:10000
4961
volumes:
5062
- ./var/azurite:/workspace
63+
networks:
64+
- flow-php
5165
redis:
5266
image: redis:latest
5367
container_name: flow-php-redis
5468
ports:
5569
- "6379:6379"
70+
networks:
71+
- flow-php
5672
localstack:
5773
image: localstack/localstack:latest
5874
container_name: flow-php-localstack
@@ -64,16 +80,36 @@ services:
6480
- DATA_DIR=/var/localstack/data
6581
volumes:
6682
- "./var/localstack:/var/localstack"
83+
networks:
84+
- flow-php
85+
aspire:
86+
image: mcr.microsoft.com/dotnet/aspire-dashboard:latest
87+
container_name: flow-php-aspire
88+
ports:
89+
- "18888:18888"
90+
- "18889:18889"
91+
environment:
92+
- DOTNET_DASHBOARD_UNSECURED_ALLOW_ANONYMOUS=true
93+
- ASPIRE_DASHBOARD_OTLP_ENDPOINT_URL=http://0.0.0.0:18889
94+
networks:
95+
- flow-php
6796
otel-collector:
68-
image: otel/opentelemetry-collector-contrib:0.115.1
97+
image: otel/opentelemetry-collector-contrib:0.144.0
6998
container_name: flow-php-otel-collector
7099
command: ["--config=/etc/otel-collector-config.yaml"]
71100
ports:
72101
- "4317:4317"
73102
- "4318:4318"
74103
- "8888:8888"
75104
volumes:
76-
- "./docker/otel-collector-test-config.yaml:/etc/otel-collector-config.yaml:ro"
105+
- "./docker/otel-collector-config.yaml:/etc/otel-collector-config.yaml:ro"
77106
- "./var/otel:/var/otel"
107+
depends_on:
108+
- aspire
109+
- postgres
110+
- mysql
111+
- redis
112+
networks:
113+
- flow-php
78114

79115

composer.json

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,8 @@
113113
"flow-php/symfony-telemetry-bundle": "self.version",
114114
"flow-php/telemetry": "self.version",
115115
"flow-php/telemetry-otlp-bridge": "self.version",
116-
"flow-php/types": "self.version"
116+
"flow-php/types": "self.version",
117+
"flow-php/phpunit-telemetry": "self.version"
117118
},
118119
"minimum-stability": "dev",
119120
"prefer-stable": true,
@@ -166,6 +167,9 @@
166167
],
167168
"Flow\\ETL\\Adapter\\Doctrine\\": [
168169
"src/adapter/etl-adapter-doctrine/src/Flow/ETL/Adapter/Doctrine"
170+
],
171+
"Flow\\Tool\\PHPUnit\\Telemetry\\": [
172+
"tools/phpunit/extension/telemetry/src/Flow/Tool/PHPUnit/Telemetry"
169173
]
170174
},
171175
"files": [
@@ -258,6 +262,9 @@
258262
],
259263
"Flow\\ETL\\Adapter\\Doctrine\\Tests\\": [
260264
"src/adapter/etl-adapter-doctrine/tests/Flow/ETL/Adapter/Doctrine/Tests"
265+
],
266+
"Flow\\Tool\\PHPUnit\\Telemetry\\Tests\\": [
267+
"tools/phpunit/extension/telemetry/tests/Flow/Tool/PHPUnit/Telemetry/Tests"
261268
]
262269
}
263270
},
@@ -464,6 +471,9 @@
464471
"tools/phpunit/vendor/bin/phpunit --testsuite=adapter-postgresql-unit --log-junit ./var/phpunit/logs/adapter-postgresql-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-postgresql-unit.coverage.xml",
465472
"tools/phpunit/vendor/bin/phpunit --testsuite=adapter-postgresql-integration --log-junit ./var/phpunit/logs/adapter-postgresql-integration.junit.xml --coverage-clover=./var/phpunit/coverage/clover/adapter-postgresql-integration.coverage.xml"
466473
],
474+
"test:tool:phpunit-telemetry": [
475+
"tools/phpunit/vendor/bin/phpunit --testsuite=tool-phpunit-telemetry-unit --log-junit ./var/phpunit/logs/tool-phpunit-telemetry-unit.junit.xml --coverage-clover=./var/phpunit/coverage/clover/tool-phpunit-telemetry-unit.coverage.xml"
476+
],
467477
"test:docs": [
468478
"docker run -t --rm -v $PWD:/app norberttech/md-link-linter --exclude=vendor --exclude=.scratchpad --exclude=examples --exclude=documentation ."
469479
],

docker/.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1-
otel-collector-dev-config.yaml
1+
otel-collector-*-config.yaml
2+
!otel-collector-test-config.yaml
23
signoz/

docker/otel-collector-config.yaml

Lines changed: 140 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,140 @@
1+
receivers:
2+
otlp:
3+
protocols:
4+
grpc:
5+
endpoint: 0.0.0.0:4317
6+
http:
7+
endpoint: 0.0.0.0:4318
8+
9+
# PostgreSQL metrics receiver
10+
# Docs: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/postgresqlreceiver
11+
postgresql:
12+
endpoint: postgres:5432
13+
transport: tcp
14+
username: postgres
15+
password: postgres
16+
databases:
17+
- postgres
18+
collection_interval: 10s
19+
tls:
20+
insecure: true
21+
22+
# MySQL metrics receiver
23+
# Docs: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/mysqlreceiver
24+
mysql:
25+
endpoint: mysql:3306
26+
username: root
27+
password: root
28+
database: mysql
29+
collection_interval: 10s
30+
tls:
31+
insecure: true
32+
33+
# Redis metrics receiver
34+
# Docs: https://github.com/open-telemetry/opentelemetry-collector-contrib/tree/main/receiver/redisreceiver
35+
redis:
36+
endpoint: redis:6379
37+
collection_interval: 10s
38+
tls:
39+
insecure: true
40+
41+
exporters:
42+
debug:
43+
verbosity: basic
44+
otlp_grpc/aspire:
45+
endpoint: aspire:18889
46+
tls:
47+
insecure: true
48+
49+
processors:
50+
# Add service.name to PostgreSQL metrics
51+
resource/postgresql:
52+
attributes:
53+
- key: service.name
54+
value: postgresql
55+
action: upsert
56+
- key: service.namespace
57+
value: flow-php
58+
action: upsert
59+
60+
# Add service.name to MySQL metrics
61+
resource/mysql:
62+
attributes:
63+
- key: service.name
64+
value: mysql
65+
action: upsert
66+
- key: service.namespace
67+
value: flow-php
68+
action: upsert
69+
70+
# Add service.name to Redis metrics
71+
resource/redis:
72+
attributes:
73+
- key: service.name
74+
value: redis
75+
action: upsert
76+
- key: service.namespace
77+
value: flow-php
78+
action: upsert
79+
80+
extensions:
81+
health_check:
82+
endpoint: 0.0.0.0:13133
83+
84+
service:
85+
extensions: [health_check]
86+
telemetry:
87+
traces:
88+
sampler:
89+
trace_id_ratio_based:
90+
ratio: 0.1
91+
processors:
92+
- batch:
93+
exporter:
94+
otlp:
95+
protocol: http/protobuf
96+
endpoint: http://localhost:4318
97+
metrics:
98+
level: detailed
99+
readers:
100+
- pull:
101+
exporter:
102+
prometheus:
103+
host: '0.0.0.0'
104+
port: 8888
105+
- periodic:
106+
exporter:
107+
otlp:
108+
protocol: grpc
109+
endpoint: http://aspire:18889
110+
insecure: true
111+
logs:
112+
level: warn
113+
processors:
114+
- batch:
115+
exporter:
116+
otlp:
117+
protocol: http/protobuf
118+
endpoint: http://localhost:4318
119+
pipelines:
120+
traces:
121+
receivers: [otlp]
122+
exporters: [debug, otlp_grpc/aspire]
123+
metrics:
124+
receivers: [otlp]
125+
exporters: [debug, otlp_grpc/aspire]
126+
metrics/postgresql:
127+
receivers: [postgresql]
128+
processors: [resource/postgresql]
129+
exporters: [debug, otlp_grpc/aspire]
130+
metrics/mysql:
131+
receivers: [mysql]
132+
processors: [resource/mysql]
133+
exporters: [debug, otlp_grpc/aspire]
134+
metrics/redis:
135+
receivers: [redis]
136+
processors: [resource/redis]
137+
exporters: [debug, otlp_grpc/aspire]
138+
logs:
139+
receivers: [otlp]
140+
exporters: [debug, otlp_grpc/aspire]

docker/otel-collector-test-config.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,16 @@ extensions:
1515
endpoint: 0.0.0.0:13133
1616

1717
service:
18-
extensions: [health_check]
1918
telemetry:
2019
metrics:
20+
level: detailed
2121
readers:
2222
- pull:
2323
exporter:
2424
prometheus:
2525
host: '0.0.0.0'
2626
port: 8888
27+
extensions: [health_check]
2728
pipelines:
2829
traces:
2930
receivers: [otlp]

documentation/components/libs/postgresql.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,7 @@ See [Type System](/documentation/components/libs/postgresql/client-types.md) for
350350
- [Type System](/documentation/components/libs/postgresql/client-types.md) - Value converters, TypedValue, custom types
351351
- [Query Plan Analysis](/documentation/components/libs/postgresql/client-explain.md) - EXPLAIN ANALYZE, plan insights,
352352
performance debugging
353+
- [Telemetry](/documentation/components/libs/postgresql/client-telemetry.md) - OpenTelemetry tracing and metrics
353354

354355
---
355356

0 commit comments

Comments
 (0)