Mengumpulkan metrik AWS CloudWatch menggunakan Prometheus CloudWatch Exporter

Dokumen ini menjelaskan cara menggunakan eksportir Prometheus CloudWatch open source dan Ops Agent yang berjalan di instance Compute Engine untuk mengumpulkan metrik AWS CloudWatch dan menyimpannya dalam project. Google Cloud

Dokumen ini ditujukan bagi developer dan administrator sistem yang perlu mengumpulkan metrik AWS CloudWatch. Dokumen ini menjelaskan cara menyiapkan Prometheus CloudWatch exporter untuk mengumpulkan metrik AWS CloudWatch.

Dengan Cloud Monitoring, Anda dapat melihat metrik AWS dalam konteks yang sama dengan metrik Google Cloud . Misalnya, Anda dapat membuat dasbor dengan diagram yang menampilkan pemakaian CPU untuk instance Amazon EC2 dan untuk instance Compute Engine Anda. Anda juga dapat membuat kebijakan pemberitahuan untuk memantau metrik AWS. Untuk informasi selengkapnya, lihat bagian berikut:

Sebelum memulai

Untuk mengumpulkan metrik AWS CloudWatch menggunakan eksportir CloudWatch Prometheus, Anda memerlukan hal berikut:

  • Project Google Cloud dengan izin untuk melakukan hal berikut:
    • Membuat VM
    • Menulis log ke Cloud Logging
    • Menulis metrik ke Cloud Monitoring
  • Akun AWS dengan kredensial AWS yang dapat digunakan oleh pengekspor Prometheus untuk mengambil metrik. Untuk mengetahui informasi selengkapnya, lihat Menjalankan eksportir Prometheus.

Membuat VM Compute Engine

Sebaiknya buat VM Compute Engine Linux untuk digunakan secara khusus dalam menjalankan Ops Agent dan eksportir Prometheus CloudWatch. VM ini berfungsi sebagai situs pengumpulan untuk semua metrik AWS.

  1. Untuk membuat VM Debian Linux bernama aws-exporter-test di zona yang Anda tentukan, jalankan perintah berikut:

    gcloud compute instances create \
      --image-project debian-cloud \
      --image-family debian-11 \
      --zone ZONE \
      aws-exporter-test
    

    Konfigurasi perintah sebagai berikut:

    • Ganti ZONE dengan zona untuk VM baru Anda
    • Opsional. Ganti aws-exporter-test dengan nama yang berbeda untuk VM Anda.

    Untuk mengetahui informasi selengkapnya tentang perintah ini, lihat referensi gcloud compute instances create.

  2. Untuk mengakses VM agar Anda dapat menginstal eksportir Prometheus CloudWatch dan Ops Agent, Anda dapat menggunakan perintah berikut:

    gcloud compute ssh --zone ZONE  --project PROJECT_ID  aws-exporter-test
    

    Konfigurasi perintah sebagai berikut:

    • Ganti ZONE dengan zona tempat Anda membuat VM
    • Ganti PROJECT_ID dengan ID Google Cloud project Anda
    • Ganti aws-exporter-test jika Anda membuat VM dengan nama yang berbeda

    Untuk mengetahui informasi selengkapnya tentang perintah ini, lihat referensi gcloud compute ssh.

Menyiapkan eksportir Prometheus CloudWatch

Bagian berikut menjelaskan prosedur untuk mendownload, menginstal, dan mengonfigurasi eksportir Prometheus CloudWatch di VM Compute Engine Anda.

Download eksportir Prometheus dan JRE

Untuk menjalankan eksportir Prometheus CloudWatch, Anda perlu mendownload eksportir dan Java Runtime Environment (JRE), versi 11 atau yang lebih baru.

  1. Untuk mendownload file JAR yang berisi eksportir Prometheus CloudWatch, jalankan perintah berikut di instance Compute Engine Anda:

    curl -sSO https://github.com/prometheus/cloudwatch_exporter/releases/download/v0.15.1/cloudwatch_exporter-0.15.1-jar-with-dependencies.jar
    
  2. Untuk menginstal JRE, Anda dapat menggunakan perintah seperti berikut:

    sudo apt install default-jre
    

Mengonfigurasi eksportir Prometheus

