Plugin StatsD

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:

  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 di file konfigurasi.

  3. 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 komponen plugin 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 bernama metric.

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