Managed Service for OpenTelemetry mendukung penerimaan data jejak, metrik, dan log dari aplikasi dengan dua metode pelaporan: langsung atau melalui OpenTelemetry Collector.
Persiapan
Untuk melaporkan data log, aktifkan Simple Log Service (SLS), buat Proyek dan Logstore, serta buat pasangan AccessKey.
Lihat variabel, tipe data, dan metode pelaporan dalam tabel berikut untuk menyiapkan titik akhir dan informasi otentikasi yang diperlukan. Untuk detail lebih lanjut, lihat Persiapkan Penggunaan Managed Service for OpenTelemetry.
Skenario
Nama Variabel
Deskripsi
Contoh
Melaporkan data jejak dan metrik
Melaporkan melalui gRPC
${GRPC_ENDPOINT}
Titik akhir pelaporan gRPC dari Managed Service for OpenTelemetry, yang mendukung pelaporan data jejak dan metrik.
Jika layanan Anda diterapkan di Alibaba Cloud dan berada di wilayah yang sama dengan Managed Service for OpenTelemetry, kami sarankan Anda menggunakan alamat jaringan internal Alibaba Cloud. Jika tidak, gunakan alamat jaringan publik.
Alamat jaringan internal: http://tracing-analysis-dc-hz-internal.aliyuncs.com:8090
Alamat jaringan publik: http://tracing-analysis-dc-hz.aliyuncs.com:8090
${GRPC_AUTHENTICATION_TOKEN}
Token otentikasi yang diperlukan saat menggunakan gRPC untuk melaporkan data ke Managed Service for OpenTelemetry. Untuk informasi tentang cara mendapatkan token, lihat Persiapkan Penggunaan Managed Service for OpenTelemetry.
abcdef1234@abcdef****56789_abcdef1234@abcdef****56789
Melaporkan melalui HTTP
${HTTP_TRACES_ENDPOINT}
Titik akhir pelaporan HTTP dari Managed Service for OpenTelemetry, yang mendukung pelaporan data jejak.
Jika layanan Anda diterapkan di Alibaba Cloud dan berada di wilayah yang sama dengan Managed Service for OpenTelemetry, kami sarankan Anda menggunakan alamat jaringan internal Alibaba Cloud. Jika tidak, gunakan alamat jaringan publik.
Alamat jaringan internal: http://tracing-analysis-dc-hz-internal.aliyuncs.com/adapt_***_***/api/otlp/traces
Alamat jaringan publik: http://tracing-analysis-dc-hz.aliyuncs.com/adapt_***_***/api/otlp/traces
${HTTP_METRICS_ENDPOINT}
Titik akhir pelaporan HTTP dari Managed Service for OpenTelemetry, yang mendukung pelaporan data metrik.
Jika layanan Anda diterapkan di Alibaba Cloud dan berada di wilayah yang sama dengan Managed Service for OpenTelemetry, kami sarankan Anda menggunakan alamat jaringan internal Alibaba Cloud. Jika tidak, gunakan alamat jaringan publik.
Alamat jaringan internal: http://tracing-analysis-dc-hz-internal.aliyuncs.com/adapt_***_***/api/otlp/metrics
Alamat jaringan publik: http://tracing-analysis-dc-hz.aliyuncs.com/adapt_***_***/api/otlp/metrics
Melaporkan data log
${SLS_ENDPOINT}
Titik akhir proyek SLS. Variabel ini hanya diperlukan jika Anda melaporkan data log. Untuk informasi tentang cara mendapatkan titik akhir, lihat Titik Akhir.
test-project.cn-hangzhou.log.aliyuncs.com
${SLS_PROJECT}
Nama proyek SLS. Variabel ini hanya diperlukan jika Anda melaporkan data log.
test-project
${SLS_LOGSTORE}
Nama Logstore SLS. Variabel ini hanya diperlukan jika Anda melaporkan data log.
test-logstore
${ALIYUN_ACCESS_KEY_ID}
ID AccessKey akun Alibaba Cloud Anda. Variabel ini hanya diperlukan jika Anda melaporkan data log.
Kami sarankan Anda menggunakan pasangan AccessKey (termasuk ID dan rahasia) dari pengguna RAM yang hanya memiliki izin menulis pada proyek SLS. Untuk informasi tentang cara memberikan izin kepada pengguna RAM untuk menulis data ke proyek tertentu, lihat Contoh Penggunaan Kebijakan Kustom untuk Memberikan Izin kepada Pengguna RAM. Untuk informasi tentang cara mendapatkan pasangan AccessKey, lihat Pasangan AccessKey.
Tidak ada
${ALIYUN_ACCESS_KEY_SECRET}
Rahasia AccessKey akun Alibaba Cloud Anda. Variabel ini hanya diperlukan jika Anda melaporkan data log.
Kami sarankan Anda menggunakan pasangan AccessKey (termasuk ID dan rahasia) dari pengguna RAM yang hanya memiliki izin menulis pada proyek SLS.
Tidak ada
Pelaporan Langsung
Dengan mengonfigurasi titik akhir pelaporan dan token otentikasi agen atau SDK OpenTelemetry, Anda dapat mengirim data jejak dan metrik yang dikumpulkan oleh OpenTelemetry langsung ke server Managed Service for OpenTelemetry.
Metode 1: Konfigurasikan pengaturan pelaporan dalam kode
Contoh kode Java berikut menunjukkan cara mengonfigurasi informasi titik akhir Managed Service for OpenTelemetry untuk melaporkan data melalui HTTP dan gRPC. Kunjungi Pusat Integrasi atau lihat Gunakan OpenTelemetry untuk Melaporkan Data Jejak Aplikasi Java untuk melihat kode lengkap dan demo.
Melaporkan melalui HTTP
...
// Laporkan data jejak
SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
.addSpanProcessor(BatchSpanProcessor.builder(OtlpHttpSpanExporter.builder()
.setEndpoint("${HTTP_TRACES_ENDPOINT}") // Setel titik akhir HTTP untuk melaporkan data jejak ke Managed Service for OpenTelemetry.
.build()).build())
.build();
// Laporkan data metrik
SdkMeterProvider sdkMeterProvider = SdkMeterProvider.builder()
.registerMetricReader(PeriodicMetricReader.builder(OtlpHttpMetricExporter.builder()
.setEndpoint("${HTTP_METRICS_ENDPOINT}") // Setel titik akhir HTTP untuk melaporkan data metrik ke Managed Service for OpenTelemetry.
.build()).build())
.build();
...Melaporkan melalui gRPC
...
// Laporkan data jejak
SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
.addSpanProcessor(BatchSpanProcessor.builder(OtlpGrpcSpanExporter.builder()
.setEndpoint("${GRPC_AUTHENTICATION_TOKEN}") // Setel titik akhir gRPC untuk melaporkan data jejak ke Managed Service for OpenTelemetry.
.addHeader("Authentication","${GRPC_AUTHENTICATION_TOKEN}") // Setel token otentikasi untuk Managed Service for OpenTelemetry.
.build()).build())
.setResource(resource)
.build();
// Laporkan data metrik
SdkMeterProvider sdkMeterProvider = SdkMeterProvider.builder()
.registerMetricReader(PeriodicMetricReader.builder(OtlpGrpcMetricExporter.builder()
.setEndpoint("${GRPC_METRICS_ENDPOINT}") // Setel titik akhir gRPC untuk melaporkan data jejak ke Managed Service for OpenTelemetry.
.addHeader("Authentication", "${GRPC_AUTHENTICATION_TOKEN}") // Setel token otentikasi untuk Managed Service for OpenTelemetry.
.build()).build())
.setResource(resource)
.build();
...Metode 2: Konfigurasikan pengaturan pelaporan melalui variabel lingkungan
OpenTelemetry juga mendukung konfigurasi titik akhir pelaporan melalui variabel lingkungan, seperti tercantum dalam tabel berikut. Untuk variabel lingkungan Protokol OpenTelemetry lainnya, lihat Konfigurasi OTLP Exporter.
Nama variabel lingkungan | Deskripsi | Contoh |
OTEL_SERVICE_NAME | Nama aplikasi. | export OTEL_SERVICE_NAME=opentelemetry-demo-service |
OTEL_EXPORTER_OTLP_PROTOCOL | Protokol pelaporan. Pelaporan jejak mendukung protokol berikut: grpc, http/protobuf, dan http/json. Pelaporan metrik mendukung protokol berikut: grpc dan http/protobuf. Saat Anda memilih titik akhir pelaporan gRPC, setel variabel ini ke | export OTEL_EXPORTER_OTLP_PROTOCOL=grpc |
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT | Titik akhir pelaporan jejak. Titik akhir HTTP dan gRPC didukung. Titik akhir pelaporan adalah nilai ${GRPC_ENDPOINT} atau ${HTTP_TRACES_ENDPOINT} yang diperoleh di Persiapan. |
|
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT | Titik akhir pelaporan metrik. Titik akhir HTTP dan gRPC didukung. Titik akhir pelaporan adalah nilai ${GRPC_ENDPOINT} atau ${HTTP_METRICS_ENDPOINT} yang diperoleh di Persiapan. |
|
OTEL_EXPORTER_OTLP_HEADERS | Informasi header permintaan untuk pelaporan gRPC, terutama digunakan untuk otentikasi. Formatnya adalah Authentication=${GRPC_AUTHENTICATION_TOKEN}, di mana ${GRPC_AUTHENTICATION_TOKEN} adalah token otentikasi yang diperoleh di Persiapan. | export OTEL_EXPORTER_OTLP_HEADERS=Authentication=abcdef1234@abcdef****56789_abcdef1234@abcdef****56789 |
Pengalihan melalui OpenTelemetry Collector
Informasi latar belakang
OpenTelemetry Collector (Core): Mendukung pelaporan data jejak dan metrik.
OpenTelemetry Collector (Contrib): Mendukung pelaporan data jejak, metrik, dan log.
Solusi 1: Terapkan OpenTelemetry Collector di klaster ACK melalui ACK Marketplace
ACK Marketplace saat ini hanya mendukung OpenTelemetry Collector (Core). Jika Anda perlu mengumpulkan log, gunakan Solusi 2.
1. Terapkan Collector
Masuk ke Konsol ACK. Di panel navigasi kiri, pilih .
Di halaman Marketplace, cari dan klik
opentelemetry-collector, lalu klik Deploy di pojok kanan atas halaman yang muncul.Di langkah Basic Information, pilih klaster dan namespace (default: otel-collector) tempat Anda ingin menerapkan
opentelemetry-collector, lalu klik Next.Di langkah Parameters, setel parameter mode ke
deploymentataudaemonset, lalu klik OK.
2. Konfigurasikan parameter Collector
Di halaman Clusters Konsol ACK, klik klaster ACK.
Di panel navigasi kiri, pilih .
Pilih namespace tempat opentelemetry-collector berada (default: otel-collector).
Di halaman ConfigMap, temukan opentelemetry-collector, lalu klik Edit YAML di kolom Actions.
Lihat file YAML berikut untuk mengonfigurasi bagian berikut: exporters, processors, receivers, dan service, lalu klik OK.
Konfigurasi opentelemetry-collector (melaporkan melalui gRPC)
exporters: otlp: endpoint: "${GRPC_ENDPOINT}" headers: Authentication: "${GRPC_AUTHENTICATION_TOKEN}" tls: insecure: true processors: batch: {} memory_limiter: check_interval: 5s # Interval untuk memeriksa penggunaan memori. Sesuaikan jika diperlukan. limit_percentage: 80 # Persentase maksimum penggunaan memori. Sesuaikan jika diperlukan. spike_limit_percentage: 25 # Persentase tambahan memori yang diizinkan untuk lonjakan. Sesuaikan jika diperlukan. receivers: otlp: protocols: grpc: endpoint: ${env:MY_POD_IP}:4317 http: endpoint: ${env:MY_POD_IP}:4318 service: pipelines: traces: exporters: [otlp] processors: [memory_limiter, batch] receivers: [otlp] metrics: exporters: [otlp] processors: [memory_limiter, batch] receivers: [otlp]Konfigurasi opentelemetry-collector (melaporkan melalui HTTP)
exporters: otlphttp: traces_endpoint: "${HTTP_TRACES_ENDPOINT}" metrics_endpoint: "${HTTP_METRICS_ENDPOINT}" tls: insecure: true timeout: 5s # Durasi batas waktu. Nilai default: 5s. Sesuaikan jika diperlukan. processors: batch: {} memory_limiter: check_interval: 5s # Interval untuk memeriksa penggunaan memori. Sesuaikan jika diperlukan. limit_percentage: 80 # Persentase maksimum penggunaan memori. Sesuaikan jika diperlukan. spike_limit_percentage: 25 # Persentase tambahan memori yang diizinkan untuk lonjakan. Sesuaikan jika diperlukan. receivers: otlp: protocols: grpc: endpoint: ${env:MY_POD_IP}:4317 http: endpoint: ${env:MY_POD_IP}:4318 service: pipelines: traces: exporters: [otlphttp] processors: [memory_limiter, batch] receivers: [otlp] metrics: exporters: [otlphttp] processors: [memory_limiter, batch] receivers: [otlp]Setelah konfigurasi selesai, mulai ulang opentelemetry-collector secara manual.
Solusi 2: Terapkan OpenTelemetry Collector menggunakan Docker
1. Tarik gambar
OpenTelemetry Collector (Core)
Untuk menentukan versi gambar, kunjungi https://hub.docker.com/r/otel/opentelemetry-collector/tags.
docker pull otel/opentelemetry-collector:latestOpenTelemetry Collector (Contrib)
Untuk menentukan versi gambar, kunjungi https://hub.docker.com/r/otel/opentelemetry-collector-contrib/tags.
docker pull otel/opentelemetry-collector-contrib:latest2. Siapkan file konfigurasi
Buat file config.yaml dan konfigurasikan parameter terkait.
Konfigurasi OpenTelemetry Collector (Core) (melaporkan melalui gRPC)
# config.yaml
exporters:
otlp:
endpoint: "${GRPC_ENDPOINT}"
headers:
Authentication: "${GRPC_AUTHENTICATION_TOKEN}"
tls:
insecure: true
processors:
batch: {}
memory_limiter:
check_interval: 5s # Interval untuk memeriksa penggunaan memori. Sesuaikan jika diperlukan.
limit_percentage: 80 # Persentase maksimum penggunaan memori. Sesuaikan jika diperlukan.
spike_limit_percentage: 25 # Persentase tambahan memori yang diizinkan untuk lonjakan. Sesuaikan jika diperlukan.
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317 # Nilai default adalah localhost:4317. Sesuaikan jika diperlukan.
http:
endpoint: 0.0.0.0:4318 # Nilai default adalah localhost:4318. Sesuaikan jika diperlukan.
service:
pipelines:
traces:
exporters: [otlp]
processors: [memory_limiter, batch]
receivers: [otlp]
metrics:
exporters: [otlp]
processors: [memory_limiter, batch]
receivers: [otlp]Konfigurasi OpenTelemetry Collector (Core) (melaporkan melalui HTTP)
# config.yaml
exporters:
otlphttp:
traces_endpoint: "${HTTP_TRACES_ENDPOINT}"
metrics_endpoint: "${HTTP_METRICS_ENDPOINT}"
tls:
insecure: true
timeout: 5s # Durasi batas waktu. Nilai default: 5s. Sesuaikan jika diperlukan.
processors:
batch: {}
memory_limiter:
check_interval: 5s # Interval untuk memeriksa penggunaan memori. Sesuaikan jika diperlukan.
limit_percentage: 80 # Persentase maksimum penggunaan memori. Sesuaikan jika diperlukan.
spike_limit_percentage: 25 # Persentase tambahan memori yang diizinkan untuk lonjakan. Sesuaikan jika diperlukan.
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317 # Nilai default adalah localhost:4317. Sesuaikan jika diperlukan.
http:
endpoint: 0.0.0.0:4318 # Nilai default adalah localhost:4318. Sesuaikan jika diperlukan.
service:
pipelines:
traces:
exporters: [otlphttp]
processors: [memory_limiter, batch]
receivers: [otlp]
metrics:
exporters: [otlphttp]
processors: [memory_limiter, batch]
receivers: [otlp]Konfigurasi OpenTelemetry Collector (Contrib) (melaporkan melalui gRPC)
# config.yaml
exporters:
otlp:
endpoint: "${GRPC_ENDPOINT}"
headers:
Authentication: "${GRPC_AUTHENTICATION_TOKEN}"
tls:
insecure: true
# Konfigurasi ekspor log (opsional)
alibabacloud_logservice/logs:
endpoint: "${SLS_ENDPOINT}"
project: "${SLS_PROJECT}"
logstore: "${SLS_LOGSTORE}"
access_key_id: "${ALIYUN_ACCESS_KEY_ID}"
access_key_secret: "${ALIYUN_ACCESS_KEY_SECRET}"
processors:
batch: {}
memory_limiter:
check_interval: 5s # Interval untuk memeriksa penggunaan memori. Sesuaikan jika diperlukan.
limit_percentage: 80 # Persentase maksimum penggunaan memori. Sesuaikan jika diperlukan.
spike_limit_percentage: 25 # Persentase tambahan memori yang diizinkan untuk lonjakan. Sesuaikan jika diperlukan.
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317 # Nilai default adalah localhost:4317. Sesuaikan jika diperlukan.
http:
endpoint: 0.0.0.0:4318 # Nilai default adalah localhost:4318. Sesuaikan jika diperlukan.
service:
pipelines:
traces:
exporters: [otlp]
processors: [memory_limiter, batch]
receivers: [otlp]
metrics:
exporters: [otlp]
processors: [memory_limiter, batch]
receivers: [otlp]
# Alur pemrosesan data log (opsional)
logs:
exporters: [alibabacloud_logservice/logs]
processors: [memory_limiter, batch]
receivers: [otlp]Konfigurasi OpenTelemetry Collector (Contrib) (melaporkan melalui HTTP)
# config.yaml
exporters:
otlphttp:
traces_endpoint: "${HTTP_TRACES_ENDPOINT}"
metrics_endpoint: "${HTTP_METRICS_ENDPOINT}"
tls:
insecure: true
timeout: 5s # Durasi batas waktu. Nilai default: 5s. Sesuaikan jika diperlukan.
# Konfigurasi ekspor log (opsional)
alibabacloud_logservice/logs:
endpoint: "${SLS_ENDPOINT}"
project: "${SLS_PROJECT}"
logstore: "${SLS_LOGSTORE}"
access_key_id: "${ALIYUN_ACCESS_KEY_ID}"
access_key_secret: "${ALIYUN_ACCESS_KEY_SECRET}"
processors:
batch: {}
memory_limiter:
check_interval: 5s # Interval untuk memeriksa penggunaan memori. Sesuaikan jika diperlukan.
limit_percentage: 80 # Persentase maksimum penggunaan memori. Sesuaikan jika diperlukan.
spike_limit_percentage: 25 # Persentase tambahan memori yang diizinkan untuk lonjakan. Sesuaikan jika diperlukan.
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317 # Nilai default adalah localhost:4317. Sesuaikan jika diperlukan.
http:
endpoint: 0.0.0.0:4318 # Nilai default adalah localhost:4318. Sesuaikan jika diperlukan.
service:
pipelines:
traces:
exporters: [otlphttp]
processors: [memory_limiter, batch]
receivers: [otlp]
metrics:
exporters: [otlphttp]
processors: [memory_limiter, batch]
receivers: [otlp]
# Alur pemrosesan data log (opsional)
logs:
exporters: [alibabacloud_logservice/logs]
processors: [memory_limiter, batch]
receivers: [otlp]3. Pasang dan jalankan file konfigurasi
OpenTelemetry Collector (Core)
docker run -v $(pwd)/config.yaml:/etc/otelcol/config.yaml otel/opentelemetry-collector:latestOpenTelemetry Collector (Contrib)
docker run -v $(pwd)/config.yaml:/etc/otelcol-contrib/config.yaml otel/opentelemetry-collector-contrib:latest