Untuk mengonfigurasi eksportir Prometheus CloudWatch, Anda membuat file konfigurasi untuk layanan AWS yang metriknya ingin Anda kumpulkan. Untuk informasi umum, lihat dokumentasi konfigurasi Prometheus CloudWatch exporter.

  • Memigrasikan pengguna: Jika Anda memigrasikan metrik AWS CloudWatch yang ada ke Prometheus CloudWatch exporter, Anda dapat menggunakan file konfigurasi di Konfigurasi Prometheus CloudWatch exporter untuk migrasi. File konfigurasi ini dirancang untuk mereplikasi metrik yang ada sedekat mungkin, tetapi tidak mengumpulkan semua metrik yang tersedia dengan menggunakan eksportir Prometheus CloudWatch untuk layanan AWS.

  • Pengguna baru: Jika Anda tidak memigrasikan metrik yang ada, sebaiknya Anda tidak menggunakan konfigurasi migrasi. Lihat dokumentasi layanan AWS CloudWatch untuk mengetahui informasi tentang cara menentukan konfigurasi eksportir untuk layanan lain. Anda juga dapat menemukan contoh tambahan di repositori GitHub Prometheus CloudWatch exporter.

Anda dapat menggabungkan konfigurasi untuk beberapa layanan AWS ke dalam satu file konfigurasi. Contoh dalam dokumen ini mengasumsikan bahwa file konfigurasi Anda diberi nama config.yml.

Jalankan eksportir Prometheus

Sebelum dapat menjalankan eksportir Prometheus CloudWatch, Anda harus memberikan kredensial dan otorisasi ke eksportir. Pengekspor Prometheus CloudWatch menggunakan AWS Java SDK, yang menawarkan cara untuk memberikan kredensial menggunakan variabel lingkungan berikut:

  • AWS_ACCESS_KEY
  • AWS_SECRET_ACCESS_KEY
  • AWS_SESSION_TOKEN, jika Anda menggunakan kredensial sementara

Untuk mengetahui informasi selengkapnya tentang cara memberikan kredensial ke SDK, lihat AWS SDK for Java 2.x.

Anda juga harus memiliki izin untuk menggunakan CloudWatch API guna mengambil metrik. Anda memerlukan izin CloudWatch AWS IAM berikut:

  • cloudwatch:ListMetrics
  • cloudwatch:GetMetricStatistics
  • cloudwatch:GetMetricData

Penggunaan fitur aws_tag_select juga memerlukan izin AWS IAM tag:GetResources.

Untuk mengetahui informasi selengkapnya tentang cara memberikan otorisasi akses ke layanan AWS, lihat AWS Identity and Access Management.

Untuk menjalankan eksportir Prometheus CloudWatch, lakukan hal berikut:

  1. Untuk memberikan kredensial bagi pengekspor, tetapkan variabel lingkungan access-key:

    export AWS_ACCESS_KEY=YOUR_ACCESS_KEY
    export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY
    export AWS_SESSION_TOKEN=YOUR_SESSION_TOKEN
    

    Ganti variabel YOUR_KEY dengan kunci akses Anda. Anda hanya perlu menetapkan variabel lingkungan AWS_SESSION_TOKEN jika Anda menggunakan kredensial sementara.

  2. Untuk menguji konfigurasi, mulai pengekspor dan muat file konfigurasi Anda, jalankan perintah berikut:

    java -jar cloudwatch_exporter-0.15.1-jar-with-dependencies.jar 9106 config.yml
    

    Ubah nilai port (9106) dan file konfigurasi (config.yml) jika perlu.

    Jika Anda mengubah file config.yml saat pengekspor berjalan, Anda dapat memuat ulang pengekspor dengan menjalankan perintah berikut:

    curl -X POST localhost:9106/-/reload
    

    Untuk digunakan di lingkungan produksi, Anda dapat mengonfigurasi pengekspor agar dimulai ulang jika VM dimulai ulang. Misalnya, di sistem Debian, Anda dapat menggunakan pengelola sistem dan layanan, systemd.

Menyiapkan Agen Operasional

Bagian berikut menjelaskan cara menginstal, mengonfigurasi, dan memulai Ops Agent. Bagian ini memberikan informasi penyiapan minimal untuk Ops Agent yang akan digunakan dengan eksportir Prometheus CloudWatch. Untuk mengetahui informasi selengkapnya tentang topik ini, lihat Ringkasan Ops Agent.

Menginstal Agen Operasional

Untuk menginstal Agen Operasional, gunakan perintah berikut untuk mendownload dan menjalankan skrip penginstalan agen:

curl -sSO https://dl.google.com/cloudagents/add-google-cloud-ops-agent-repo.sh
sudo bash add-google-cloud-ops-agent-repo.sh --also-install

Mengonfigurasi Agen Operasional

