Managed Service for OpenTelemetry dapat menerima data trace, metric, dan log dari aplikasi Anda. Layanan ini mendukung dua metode pelaporan: pelaporan langsung dan penerusan melalui OpenTelemetry Collector.
Pilih metode pelaporan
Anda dapat melaporkan data telemetri langsung ke Managed Service for OpenTelemetry atau meneruskannya melalui OpenTelemetry Collector. Pilih metode berdasarkan jenis data telemetri yang ingin Anda laporkan.
| Metode pelaporan | Tipe data yang didukung |
| Pelaporan langsung | Traces dan metrics |
| OpenTelemetry Collector (Core) | Traces dan metrics |
| OpenTelemetry Collector (Contrib) | Traces, metrics, dan logs |
Data log diteruskan melalui OpenTelemetry Collector (Contrib) ke Simple Log Service (SLS). Jika Anda ingin melaporkan data log, gunakan metode penerusan Collector dengan edisi Contrib.
Jika Anda meneruskan data melalui OpenTelemetry Collector, pilih opsi penerapan. OpenTelemetry Collector tersedia dalam dua edisi:
OpenTelemetry Collector (Core): mendukung pelaporan data trace dan metric.
OpenTelemetry Collector (Contrib): mendukung pelaporan data trace, metric, dan log.
Tabel berikut membandingkan opsi penerapan yang dijelaskan dalam topik ini.
| Opsi penerapan | Edisi yang didukung | Tipe data yang didukung |
| Terapkan ke kluster ACK dari ACK Marketplace | OpenTelemetry Collector (Core) | Traces dan metrics |
| Terapkan dengan Docker | OpenTelemetry Collector (Core) dan OpenTelemetry Collector (Contrib) | Traces dan metrics (Core). Traces, metrics, dan logs (Contrib). |
| Metode instalasi dan penerapan lainnya | Lihat Metode instalasi dan penerapan lainnya. | Bervariasi tergantung metode |
Sebelum memulai
Untuk melaporkan data log, aktifkan terlebih dahulu Simple Log Service (SLS), buat Project dan Logstore, serta buat pasangan AccessKey untuk pelaporan data log.
Dapatkan endpoint dan kredensial otentikasi. Tabel berikut mencantumkan semua variabel konfigurasi yang digunakan dalam topik ini. Dalam contoh kode dan konfigurasi pada topik ini, placeholder dalam format
${VAR}harus diganti dengan nilai aktual yang telah Anda siapkan. Siapkan endpoint dan kredensial yang dibutuhkan skenario Anda, berdasarkan jenis data yang dilaporkan dan metode pelaporan yang digunakan. Untuk informasi lebih lanjut, lihat Memulai Managed Service for OpenTelemetry.
| Kasus penggunaan | Variabel | Deskripsi | Contoh |
| Laporkan data trace dan metric melalui gRPC | ${GRPC_ENDPOINT} | Endpoint gRPC Managed Service for OpenTelemetry, yang mendukung pelaporan data trace dan metric. Jika layanan Anda berjalan di Alibaba Cloud di wilayah yang sama dengan wilayah endpoint yang Anda pilih, gunakan titik akhir internal Alibaba Cloud. Jika tidak, gunakan titik akhir publik. |
|
| Laporkan data trace dan metric melalui gRPC | ${GRPC_AUTHENTICATION_TOKEN} | Token otentikasi yang diperlukan untuk melaporkan data melalui gRPC ke Managed Service for OpenTelemetry. Untuk informasi cara mendapatkan token tersebut, lihat Memulai Managed Service for OpenTelemetry. | abcdef1234@abcdef****56789_abcdef1234@abcdef****56789 |
| Laporkan data trace dan metric melalui HTTP | ${HTTP_TRACES_ENDPOINT} | Endpoint HTTP Managed Service for OpenTelemetry, yang mendukung pelaporan data trace. Jika layanan Anda berjalan di Alibaba Cloud di wilayah yang sama dengan wilayah endpoint yang Anda pilih, gunakan titik akhir internal Alibaba Cloud. Jika tidak, gunakan titik akhir publik. |
|
| Laporkan data trace dan metric melalui HTTP | ${HTTP_METRICS_ENDPOINT} | Endpoint HTTP Managed Service for OpenTelemetry, yang mendukung pelaporan data metric. Jika layanan Anda berjalan di Alibaba Cloud di wilayah yang sama dengan wilayah endpoint yang Anda pilih, gunakan titik akhir internal Alibaba Cloud. Jika tidak, gunakan titik akhir publik. |
|
| Laporkan data log | ${SLS_ENDPOINT} | Endpoint Project SLS. Hanya diperlukan saat Anda melaporkan data log. Untuk langkah-langkah mendapatkan endpoint, lihat Endpoint. | test-project.cn-hangzhou.log.aliyuncs.com |
| Laporkan data log | ${SLS_PROJECT} | Nama Project SLS. Hanya diperlukan saat Anda melaporkan data log. | test-project |
| Laporkan data log | ${SLS_LOGSTORE} | Nama Logstore SLS. Hanya diperlukan saat Anda melaporkan data log. | test-logstore |
| Laporkan data log | ${ALIYUN_ACCESS_KEY_ID} | ID AccessKey akun Alibaba Cloud Anda. Hanya diperlukan saat Anda melaporkan data log. Kami menyarankan Anda menggunakan pasangan AccessKey, yang terdiri dari ID AccessKey dan rahasia AccessKey, dari Pengguna Resource Access Management (RAM) yang hanya memiliki izin menulis pada Project SLS. Untuk informasi cara memberikan izin kepada Pengguna RAM agar dapat menulis data ke Project tertentu, lihat Contoh kebijakan kustom RAM. Untuk informasi cara mendapatkan pasangan AccessKey, lihat Pasangan AccessKey. | N/A |
| Laporkan data log | ${ALIYUN_ACCESS_KEY_SECRET} | Rahasia AccessKey akun Alibaba Cloud Anda. Hanya diperlukan saat Anda melaporkan data log. Kami menyarankan Anda menggunakan pasangan AccessKey dari Pengguna RAM yang hanya memiliki izin menulis pada Project SLS. | N/A |
Pelaporan langsung
Konfigurasikan endpoint pelaporan dan informasi otentikasi di OpenTelemetry Agent atau SDK untuk mengirim data trace dan metric yang dikumpulkan OpenTelemetry langsung ke server Managed Service for OpenTelemetry.
Opsi 1: Konfigurasikan pengaturan pelaporan dalam kode (contoh Java)
Contoh kode Java berikut menunjukkan cara mengonfigurasi endpoint Managed Service for OpenTelemetry, yang mendukung pelaporan melalui HTTP atau gRPC. Untuk melihat kode integrasi lengkap dan demo, kunjungi Pusat Integrasi atau lihat Laporkan data trace dari aplikasi Java menggunakan OpenTelemetry.
Pelaporan HTTP
...
// Laporkan data trace
SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
.addSpanProcessor(BatchSpanProcessor.builder(OtlpHttpSpanExporter.builder()
.setEndpoint("${HTTP_TRACES_ENDPOINT}") // Tetapkan endpoint traces HTTP untuk melaporkan data trace ke Managed Service for OpenTelemetry.
.build()).build())
.build();
// Laporkan data metric
SdkMeterProvider sdkMeterProvider = SdkMeterProvider.builder()
.registerMetricReader(PeriodicMetricReader.builder(OtlpHttpMetricExporter.builder()
.setEndpoint("${HTTP_METRICS_ENDPOINT}") // Tetapkan endpoint metrics HTTP untuk melaporkan data metric ke Managed Service for OpenTelemetry.
.build()).build())
.build();
...Pelaporan gRPC
...
// Laporkan data trace
SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder()
.addSpanProcessor(BatchSpanProcessor.builder(OtlpGrpcSpanExporter.builder()
.setEndpoint("${GRPC_ENDPOINT}") // Tetapkan endpoint gRPC untuk melaporkan data trace ke Managed Service for OpenTelemetry.
.addHeader("Authentication","${GRPC_AUTHENTICATION_TOKEN}") // Tetapkan token otentikasi Managed Service for OpenTelemetry.
.build()).build())
.setResource(resource)
.build();
// Laporkan data metric
SdkMeterProvider sdkMeterProvider = SdkMeterProvider.builder()
.registerMetricReader(PeriodicMetricReader.builder(OtlpGrpcMetricExporter.builder()
.setEndpoint("${GRPC_ENDPOINT}") // Tetapkan endpoint gRPC untuk melaporkan data metric ke Managed Service for OpenTelemetry.
.addHeader("Authentication", "${GRPC_AUTHENTICATION_TOKEN}") // Tetapkan token otentikasi Managed Service for OpenTelemetry.
.build()).build())
.setResource(resource)
.build();
...Opsi 2: Konfigurasikan pengaturan pelaporan dengan variabel lingkungan
OpenTelemetry juga mendukung konfigurasi endpoint pelaporan data dengan variabel lingkungan. Tabel berikut mencantumkan variabel lingkungan yang diperlukan untuk melaporkan data ke Managed Service for OpenTelemetry. Untuk variabel lingkungan OTLP OpenTelemetry lainnya, lihat Konfigurasi Eksporter OTLP.
Meneruskan data melalui OpenTelemetry Collector
OpenTelemetry Collector menerima data trace, metric, dan log dari aplikasi Anda, lalu meneruskan data tersebut ke Managed Service for OpenTelemetry berdasarkan konfigurasi eksporternya.
Opsi 1: Terapkan ke kluster ACK dari ACK Marketplace
Pada opsi ini, Anda menerapkan collector ke kluster Container Service for Kubernetes (ACK) dari ACK Marketplace. Saat ini, ACK Marketplace hanya menyediakan edisi OpenTelemetry Collector (Core), bukan edisi Contrib. Untuk mengumpulkan data log, gunakan salah satu metode penerapan lainnya.
Langkah 1: Terapkan Collector
-
Masuk ke Konsol ACK. Di panel navigasi kiri, klik .
Di Marketplace, cari dan klik
opentelemetry-collector, lalu klik Deploy di pojok kanan atas halaman.Di halaman Create , pilih kluster dan namespace tempat Anda ingin menerapkan
opentelemetry-collector. Namespace default adalah otel-collector. Lalu, klik Next.Di halaman Parameter Configurations, atur parameter mode ke
deploymentataudaemonset, lalu klik OK.
Langkah 2: Konfigurasikan parameter Collector
Di halaman Clusters, klik kluster target.
Di panel navigasi kiri, pilih .
Pilih namespace tempat opentelemetry-collector diterapkan. Namespace default adalah otel-collector.
Di halaman Configuration Item, temukan opentelemetry-collector, lalu klik YAML.
Konfigurasikan bagian exporters, processors, receivers, dan service berdasarkan konten YAML berikut, lalu klik OK.
Item konfigurasi opentelemetry-collector (pelaporan gRPC)
exporters: otlp: endpoint: "${GRPC_ENDPOINT}" headers: Authentication: "${GRPC_AUTHENTICATION_TOKEN}" tls: insecure: true processors: batch: {} memory_limiter: check_interval: 5s # Interval pemeriksaan penggunaan memori. Ubah nilai sesuai kebutuhan. limit_percentage: 80 # Penggunaan memori maksimum dalam persentase. Ubah nilai sesuai kebutuhan. spike_limit_percentage: 25 # Tambahan memori dalam persentase yang diizinkan saat lonjakan. Ubah nilai sesuai kebutuhan. 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]Item konfigurasi opentelemetry-collector (pelaporan HTTP)
exporters: otlphttp: traces_endpoint: "${HTTP_TRACES_ENDPOINT}" metrics_endpoint: "${HTTP_METRICS_ENDPOINT}" tls: insecure: true timeout: 5s # Periode timeout. Nilai default adalah 5s. Ubah nilai sesuai kebutuhan. processors: batch: {} memory_limiter: check_interval: 5s # Interval pemeriksaan penggunaan memori. Ubah nilai sesuai kebutuhan. limit_percentage: 80 # Penggunaan memori maksimum dalam persentase. Ubah nilai sesuai kebutuhan. spike_limit_percentage: 25 # Tambahan memori dalam persentase yang diizinkan saat lonjakan. Ubah nilai sesuai kebutuhan. 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, restart opentelemetry-collector secara manual.
Opsi 2: Terapkan dengan Docker
Pada opsi ini, Anda menjalankan collector sebagai kontainer Docker. Edisi Core dan Contrib tersedia.
Langkah 1: Tarik gambar
opentelemetry-collector
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:latestLangkah 2: Siapkan file konfigurasi
Buat file config.yaml dan konfigurasikan parameter terkait. Dalam contoh berikut, placeholder dalam format ${VAR} harus diganti dengan nilai yang telah Anda siapkan di bagian Sebelum memulai. Placeholder ini berbeda dari sintaks ekspansi native Collector ${env:...}, seperti ${env:MY_POD_IP}, yang diselesaikan Collector dari variabel lingkungan saat runtime.
Item konfigurasi opentelemetry-collector (pelaporan gRPC)
# config.yaml
exporters:
otlp:
endpoint: "${GRPC_ENDPOINT}"
headers:
Authentication: "${GRPC_AUTHENTICATION_TOKEN}"
tls:
insecure: true
processors:
batch: {}
memory_limiter:
check_interval: 5s # Interval pemeriksaan penggunaan memori. Ubah nilai sesuai kebutuhan.
limit_percentage: 80 # Penggunaan memori maksimum dalam persentase. Ubah nilai sesuai kebutuhan.
spike_limit_percentage: 25 # Tambahan memori dalam persentase yang diizinkan saat lonjakan. Ubah nilai sesuai kebutuhan.
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317 # Nilai default adalah localhost:4317. Ubah nilai sesuai kebutuhan.
http:
endpoint: 0.0.0.0:4318 # Nilai default adalah localhost:4318. Ubah nilai sesuai kebutuhan.
service:
pipelines:
traces:
exporters: [otlp]
processors: [memory_limiter, batch]
receivers: [otlp]
metrics:
exporters: [otlp]
processors: [memory_limiter, batch]
receivers: [otlp]Item konfigurasi opentelemetry-collector (pelaporan HTTP)
# config.yaml
exporters:
otlphttp:
traces_endpoint: "${HTTP_TRACES_ENDPOINT}"
metrics_endpoint: "${HTTP_METRICS_ENDPOINT}"
tls:
insecure: true
timeout: 5s # Periode timeout. Nilai default adalah 5s. Ubah nilai sesuai kebutuhan.
processors:
batch: {}
memory_limiter:
check_interval: 5s # Interval pemeriksaan penggunaan memori. Ubah nilai sesuai kebutuhan.
limit_percentage: 80 # Penggunaan memori maksimum dalam persentase. Ubah nilai sesuai kebutuhan.
spike_limit_percentage: 25 # Tambahan memori dalam persentase yang diizinkan saat lonjakan. Ubah nilai sesuai kebutuhan.
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317 # Nilai default adalah localhost:4317. Ubah nilai sesuai kebutuhan.
http:
endpoint: 0.0.0.0:4318 # Nilai default adalah localhost:4318. Ubah nilai sesuai kebutuhan.
service:
pipelines:
traces:
exporters: [otlphttp]
processors: [memory_limiter, batch]
receivers: [otlp]
metrics:
exporters: [otlphttp]
processors: [memory_limiter, batch]
receivers: [otlp]Item konfigurasi opentelemetry-collector-contrib (pelaporan gRPC)
# config.yaml
exporters:
otlp:
endpoint: "${GRPC_ENDPOINT}"
headers:
Authentication: "${GRPC_AUTHENTICATION_TOKEN}"
tls:
insecure: true
# Konfigurasi eksporter 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 pemeriksaan penggunaan memori. Ubah nilai sesuai kebutuhan.
limit_percentage: 80 # Penggunaan memori maksimum dalam persentase. Ubah nilai sesuai kebutuhan.
spike_limit_percentage: 25 # Tambahan memori dalam persentase yang diizinkan saat lonjakan. Ubah nilai sesuai kebutuhan.
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317 # Nilai default adalah localhost:4317. Ubah nilai sesuai kebutuhan.
http:
endpoint: 0.0.0.0:4318 # Nilai default adalah localhost:4318. Ubah nilai sesuai kebutuhan.
service:
pipelines:
traces:
exporters: [otlp]
processors: [memory_limiter, batch]
receivers: [otlp]
metrics:
exporters: [otlp]
processors: [memory_limiter, batch]
receivers: [otlp]
# Pipeline pemrosesan data log (opsional)
logs:
exporters: [alibabacloud_logservice/logs]
processors: [memory_limiter, batch]
receivers: [otlp]Item konfigurasi opentelemetry-collector-contrib (pelaporan HTTP)
# config.yaml
exporters:
otlphttp:
traces_endpoint: "${HTTP_TRACES_ENDPOINT}"
metrics_endpoint: "${HTTP_METRICS_ENDPOINT}"
tls:
insecure: true
timeout: 5s # Periode timeout. Nilai default adalah 5s. Ubah nilai sesuai kebutuhan.
# Konfigurasi eksporter 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 pemeriksaan penggunaan memori. Ubah nilai sesuai kebutuhan.
limit_percentage: 80 # Penggunaan memori maksimum dalam persentase. Ubah nilai sesuai kebutuhan.
spike_limit_percentage: 25 # Tambahan memori dalam persentase yang diizinkan saat lonjakan. Ubah nilai sesuai kebutuhan.
receivers:
otlp:
protocols:
grpc:
endpoint: 0.0.0.0:4317 # Nilai default adalah localhost:4317. Ubah nilai sesuai kebutuhan.
http:
endpoint: 0.0.0.0:4318 # Nilai default adalah localhost:4318. Ubah nilai sesuai kebutuhan.
service:
pipelines:
traces:
exporters: [otlphttp]
processors: [memory_limiter, batch]
receivers: [otlp]
metrics:
exporters: [otlphttp]
processors: [memory_limiter, batch]
receivers: [otlp]
# Pipeline pemrosesan data log (opsional)
logs:
exporters: [alibabacloud_logservice/logs]
processors: [memory_limiter, batch]
receivers: [otlp]Langkah 3: Mount file konfigurasi kustom dan jalankan collector
Flag -p memublikasikan port receiver sehingga aplikasi Anda dapat mengirim data ke collector. Sesuaikan pemetaan port agar sesuai dengan endpoint receiver dalam file konfigurasi Anda.
opentelemetry-collector
docker run -p 4317:4317 -p 4318:4318 -v $(pwd)/config.yaml:/etc/otelcol/config.yaml otel/opentelemetry-collector:latestopentelemetry-collector-contrib
docker run -p 4317:4317 -p 4318:4318 -v $(pwd)/config.yaml:/etc/otelcol-contrib/config.yaml otel/opentelemetry-collector-contrib:latestUntuk metode penerapan lainnya, lihat Metode instalasi dan penerapan lainnya.