View a markdown version of this page

Mengumpulkan Slurry metrik dengan terkelola Prometheus kolektor - AWS PCS

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengumpulkan Slurry metrik dengan terkelola Prometheus kolektor

Setelah mengaktifkan Slurm metrik pada cluster AWS PCS (lihatSlurry metrik dalam AWS PCS), Anda dapat menggunakan Prometheus kolektor terkelola untuk secara otomatis mengikis titik akhir metrik dan mengirimkan data untuk PromQL kueri. Kolektor terkelola membuat antarmuka jaringan elastis di subnet VPC Anda untuk mencapai titik akhir metrik pengontrol cluster pada port 6817.

Kolektor dapat mengirimkan metrik ke salah satu tujuan berikut:

  • Amazon Managed Service untuk ruang kerja Prometheus — Penyimpanan metrik khusus yang Prometheus kompatibel dengan retensi yang dapat dikonfigurasi (150 hari secara default). Anda dapat menanyakan melalui Prometheus API yang kompatibel atauGrafana.

  • CloudWatch dataset — Dataset default CloudWatch akun Anda dengan 15 bulan retensi yang disertakan. Anda dapat melakukan CloudWatch query melalui Query Studio atau HTTP API Prometheus yang kompatibel.

Konfigurasi sisi cluster (Slurmpengaturan, target pengontrol, grup keamanan, dan konfigurasi scrape) sama terlepas dari tujuan mana yang Anda pilih. Hanya destination blok dalam permintaan create-scraper dan titik akhir kueri yang berbeda.

Anda membuat kolektor dengan aws amp create-scraper perintah. Meskipun perintah ini milik namespace amp CLI, ini mendukung kedua tujuan.

Untuk informasi selengkapnya tentang VPC-connected kolektor terkelola, lihat Menyi VPC-connected apkan kolektor terkelola di Panduan CloudWatch Pengguna Amazon.

Prasyarat

Sebelum Anda mengonfigurasi kolektor terkelola, verifikasi hal berikut:

  • Slurmmetrik diaktifkan — Titik akhir metrik harus aktif di cluster Anda. Anda mengaktifkannya dengan mengatur pengaturan MetricsType dan CommunicationParameters kustomSlurm. Untuk petunjuk tentang mengaktifkan Slurm metrik, lihatSlurry metrik dalam AWS PCS. Untuk informasi selengkapnya tentang Slurm pengaturan khusus, lihatMengkonfigurasi pengaturan Slurm khusus di AWS PCS.

  • Slurmversi 25.11 atau lebih tinggi - Cluster harus menjalankan Slurm 25.11 atau lebih tinggi untuk mengekspos titik akhir metrik.

  • Sumber daya tujuan — Buat tujuan untuk metrik Anda:

    • Amazon Managed Service untuk ruang kerja Prometheus — Buat ruang kerja dan tunggu hingga mencapai status. ACTIVE Untuk petunjuk tentang membuat ruang kerja, lihat Membuat ruang kerja di Panduan Pengguna Layanan Ter kelola Amazon untuk Prometheus.

    • CloudWatch dataset — Setiap akun memiliki default dataset di setiap Wilayah. Anda tidak perlu membuatnya.

  • Subnet dan jaringan VPC — Anda memerlukan setidaknya dua subnet di Zona Ketersediaan yang berbeda dalam VPC yang sama dengan pengontrol cluster. Sertakan Zona Ketersediaan tempat antarmuka jaringan pengontrol berada. VPC harus memiliki dukungan DNS dan nama host DNS diaktifkan. Untuk persyaratan jaringan terperinci, lihat Menyiapkan kolek VPC-connected tor ter kelola di Panduan CloudWatch Pengguna Amazon.

  • Grup keamanan — Grup keamanan khusus untuk kolektor diperlukan. Untuk petunjuk tentang mengkonfigurasi grup keamanan, lihatKonfigurasikan grup keamanan untuk kolektor.

  • Izin IAM — Prinsip IAM yang menciptakan kebutuhan aps:CreateScraper dan iam:CreateServiceLinkedRole izin scraper. Layanan secara otomatis membuat peran terkait layanan ()AWSServiceRoleForAmazonPrometheusScraper. Peran ini memberikan izin kolektor untuk mengakses sumber daya VPC Anda dan menulis ke tujuan yang Anda pilih. Tidak diperlukan pengaturan peran manual. Untuk informasi selengkapnya, lihat Menggunakan peran terkait layanan di Panduan Pengguna Layanan Terkelola Amazon untuk Prometheus.

  • Internet atau titik akhir VPC — Subnet kolektor harus dapat mencapai layanan tujuan. Jika subnet Anda tidak memiliki akses internet, buat titik akhir VPC antarmuka di VPC dan subnet yang sama. Gunakan com.amazonaws.region.aps-workspaces untuk tujuan ruang kerja Amazon Managed Service untuk Prometheus, atau com.amazonaws.region.monitoring untuk tujuan dataset. CloudWatch