Untuk mengonfigurasi Agen Operasi, Anda menambahkan elemen konfigurasi ke file konfigurasi pengguna agen. Di Linux, file konfigurasi pengguna adalah /etc/google-cloud-ops-agent/config.yaml.

Saat mengonfigurasi Agen Operasional untuk mengumpulkan metrik AWS dari pengekspor Prometheus CloudWatch, Anda menggunakan penerima Prometheus agen. Dokumen ini menjelaskan dua konfigurasi dasar untuk Agen Operasi. Pilih salah satu konfigurasi dan tambahkan ke file konfigurasi pengguna:

sudo vim /etc/google-cloud-ops-agent/config.yaml

Konfigurasi dasar untuk Agen Operasional

Konfigurasi berikut memberikan konfigurasi minimal untuk Ops Agent. Konfigurasi ini melakukan hal berikut:

  • Membuat penerima bernama aws dari jenis prometheus. Penerima dikonfigurasi untuk meng-scrape metrik dari tugas aws_exporter. Port yang ditentukan harus cocok dengan port tempat pengekspor Prometheus CloudWatch mengekspor metrik; lihat Menjalankan pengekspor Prometheus.

  • Membuat pipeline bernama aws_pipeline yang menggunakan penerima metrik aws.

metrics:
  receivers:
    aws:
      type: prometheus
      config:
        scrape_configs:
          - job_name: 'aws_exporter'
            scrape_interval: 10s
            static_configs:
              - targets: ['localhost:9106']
  service:
    pipelines:
      aws_pipeline:
        receivers:
          - aws

Konfigurasi yang menghilangkan metrik JVM

Konfigurasi berikut melakukan semua yang dilakukan konfigurasi dasar, tetapi juga menambahkan konfigurasi pelabelan ulang yang menghilangkan metrik JVM yang dihasilkan oleh exporter. Menghapus metrik ini akan mengurangi data metrik yang di-ingest, tetapi dapat membuat masalah pada eksportir lebih sulit di-debug, karena Anda tidak mendapatkan metrik eksportir itu sendiri:

metrics:
  receivers:
    aws:
      type: prometheus
      config:
        scrape_configs:
          - job_name: 'aws_exporter'
            scrape_interval: 10s
            static_configs:
              - targets: ['localhost:9106']
            # Drop the exporter's own JVM metrics to reduce noise.
            metric_relabel_configs:
              - source_labels: [ __name__ ]
                regex: 'jvm_.*'
                action: drop
  service:
    pipelines:
      aws_pipeline:
        receivers:
          - aws

Anda dapat membuat konfigurasi yang jauh lebih kompleks untuk Agen Operasional.

Mulai ulang Agen Operasional

Untuk menerapkan perubahan konfigurasi ke Ops Agent, Anda harus memulai ulang agen.

  1. Untuk memulai ulang agen, jalankan perintah berikut di instance Anda:
    sudo service google-cloud-ops-agent restart
    
  2. Untuk mengonfirmasi bahwa agen telah dimulai ulang, jalankan perintah berikut dan verifikasi bahwa komponen "Metrics Agent" dan "Logging Agent" telah dimulai:
    sudo systemctl status google-cloud-ops-agent"*"
    

Melihat metrik di Cloud Monitoring

Di Cloud Monitoring, Anda dapat membuat kueri metrik AWS CloudWatch dan membuat diagram seperti yang Anda lakukan untuk metrik lainnya. Dari antarmuka Metrics Explorer, Anda dapat menggunakan PromQL, Monitoring Query Language (MQL), atau antarmuka pembuat kueri. Untuk mengetahui informasi selengkapnya, lihat Membuat diagram dengan Metrics Explorer.

Jika Anda telah membuat diagram yang ingin disimpan, Anda dapat menyimpannya ke dasbor kustom. Untuk mengetahui informasi selengkapnya, lihat Ringkasan dasbor.

Diagram berikut menunjukkan kueri PromQL untuk metrik aws_ec2_cpuutilization_sum untuk VM AWS:

Diagram menampilkan hasil pengambilan statistik aws_ec2_cpuutilization_sum untuk VM AWS menggunakan PromQL.

Anda dapat membuat kueri metrik apa pun di Cloud Monitoring menggunakan PromQL. Untuk informasi, lihat Memetakan metrik Cloud Monitoring ke PromQL.

