Data konfigurasi
Data konfigurasi yang ditemukan dalam variabel lingkungan ditentukan dalam tabel berikut.
Kolom | Spesifikasi |
---|---|
project_id |
String ID project tempat data visibilitas dikirim. Jika kosong, plugin observabilitas gRPC akan mencoba mengambil project ID dari variabel lingkungan, atau dari kredensial default. Jika tidak ditemukan, fungsi init observabilitas akan menampilkan error. |
cloud_logging |
Objek Opsi logging dikategorikan dalam tabel ini. Jika tidak ada, logging akan dinonaktifkan. |
cloud_logging.client_rpc_events[] |
Daftar Daftar konfigurasi client_rpc_events , yang mewakili konfigurasi untuk RPC keluar dari biner.Konfigurasi client_rpc_events dievaluasi dalam urutan teks, yang pertama yang cocok akan digunakan. Jika tidak cocok dengan entri, RPC akan melanjutkan ke entri berikutnya dalam daftar. |
cloud_logging.client_rpc_events[].methods[] |
Daftar [String] Daftar ID metode. Secara default, daftar kosong, tidak cocok dengan metode apa pun. Nilai metode ini berupa [service]/[method] .* diterima sebagai karakter pengganti untuk:
Nama layanan, jika ditentukan, harus berupa nama layanan yang sepenuhnya memenuhi syarat, termasuk nama paket. Contoh:
|
cloud_logging.client_rpc_events[].exclude |
Bool Apakah metode yang ditunjukkan oleh client_rpc_events[].methods[]
harus dikecualikan dari logging.Nilai defaultnya adalah salah, yang berarti metode yang ditunjukkan oleh client_rpc_events[].methods[] disertakan dalam data log.Jika nilainya benar, karakter pengganti (*) tidak dapat digunakan sebagai nilai keseluruhan dalam client_rpc_events[].methods[]. |
cloud_logging.client_rpc_events[].max_metadata_bytes |
Int Jumlah maksimum byte metadata yang akan dicatat ke dalam log. Jika ukuran metadata lebih besar dari batas yang ditentukan, pasangan nilai kunci yang melebihi batas tidak akan dicatat ke dalam log. Nilai defaultnya adalah 0, yang berarti tidak ada metadata yang dicatat ke dalam log. |
cloud_logging.client_rpc_events[].max_message_bytes |
Int Jumlah maksimum byte setiap pesan yang akan dicatat ke dalam log. Jika ukuran pesan lebih besar dari batas yang ditentukan, konten yang melebihi batas akan terpotong. Nilai defaultnya adalah 0, yang berarti tidak ada payload pesan yang dicatat ke dalam log. |
cloud_logging.server_rpc_events[] |
Daftar Daftar konfigurasi server_rpc_events , mewakili konfigurasi untuk RPC yang masuk ke biner.Konfigurasi server_rpc_events dievaluasi dalam urutan teks, yang pertama yang cocok akan digunakan. Jika tidak cocok dengan entri, RPC akan melanjutkan ke entri berikutnya dalam daftar. |
cloud_logging.server_rpc_events[].methods[] |
Daftar [String] Daftar string yang dapat memilih grup metode. Secara default, daftar kosong, tidak cocok dengan metode apa pun. Nilai metode ini berupa [service]/[method] .* diterima sebagai karakter pengganti untuk:
Nama layanan, jika ditentukan, harus berupa nama layanan yang sepenuhnya memenuhi syarat, termasuk nama paket. Contoh:
|
cloud_logging.server_rpc_events[].exclude |
Bool Apakah metode yang ditunjukkan oleh server_rpc_events[].methods[]
harus dikecualikan dari logging.Nilai defaultnya adalah false, yang berarti bahwa metode yang ditunjukkan oleh server_rpc_events[].methods[] dicatat ke dalam log.Jika nilainya benar, karakter pengganti (*) tidak dapat digunakan sebagai nilai keseluruhan dalam entri server_rpc_events[].methods[] . |
cloud_logging.server_rpc_events[].max_metadata_bytes |
Int Jumlah maksimum byte metadata yang akan dicatat ke dalam log. Jika ukuran metadata lebih besar dari batas yang ditentukan, pasangan nilai kunci yang melebihi batas tidak akan dicatat ke dalam log. Nilai defaultnya adalah 0, yang berarti tidak ada metadata yang dicatat ke dalam log. |
cloud_logging.server_rpc_events[].max_message_bytes |
Int Jumlah maksimum byte setiap pesan yang akan dicatat ke dalam log. Jika ukuran pesan lebih besar dari batas yang ditentukan, konten yang melewati batas akan terpotong. Nilai defaultnya adalah 0, yang berarti tidak ada payload pesan yang dicatat ke dalam log. |
cloud_monitoring |
Objek Mengaktifkan Cloud Monitoring. Tidak ada opsi konfigurasi. Jika Anda memberikan ketidaksetujuan konfigurasi kosong, pemantauan akan diaktifkan. Jika Anda tidak menyediakan objek konfigurasi, pemantauan akan dinonaktifkan. Misalnya, jika tidak ada opsi lain yang ditentukan, bagian konfigurasi kosong akan mengaktifkan pemantauan. export GRPC_GCP_OBSERVABILITY_CONFIG='{ "project_id": "your-project-here", "cloud_monitoring": { } }' |
cloud_trace |
Objek Bagian konfigurasi kosong memungkinkan pelacakan dengan opsi konfigurasi default. Jika Anda tidak memberikan objek konfigurasi, pelacakan akan dinonaktifkan. Misalnya, bagian konfigurasi kosong memungkinkan pelacakan dengan opsi konfigurasi default. export GRPC_GCP_OBSERVABILITY_CONFIG='{ "project_id": "your-project-here", "cloud_trace": { } }' Saat pelacakan diaktifkan, bahkan dengan frekuensi sampling `0`, keputusan untuk mengambil sampel trace tertentu akan diterapkan. |
cloud_trace.sampling_rate |
Jumlah Setelan global yang mengontrol probabilitas RPC dilacak. Misalnya:
Secara default, sampling_rate adalah 0 .Plugin ini mengikuti keputusan pengambilan sampel di upstream. Jika RPC dipilih untuk pengambilan sampel upstream, plugin akan mengumpulkan span dan mengupload data ke backend, terlepas dari setelan frekuensi sampling untuk plugin. |
labels |
Objek Objek JSON yang berisi kumpulan key-value pair. Kunci dan nilai adalah string. Label diterapkan di Cloud Logging, Cloud Monitoring, dan Cloud Trace secara bersamaan. |
Definisi rekaman aktivitas
Bagian ini memberikan informasi tentang pelacakan.
Melacak penerapan konteks
Agar pelacakan lintas layanan berfungsi, pemilik layanan harus mendukung penyebaran konteks rekaman aktivitas yang diterima dari upstream (atau dimulai dengan sendirinya) ke downstream. Konteks trace diterapkan di antara layanan melalui metadata gRPC. Pastikan Anda mengaktifkan Cloud Monitoring, Cloud Logging, Cloud Trace API, dan Microservices API, yang memungkinkan layanan dalam konfigurasi ini melaporkan data telemetrinya ke layanan yang sesuai.
Tanpa dukungan propagasi, layanan downstream tidak dapat menghasilkan span untuk trace. Rentang yang ada tidak terpengaruh. Plugin Kemampuan observasi microservice mendukung Format Biner OpenCensus untuk mengenkode dan mengenkode konteks rekaman aktivitas.
Span
Nama span diformat sebagai berikut:
Jenis | Nilai contoh | Penggunaan |
---|---|---|
Rentang RPC |
[Sent|Recv].helloworld.Greeter.SayHello
|
Nama span adalah nama metode lengkap, yang dihubungkan dengan titik, tanpa
garis miring awalan. Nama span diawali dengan Sent. untuk span RPC KLIEN
dan Recv. untuk span RPC SERVER di depan nama metode
lengkap. |
Rentang upaya |
Attempt.helloworld.Greeter.SayHello
|
Melampirkan awalan Attempt. di depan nama metode lengkap. |
Label span
Integrasi ini memberikan label span yang berbeda.
Untuk rentang percobaan, dua atribut terkait percobaan ulang tambahan (label rentang) disertakan:
Label | Contoh nilai | Penggunaan |
---|---|---|
previous-rpc-attempts | 0 |
Jumlah upaya percobaan ulang sebelum RPC ini. |
transparent-retry | True/False
|
Apakah RPC ini dimulai oleh percobaan ulang transparan. |
Definisi metrik
Metrik berikut tersedia dan ditampilkan di dasbor bernama Pemantauan Layanan Mikro (gRPC) untuk perjalanan pengguna umum.
Berikut adalah metrik dari metrik sisi klien gRPC:
Nama Metrik | Deskripsi | Jenis, tipe, unit | Label |
---|---|---|---|
custom.googleapis.com/opencensus/grpc.io/client/started_rpcs |
Jumlah upaya RPC klien yang dimulai, termasuk yang belum selesai. | Kumulatif, Int64, 1 | grpc_client_method |
custom.googleapis.com/opencensus/grpc.io/client/completed_rpcs |
Jumlah RPC klien yang selesai, misalnya, saat respons diterima atau dikirim oleh server. | Kumulatif, Int64, 1 | grpc_client_method , grpc_client_status |
custom.googleapis.com/opencensus/grpc.io/client/roundtrip_latency |
Waktu menyeluruh yang diperlukan untuk menyelesaikan upaya RPC, termasuk waktu yang diperlukan untuk memilih subsaluran. | Kumulatif, Distribusi, md | grpc_client_method |
custom.googleapis.com/opencensus/grpc.io/client/api_latency |
Total waktu yang diperlukan library gRPC untuk menyelesaikan RPC dari perspektif aplikasi. | Kumulatif, Distribusi, md | grpc_client_method , grpc_client_status |
custom.googleapis.com/opencensus/grpc.io/client/sent_compressed_message_bytes_per_rpc |
Total byte (dikompresi, tidak dienkripsi) yang dikirim di semua pesan permintaan per percobaan RPC. | Kumulatif, Distribusi, Menurut | grpc_client_method , grpc_client_status |
custom.googleapis.com/opencensus/grpc.io/client/received_compressed_message_bytes_per_rpc |
Total byte (dikompresi, tidak dienkripsi) yang diterima di semua pesan respons per upaya RPC. | Kumulatif, Distribusi, Menurut | grpc_client_method , grpc_client_status |
Metrik sisi server gRPC berikut tersedia:
Nama Metrik | Deskripsi | Jenis, tipe, unit | Label |
---|---|---|---|
custom.googleapis.com/opencensus/grpc.io/server/started_rpcs |
Jumlah RPC yang pernah diterima di server, termasuk RPC yang belum selesai. |
Kumulatif, Int64, 1 | grpc_server_method |
custom.googleapis.com/opencensus/grpc.io/server/completed_rpcs |
Jumlah total RPC yang selesai, misalnya, saat respons dikirim oleh server. |
Kumulatif, Int64, 1 | grpc_server_method , grpc_server_status |
custom.googleapis.com/opencensus/grpc.io/server/sent_compressed_message_bytes_per_rpc |
Total byte (dikompresi, tidak dienkripsi) yang dikirim di semua pesan respons per RPC. |
Kumulatif, Distribusi, Menurut | grpc_server_method , grpc_server_status |
custom.googleapis.com/opencensus/grpc.io/server/received_compressed_message_bytes_per_rpc |
Total byte (dikompresi, tidak dienkripsi) yang diterima di semua pesan permintaan per RPC. |
Kumulatif, Distribusi, Menurut | grpc_server_method , grpc_server_status |
custom.googleapis.com/opencensus/grpc.io/server/server_latency
|
Total waktu yang diperlukan RPC dari perspektif transpor server (HTTP2 / inproc / cronet). |
Kumulatif, Distribusi, md | grpc_server_method |
Setiap distribusi dalam tabel di atas berisi histogram dengan bucket sebagai berikut:
Ukuran dalam byte: 0, 1024, 2048, 4096, 16384, 65536, 262144, 1048576, 4194304, 16777216, 67108864, 268435456, 1073741824, 4294967296
Latensi dalam md: 0, 0,01, 0,05, 0,1, 0,3, 0,6, 0,8, 1, 2, 3, 4, 5, 6, 8, 10, 13, 16, 20, 25, 30, 40, 50, 65, 80, 100, 130, 160, 200, 250, 300, 400, 500, 650, 800, 1000, 2000, 5000, 10000, 20000, 50000, 100000
Deskripsi tag:
grpc_client_method
: Nama metode gRPC lengkap, termasuk paket, layanan, dan metode, misalnya,google.bigtable.v2.Bigtable/CheckAndMutateRow
grpc_client_status
: Kode status server gRPC yang diterima, misalnya,OK
,CANCELLED
,DEADLINE_EXCEEDED
grpc_server_method
: Nama metode gRPC lengkap, termasuk paket, layanan, dan metode, misalnya,com.exampleapi.v4.BookshelfService/Checkout
grpc_server_status
: Kode status server gRPC yang ditampilkan, misalnya,OK
,CANCELLED
,DEADLINE_EXCEEDED
Definisi kumpulan log
Log kemampuan observasi Microservices diupload ke Cloud Logging menggunakan nama log (PROJECT_ID
adalah placeholder untuk string yang mewakili project Anda):
logName=projects/[PROJECT_ID]/logs/microservices.googleapis.com%2Fobservability%2Fgrpc
Berikut adalah representasi JSON dari data log yang dihasilkan:
{
"authority": string,
"callId": string,
"type": string,
"logger": string,
"serviceName": string,
"methodName": string,
"peer": {
"type": string,
"address": string,
"ipPort": int
},
"payload": {
"timeout": string,
"metadata":
{
string: string,
string: string
},
"statusCode": string,
"statusMessage": string,
"statusDetails": string,
"message": string,
"messageLength": int,
},
"sequenceId": int
}
Tabel berikut menjelaskan kolom dalam entri log:
Kolom | Spesifikasi |
---|---|
otoritas | String Satu proses dapat digunakan untuk menjalankan beberapa server virtual dengan identitas yang berbeda. Otoritas adalah nama identitas server tersebut. Ini biasanya merupakan bagian dari URI dalam bentuk host atau host:port. |
callId | String Mengidentifikasi panggilan [klien/server] yang merupakan UUID secara unik. Setiap panggilan dapat memiliki beberapa entri log. Semuanya memiliki callId yang sama. |
jenis | String Jenis peristiwa log. Jenis peristiwa adalah: EVENT_TYPE_UNKNOWN CLIENT_HEADER SERVER_HEADER CLIENT_MESSAGE SERVER_MESSAGE CLIENT_HALF_CLOSE SERVER_TRAILER CANCEL |
logger | String Jenis logger peristiwa. Jenis logger peristiwa adalah: LOGGER_UNKNOWN , CLIENT , SERVER |
serviceName | String Nama layanan. |
methodName | String Nama metode RPC. |
pembanding | Informasi alamat peer Objek . Di sisi klien, peer dicatat ke dalam log pada peristiwa header server dan peristiwa trailer. Di sisi server, peer selalu dicatat di peristiwa header klien. |
peer.type | String Jenis alamat, baik IPv4, IPv6, maupun UNIX. |
peer.address | String Konten alamat. |
peer.ip_port | Int Nomor port untuk alamat. Hanya tersedia untuk alamat IPv4 dan IPv6. |
payload | Objek Payload dapat mencakup kombinasi metadata, waktu tunggu, pesan, dan status, bergantung pada peristiwa.
|
payload.timeout | String String yang mewakili google.protobuf.Duration , seperti
"1,2 s".Nilai waktu tunggu RPC. |
payload.metadata | Pemetaan[String, String] Digunakan oleh peristiwa header atau peristiwa cuplikan. |
payload.message | String (Byte) Payload pesan. |
payload.messageLength | Int Ukuran pesan, terlepas dari apakah pesan lengkap dicatat ke dalam log atau tidak (misalnya, pesan dapat terpotong atau dihilangkan). |
payload.statusCode | String Kode status gRPC. |
payload.statusMessage | String Pesan status gRPC. |
payload.statusDetails | String Nilai kunci metadata grpc-status-details-bin ,
jika ada. Ini selalu berupa pesan google.rpc.Status
yang dienkode. |
payloadTruncated | Bool Benar jika kolom pesan atau metadata terpotong atau dihilangkan karena opsi konfigurasi. |
sequenceId | Int ID urutan pesan untuk panggilan ini. Pesan pertama memiliki nilai 1, untuk membedakan dari nilai yang tidak ditetapkan. Tujuan kolom ini adalah untuk mendeteksi entri yang hilang di lingkungan tempat ketahanan atau urutan tidak terjamin. |
Label resource
Label resource mengidentifikasi sumber yang menghasilkan data visibilitas. Setiap label resource adalah pasangan nilai kunci, dengan kunci adalah nilai standar yang spesifik untuk lingkungan sumber (misalnya, GKE atau Compute Engine).
Untuk metrik dan pelacakan pada deployment GKE, label resource diisi secara default, kecuali untuk nama penampung dan nama namespace. Nilai yang tidak ada dapat diisi menggunakan Downward API.
Berikut adalah kunci variabel lingkungan:
- CONTAINER_NAME
- NAMESPACE
Misalnya, bagian env
berikut menyertakan dua label resource:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
run: app1
name: app1
spec:
replicas: 2
selector:
matchLabels:
run: app1
template:
metadata:
labels:
run: app1
spec:
containers:
- image: 'o11y-examples:1.00'
name: container1
ports:
- protocol: TCP
containerPort: 50051
env:
- name: CONTAINER_NAME
value: container1
- name: NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
Label khusus
Label kustom mewakili informasi tambahan yang disediakan pengguna dalam data visibilitas. Label terdiri dari kunci dan nilai. Pasangan nilai kunci disertakan ke data pelacakan sebagai label span, ke data metrik sebagai label metrik, dan ke data logging sebagai label entri log. Semua label kustom berjenis STRING.
Anda dapat memberikan label kustom dalam konfigurasi dengan menentukan daftar key-value pair untuk labels
. Implementasi membaca konfigurasi dan membuat
label terpisah untuk setiap pasangan nilai kunci, lalu melampirkan label ke
data observabilitas. Contoh:
"labels": {
"DATACENTER": "SAN_JOSE_DC",
"APP_ID": "24512"
}
Setiap entri log memiliki label tambahan berikut:
{
"DATACENTER": "SAN_JOSE_DC"
"APP_ID": "24512"
}
Langkah selanjutnya
- Untuk mengetahui informasi tentang jenis dan jenis metrik, lihat Jenis nilai dan jenis metrik.
- Untuk informasi tentang distribusi, lihat Halaman referensi distribusi.
- Untuk informasi tentang cara memetakan Metrik distribusi, lihat Metrik distribusi.
- Untuk informasi tentang unit (seperti
1
,ms
, danBy
), lihat kolom unit dalam referensiMetricDescriptor
.