Konfigurasikan grup keamanan untuk kolektor

Sebaiknya buat grup keamanan khusus untuk kolektor terkelola daripada menggunakan kembali grup keamanan yang ada. Grup khusus memberi Anda aturan eksplisit dan dapat diaudit yang mengikuti prinsip hak istimewa paling sedikit.

penting

Peng enable_http aturan ini menampilkan titik akhir HTTP yang tidak diautentikasi pada port 6817. Batasi akses masuk pada port ini hanya untuk grup keamanan kolektor. Jangan izinkan akses jaringan yang luas (seperti rentang CIDR) ke port ini.

Prosedur berikut menggunakan variabel shell untuk ID grup keamanan. Tetapkan variabel ini sebelum Anda menjalankan perintah:

  • VPC_ID— ID VPC tempat cluster AWS PCS Anda berada.

  • CLUSTER_SG_ID- ID grup keamanan yang dilampirkan ke cluster Anda (yang Anda tentukan saat Anda membuat cluster).

  • VPCE_SG_ID— ID grup keamanan yang dilampirkan ke titik akhir VPC antarmuka Anda. Variabel ini hanya diperlukan jika subnet kolektor Anda mencapai layanan tujuan melalui titik akhir VPC antarmuka daripada melalui internet atau keluar NAT. Titik akhir adalah com.amazonaws.region.aps-workspaces untuk tujuan ruang kerja Amazon Managed Service untuk Prometheus atau com.amazonaws.region.monitoring untuk tujuan dataset. CloudWatch

Untuk mengkonfigurasi grup keamanan untuk yang dikelola Prometheus kolektor
  1. Buat grup keamanan khusus untuk kolektor dan tangkap ID grup:

    COLLECTOR_SG_ID=$(aws ec2 create-security-group \ --group-name "pcs-prometheus-collector" \ --description "Security group for managed Prometheus collector" \ --vpc-id "$VPC_ID" \ --query 'GroupId' \ --output text)
  2. Tambahkan aturan masuk ke grup keamanan cluster yang memungkinkan lalu lintas TCP pada port 6817 dari grup keamanan kolektor. Aturan ini memungkinkan kolektor untuk mengikis titik akhir Slurm metrik pada pengontrol.

    Gunakan --ip-permissions formulir untuk menyertakan deskripsi aturan untuk auditabilitas:

    aws ec2 authorize-security-group-ingress \ --group-id "$CLUSTER_SG_ID" \ --ip-permissions \ 'IpProtocol=tcp,FromPort=6817,ToPort=6817,UserIdGroupPairs=[{GroupId='"$COLLECTOR_SG_ID"',Description="Prometheus collector scrapes Slurm metrics"}]'

    Atau, Anda dapat menggunakan formulir yang lebih pendek tanpa deskripsi aturan:

    aws ec2 authorize-security-group-ingress \ --group-id "$CLUSTER_SG_ID" \ --protocol tcp \ --port 6817 \ --source-group "$COLLECTOR_SG_ID"
  3. (Opsional) Mengunci lalu lintas keluar pada grup keamanan kolektor. Secara default, grup keamanan yang baru dibuat mengizinkan semua lalu lintas keluar. Jika Anda ingin menerapkan jalan keluar khusus untuk postur keamanan yang lebih tinggi, cabut aturan default allow-all dan tambahkan hanya aturan keluar yang diperlukan kolektor.

    Cabut aturan default allow-all egress:

    aws ec2 revoke-security-group-egress \ --group-id "$COLLECTOR_SG_ID" \ --ip-permissions '[{"IpProtocol":"-1","IpRanges":[{"CidrIp":"0.0.0.0/0"}]}]'

    Tambahkan aturan keluar eksplisit untuk memungkinkan kolektor mencapai pengontrol pada TCP 6817:

    aws ec2 authorize-security-group-egress \ --group-id "$COLLECTOR_SG_ID" \ --ip-permissions \ 'IpProtocol=tcp,FromPort=6817,ToPort=6817,UserIdGroupPairs=[{GroupId='"$CLUSTER_SG_ID"',Description="Egress to Slurm controller for metrics scraping"}]'

    Tambahkan aturan keluar eksplisit untuk HTTPS (TCP 443) untuk mencapai tujuan pengiriman metrik (Amazon Managed Service untuk Prometheus atau): CloudWatch

    aws ec2 authorize-security-group-egress \ --group-id "$COLLECTOR_SG_ID" \ --ip-permissions \ 'IpProtocol=tcp,FromPort=443,ToPort=443,IpRanges=[{CidrIp=0.0.0.0/0,Description="HTTPS egress for metrics delivery"}]'

    Untuk kontrol yang lebih ketat di subnet yang menggunakan titik akhir VPC untuk pengiriman, ganti rentang CIDR dengan grup keamanan titik akhir VPC:

    aws ec2 authorize-security-group-egress \ --group-id "$COLLECTOR_SG_ID" \ --ip-permissions \ 'IpProtocol=tcp,FromPort=443,ToPort=443,UserIdGroupPairs=[{GroupId='"$VPCE_SG_ID"',Description="HTTPS egress to VPC endpoint for metrics delivery"}]'
    catatan

    Jika Anda tidak mencabut aturan keluar default, Anda dapat melewati langkah ini. Aturan default sudah mengizinkan semua lalu lintas keluar, termasuk lalu lintas ke port 6817 dan port 443.

  4. (Cluster terisolasi) Jika subnet kolektor Anda tidak memiliki akses internet dan menggunakan titik akhir VPC antarmuka untuk mencapai layanan tujuan, tambahkan aturan masuk ke grup keamanan titik akhir VPC. Aturan ini memungkinkan lalu lintas HTTPS kolektor untuk mencapai antarmuka jaringan titik akhir. Ini adalah langkah yang sering terlewatkan.

    aws ec2 authorize-security-group-ingress \ --group-id "$VPCE_SG_ID" \ --ip-permissions \ 'IpProtocol=tcp,FromPort=443,ToPort=443,UserIdGroupPairs=[{GroupId='"$COLLECTOR_SG_ID"',Description="Managed collector reaches service endpoint"}]'
catatan

Sebagai alternatif yang lebih sederhana namun tidak terlalu membatasi, Anda dapat melampirkan grup keamanan pengontrol yang ada ke kolektor jika grup keamanan tersebut berisi aturan referensi diri yang memungkinkan lalu lintas dari dirinya sendiri. Ini memenuhi persyaratan konektivitas tanpa membuat grup khusus.

Misalnya, jika grup keamanan cluster Anda (sg-0abc1234def56789a) sudah mengizinkan semua lalu lintas TCP dari dirinya sendiri, berikan ID grup keamanan tersebut di --security-group-ids parameter saat Anda membuat scraper:

aws amp create-scraper \ --source '{"vpcConfiguration":{"subnetIds":["subnet-id-1","subnet-id-2"],"securityGroupIds":["sg-0abc1234def56789a"]}}' \ ...

Namun, pendekatan kelompok keamanan khusus yang dijelaskan dalam prosedur sebelumnya menyediakan bilah keamanan yang lebih tinggi dengan aturan eksplisit yang dapat diaudit.

Untuk informasi selengkapnya tentang aturan grup keamanan, lihat Aturan grup keamanan di Panduan Pengguna Amazon VPC.

Buat kolektor terkelola

Gunakan AWS CLI untuk membuat kolektor terkel VPC-connected ola yang mengikis pengontrol cluster Anda dan mengirimkan metrik ke tujuan yang Anda pilih.

Untuk membuat kolektor terkelola untuk Slurry metrik
  1. Simpan konfigurasi scrape ke file YAML lokal bernama. scrape-config.yaml Untuk konfigurasi yang disarankan, lihatKonfigurasi goresan yang disarankan.

  2. Buat file input JSON bernama create-scraper-input.json dengan struktur berikut. Pilih destination blok yang sesuai dengan target Anda.

    { "source": { "vpcConfiguration": { "subnetIds": ["subnet-1", "subnet-2"], "securityGroupIds": ["sg-collector"] } }, "destination": { ... }, "scrapeConfiguration": { "configurationBlob": "raw-yaml-contents" } }

    Ganti:

    • subnet-1dan subnet-2 — Setidaknya dua ID subnet di Zona Ketersediaan yang berbeda dalam VPC yang sama dengan pengontrol cluster.

    • sg-collector— ID grup keamanan untuk kolektor yang dikelola.

    • raw-yaml-contents— Teks lengkap scrape-config.yaml file Anda, disisipkan sebagai nilai string JSON tunggal. AWS CLI Base64 mengkodekan nilai pada kawat secara otomatis.

    Untuk destination bidang, gunakan salah satu dari berikut ini:

    Tujuan: Layanan Terkelola Amazon untuk ruang kerja Prometheus

    "destination": { "ampConfiguration": { "workspaceArn": "arn:aws:aps:region:account-id:workspace/workspace-id" } }

    Tujuan: CloudWatch dataset

    "destination": { "cloudWatchConfiguration": { "datasetArn": "arn:aws:cloudwatch:region:account-id:dataset/default" } }

    Untuk set lengkap parameter, lihat create-scraper di Referensi Perintah AWS CLI .

  3. Buat scraper:

    aws amp create-scraper --cli-input-json file://create-scraper-input.json

    Perintah mengembalikan scraperId a dan statusCREATING.

  4. Tunggu status scraper berubah menjadi ACTIVE (biasanya 5-15 menit):

    aws amp describe-scraper --scraper-id scraper-id

    Ganti scraper-id dengan ID yang dikembalikan pada langkah sebelumnya. Anda tidak dapat menghapus scraper sampai mencapai ACTIVE status.

Temukan titik akhir pengontrol cluster

Konfigurasi scrape memerlukan alamat IP pribadi pengontrol cluster AWS PCS Anda. Gunakan salah satu metode berikut untuk menemukannya.

Konsol Manajemen AWS
  1. Buka konsol AWS PCS di https://console.aws.amazon.com/pcs/.

  2. Pilih cluster Anda dari daftar.

  3. Di detail konfigurasi cluster, cari bagian Endpoints.

  4. Perhatikan alamat IP pribadi dan port untuk Slurm pengontrol (slurmctld). Pelabuhan adalah 6817.

AWS CLI
  1. Jalankan perintah berikut. Ganti cluster-identifier dengan nama cluster atau ID Anda.

    aws pcs get-cluster --cluster-identifier cluster-identifier

    Dalam tanggapan, cari SLURMCTLD entri dalam endpoints array. Nil privateIpAddress ainya adalah titik akhir pengontrol yang Anda butuhkan untuk konfigurasi scrape. Inilah contohnya:

    "endpoints": [ { "type": "SLURMCTLD", "privateIpAddress": "192.0.2.1", "port": "6817" }, { "type": "SLURMRESTD", "privateIpAddress": "192.0.2.1", "port": "6820" } ]

    Gunakan privateIpAddress dari SLURMCTLD entri (port 6817) sebagai controller-endpoint nilai dalam konfigurasi scrape Anda.

  2. Atau, ekstrak hanya alamat IP pengontrol secara langsung:

    aws pcs get-cluster --cluster-identifier cluster-identifier \ --query 'cluster.endpoints[?type==`SLURMCTLD`].privateIpAddress' \ --output text

Konfigurasi goresan yang disarankan