Anda dapat membuat kueri metrik Prometheus menggunakan PromQL atau menggunakan alat Cloud Monitoring seperti Monitoring Query Language (MQL). Saat metrik Prometheus diserap ke Cloud Monitoring, setiap metrik diubah menggunakan transformasi OpenTelemetry-ke-Prometheus standar dan dipetakan ke jenis resource yang dipantau prometheus_target Cloud Monitoring. Transformasi ini mencakup perubahan berikut:

  • Nama metrik diawali dengan string prometheus.googleapis.com/.
  • Karakter non-alfanumerik, seperti titik (.), dalam nama metrik diganti dengan garis bawah (_).
  • Nama metrik diberi akhiran string yang menunjukkan jenis metrik, seperti /gauge atau /counter.

Untuk membuat kueri metrik aws_ec2_cpuutilization_sum Prometheus menggunakan MQL, sebutkan metrik sebagai prometheus.googleapis.com/aws_ec2_cpuutilization_sum/gauge, dan tentukan jenis resource yang dimonitor prometheus_target:

fetch prometheus_target :: 'prometheus.googleapis.com/aws_ec2_cpuutilization_sum/gauge'

Diagram berikut menunjukkan hasil kueri MQL untuk metrik aws_ec2_cpuutilization_sum Prometheus:

Diagram ini menunjukkan hasil pengambilan statistik aws_ec2_cpuutilization_sum untuk VM AWS menggunakan MQL.

Pemberitahuan tentang perilaku metrik

Di Cloud Monitoring, Anda dapat membuat [kebijakan pemberitahuan][alert-intro] untuk memantau metrik AWS CloudWatch dan memberi tahu Anda tentang lonjakan, penurunan, atau tren nilai metrik.

Memantau beberapa region

Konfigurasi pengekspor Prometheus CloudWatch hanya mendukung penggunaan satu region per file konfigurasi. Jika Anda perlu memantau beberapa region, sebaiknya jalankan beberapa instance eksportir Prometheus, yang masing-masing dikonfigurasi untuk setiap region yang ingin Anda pantau. Anda dapat menjalankan beberapa pengekspor di satu VM, atau mendistribusikannya di beberapa VM. Image Docker Prometheus exporter mungkin berguna dalam situasi ini.

Anda dapat mengonfigurasi Agen Operasional yang berjalan di VM Compute Engine untuk melakukan scraping beberapa endpoint Prometheus. Sebaiknya, saat mengonfigurasi beberapa instance eksportir Prometheus, Anda menggunakan nama job yang berbeda untuk setiap konfigurasi pengambilan data, sehingga Anda dapat membedakan instance eksportir jika perlu memecahkan masalahnya.

Untuk mengetahui informasi tentang cara mengonfigurasi Agen Operasional dan penerima Prometheus, lihat Mengonfigurasi Agen Operasional.

Biaya

Amazon mengenakan biaya untuk setiap permintaan CloudWatch API atau untuk setiap metrik CloudWatch yang Anda minta; untuk harga saat ini, lihat Harga Amazon CloudWatch. Exporter Prometheus CloudWatch memiliki karakteristik kueri berikut, yang dapat memengaruhi biaya Amazon Anda:

  • Saat menggunakan metode GetMetricStatistics (default), setiap metrik memerlukan satu permintaan API. Setiap permintaan dapat menyertakan beberapa statistik.
  • Saat menggunakan aws_dimensions, eksportir harus melakukan permintaan API untuk menentukan metrik yang akan diminta. Jumlah permintaan dimensi biasanya tidak signifikan dibandingkan dengan jumlah permintaan metrik.

Cloud Monitoring mengenakan biaya untuk metrik AWS CloudWatch dari pengekspor Prometheus berdasarkan jumlah sampel yang diserap. Untuk mengetahui harga saat ini, lihat bagian Cloud Monitoring di halaman Harga Google Cloud Observability.

Konfigurasi pengekspor Prometheus CloudWatch untuk migrasi

Bagian ini memberikan konfigurasi yang mereplikasi, sedekat mungkin, metrik layanan AWS yang didokumentasikan dalam daftar metrik AWS. File konfigurasi ini ditujukan untuk digunakan oleh pelanggan yang bermigrasi ke pengekspor Prometheus CloudWatch dari solusi lama. Jika Anda menyiapkan pengekspor Prometheus CloudWatch sebagai pengguna baru, bukan pengguna yang melakukan migrasi, dan Anda menggunakan konfigurasi ini, Anda tidak mengumpulkan semua metrik AWS yang disediakan oleh pengekspor Prometheus CloudWatch.

Untuk melihat contoh file konfigurasi metrik AWS CloudWatch, luaskan salah satu bagian berikut.