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:
Di konsol Google Cloud, buka halaman Penagihan.
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.
Di bagian Pengelolaan biaya pada menu navigasi Penagihan, pilih Laporan.
Dari menu Services, pilih opsi Cloud Monitoring.
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:
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:
- Ubah konfigurasi scraping Anda untuk meng-scrape lebih sedikit target.
- Filter metrik yang dikumpulkan seperti yang dijelaskan di bawah ini:
- Memfilter metrik yang diekspor saat menggunakan kumpulan terkelola.
- Memfilter metrik yang diekspor saat menggunakan koleksi yang di-deploy sendiri.
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
danhigh_cardinality_metric_2
, mungkin dengan menggabungkan labelinstance
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 labelinstance
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:
-
Di konsol Google Cloud, buka halaman
Metrics management:Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Monitoring.
- 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:
-
Di konsol Google Cloud, buka halaman
Metrics management:Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Monitoring.
- Pada kartu skor Contoh yang dapat ditagih yang ditransfer, klik Lihat diagram.
- Cari diagram Penyerapan Volume Namespace, lalu klik more_vert Opsi diagram lainnya.
- Pilih opsi diagram Lihat di Metrics Explorer.
- Di panel Builder Metrics Explorer, ubah kolom
sebagai berikut:
- Di kolom Metric, pastikan resource dan metrik berikut dipilih:
Metric Ingestion Attribution
danSamples written by attribution id
. - Untuk kolom Aggregation, pilih
sum
. - Untuk kolom menurut, pilih
label berikut:
attribution_dimension
metric_type
- Untuk kolom Filter, gunakan
attribution_dimension = namespace
. Anda harus melakukannya setelah menggabungkan menurut labelattribution_dimension
.
Diagram yang dihasilkan menunjukkan volume penyerapan untuk setiap jenis metrik.
- Di kolom Metric, pastikan resource dan metrik berikut dipilih:
- 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.
- 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:
Mengidentifikasi namespace bervolume tinggi
Untuk mengatribusikan volume transfer ke namespace Kubernetes tertentu, lakukan hal berikut:
-
Di konsol Google Cloud, buka halaman
Metrics management:Jika Anda menggunakan kotak penelusuran untuk menemukan halaman ini, pilih hasil yang subjudulnya adalah Monitoring.
- Pada kartu skor Contoh yang dapat ditagih yang ditransfer, klik Lihat diagram.
- Cari diagram Penyerapan Volume Namespace, lalu klik more_vert Opsi diagram lainnya.
- Pilih opsi diagram Lihat di Metrics Explorer.
- Di panel Builder di Metrics Explorer, ubah kolom
sebagai berikut:
- Di kolom Metric, pastikan resource dan metrik berikut dipilih:
Metric Ingestion Attribution
danSamples written by attribution id
. - 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 kolom Aggregation, pilih
- 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 kolom Aggregation, pilih
- Untuk mengidentifikasi namespace yang bertanggung jawab atas metrik bervolume tinggi
tertentu:
- 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. - 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
. - Untuk kolom Aggregation, pilih
sum
. - Untuk kolom menurut, pilih
label berikut:
attribution_dimension
attribution_id
- Untuk kolom Filter, gunakan
attribution_dimension = namespace
.
- 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
- 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.
- Untuk mengaitkan volume penyerapan secara keseluruhan dengan namespace:
- Di kolom Metric, pastikan resource dan metrik berikut dipilih: