Kontrol dan atribusi biaya

Google Cloud Managed Service for Prometheus mengenakan biaya untuk jumlah sampel yang ditransfer ke Cloud Monitoring dan untuk permintaan baca ke Monitoring API. Jumlah sampel yang diserap adalah kontributor utama biaya Anda.

Dokumen ini menjelaskan cara mengontrol biaya yang terkait dengan penyerapan metrik dan cara mengidentifikasi sumber penyerapan bervolume tinggi.

Untuk informasi selengkapnya tentang harga Managed Service for Prometheus, lihat ringkasan harga Managed Service for Prometheus.

Melihat tagihan

Untuk melihat tagihan Google Cloud, lakukan tindakan berikut:

  1. Di konsol Google Cloud, buka halaman Penagihan.

    Buka Penagihan

  2. Jika Anda memiliki lebih dari satu akun penagihan, pilih Buka akun penagihan tertaut untuk melihat akun penagihan project saat ini. Untuk menemukan akun penagihan lain, pilih Kelola akun penagihan, lalu pilih akun yang laporan penggunaannya ingin Anda dapatkan.

  3. Di bagian Pengelolaan biaya pada menu navigasi Penagihan, pilih Laporan.

  4. Dari menu Services, pilih opsi Cloud Monitoring.

  5. Dari menu SKUs, pilih opsi berikut:

    • Sampel Prometheus yang Ditransfer
    • Permintaan Monitoring API

Screenshot berikut menunjukkan laporan penagihan untuk Managed Service for Prometheus dari satu project:

Laporan penagihan untuk Managed Service for Prometheus menampilkan penggunaan saat ini dan
yang diproyeksikan.

Mengurangi biaya

Untuk mengurangi biaya yang terkait dengan penggunaan Managed Service for Prometheus, Anda dapat melakukan hal berikut:

  • Kurangi jumlah deret waktu yang Anda kirim ke layanan terkelola dengan memfilter data metrik yang Anda buat.
  • Kurangi jumlah sampel yang Anda kumpulkan dengan mengubah interval scraping.
  • Batasi jumlah sampel dari metrik berkardinalitas tinggi yang berpotensi salah dikonfigurasi.

Mengurangi jumlah deret waktu

Dokumentasi Prometheus open source jarang merekomendasikan pemfilteran volume metrik, yang wajar jika biaya dibatasi oleh biaya mesin. Namun, saat membayar penyedia layanan terkelola berdasarkan unit, pengiriman data tanpa batas dapat menyebabkan tagihan yang tidak perlu tinggi.

Eksporter yang disertakan dalam project kube-prometheus—khususnya layanan kube-state-metrics—dapat menghasilkan banyak data metrik. Misalnya, layanan kube-state-metrics memunculkan ratusan metrik, yang sebagian besar mungkin sama sekali tidak bernilai bagi Anda sebagai konsumen. Cluster tiga node baru yang menggunakan project kube-prometheus mengirimkan sekitar 900 sampel per detik ke Managed Service for Prometheus. Memfilter metrik yang tidak relevan ini mungkin sudah cukup untuk menurunkan tagihan Anda ke tingkat yang dapat diterima.

Untuk mengurangi jumlah metrik, Anda dapat melakukan hal berikut:

Jika menggunakan layanan kube-state-metrics, Anda dapat menambahkan aturan pemberian label ulang Prometheus dengan tindakan keep. Untuk pengumpulan terkelola, aturan ini akan dimasukkan ke dalam definisi PodMonitoring atau ClusterPodMonitoring. Untuk pengumpulan yang di-deploy sendiri, aturan ini akan dimasukkan ke dalam konfigurasi scrape Prometheus atau definisi ServiceMonitor (untuk prometheus-operator).

Misalnya, menggunakan filter berikut pada cluster tiga node baru akan mengurangi volume sampel Anda sekitar 125 sampel per detik:

  metricRelabeling:
  - action: keep
    regex: kube_(daemonset|deployment|pod|namespace|node|statefulset|persistentvolume|horizontalpodautoscaler)_.+
    sourceLabels: [__name__]

Filter sebelumnya menggunakan ekspresi reguler untuk menentukan metrik mana yang akan disimpan berdasarkan nama metrik. Misalnya, metrik yang namanya diawali dengan kube_daemonset_ akan disimpan. Anda juga dapat menentukan tindakan drop, yang memfilter metrik yang cocok dengan ekspresi reguler.

Terkadang, Anda mungkin merasa seluruh eksportir tidak penting. Misalnya, paket kube-prometheus menginstal monitor layanan berikut secara default, yang sebagian besar tidak diperlukan di lingkungan terkelola:

  • alertmanager
  • coredns
  • grafana
  • kube-apiserver
  • kube-controller-manager
  • kube-scheduler
  • kube-state-metrics
  • kubelet
  • node-exporter
  • prometheus
  • prometheus-adapter
  • prometheus-operator

Untuk mengurangi jumlah metrik yang diekspor, Anda dapat menghapus, menonaktifkan, atau berhenti meng-scrape monitor layanan yang tidak diperlukan. Misalnya, menonaktifkan monitor layanan kube-apiserver di cluster tiga node baru akan mengurangi volume sampel Anda sekitar 200 sampel per detik.

Mengurangi jumlah sampel yang dikumpulkan

Managed Service for Prometheus mengenakan biaya per sampel. Anda dapat mengurangi jumlah sampel yang diserap dengan meningkatkan durasi periode sampling. Contoh:

  • Mengubah periode pengambilan sampel 10 detik menjadi periode pengambilan sampel 30 detik dapat mengurangi volume sampel Anda sebesar 66%, tanpa banyak kehilangan informasi.
  • Mengubah periode pengambilan sampel 10 detik menjadi periode pengambilan sampel 60 detik dapat mengurangi volume sampel Anda sebesar 83%.

Untuk informasi tentang cara penghitungan sampel dan pengaruh periode sampling terhadap jumlah sampel, lihat Contoh harga berdasarkan sampel yang diserap.

Anda biasanya dapat menetapkan interval scraping per tugas atau per target.

Untuk pengumpulan terkelola, Anda menetapkan interval pengambilan di resource PodMonitoring menggunakan kolom interval. Untuk pengumpulan yang di-deploy sendiri, Anda menetapkan interval pengambilan sampel di konfigurasi scrape, biasanya dengan menetapkan kolom interval atau scrape_interval.

Mengonfigurasi agregasi lokal (khusus koleksi yang di-deploy sendiri)

Jika Anda mengonfigurasi layanan menggunakan pengumpulan yang di-deploy sendiri, misalnya dengan kube-prometheus, prometheus-operator, atau dengan men-deploy image secara manual, Anda dapat mengurangi sampel yang dikirim ke Managed Service for Prometheus dengan menggabungkan metrik berkardinalitas tinggi secara lokal. Anda dapat menggunakan aturan perekaman untuk menggabungkan label seperti instance dan menggunakan tanda --export.match atau variabel lingkungan EXTRA_ARGS untuk hanya mengirim data gabungan ke Monarch.

Misalnya, Anda memiliki tiga metrik, high_cardinality_metric_1, high_cardinality_metric_2, dan low_cardinality_metric. Anda ingin mengurangi sampel yang dikirim untuk high_cardinality_metric_1 dan menghapus semua sampel yang dikirim untuk high_cardinality_metric_2, sekaligus menyimpan semua data mentah secara lokal (mungkin untuk tujuan pemberitahuan). Penyiapan Anda mungkin terlihat seperti ini:

  • Deploy image Managed Service for Prometheus.
  • Konfigurasikan konfigurasi scraping Anda untuk meng-scrape semua data mentah ke dalam server lokal (menggunakan filter sesedikit mungkin sesuai keinginan).
  • Konfigurasikan aturan perekaman untuk menjalankan agregasi lokal di atas high_cardinality_metric_1 dan high_cardinality_metric_2, mungkin dengan menggabungkan label instance atau sejumlah label metrik, bergantung pada apa yang memberikan pengurangan terbaik dalam jumlah deret waktu yang tidak diperlukan. Anda dapat menjalankan aturan yang terlihat seperti berikut, yang menghapus label instance dan menjumlahkan deret waktu yang dihasilkan di atas label yang tersisa:

    record: job:high_cardinality_metric_1:sum
    expr: sum without (instance) (high_cardinality_metric_1)
    

    Lihat operator agregasi dalam dokumentasi Prometheus untuk mengetahui opsi agregasi lainnya.

  • Deploy image Managed Service for Prometheus dengan flag filter berikut, yang mencegah data mentah dari metrik yang tercantum dikirim ke Monarch:

    --export.match='{__name__!="high_cardinality_metric_1",__name__!="high_cardinality_metric_2"}'
    

    Contoh flag export.match ini menggunakan pemilih yang dipisahkan koma dengan operator != untuk memfilter data mentah yang tidak diinginkan. Jika Anda menambahkan aturan perekaman tambahan untuk menggabungkan metrik kardinalitas tinggi lainnya, Anda juga harus menambahkan pemilih __name__ baru ke filter sehingga data mentah dihapus. Dengan menggunakan satu tanda yang berisi beberapa pemilih dengan operator != untuk memfilter data yang tidak diinginkan, Anda hanya perlu mengubah filter saat membuat agregasi baru, bukan setiap kali Anda mengubah atau menambahkan konfigurasi scrape.

    Metode deployment tertentu, seperti prometheus-operator, mungkin memerlukan Anda untuk menghapus tanda kutip tunggal yang mengelilingi tanda kurung.

Alur kerja ini mungkin menimbulkan beberapa overhead operasional dalam membuat dan mengelola aturan perekaman dan tanda export.match, tetapi Anda mungkin dapat mengurangi banyak volume dengan hanya berfokus pada metrik dengan kardinalitas yang sangat tinggi. Untuk mengetahui informasi tentang cara mengidentifikasi metrik yang mungkin paling diuntungkan dari pra-agregasi lokal, lihat Mengidentifikasi metrik bervolume tinggi.

Jangan terapkan federasi saat menggunakan Managed Service for Prometheus. Alur kerja ini membuat penggunaan server federasi tidak berlaku lagi, karena satu server Prometheus yang di-deploy sendiri dapat melakukan agregasi tingkat cluster yang mungkin Anda perlukan. Federasi dapat menyebabkan efek yang tidak terduga seperti metrik berjenis "unknown" dan volume penyerapan yang dua kali lipat.

Membatasi sampel dari metrik berkardinalitas tinggi (khusus pengumpulan yang di-deploy sendiri)

Anda dapat membuat metrik berkardinalitas sangat tinggi dengan menambahkan label yang memiliki sejumlah besar nilai potensial, seperti ID pengguna atau alamat IP. Metrik tersebut dapat menghasilkan sampel dalam jumlah sangat besar. Menggunakan label dengan sejumlah besar nilai biasanya merupakan kesalahan konfigurasi. Anda dapat melindungi metrik dengan kardinalitas tinggi di kolektor yang di-deploy sendiri dengan menetapkan nilai sample_limit di konfigurasi pengambilan.

Jika Anda menggunakan batas ini, sebaiknya tetapkan ke nilai yang sangat tinggi, sehingga hanya akan mendeteksi metrik yang jelas-jelas salah dikonfigurasi. Setiap sampel yang melebihi batas akan dihapus, dan akan sangat sulit untuk mendiagnosis masalah yang disebabkan oleh melampaui batas.

Menggunakan batas sampel bukanlah cara yang baik untuk mengelola penyerapan sampel, tetapi batas tersebut dapat melindungi Anda dari kesalahan konfigurasi yang tidak disengaja. Untuk mengetahui informasi selengkapnya, lihat Menggunakan sample_limit untuk menghindari kelebihan beban.

Mengidentifikasi dan mengatribusikan biaya

Anda dapat menggunakan Cloud Monitoring untuk mengidentifikasi metrik Prometheus yang menulis sampel dalam jumlah terbesar. Metrik ini paling banyak berkontribusi pada biaya Anda. Setelah mengidentifikasi metrik yang paling mahal, Anda dapat mengubah konfigurasi scrape untuk memfilter metrik ini dengan tepat.

Halaman Pengelolaan Metrik Cloud Monitoring memberikan informasi yang dapat membantu Anda mengontrol jumlah yang Anda belanjakan untuk metrik yang dapat ditagih tanpa memengaruhi visibilitas. Halaman Pengelolaan Metrik melaporkan informasi berikut:

  • Volume transfer untuk penagihan berbasis byte dan sampel, di seluruh domain metrik dan untuk setiap metrik.
  • Data tentang label dan kardinalitas metrik.
  • Jumlah pembacaan untuk setiap metrik.
  • Penggunaan metrik dalam kebijakan pemberitahuan dan dasbor kustom.
  • Rasio error penulisan metrik.

Anda juga dapat menggunakan Pengelolaan Metrik untuk mengecualikan metrik yang tidak diperlukan, sehingga menghilangkan biaya penyerapannya.

Untuk melihat halaman Pengelolaan Metrik, lakukan tindakan berikut:

  1. Di konsol Google Cloud, buka halaman  Metrics management:

    Buka Pengelolaan metrik

    Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Monitoring.

  2. Di toolbar, pilih jangka waktu. Secara default, halaman Pengelolaan Metrik menampilkan informasi tentang metrik yang dikumpulkan dalam satu hari sebelumnya.

Untuk informasi selengkapnya tentang halaman Pengelolaan Metrik, lihat Melihat dan mengelola penggunaan metrik.

Bagian berikut menjelaskan cara menganalisis jumlah sampel yang Anda kirim ke Managed Service for Prometheus dan mengatribusikan volume tinggi ke metrik, namespace Kubernetes, dan region Google Cloud tertentu.

Mengidentifikasi metrik bervolume tinggi

Untuk mengidentifikasi metrik Prometheus dengan volume penyerapan terbesar, lakukan hal berikut:

  1. Di konsol Google Cloud, buka halaman  Metrics management:

    Buka Pengelolaan metrik

    Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Monitoring.

  2. Pada kartu skor Contoh yang dapat ditagih yang ditransfer, klik Lihat diagram.
  3. Cari diagram Penyerapan Volume Namespace, lalu klik  Opsi diagram lainnya.
  4. Pilih opsi diagram Lihat di Metrics Explorer.
  5. Di panel Builder Metrics Explorer, ubah kolom sebagai berikut:
    1. Di kolom Metric, pastikan resource dan metrik berikut dipilih:
      Metric Ingestion Attribution dan Samples written by attribution id.
    2. Untuk kolom Aggregation, pilih sum.
    3. Untuk kolom menurut, pilih label berikut:
      • attribution_dimension
      • metric_type
    4. Untuk kolom Filter, gunakan attribution_dimension = namespace. Anda harus melakukannya setelah menggabungkan menurut label attribution_dimension.

    Diagram yang dihasilkan menunjukkan volume penyerapan untuk setiap jenis metrik.

  6. Untuk melihat volume penyerapan untuk setiap metrik, di tombol berlabel Chart Table Both, pilih Both. Tabel ini menunjukkan volume yang ditransfer untuk setiap metrik di kolom Nilai.
  7. Klik header kolom Value dua kali untuk mengurutkan metrik berdasarkan volume penyerapan menurun.

Diagram yang dihasilkan, yang menunjukkan metrik teratas menurut volume yang diberi peringkat berdasarkan rata-rata, akan terlihat seperti screenshot berikut: Diagram yang dikonfigurasi menunjukkan volume penyerapan metrik untuk setiap metrik.

Mengidentifikasi namespace bervolume tinggi

Untuk mengatribusikan volume transfer ke namespace Kubernetes tertentu, lakukan hal berikut:

  1. Di konsol Google Cloud, buka halaman  Metrics management:

    Buka Pengelolaan metrik

    Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Monitoring.

  2. Pada kartu skor Contoh yang dapat ditagih yang ditransfer, klik Lihat diagram.
  3. Cari diagram Penyerapan Volume Namespace, lalu klik  Opsi diagram lainnya.
  4. Pilih opsi diagram Lihat di Metrics Explorer.
  5. Di panel Builder di Metrics Explorer, ubah kolom sebagai berikut:
    1. Di kolom Metric, pastikan resource dan metrik berikut dipilih:
      Metric Ingestion Attribution dan Samples written by attribution id.
    2. Konfigurasikan parameter kueri lainnya sebagaimana mestinya:
      • Untuk mengaitkan volume penyerapan secara keseluruhan dengan namespace:
        • Untuk kolom Aggregation, pilih sum.
        • Untuk kolom menurut, pilih label berikut:
          • attribution_dimension
          • attribution_id
        • Untuk kolom Filter, gunakan attribution_dimension = namespace.
      • Untuk mengaitkan volume penyerapan setiap metrik dengan namespace:
        • Untuk kolom Aggregation, pilih sum.
        • Untuk kolom menurut, pilih label berikut:
          • attribution_dimension
          • attribution_id
          • metric_type
        • Untuk kolom Filter, gunakan attribution_dimension = namespace.
      • Untuk mengidentifikasi namespace yang bertanggung jawab atas metrik bervolume tinggi tertentu:
        1. Identifikasi jenis metrik untuk metrik bervolume tinggi dengan menggunakan salah satu contoh lain untuk mengidentifikasi jenis metrik bervolume tinggi. Jenis metrik adalah string dalam tampilan tabel yang dimulai dengan prometheus.googleapis.com/. Untuk mengetahui informasi selengkapnya, lihat Mengidentifikasi metrik bervolume tinggi.
        2. Batasi data diagram ke jenis metrik yang diidentifikasi dengan menambahkan filter untuk jenis metrik di kolom Filter. Misalnya:
          metric_type= prometheus.googleapis.com/container_tasks_state/gauge.
        3. Untuk kolom Aggregation, pilih sum.
        4. Untuk kolom menurut, pilih label berikut:
          • attribution_dimension
          • attribution_id
        5. Untuk kolom Filter, gunakan attribution_dimension = namespace.
      • Untuk melihat penyerapan menurut region Google Cloud, tambahkan label location ke kolom menurut.
      • Untuk melihat penyerapan menurut project Google Cloud, tambahkan label resource_container ke kolom menurut.