Konfigurasi YAML berikut mengikis empat titik akhir Slurm metrik (pekerjaan, node, penjadwal, dan partisi) dari pengontrol cluster. Setiap titik akhir didefinisikan sebagai pekerjaan terpisah sehingga Anda dapat mengidentifikasi metrik berdasarkan sumber dalam kueri Anda.

global: scrape_interval: 60s scrape_timeout: 30s scrape_configs: - job_name: 'slurm-jobs' metrics_path: /metrics/jobs static_configs: - targets: - 'controller-endpoint:6817' relabel_configs: - target_label: cluster replacement: 'my-cluster-name' - job_name: 'slurm-nodes' metrics_path: /metrics/nodes static_configs: - targets: - 'controller-endpoint:6817' relabel_configs: - target_label: cluster replacement: 'my-cluster-name' - job_name: 'slurm-scheduler' metrics_path: /metrics/scheduler static_configs: - targets: - 'controller-endpoint:6817' relabel_configs: - target_label: cluster replacement: 'my-cluster-name' - job_name: 'slurm-partitions' metrics_path: /metrics/partitions static_configs: - targets: - 'controller-endpoint:6817' relabel_configs: - target_label: cluster replacement: 'my-cluster-name'

Ganti:

  • controller-endpoint— Alamat IP pribadi pengontrol cluster AWS PCS Anda. Untuk petunjuk tentang menemukan nilai ini, lihatTemukan titik akhir pengontrol cluster.

  • my-cluster-name— Label yang mengidentifikasi cluster Anda. relabel_configsBlok itu memberi cluster label pada setiap metrik dari scraper ini. Selalu filter kueri pada cluster label. Seri dari scraper yang tidak mencap label muncul sebagai seri duplikat tanpa label sampai menua.

Minimum scrape_interval untuk kolektor yang dikelola adalah 30 detik. Konfigurasi ini menggunakan 60 detik karena pengikisan menempatkan beban pada Slurm pengontrol (slurmctld). Metrik kueri memperoleh kunci internal dan membaca struktur data dalam memori. Aktivitas ini dapat memengaruhi kinerja penjadwal pada cluster sibuk. Panduan Slurm Metrik merekomendasikan interval pengikisan 60—120 detik untuk meminimalkan dampak kinerja.

catatan

Konfigurasi ini tidak menyertakan titik /metrics/jobs-users-accts akhir. Slurmdokumentasi memperingatkan bahwa titik akhir ini menghasilkan jumlah seri yang tidak terbatas dan tidak cocok untuk pemantauan yang disimpan. Jangan mengikis /metrics indeks kosong juga, karena menggabungkan semua data sub-titik akhir menjadi satu respons.

Untuk informasi selengkapnya tentang opsi konfigurasi scrape yang didukung, lihat Konfigurasi Scraper di Panduan CloudWatch Pengguna Amazon.

Verifikasi pengiriman metrik

Setelah scraper mencapai ACTIVE status, titik data pertama muncul kira-kira satu interval pengikisan ditambah waktu pengiriman nanti. Gunakan metode verifikasi yang sesuai dengan tujuan Anda.

Verifikasi pengiriman ke Amazon Managed Service untuk ruang kerja Prometheus

Kirim SigV4-signed permintaan untuk mencantumkan nama metrik yang tersedia dari ruang kerja Anda:

awscurl --service aps --region region \ "https://aps-workspaces.region.amazonaws.com/workspaces/workspace-id/api/v1/label/__name__/values"

Kebutuhan aps:QueryMetrics dan aps:GetLabels izin utama pemanggil (atau kebijakan AmazonPrometheusQueryAccess terkelola).

Verifikasi pengiriman ke CloudWatch dataset

Kirim SigV4-signed permintaan untuk mencantumkan nama metrik yang tersedia dari CloudWatch dataset Anda:

awscurl --service monitoring --region region \ "https://monitoring.region.amazonaws.com/api/v1/label/__name__/values"

Kebutuhan cloudwatch:GetMetricData dan cloudwatch:ListMetrics izin utama pemanggil.

penting

