StatsD adalah protokol untuk mengirimkan metrik dan daemon untuk agregasi data metrik. Dengan mengonfigurasi plugin StatsD Agen pemantauan, Anda membuat agen berfungsi sebagai daemon StatsD yang menulis metrik ke Monitoring.
Menggunakan plugin StatsD dengan konfigurasi defaultnya adalah cara termudah untuk memasukkan metrik yang ditentukan pengguna ke dalam Monitoring. Plugin StatsD hanya tersedia di agen Stackdriver Monitoring Linux.
Agen Monitoring juga dapat mengekspor metrik collectd lainnya sebagai metrik yang ditentukan pengguna, tetapi tidak ada konfigurasi default yang sederhana. Lihat Metrik yang ditentukan pengguna dari agen untuk mengetahui detailnya.
Fungsi ini hanya tersedia untuk agen yang berjalan di Linux. Fitur ini tidak tersedia di Windows.
Discovery
Monitoring tidak otomatis mendeteksi StatsD. Untuk menggunakan metrik StatsD, konfigurasi plugin StatsD seperti yang dijelaskan di bagian berikutnya.
Mengonfigurasi plugin StatsD
Prasyarat
Plugin StatsD memerlukan Monitoring Agent versi 5.5.2-356 atau yang lebih baru. Untuk mengupdate agen, lihat bagian Memperbarui agen.
Mengaktifkan plugin
Lakukan hal berikut pada instance VM yang didukung dan menjalankan Linux:
Download statsd.conf dan tempatkan di
/etc/stackdriver/collectd.d/, menggunakan perintah berikut:(cd /etc/stackdriver/collectd.d/ && sudo curl -O https://raw.githubusercontent.com/Stackdriver/stackdriver-agent-service-configs/master/etc/collectd.d/statsd.conf)File konfigurasi default menginstruksikan agen untuk menerima metrik StatsD di port StatsD default, 8125.
Jika Anda ingin mengirim beberapa metrik ke daemon StatsD Anda sendiri dan metrik lainnya ke daemon StatsD agen, ubah setelan port dalam file konfigurasi.
Mulai ulang agen Monitoring untuk mengambil konfigurasi StatsD dengan menjalankan perintah berikut:
sudo service stackdriver-agent restart
Untuk mengetahui informasi selengkapnya tentang plugin collectd statsd, lihat
Plugin:StatsD.
Pemetaan default ke metrik yang ditentukan pengguna
Untuk membantu Anda memulai dengan cepat, plugin StatsD agen dilengkapi dengan konfigurasi collectd default yang memetakan metrik StatsD ke metrik yang ditentukan pengguna Stackdriver:
Semua metrik dari plugin StatsD memiliki
statsddi komponenplugincollectd.Setiap jenis metrik StatsD—yang ada di komponen
typecollectd—memiliki nama jenis metrik yang ditentukan pengguna yang sesuai.Nama metrik StatsD—yang ada di komponen
type_instancecollectd—disimpan sebagai nilai label bernamametric.Nilai label
metricberbeda untuk jenis metrikTimer: nilai tersebut mencakup nama metrik dan nama penghitung: rata-rata, atas, bawah, jumlah, persentil ke-50, dan persentil ke-95.
Misalnya, tabel berikut menunjukkan cara jenis metrik StatsD yang didukung dan nama metrik dipetakan ke metrik yang ditentukan pengguna Monitoring:
| Jenis StatsD | Nama StatsD | Jenis metrik Stackdriver | Jenis metrik | Jenis nilai | Label metrik |
|---|---|---|---|---|---|
| Penghitung | my.counter | custom.googleapis.com/statsd/derive | Kumulatif | Int64 | metric:my.counter |
| Meteran | my.gauge | custom.googleapis.com/statsd/gauge | Meteran | Ganda | metric:my.gauge |
| Disetel | my.set | custom.googleapis.com/statsd/objects | Meteran | Ganda | metric:my.set |
| Timer1 | my.timer | custom.googleapis.com/statsd/latency | Meteran | Ganda | metric:my.timer-average |
| (sama) | (sama) | (sama) | metrik:my.timer-upper | ||
| (sama) | (sama) | (sama) | metrik:my.timer-lower | ||
| (sama) | (sama) | (sama) | metrik:my.timer-sum | ||
| (sama) | (sama) | (sama) | metric:my.timer-percentile-50 | ||
| (sama) | (sama) | (sama) | metric:my.timer-percentile-95 | ||
| custom.googleapis.com/statsd/gauge | Meteran | (sama) | metrik:my.timer-count |
Catatan:
1 Ada urutan metrik timer statsd yang masuk dengan
nama yang sama. Agen menggabungkan metrik timer StatsD dan mengekspor data ringkasan
ke 7 deret waktu yang berbeda.
Untuk mengetahui informasi selengkapnya tentang jenis StatsD, lihat spesifikasi StatsD.
Menyesuaikan metrik yang diekspor
Konfigurasi StatsD default dirancang untuk membantu Anda memulai dengan cepat. Bagian ini membantu Anda menyesuaikan konfigurasi agar sesuai dengan kebutuhan yang lebih kompleks.
Anda harus memahami metrik yang ditentukan pengguna. Untuk pengantar tentang metrik, lihat Metrik, Deret Waktu, dan Resource. Untuk mengetahui informasi selengkapnya, lihat Ringkasan metrik yang ditentukan pengguna.
Anda dapat menyesuaikan hal-hal berikut:
Anda dapat mengubah nilai yang ditetapkan ke label
metricdefault. Penggunaan lebih banyak nilai label akan menghasilkan lebih banyak deret waktu dalam metrik yang ditentukan pengguna. Menggunakan lebih sedikit nilai label akan menghasilkan lebih sedikit deret waktu.Anda dapat mengubah jenis metrik yang ditentukan pengguna. Anda tidak harus menggunakan jenis standar yang disediakan dalam konfigurasi default. Misalnya, Anda dapat mengidentifikasi metrik dengan nama tertentu dan menggunakan jenis metrik yang ditentukan pengguna yang berbeda untuk metrik tersebut.
Jika Anda mengubah jenis metrik yang ditentukan pengguna, Anda juga dapat mengubah label yang terkait dengan setiap jenis. Konfigurasi default memiliki satu label, tetapi Anda dapat menambahkan lebih banyak label atau mengubah kunci label.
Jika Anda mengubah jenis metrik, Anda harus menentukan jenis metrik buatan pengguna baru di Monitoring API. Untuk mengetahui detailnya, lihat bagian berikut, Mendesain jenis metrik.
Contoh
Asumsikan bahwa Anda menggunakan StatsD untuk memantau aplikasi yang terdiri dari dua layanan, my_service_a dan my_service_b. Untuk setiap layanan, Anda ingin mengekspor metrik penghitung ke Monitoring yang merepresentasikan jumlah permintaan yang gagal. Anda tidak ingin menggunakan jenis metrik StatsD default.
Metrik collectd masuk
Sebelum menentukan jenis metrik Anda sendiri, penting untuk memahami struktur metrik collectd dan cara metrik StatsD secara default dipetakan ke metrik yang ditentukan pengguna.
Metrik Collectd, termasuk metrik StatsD, mencakup komponen berikut:
Host, Plugin, Plugin-instance, Type, Type-instance
Dalam contoh ini, metrik StatsD yang ingin Anda ekspor memiliki ID berikut di collectd:
| Komponen | Nilai yang diharapkan |
|---|---|
| Host | apa pun |
| Plugin | statsd |
| Instance plugin | unset1 |
| Jenis | derive2 |
| Instance jenis | [SERVICE_NAME].GET.[CODE]3 |
[VALUE] |
nilai apa saja4 |
Catatan:
1 Plugin StatsD saat ini membiarkan komponen ini kosong.
2 Metrik Penghitung StatsD dipetakan ke jenis derive collectd.
3 Misalnya, instance jenis dapat berupa my_service_a.GET.500.
4 [VALUE] biasanya berupa stempel waktu dan angka presisi ganda.
Tabel berikut menunjukkan cara metrik ini dipetakan secara default:
| Jenis StatsD | Nama StatsD | Jenis metrik Stackdriver | Jenis metrik | Jenis nilai | Label metrik |
|---|---|---|---|---|---|
| Penghitung | my_service_a.GET.500 | custom.googleapis.com/statsd/derive | Kumulatif | Int64 | metric:my_servce_a.GET.500 |
| Penghitung | my_service_b.GET.403 | custom.googleapis.com/statsd/derive | Kumulatif | Int64 | metric:my_servce_b.GET.403 |
Pemetaan default mungkin menimbulkan beberapa kesulitan bagi Anda:
Metrik penghitung tertentu ini (
[SERVICE_NAME].GET.[CODE]) berada dalam jenis metrik yang ditentukan pengguna yang sama dengan semua metrik penghitung lainnya. Anda tidak dapat dengan mudah mendapatkan data metrik ini saja, karena Stackdriver saat ini tidak mendukung penelusuran ekspresi reguler pada label.Anda tidak dapat dengan mudah mendapatkan data untuk setiap layanan atau kode respons di data Anda. Misalnya, Anda tidak dapat dengan mudah mendapatkan jumlah total error (dari semua jenis) yang terjadi di
my_service_a.Konfigurasi default mengekspor semua metrik StatsD ke Stackdriver, yang bisa mahal jika Anda hanya tertarik dengan metrik tertentu.
Mendesain jenis metrik
Untuk pembahasan lengkap tentang cara membuat jenis metrik, lihat Membuat jenis metrik yang ditentukan pengguna.
Jenis metrik yang ditentukan pengguna berikut adalah pilihan yang wajar untuk data dalam contoh ini, karena hanya berisi metrik StatsD yang Anda minati dan karena pilihan labelnya membantu mengatur data dengan lebih baik:
- Jenis:
custom.googleapis.com/http/request_errors - Label:
service_name(STRING): Nama layanan.response_code(INT64): Kode respons HTTP.
- Jenis: KUMULATIF
- Jenis nilai: INT64
Tabel berikut menunjukkan pemetaan yang diinginkan dari StatsD ke Stackdriver:
| Jenis StatsD | Nama StatsD | Jenis metrik Stackdriver | Jenis metrik | Jenis nilai | Label metrik |
|---|---|---|---|---|---|
| Penghitung | my_service_a.GET.500 | custom.googleapis.com/http/request_errors | Kumulatif | Int64 | service_name:my_service_a, response_code:500 |
| Penghitung | my_service_b.GET.403 | custom.googleapis.com/http/request_errors | Kumulatif | Int64 | service_name:my_service_b, response_code:403 |
Setelah mendesain jenis metrik, buat jenis metrik tersebut menggunakan metricDescriptors.create. Untuk mengetahui informasi tentang cara mengizinkan Monitoring membuat jenis metrik untuk Anda, lihat Pembuatan otomatis deskriptor metrik.
Konfigurasi pemetaan
Untuk mengekspor metrik StatsD ke jenis metrik yang ditentukan pengguna baru,
ganti konten konfigurasi plugin StatsD default,
/etc/stackdriver/collectd.d/statsd.conf,
dengan kode berikut:
<Plugin statsd>
Host "127.0.0.1"
Port "8125"
DeleteSets true
TimerPercentile 50.0
TimerPercentile 95.0
TimerLower true
TimerUpper true
TimerSum true
TimerCount true
</Plugin>
LoadPlugin match_regex
LoadPlugin target_set
LoadPlugin target_replace
# Insert a new rule in the default "PreCache" chain, to divert your metrics.
PreCacheChain "PreCache"
<Chain "PreCache">
# The following rule does all the work for your metric:
<Rule "rewrite_request_errors">
# Do a careful match for just your metrics; if it fails, drop down
# to the next rule:
<Match regex>
Plugin "^statsd$"
TypeInstance "^.*\\.GET\\..*$" # Match on type instance.
</Match>
<Target "set">
# Specify the metric descriptor type:
MetaData "stackdriver_metric_type" "custom.googleapis.com/http/request_errors"
# Initialize the labels from the "type_instance" label; clean the values up in the next Target below.
MetaData "label:service_name" "%{type_instance}"
MetaData "label:response_code" "%{type_instance}"
</Target>
<Target "replace">
# Remove ".GET.[code]" to get the real service name.
MetaData "label:service_name" "\\.GET\\.[0-9]*$" ""
# Remove "[service].GET." to get the real response code.
MetaData "label:response_code" "^[^\\.]*\\.GET\\." ""
</Target>
</Rule>
</Chain>
Memulai ulang agen
Mulai ulang agen untuk mengambil konfigurasi baru dengan menjalankan perintah berikut di instance VM Anda:
sudo service stackdriver-agent restart
Informasi metrik yang ditentukan pengguna Anda akan segera masuk ke Monitoring.
Langkah berikutnya
Menyesuaikan plugin StatsD sama dengan penyesuaian metrik collectd untuk Monitoring. Untuk mengetahui informasi selengkapnya, lihat bagian Referensi dan Pemecahan Masalah di Metrik yang ditentukan pengguna dari agen.