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
MetricsTypedanCommunicationParameterskustomSlurm. 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.
ACTIVEUntuk petunjuk tentang membuat ruang kerja, lihat Membuat ruang kerja di Panduan Pengguna Layanan Ter kelola Amazon untuk Prometheus. -
CloudWatch dataset — Setiap akun memiliki
defaultdataset 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:CreateScraperdaniam:CreateServiceLinkedRoleizin 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.untuk tujuan ruang kerja Amazon Managed Service untuk Prometheus, atauregion.aps-workspacescom.amazonaws.untuk tujuan dataset. CloudWatchregion.monitoring
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 adalahcom.amazonaws.untuk tujuan ruang kerja Amazon Managed Service untuk Prometheus atauregion.aps-workspacescom.amazonaws.untuk tujuan dataset. CloudWatchregion.monitoring
Untuk mengkonfigurasi grup keamanan untuk yang dikelola Prometheus kolektor
-
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) -
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-permissionsformulir 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" -
(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.
-
(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
-
Simpan konfigurasi scrape ke file YAML lokal bernama.
scrape-config.yamlUntuk konfigurasi yang disarankan, lihatKonfigurasi goresan yang disarankan. -
Buat file input JSON bernama
create-scraper-input.jsondengan struktur berikut. Pilihdestinationblok yang sesuai dengan target Anda.{ "source": { "vpcConfiguration": { "subnetIds": ["subnet-1", "subnet-2"], "securityGroupIds": ["sg-collector"] } }, "destination": { ... }, "scrapeConfiguration": { "configurationBlob": "raw-yaml-contents" } }Ganti:
-
subnet-1dansubnet-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 lengkapscrape-config.yamlfile Anda, disisipkan sebagai nilai string JSON tunggal. AWS CLI Base64 mengkodekan nilai pada kawat secara otomatis.
Untuk
destinationbidang, 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 .
-
-
Buat scraper:
aws amp create-scraper --cli-input-json file://create-scraper-input.jsonPerintah mengembalikan
scraperIda dan statusCREATING. -
Tunggu status scraper berubah menjadi
ACTIVE(biasanya 5-15 menit):aws amp describe-scraper --scraper-idscraper-idGanti
scraper-iddengan ID yang dikembalikan pada langkah sebelumnya. Anda tidak dapat menghapus scraper sampai mencapaiACTIVEstatus.
Temukan titik akhir pengontrol cluster
Konfigurasi scrape memerlukan alamat IP pribadi pengontrol cluster AWS PCS Anda. Gunakan salah satu metode berikut untuk menemukannya.
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 membericlusterlabel pada setiap metrik dari scraper ini. Selalu filter kueri padaclusterlabel. 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 --regionregion\ "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 --regionregion\ "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 adalah
ACTIVE. -
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 layanan
aps) kehttps://aps-workspaces.atauregion.amazonaws.com/workspaces/workspace-id/api/v1/query/api/v1/query_range. -
Grafana— Tambahkan sumber Prometheus data dengan otentikasi SIGv4 dan nama
apslayanan. 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 --regionregion\ -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 layanan
monitoring) kehttps://monitoring.atauregion.amazonaws.com/api/v1/query/api/v1/query_range. -
Grafana— Tambahkan sumber Prometheus data dengan URL
https://monitoring., otentikasi SIGv4, dan namaregion.amazonaws.com.rproxy.goskope.commonitoringlayanan. 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 --regionregion\ -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