feat(infra-dev): add opentelemetry and grafana (#12808)

This commit is contained in:
Antoine Moreaux
2025-06-24 12:13:24 +02:00
committed by GitHub
parent c56ccf7ed9
commit 9aaa104ec0
4 changed files with 78 additions and 9 deletions

View File

@ -1,5 +1,11 @@
DOCKER_NETWORK=twenty_network
ensure-docker-network:
docker network inspect $(DOCKER_NETWORK) >/dev/null 2>&1 || docker network create $(DOCKER_NETWORK)
postgres-on-docker: postgres-on-docker:
docker run -d \ make ensure-docker-network
docker run -d --network $(DOCKER_NETWORK) \
--name twenty_pg \ --name twenty_pg \
-e POSTGRES_USER=postgres \ -e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=postgres \ -e POSTGRES_PASSWORD=postgres \
@ -17,7 +23,31 @@ postgres-on-docker:
-c "CREATE DATABASE \"test\" WITH OWNER postgres;" -c "CREATE DATABASE \"test\" WITH OWNER postgres;"
redis-on-docker: redis-on-docker:
docker run -d --name twenty_redis -p 6379:6379 redis/redis-stack-server:latest make ensure-docker-network
docker run -d --network $(DOCKER_NETWORK) --name twenty_redis -p 6379:6379 redis/redis-stack-server:latest
clickhouse-on-docker: clickhouse-on-docker:
docker run -d --name twenty_clickhouse -p 8123:8123 -p 9000:9000 -e CLICKHOUSE_PASSWORD=clickhousePassword clickhouse/clickhouse-server:latest \ make ensure-docker-network
docker run -d --network $(DOCKER_NETWORK) --name twenty_clickhouse -p 8123:8123 -p 9000:9000 -e CLICKHOUSE_PASSWORD=devPassword clickhouse/clickhouse-server:latest \
grafana-on-docker:
make ensure-docker-network
docker run -d --network $(DOCKER_NETWORK) \
--name twenty_grafana \
-p 4000:3000 \
-e GF_SECURITY_ADMIN_USER=admin \
-e GF_SECURITY_ADMIN_PASSWORD=admin \
-e GF_INSTALL_PLUGINS=grafana-clickhouse-datasource \
-v $(PWD)/packages/twenty-docker/grafana/provisioning/datasources:/etc/grafana/provisioning/datasources \
grafana/grafana-oss:latest
opentelemetry-collector-on-docker:
make ensure-docker-network
docker run -d --network $(DOCKER_NETWORK) \
--name twenty_otlp_collector \
-p 4317:4317 \
-p 4318:4318 \
-p 13133:13133 \
-v $(PWD)/packages/twenty-docker/otel-collector/otel-collector-config.yaml:/etc/otel-collector-config.yaml \
otel/opentelemetry-collector-contrib:latest \
--config /etc/otel-collector-config.yaml

View File

@ -0,0 +1,15 @@
apiVersion: 1
datasources:
- name: ClickHouse
type: grafana-clickhouse-datasource
uid: clickhouse_datasource
jsonData:
server: twenty_clickhouse
defaultDatabase: twenty_dev
port: 9000
protocol: native
tlsSkipVerify: true
username: default
secureJsonData:
password: devPassword

View File

@ -0,0 +1,24 @@
receivers:
otlp:
protocols:
http:
endpoint: "0.0.0.0:4318"
exporters:
clickhouse:
endpoint: tcp://twenty_clickhouse:9000
database: twenty_dev
username: default
password: devPassword
debug:
verbosity: detailed
processors:
batch:
service:
pipelines:
metrics:
receivers: [otlp]
processors: [batch]
exporters: [clickhouse, debug]

View File

@ -57,12 +57,12 @@ export class MetricsService {
const date = Date.now(); const date = Date.now();
for (const metric of metrics) { for (const metric of metrics) {
const metricValue = await this.metricsCacheService.computeCount({ groupedMetrics[metric.name] = await this.metricsCacheService.computeCount(
key: metric.cacheKey, {
date, key: metric.cacheKey,
}); date,
},
groupedMetrics[metric.name] = metricValue; );
} }
return groupedMetrics; return groupedMetrics;