Plugin StatsD

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:

  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 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.

  3. 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 statsd di komponen plugin collectd.

  • Setiap jenis metrik StatsD—yang ada di komponen type collectd—memiliki nama jenis metrik yang ditentukan pengguna yang sesuai.

  • Nama metrik StatsD—yang ada di komponen type_instance collectd—disimpan sebagai nilai label bernama metric.

    Nilai label metric berbeda untuk jenis metrik Timer: 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 metric default. 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.