Skip to content

Commit 455de2e

Browse files
committed
Refactoring TFO-Python-SDK for adopting TFO-Collector v1.1.2 Native OCB
1 parent 6bb4a2f commit 455de2e

22 files changed

+1834
-328
lines changed

.env.example

Lines changed: 105 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,95 +1,148 @@
11
# =============================================================================
2-
# TelemetryFlow Python SDK - Environment Variables
2+
# TelemetryFlow Python SDK - Environment Configuration
33
# =============================================================================
4-
# Copy this file to .env and update the values as needed
4+
# Copy this file to .env and update the values
5+
# Compatible with TFO-Collector v1.1.2 (OCB-native)
56
# =============================================================================
67

78
# -----------------------------------------------------------------------------
8-
# Build Configuration
9+
# SDK VERSION
910
# -----------------------------------------------------------------------------
10-
VERSION=1.1.1
11-
GIT_COMMIT=unknown
11+
VERSION=1.1.2
12+
GIT_COMMIT=
1213
GIT_BRANCH=main
13-
BUILD_TIME=unknown
14+
BUILD_TIME=
1415

1516
# -----------------------------------------------------------------------------
16-
# TelemetryFlow API Credentials
17+
# DOCKER IMAGES
1718
# -----------------------------------------------------------------------------
18-
# Get your API keys from https://app.telemetryflow.id
19+
IMAGE_NAME=telemetryflow/telemetryflow-python-sdk
20+
IMAGE_TAG=1.1.2
1921

20-
TELEMETRYFLOW_API_KEY_ID=tfk_your_key_id
21-
TELEMETRYFLOW_API_KEY_SECRET=tfs_your_key_secret
22+
# Container names
23+
CONTAINER_NAME=telemetryflow-python-sdk
24+
CONTAINER_NAME_RESTAPI=telemetryflow-python-restapi
2225

2326
# -----------------------------------------------------------------------------
24-
# Service Configuration
27+
# OPENTELEMETRY COLLECTOR
2528
# -----------------------------------------------------------------------------
26-
# Unique name for your service
27-
TELEMETRYFLOW_SERVICE_NAME=my-python-service
29+
OTEL_VERSION=0.142.0
30+
TFO_COLLECTOR_VERSION=1.1.2
2831

29-
# Service version (semver recommended)
30-
TELEMETRYFLOW_SERVICE_VERSION=1.0.0
32+
# Collector ports
33+
OTLP_GRPC_PORT=4317
34+
OTLP_HTTP_PORT=4318
35+
OTEL_METRICS_PORT=8888
36+
OTEL_HEALTH_PORT=13133
3137

32-
# Service namespace for multi-tenant support
33-
TELEMETRYFLOW_SERVICE_NAMESPACE=telemetryflow
38+
# -----------------------------------------------------------------------------
39+
# JAEGER (Tracing)
40+
# -----------------------------------------------------------------------------
41+
JAEGER_UI_PORT=16686
42+
JAEGER_HTTP_PORT=14268
43+
JAEGER_GRPC_PORT=14250
3444

3545
# -----------------------------------------------------------------------------
36-
# Connection Settings
46+
# PROMETHEUS (Metrics)
3747
# -----------------------------------------------------------------------------
38-
# OTLP collector endpoint
39-
TELEMETRYFLOW_ENDPOINT=api.telemetryflow.id:4317
48+
PROMETHEUS_PORT=9090
4049

41-
# Use insecure connection (for local development)
42-
TELEMETRYFLOW_INSECURE=false
50+
# -----------------------------------------------------------------------------
51+
# GRAFANA (Dashboards)
52+
# -----------------------------------------------------------------------------
53+
GRAFANA_PORT=3000
54+
GRAFANA_USER=admin
55+
GRAFANA_PASSWORD=admin
4356

44-
# Deployment environment (production, staging, development)
57+
# -----------------------------------------------------------------------------
58+
# TELEMETRYFLOW SDK - Core Settings
59+
# -----------------------------------------------------------------------------
60+
TELEMETRYFLOW_API_KEY_ID=tfk_your_key_id
61+
TELEMETRYFLOW_API_KEY_SECRET=tfs_your_key_secret
62+
TELEMETRYFLOW_ENDPOINT=localhost:4317
63+
TELEMETRYFLOW_SERVICE_NAME=my-service
64+
TELEMETRYFLOW_SERVICE_VERSION=1.1.2
65+
TELEMETRYFLOW_SERVICE_NAMESPACE=telemetryflow
4566
TELEMETRYFLOW_ENVIRONMENT=development
67+
TELEMETRYFLOW_INSECURE=true
4668