Metrik yang dikirimkan ke CloudWatch dataset disimpan sebagai metrik OpenTelemetry (oTel). Mereka tidak muncul di browser namespace CloudWatch Metrics klasik atau di output. aws cloudwatch list-metrics Anda harus bertanya kepada merekaPromQL.

Untuk salah satu tujuan, cari nama metrik yang dimulai denganslurm_, sepertislurm_nodes,slurm_jobs_running, atauslurm_node_cpus. Jika tidak ada Slurm metrik yang muncul, verifikasi hal berikut:

  • Status scraper adalahACTIVE.

  • Aturan grup keamanan memungkinkan kolektor untuk mencapai port 6817 pada pengontrol.

  • T Slurm itik akhir metrik diaktifkan pada cluster.

Kueri Slurry Metrik dengan PromQL

Anda menanyakan Slurm metrik yang dikumpulkan menggunakanPromQL. Kueri yang sama bekerja terhadap salah satu tujuan. Metode kueri tergantung pada tempat Anda mengirimkan metrik.

Menanyakan layanan terkelola Amazon untuk ruang kerja Prometheus

  • HTTP API — Mengirim SigV4-signed permintaan (nama layananaps) ke https://aps-workspaces.region.amazonaws.com/workspaces/workspace-id/api/v1/query atau/api/v1/query_range.

  • Grafana— Tambahkan sumber Prometheus data dengan otentikasi SIGv4 dan nama aps layanan. Untuk petunjuk tentang cara membuat kueri denganGrafana, lihat Ku eri menggunakan Grafana di Panduan Pengguna Layanan Terkelola Amazon untuk Prometheus.

Contoh berikut digunakan awscurl untuk menanyakan pekerjaan yang sedang berjalan dari ruang kerja Amazon Managed Service for Prometheus:

awscurl --service aps --region region \ -X POST "https://aps-workspaces.region.amazonaws.com/workspaces/workspace-id/api/v1/query" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "query=slurm_jobs_running"

Prinsip pemanggil membutuhkan aps:QueryMetricsaps:GetMetricMetadata,aps:GetSeries,, dan aps:GetLabels izin (atau kebijakan AmazonPrometheusQueryAccess terkelola).

Kueri CloudWatch kumpulan data

  • CloudWatch konsol — Buka CloudWatch, pilih Query Studio, dan pilih PromQL dari menu bahasa kueri.

  • HTTP API — Mengirim SigV4-signed permintaan (nama layananmonitoring) ke https://monitoring.region.amazonaws.com/api/v1/query atau/api/v1/query_range.

  • Grafana— Tambahkan sumber Prometheus data dengan URLhttps://monitoring.region.amazonaws.com, otentikasi SIGv4, dan nama monitoring layanan. Untuk petunjuk tentang cara menanyakan met CloudWatch rik dengan PromQL inGrafana, lihat Met CloudWatch rik kueri dengan PromQL di Grafana di Panduan Pengguna Grafana Terkelola Amazon.

Contoh berikut digunakan awscurl untuk menanyakan pekerjaan yang sedang berjalan dari CloudWatch dataset:

awscurl --service monitoring --region region \ -X POST "https://monitoring.region.amazonaws.com/api/v1/query" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "query=slurm_jobs_running"

Kebutuhan cloudwatch:GetMetricData dan cloudwatch:ListMetrics izin utama pemanggil.

Contoh PromQL pertanyaan

Kueri berikut bekerja terhadap salah satu tujuan. Ganti my-cluster-name dengan nilai yang Anda tetapkan di cluster relabel konfigurasi scrape Anda.

Persentase pemanfaatan CPU
100 * slurm_node_cpus_alloc{cluster="my-cluster-name"} / slurm_node_cpus{cluster="my-cluster-name"}
Pekerjaan yang tertunda (backlog antrian)
slurm_jobs_pending{cluster="my-cluster-name"}
Lowongan kerja
slurm_jobs_running{cluster="my-cluster-name"}
Throughput pekerjaan
slurm_jobs_completed{cluster="my-cluster-name"}

Untuk informasi selengkapnya tentang metrik yang tersedia dan konfigurasi pengikisan, lihat Panduan Metrik di Slurm situs web.