StatsD adalah protokol untuk mengirimkan metrik dan daemon untuk agregasi data metrik. Dengan mengonfigurasi plugin StatsD agen Monitoring, Anda membuat agen berfungsi sebagai daemon StatsD yang menulis metrik ke Monitoring.
Menggunakan plugin StatsD dengan konfigurasi default-nya adalah cara termudah untuk memasukkan metrik yang ditentukan pengguna ke Monitoring. Plugin StatsD hanya tersedia di agen Stackdriver Monitoring Linux.
Agen Pemantauan 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
Pemantauan tidak otomatis mendeteksi StatsD. Untuk menggunakan metrik StatsD, konfigurasikan plugin StatsD seperti yang dijelaskan di bagian berikutnya.
Mengonfigurasi plugin StatsD
Prasyarat
Plugin StatsD memerlukan agen Monitoring versi 5.5.2-356 atau yang lebih baru. Untuk mengupdate agen, lihat Mengupdate agen.
Mengaktifkan plugin
Lakukan hal berikut pada instance VM yang didukung yang 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 di file konfigurasi.
Mulai ulang Agen pemantauan untuk mengambil konfigurasi StatsD dengan menjalankan perintah berikut:
sudo service stackdriver-agent restart
Untuk 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 dari metrik StatsD ke metrik yang ditentukan pengguna Stackdriver:
Semua metrik dari plugin StatsD memiliki
statsd
dalam komponenplugin
collectd.Setiap jenis metrik StatsD—yang disimpan dalam komponen
type
collectd—memiliki nama jenis metrik yang ditentukan pengguna yang sesuai.Nama metrik StatsD—yang disimpan dalam komponen
type_instance
collectd—disimpan sebagai nilai label bernamametric
.Nilai label
metric
berbeda untuk jenis metrikTimer
: nilai ini menyertakan nama metrik dan nama penghitung: rata-rata, atas, bawah, jumlah, persentil-50, dan persentil-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 |
Ditetapkan | 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) | metric:my.timer-upper | ||
(sama) | (sama) | (sama) | metric:my.timer-lower | ||
(sama) | (sama) | (sama) | metric: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) | metric: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 buatan pengguna. Untuk mengetahui pengantar metrik, lihat Metrik, Deret Waktu, dan Resource. Untuk informasi selengkapnya, lihat Ringkasan metrik yang ditentukan pengguna.
Anda dapat menyesuaikan hal-hal berikut:
Anda dapat mengubah nilai yang ditetapkan ke label
metric
default. Menggunakan 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 perlu menggunakan jenis yang telah ditentukan sebelumnya 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 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 mengubah jenis metrik, Anda harus menentukan jenis metrik yang ditentukan 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 ke Monitoring metrik penghitung yang mewakili 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 dalam metrik yang ditentukan pengguna.
Metrik Collectd, termasuk metrik StatsD, menyertakan 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 | derive 2 |
Instance jenis | [SERVICE_NAME].GET.[CODE] 3 |
[VALUE] |
nilai apa pun4 |
Catatan:
1 Plugin StatsD saat ini mengosongkan komponen ini.
2 Metrik Penghitung StatsD dipetakan ke jenis derive
collectd.
3 Misalnya, instance jenis mungkin 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 khusus 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 individual dalam data Anda. Misalnya, Anda tidak dapat dengan mudah mendapatkan jumlah total error (berbagai jenis) yang terjadi di
my_service_a
.Konfigurasi default mengekspor semua metrik StatsD ke Stackdriver, yang dapat memakan biaya jika Anda hanya tertarik dengan metrik tertentu.
Mendesain jenis metrik
Untuk diskusi lengkap tentang cara membuat jenis metrik, lihat Membuat jenis metrik buatan pengguna.
Jenis metrik yang ditentukan pengguna berikut adalah pilihan yang wajar untuk data dalam contoh ini, karena hanya menyimpan 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: CUMULATIVE
- 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 Anda mendesain jenis metrik, buat metrik menggunakan metricDescriptors.create. Untuk informasi tentang cara mengizinkan Monitoring membuat jenis metrik untuk Anda, lihat Pembuatan deskripsi metrik secara otomatis.
Konfigurasi pemetaan
Untuk mengekspor metrik StatsD ke jenis metrik baru yang ditentukan pengguna, 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 akan segera masuk ke Metrik.
Langkah berikutnya
Menyesuaikan plugin StatsD sama dengan penyesuaian metrik collectd untuk Monitoring. Untuk informasi selengkapnya, lihat bagian Referensi dan Pemecahan Masalah di Metrik yang ditentukan pengguna dari agen.