4769
# -----------------------------------------------------------------------------
48-
# Collector Configuration
70+
# TELEMETRYFLOW SDK - TFO v2 API Settings (aligned with tfoexporter)
4971
# -----------------------------------------------------------------------------
50-
# Unique collector ID for distributed collectors
51-
# TELEMETRYFLOW_COLLECTOR_ID=collector-001
72+
# Enable TFO v2 API (default: true)
73+
TELEMETRYFLOW_USE_V2_API=true
5274

53-
# TelemetryFlow backend (if using local collector)
54-
# TELEMETRYFLOW_API_ENDPOINT=http://localhost:3100
75+
# Enable v2-only mode - disables v1 endpoints (default: false)
76+
TELEMETRYFLOW_V2_ONLY=false
5577

56-
# Tenant and workspace (for multi-tenant deployments)
57-
# TELEMETRYFLOW_TENANT_ID=default
58-
# TELEMETRYFLOW_WORKSPACE_ID=default
78+
# Custom endpoint paths (defaults to v2 when USE_V2_API=true)
79+
# TELEMETRYFLOW_TRACES_ENDPOINT=/v2/traces
80+
# TELEMETRYFLOW_METRICS_ENDPOINT=/v2/metrics
81+
# TELEMETRYFLOW_LOGS_ENDPOINT=/v2/logs
5982

6083
# -----------------------------------------------------------------------------
61-
# Telemetry Feature Flags
84+
# TELEMETRYFLOW SDK - Collector Identity (aligned with tfoidentityextension)
6285
# -----------------------------------------------------------------------------
63-
TELEMETRYFLOW_ENABLE_METRICS=true
64-
TELEMETRYFLOW_ENABLE_LOGS=true
65-
TELEMETRYFLOW_ENABLE_TRACES=true
86+
TELEMETRYFLOW_COLLECTOR_ID=
87+
TELEMETRYFLOW_COLLECTOR_NAME=TelemetryFlow Python SDK
88+
TELEMETRYFLOW_COLLECTOR_HOSTNAME=
89+
TELEMETRYFLOW_DATACENTER=default
90+
91+
# Enable resource enrichment (default: true)
92+
TELEMETRYFLOW_ENRICH_RESOURCES=true
6693

6794
# -----------------------------------------------------------------------------
68-
# Batch Processing Configuration
95+
# TELEMETRYFLOW SDK - Protocol Settings
6996
# -----------------------------------------------------------------------------
70-
TELEMETRYFLOW_BATCH_SIZE=512
71-
TELEMETRYFLOW_BATCH_TIMEOUT=5s
97+
# Protocol: grpc or http (default: grpc)
98+
TELEMETRYFLOW_PROTOCOL=grpc
99+
100+
# Enable compression (default: false)
101+
TELEMETRYFLOW_COMPRESSION=false
102+
103+
# Timeout in seconds (default: 10)
104+
TELEMETRYFLOW_TIMEOUT=10
72105

73106
# -----------------------------------------------------------------------------
74-
# Network Configuration (for local development)
107+
# TELEMETRYFLOW SDK - Retry Settings
75108
# -----------------------------------------------------------------------------
76-
# OTLP gRPC receiver port
77-
OTLP_GRPC_PORT=4317
109+
# Enable retry (default: true)
110+
TELEMETRYFLOW_RETRY_ENABLED=true
78111

79-
# OTLP HTTP receiver port
80-
OTLP_HTTP_PORT=4318
112+
# Max retries (default: 3)
113+
TELEMETRYFLOW_MAX_RETRIES=3
81114

82-
# Prometheus metrics port (self-observability)
83-
METRICS_PORT=8888
115+
# Retry backoff in milliseconds (default: 500)
116+
TELEMETRYFLOW_RETRY_BACKOFF=500
84117

85-
# Prometheus exporter port
86-
PROMETHEUS_EXPORTER_PORT=8889
118+
# -----------------------------------------------------------------------------
119+
# TELEMETRYFLOW SDK - Batch Settings
120+
# -----------------------------------------------------------------------------
121+
# Batch timeout in milliseconds (default: 5000)
122+
TELEMETRYFLOW_BATCH_TIMEOUT=5000
87123

