Plugin StatsD

StatsD adalah protokol untuk mengirimkan metrik dan daemon untuk agregasi data metrik. Dengan mengonfigurasi plugin StatsD agen Monitoring, Anda menjadikan agen berfungsi sebagai daemon StatsD yang menulis metrik ke Monitoring.

Menggunakan plugin StatsD dengan konfigurasi default 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 yang dikumpulkan lainnya sebagai metrik yang ditentukan pengguna, tetapi tidak ada konfigurasi default yang sederhana. Lihat Metrik buatan pengguna dari agen untuk mengetahui detailnya.

Fungsi ini hanya tersedia untuk agen yang berjalan di Linux. Alat ini tidak tersedia di Windows.

Penemuan

Pemantauan tidak otomatis mendeteksi Statistik. Untuk menggunakan metrik Statistik, konfigurasi plugin Statistik 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 memperbarui agen, lihat Memperbarui agen.

Mengaktifkan plugin

Lakukan hal berikut pada instance VM yang didukung yang menjalankan Linux:

  1. 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)
    
  2. File konfigurasi default menginstruksikan agen untuk menerima metrik StatsD pada 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.

  3. Mulai ulang agen Monitoring 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 untuk metrik yang ditentukan pengguna

Untuk membantu Anda memulai dengan cepat, plugin Statistik agen dilengkapi dengan konfigurasi gabungan default yang memetakan dari metrik Statistik ke metrik yang ditentukan pengguna Stackdriver:

  • Semua metrik dari plugin StatsD memiliki statsd di komponen plugin yang dikumpulkan.

  • Setiap jenis metrik Statistik—yang ada dalam komponen type yang dikumpulkan—memiliki nama jenis metrik yang ditentukan pengguna yang sesuai.

  • Nama metrik Statistik—yang ada dalam komponen type_instance yang dikumpulkan—disimpan sebagai nilai label bernama metric.

    Nilai label metric berbeda untuk jenis metrik Timer: nilai ini mencakup nama metrik dan nama penghitung: rata-rata, atas, bawah, jumlah, persentil-50, dan persentil-95.

Misalnya, tabel berikut menunjukkan cara jenis metrik Statistik yang didukung dan nama metrik dipetakan ke metrik Monitoring yang ditentukan pengguna:

Jenis statistik Nama statistik 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 masuk dari metrik timer dengan statistik yang memiliki nama yang sama. Agen menggabungkan metrik timer Statistik dan mengekspor data ringkasan ke 7 deret waktu yang berbeda.

Untuk informasi selengkapnya tentang jenis Statistik, lihat Spesifikasi statistik.

Menyesuaikan metrik yang diekspor

Konfigurasi Statistik default dirancang agar Anda dapat 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 metrik, lihat Metrik, Deret Waktu, dan Resource. Untuk informasi lebih lanjut, 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 deret waktu yang lebih sedikit.

  • Anda dapat mengubah jenis metrik yang ditetapkan pengguna. Anda tidak perlu menggunakan jenis standar yang disediakan dalam konfigurasi default. Misalnya, Anda dapat mengidentifikasi metrik dengan nama tertentu dan menggunakan jenis metrik yang ditentukan pengguna 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 baru yang ditetapkan pengguna di Monitoring API. Untuk mengetahui detailnya, lihat bagian berikut, Mendesain jenis metrik.

Contoh

Asumsikan 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 yang menunjukkan jumlah permintaan yang gagal ke Monitoring. Anda tidak ingin menggunakan jenis metrik Statistik default.

Metrik yang dikumpulkan yang masuk

Sebelum menentukan jenis metrik sendiri, penting untuk memahami struktur metrik yang dikumpulkan dan cara metrik Statistik secara default dipetakan ke dalam metrik yang ditentukan pengguna.

Metrik yang dikumpulkan, termasuk metrik Statistik, mencakup komponen berikut:

    Host, Plugin, Plugin-instance, Type, Type-instance

Dalam contoh ini, metrik Statistik yang ingin Anda ekspor mengumpulkan ID berikut:

Komponen Nilai yang diharapkan
Host apa pun
Plugin statsd
Instance plugin tidak disetel1
Jenis derive2
Instance jenis [SERVICE_NAME].GET.[CODE]3
[VALUE] semua nilai4

Catatan:
1 Plugin StatsD saat ini mengosongkan komponen ini.
2 Metrik Penghitung Statistik dipetakan ke jenis derive yang dikumpulkan. 3 Misalnya, instance jenisnya mungkin my_service_a.GET.500. 4 [VALUE] biasanya berupa stempel waktu dan angka presisi ganda.

Tabel berikut menunjukkan cara metrik ini akan dipetakan secara default:

Jenis statistik Nama statistik 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]) memiliki jenis metrik yang ditentukan pengguna yang sama seperti semua metrik penghitung lainnya. Anda tidak dapat memperoleh data metrik ini dengan mudah, karena Stackdriver saat ini tidak mendukung penelusuran ekspresi reguler pada label.

  • Anda tidak akan bisa mendapatkan data untuk setiap layanan atau kode respons individual dalam data Anda. Misalnya, Anda tidak mudah mendapatkan jumlah total error (dari semua jenis) yang terjadi di my_service_a.

  • Konfigurasi default mengekspor semua metrik Statistik ke Stackdriver, yang dapat berbiaya mahal jika Anda hanya tertarik dengan metrik tertentu.

Mendesain jenis metrik

Untuk diskusi lengkap tentang pembuatan jenis metrik, lihat Membuat jenis metrik yang ditentukan pengguna.

Jenis metrik buatan pengguna berikut merupakan pilihan yang wajar untuk data dalam contoh ini karena hanya berisi metrik Statistik 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 statistik Nama statistik 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 menggunakan metricDescriptors.create. Untuk mengetahui informasi tentang cara mengizinkan Monitoring membuat jenis metrik untuk Anda, lihat Pembuatan deskripsi metrik secara otomatis.

Konfigurasi pemetaan

Untuk mengekspor metrik Statistik 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 Anda untuk mengambil konfigurasi baru dengan menjalankan perintah berikut pada instance VM Anda:

sudo service stackdriver-agent restart

Informasi metrik yang ditentukan pengguna akan segera masuk ke Monitoring.

Langkah berikutnya

Menyesuaikan plugin Statistik sama dengan penyesuaian metrik yang dikumpulkan untuk Monitoring. Untuk informasi selengkapnya, lihat bagian Referensi dan Pemecahan Masalah pada Metrik yang ditentukan pengguna dari agen.