88-
# Health check port
89-
HEALTH_PORT=13133
124+
# Max batch size (default: 512)
125+
TELEMETRYFLOW_BATCH_MAX_SIZE=512
126+
127+
# -----------------------------------------------------------------------------
128+
# TELEMETRYFLOW SDK - Signals
129+
# -----------------------------------------------------------------------------
130+
# Enable specific signals (all enabled by default)
131+
TELEMETRYFLOW_ENABLE_TRACES=true
132+
TELEMETRYFLOW_ENABLE_METRICS=true
133+
TELEMETRYFLOW_ENABLE_LOGS=true
134+
135+
# Enable exemplars for metrics-to-traces correlation (default: true)
136+
TELEMETRYFLOW_ENABLE_EXEMPLARS=true
137+
138+
# -----------------------------------------------------------------------------
139+
# TELEMETRYFLOW SDK - Rate Limiting
140+
# -----------------------------------------------------------------------------
141+
# Maximum requests per second (0 = unlimited)
142+
TELEMETRYFLOW_RATE_LIMIT=0
90143

91144
# -----------------------------------------------------------------------------
92-
# Logging Configuration
145+
# LOGGING
93146
# -----------------------------------------------------------------------------
94147
LOG_LEVEL=info
95148
LOG_FORMAT=json
@@ -104,7 +157,7 @@ APP_PORT=8080
104157
APP_DEBUG=false
105158

106159
# -----------------------------------------------------------------------------
107-
# Database Configuration (for RESTful API generator)
160+
# DATABASE (for RESTful API generator)
108161
# -----------------------------------------------------------------------------
109162
DB_DRIVER=postgresql
110163
DB_HOST=localhost
@@ -114,7 +167,7 @@ DB_USER=postgres
114167
DB_PASSWORD=
115168

116169
# -----------------------------------------------------------------------------
117-
# Security Configuration (for RESTful API generator)
170+
# SECURITY (for RESTful API generator)
118171
# -----------------------------------------------------------------------------
119172
SECRET_KEY=change-me-in-production
120173
JWT_SECRET_KEY=change-me-in-production

CHANGELOG.md

Lines changed: 86 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
<h3>TelemetryFlow Python SDK</h3>
99

10-
[![Version](https://img.shields.io/badge/Version-1.1.1-orange.svg)](CHANGELOG.md)
10+
[![Version](https://img.shields.io/badge/Version-1.1.2-orange.svg)](CHANGELOG.md)
1111
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
1212
[![Python](https://img.shields.io/badge/Python-3.12+-blue.svg)](https://python.org)
1313
[![OTEL SDK](https://img.shields.io/badge/OpenTelemetry_SDK-1.28.0-blueviolet)](https://opentelemetry.io/)
@@ -30,10 +30,95 @@ All notable changes to this project will be documented in this file.
3030
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
3131
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
3232

33+
## [1.1.2] - 2025-01-04
34+
35+
### Added
36+
37+
- **TFO v2 API Configuration Alignment**: Updated SDK configuration to align with TFO-Collector v1.1.2 (OCB-native)
38+
- Added `v2_api` configuration section with `enabled` and `v2_only` options
39+
- Added custom endpoint paths support (`traces_endpoint`, `metrics_endpoint`, `logs_endpoint`)
40+
- Aligned with `tfoexporter` component for consistent API versioning
41+
42+
- **Collector Identity Support**: Added collector identity configuration aligned with `tfoidentityextension`
43+
- Collector ID, name, description, hostname, and datacenter settings
44+
- Custom tags support for collector identification
45+
- Resource attribute enrichment toggle
46+
47+
- **SDK Configuration Files**: Added default configuration files for different use cases
48+
- `configs/sdk-default.yaml` - Full SDK configuration with all options
49+
- `configs/sdk-v2-only.yaml` - Production-optimized v2-only mode
50+
- `configs/sdk-minimal.yaml` - Quick-start minimal configuration
51+
52+
- **Enhanced Environment Variables**: Updated `.env.example` with TFO v2 API settings
53+
- `TELEMETRYFLOW_USE_V2_API` - Enable/disable v2 API endpoints
54+
- `TELEMETRYFLOW_V2_ONLY` - Enable v2-only mode
55+
- `TELEMETRYFLOW_COLLECTOR_NAME` - Human-readable collector name
56+
- `TELEMETRYFLOW_DATACENTER` - Datacenter/region identifier
57+
- `TELEMETRYFLOW_ENRICH_RESOURCES` - Resource attribute enrichment
58+
59+
- **Command Generator Updates**: Updated `telemetryflow-gen` CLI with TFO v2 API support
60+
- Added `--use-v2-api`, `--v2-only`, `--collector-name`, `--datacenter`, `--protocol` CLI options
61+
- Updated `TemplateData` class with TFO v2 API fields
62+
- Updated all templates (`env.tpl`, `init.py.tpl`, `example_basic.py.tpl`, `README.md.tpl`) for v2 API
63+
- Added `init_v2_only()` convenience function in generated code
64+
- Templates now include SDK version and TFO-Collector version metadata
65+
66+
- **Unit Tests**: Added comprehensive unit tests for TFO v2 API features
67+
- Tests for `TemplateData` v2 API fields and serialization
68+
- Tests for CLI v2 API options (`--v2-only`, `--collector-name`, etc.)
69+
- Tests for template rendering with v2 API variables
70+
71+
- **Examples**: Updated examples with TFO v2 API documentation
72+
- Updated `examples/basic/main.py` with v2 API usage
73+
74+
### Changed
75+
76+
- Updated version to 1.1.2 to align with TFO-Collector v1.1.2 release
77+
- Default endpoint changed from `api.telemetryflow.id:4317` to `localhost:4317` for development
78+
- Added `TELEMETRYFLOW_PROTOCOL` and `TELEMETRYFLOW_TIMEOUT` environment variables
79+
80+
### SDK Configuration Structure
81+
82+
```yaml
83+
# TFO v2 API Configuration
84+
v2_api:
85+
enabled: true
86+
v2_only: false
87+
traces_endpoint: "/v2/traces"
88+
metrics_endpoint: "/v2/metrics"
89+
logs_endpoint: "/v2/logs"
90+
91+
# Collector Identity
92+
collector:
93+
id: "${TELEMETRYFLOW_COLLECTOR_ID:}"
94+
name: "TelemetryFlow Python SDK"
95+
datacenter: "default"
96+
enrich_resources: true
97+
tags:
98+
sdk_version: "1.1.2"
99+
sdk_language: "python"
100+
```
101+
102+
---
103+
33104
## [1.1.1] - 2024-12-30
34105
35106
### Added
36107
108+
- **Dual Endpoint Ingestion Support**: Updated docker-compose and OTEL collector configs for TFO-Collector dual ingestion
109+
- v1 endpoints: Standard OTEL community format (`/v1/traces`, `/v1/metrics`, `/v1/logs`)
110+
- v2 endpoints: TelemetryFlow enhanced format (`/v2/traces`, `/v2/metrics`, `/v2/logs`)
111+
- gRPC endpoint: Same port (4317) for both v1 and v2
112+
- **TFO-Collector as Default**: Docker-compose now uses `telemetryflow/telemetryflow-collector` as default image
113+
- Commented alternatives for TFO-Collector-OCB and OTEL Collector Contrib
114+
- Separate volume mounts for each collector type
115+
- **Enhanced Port Configuration**: Added additional ports for observability
116+
- zPages (55679) for debugging
117+
- pprof (1777) for profiling
118+
- Prometheus exporter (8889)
119+
- **Connectors for Exemplars**: Added spanmetrics and servicegraph connectors
120+
- Metrics-to-traces correlation with exemplars enabled
121+
- Service dependency graph generation
37122
- Template-based code generation for `telemetryflow-gen` CLI
38123
- Template-based code generation for `telemetryflow-restapi` CLI
39124
- External `.tpl` template files for all generated code

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
<h3>TelemetryFlow Python SDK</h3>
99

10-
[![Version](https://img.shields.io/badge/Version-1.1.1-orange.svg)](CHANGELOG.md)
10+
[![Version](https://img.shields.io/badge/Version-1.1.2-orange.svg)](CHANGELOG.md)
1111
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
1212
[![Python](https://img.shields.io/badge/Python-3.12+-blue.svg)](https://python.org)
1313
[![OTEL SDK](https://img.shields.io/badge/OpenTelemetry_SDK-1.28.0-blueviolet)](https://opentelemetry.io/)

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
<h3>TelemetryFlow Python SDK</h3>
99

10-
[![Version](https://img.shields.io/badge/Version-1.1.1-orange.svg)](CHANGELOG.md)
10+
[![Version](https://img.shields.io/badge/Version-1.1.2-orange.svg)](CHANGELOG.md)
1111
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
1212
[![Python](https://img.shields.io/badge/Python-3.12+-blue.svg)](https://python.org)
1313
[![OTEL SDK](https://img.shields.io/badge/OpenTelemetry_SDK-1.28.0-blueviolet)](https://opentelemetry.io/)

SECURITY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
<h3>TelemetryFlow Python SDK</h3>
99

10-
[![Version](https://img.shields.io/badge/Version-1.1.1-orange.svg)](CHANGELOG.md)
10+
[![Version](https://img.shields.io/badge/Version-1.1.2-orange.svg)](CHANGELOG.md)
1111
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
1212
[![Python](https://img.shields.io/badge/Python-3.12+-blue.svg)](https://python.org)
1313
[![OTEL SDK](https://img.shields.io/badge/OpenTelemetry_SDK-1.28.0-blueviolet)](https://opentelemetry.io/)

0 commit comments

Comments
 (0)