Menggunakan kolektor AWS terkelola - Layanan Terkelola Amazon untuk Prometheus

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

Menggunakan kolektor AWS terkelola

Untuk menggunakan Layanan Terkelola Amazon untuk kolektor Prometheus, Anda harus membuat scraper yang menemukan dan menarik metrik di cluster Amazon EKS Anda.

  • Anda dapat membuat scraper sebagai bagian dari pembuatan cluster Amazon EKS Anda. Untuk informasi selengkapnya tentang membuat klaster Amazon EKS, termasuk membuat scraper, lihat Membuat klaster Amazon EKS di Panduan Pengguna Amazon EKS.

  • Anda dapat membuat scraper Anda sendiri, secara terprogram dengan AWS API atau dengan menggunakan. AWS CLI

catatan

Layanan Terkelola Amazon untuk ruang kerja Prometheus yang dibuat dengan kunci yang dikelola pelanggan tidak dapat menggunakan kolektor terkelola untuk konsumsi. AWS

Layanan Terkelola Amazon untuk kolektor Prometheus menggores metrik yang kompatibel dengan Prometheus. Untuk informasi selengkapnya tentang metrik yang kompatibel dengan Prometheus, lihat. Apa itu metrik yang kompatibel dengan Prometheus?

Topik berikut menjelaskan cara membuat, mengelola, dan mengonfigurasi pencakar.

Buat scraper

Layanan Dikelola Amazon untuk kolektor Prometheus terdiri dari scraper yang menemukan dan mengumpulkan metrik dari cluster Amazon EKS. Amazon Managed Service for Prometheus mengelola scraper untuk Anda, memberi Anda skalabilitas, keamanan, dan keandalan yang Anda butuhkan, tanpa harus mengelola instans, agen, atau pencakar apa pun sendiri.

Scraper dibuat secara otomatis untuk Anda saat Anda membuat cluster Amazon EKS melalui konsol Amazon EKS. Namun, dalam beberapa situasi Anda mungkin ingin membuat scraper sendiri. Misalnya, jika Anda ingin menambahkan kolektor AWS terkelola ke kluster Amazon EKS yang ada, atau jika Anda ingin mengubah konfigurasi kolektor yang ada.

Anda dapat membuat scraper menggunakan AWS API atau file. AWS CLI

Ada beberapa prasyarat untuk membuat scraper Anda sendiri:

  • Anda harus memiliki kluster Amazon EKS yang dibuat.

  • Cluster Amazon EKS Anda harus memiliki kontrol akses titik akhir cluster yang disetel untuk menyertakan akses pribadi. Ini dapat mencakup pribadi dan publik, tetapi harus mencakup pribadi.

catatan

Cluster akan dikaitkan dengan scraper dengan nama sumber daya Amazon (ARN). Jika Anda menghapus cluster, dan kemudian membuat yang baru dengan nama yang sama, ARN akan digunakan kembali untuk cluster baru. Karena itu, scraper akan mencoba mengumpulkan metrik untuk cluster baru. Anda menghapus pencakar secara terpisah dari menghapus cluster.

AWS API

Untuk membuat scraper menggunakan API AWS

Gunakan operasi CreateScraper API untuk membuat scraper dengan AWS API. Contoh berikut membuat scraper di us-west-2 Wilayah. Anda perlu mengganti informasi cluster Akun AWS, ruang kerja, keamanan, dan Amazon EKS dengan ID Anda sendiri, dan menyediakan konfigurasi yang akan digunakan untuk scraper Anda.

catatan

Anda harus menyertakan setidaknya dua subnet, setidaknya dalam dua zona ketersediaan.

scrapeConfigurationIni adalah file YAMAL konfigurasi Prometheus yang dikodekan base64. Anda dapat mengunduh konfigurasi tujuan umum dengan operasi GetDefaultScraperConfiguration API. Untuk informasi lebih lanjut tentang formatscrapeConfiguration, lihatKonfigurasi scraper.

POST /scrapers HTTP/1.1 Content-Length: 415 Authorization: AUTHPARAMS X-Amz-Date: 20201201T193725Z User-Agent: aws-cli/1.18.147 Python/2.7.18 Linux/5.4.58-37.125.amzn2int.x86_64 botocore/1.18.6 { "alias": "myScraper", "destination": { "ampConfiguration": { "workspaceArn": "arn:aws:aps:us-west-2:account-id:workspace/ws-workspace-id" } }, "source": { "eksConfiguration": { "clusterArn": "arn:aws:eks:us-west-2:account-id:cluster/cluster-name", "securityGroupIds": ["sg-security-group-id"], "subnetIds": ["subnet-subnet-id-1", "subnet-subnet-id-2"] } }, "scrapeConfiguration": { "configurationBlob": <base64-encoded-blob> } }
AWS CLI

Untuk membuat scraper menggunakan AWS CLI

Gunakan create-scraper perintah untuk membuat scraper dengan file. AWS CLI Contoh berikut membuat scraper di us-west-2 Wilayah. Anda perlu mengganti informasi cluster Akun AWS, ruang kerja, keamanan, dan Amazon EKS dengan ID Anda sendiri, dan menyediakan konfigurasi yang akan digunakan untuk scraper Anda.

catatan

Anda harus menyertakan setidaknya dua subnet, setidaknya dalam dua zona ketersediaan.

scrape-configurationIni adalah file YAMAL konfigurasi Prometheus yang dikodekan base64. Anda dapat mengunduh konfigurasi tujuan umum dengan get-default-scraper-configuration perintah. Untuk informasi lebih lanjut tentang formatscrape-configuration, lihatKonfigurasi scraper.

aws amp create-scraper \ --source eksConfiguration="{clusterArn='arn:aws:eks:us-west-2:account-id:cluster/cluster-name', securityGroupIds=['sg-security-group-id'],subnetIds=['subnet-subnet-id-1', 'subnet-subnet-id-2']}" \ --scrape-configuration configurationBlob=<base64-encoded-blob> \ --destination ampConfiguration="{workspaceArn='arn:aws:aps:us-west-2:account-id:workspace/ws-workspace-id'}"

Berikut ini adalah daftar lengkap operasi scraper yang dapat Anda gunakan dengan AWS API:

catatan

Cluster Amazon EKS yang Anda gores harus dikonfigurasi untuk memungkinkan Amazon Managed Service untuk Prometheus mengakses metrik. Topik berikutnya menjelaskan cara mengonfigurasi klaster Anda.

Kesalahan umum saat membuat pencakar

Berikut ini adalah masalah paling umum saat mencoba membuat scraper baru.

  • AWS Sumber daya yang dibutuhkan tidak ada. Grup keamanan, subnet, dan klaster Amazon EKS yang ditentukan harus ada.

  • Ruang alamat IP tidak mencukupi. Anda harus memiliki setidaknya satu alamat IP yang tersedia di setiap subnet yang Anda lewatkan ke CreateScraper API.

Mengonfigurasi klaster Amazon EKS Anda

Cluster Amazon EKS Anda harus dikonfigurasi untuk memungkinkan scraper mengakses metrik. Ada dua opsi untuk konfigurasi ini:

  • Gunakan entri akses Amazon EKS untuk secara otomatis menyediakan Layanan Terkelola Amazon untuk akses kolektor Prometheus ke klaster Anda.

  • Konfigurasikan cluster Amazon EKS Anda secara manual untuk pengikisan metrik terkelola.

Topik berikut menjelaskan masing-masing secara lebih rinci.

Konfigurasikan Amazon EKS untuk akses scraper dengan entri akses

Menggunakan entri akses untuk Amazon EKS adalah cara termudah untuk memberi Amazon Managed Service for Prometheus akses untuk mengikis metrik dari cluster Anda.

Cluster Amazon EKS yang Anda gores harus dikonfigurasi untuk memungkinkan otentikasi API. Mode otentikasi cluster harus diatur ke salah satu API atauAPI_AND_CONFIG_MAP. Ini dapat dilihat di konsol Amazon EKS pada tab konfigurasi Access pada detail cluster. Untuk informasi selengkapnya, lihat Mengizinkan peran IAM atau pengguna mengakses objek Kubernetes di klaster Amazon EKS Anda di Panduan Pengguna Amazon EKS.

Anda dapat membuat scraper saat membuat cluster, atau setelah membuat cluster:

Kebijakan entri akses dibuat

Saat Anda membuat scraper dan membiarkan Amazon Managed Service untuk Prometheus membuat kebijakan entri akses untuk Anda, itu akan menghasilkan kebijakan berikut. Untuk informasi selengkapnya tentang entri akses, lihat Mengizinkan peran IAM atau pengguna mengakses Kubernetes di Panduan Pengguna Amazon EKS.

{ "rules": [ { "effect": "allow", "apiGroups": [ "" ], "resources": [ "nodes", "nodes/proxy", "nodes/metrics", "services", "endpoints", "pods", "ingresses", "configmaps" ], "verbs": [ "get", "list", "watch" ] }, { "effect": "allow", "apiGroups": [ "extensions", "networking.k8s.io" ], "resources": [ "ingresses/status", "ingresses" ], "verbs": [ "get", "list", "watch" ] }, { "effect": "allow", "nonResourceURLs": [ "/metrics" ], "verbs": [ "get" ] } ] }

Mengkonfigurasi Amazon EKS secara manual untuk akses scraper

Jika Anda lebih suka menggunakan akses kontrol aws-auth ConfigMap to ke cluster kubernetes Anda, Anda masih dapat memberikan Amazon Managed Service untuk Prometheus scraper akses ke metrik Anda. Langkah-langkah berikut akan memberi Amazon Managed Service for Prometheus akses untuk mengikis metrik dari cluster Amazon EKS Anda.

catatan

Untuk informasi selengkapnya tentang ConfigMap dan mengakses entri, lihat Mengizinkan peran IAM atau pengguna mengakses Kubernetes di Panduan Pengguna Amazon EKS.

Prosedur ini menggunakan kubectl dan AWS CLI. Untuk informasi tentang menginstalkubectl, lihat Menginstal kubectl di Panduan Pengguna Amazon EKS.

Untuk mengonfigurasi klaster Amazon EKS secara manual untuk pengikisan metrik terkelola
  1. Buat file, bernamaclusterrole-binding.yml, dengan teks berikut:

    apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: aps-collector-role rules: - apiGroups: [""] resources: ["nodes", "nodes/proxy", "nodes/metrics", "services", "endpoints", "pods", "ingresses", "configmaps"] verbs: ["describe", "get", "list", "watch"] - apiGroups: ["extensions", "networking.k8s.io"] resources: ["ingresses/status", "ingresses"] verbs: ["describe", "get", "list", "watch"] - nonResourceURLs: ["/metrics"] verbs: ["get"] --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: aps-collector-user-role-binding subjects: - kind: User name: aps-collector-user apiGroup: rbac.authorization.k8s.io roleRef: kind: ClusterRole name: aps-collector-role apiGroup: rbac.authorization.k8s.io
  2. Jalankan perintah berikut di cluster Anda:

    kubectl apply -f clusterrole-binding.yml

    Ini akan membuat pengikatan dan aturan peran cluster. Contoh ini digunakan aps-collector-role sebagai nama peran, dan aps-collector-user sebagai nama pengguna.

  3. Perintah berikut memberi Anda informasi tentang scraper dengan ID scraper-id. Ini adalah scraper yang Anda buat menggunakan perintah di bagian sebelumnya.

    aws amp describe-scraper --scraper-id scraper-id
  4. Dari hasildescribe-scraper, temukan roleArn .This akan memiliki format berikut:

    arn:aws:iam::account-id:role/aws-service-role/scraper.aps.amazonaws.com/AWSServiceRoleForAmazonPrometheusScraper_unique-id

    Amazon EKS membutuhkan format yang berbeda untuk ARN ini. Anda harus menyesuaikan format ARN yang dikembalikan untuk digunakan pada langkah berikutnya. Edit agar sesuai dengan format ini:

    arn:aws:iam::account-id:role/AWSServiceRoleForAmazonPrometheusScraper_unique-id

    Misalnya, ARN ini:

    arn:aws:iam::111122223333:role/aws-service-role/scraper.aps.amazonaws.com/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-56ef-7

    Harus ditulis ulang sebagai:

    arn:aws:iam::111122223333:role/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-56ef-7
  5. Jalankan perintah berikut di cluster Anda, menggunakan modifikasi roleArn dari langkah sebelumnya, serta nama cluster dan wilayah Anda. :

    eksctl create iamidentitymapping --cluster cluster-name --region region-id --arn roleArn --username aps-collector-user

    Ini memungkinkan scraper untuk mengakses cluster menggunakan peran dan pengguna yang Anda buat dalam clusterrole-binding.yml file.

Temukan dan hapus pencakar

Anda dapat menggunakan AWS API atau AWS CLI untuk membuat daftar pencakar di akun Anda atau untuk menghapusnya.

catatan

Pastikan Anda menggunakan versi terbaru AWS CLI atau SDK. Versi terbaru memberi Anda fitur dan fungsionalitas terbaru, serta pembaruan keamanan. Atau, gunakan AWS Cloudshell, yang selalu memberikan pengalaman baris up-to-date perintah, secara otomatis.

Untuk mencantumkan semua pencakar di akun Anda, gunakan operasi ListScrapersAPI.

Atau, dengan AWS CLI, hubungi:

aws amp list-scrapers

ListScrapersmengembalikan semua pencakar di akun Anda, misalnya:

{ "scrapers": [ { "scraperId": "s-1234abcd-56ef-7890-abcd-1234ef567890", "arn": "arn:aws:aps:us-west-2:123456789012:scraper/s-1234abcd-56ef-7890-abcd-1234ef567890", "roleArn": "arn:aws:iam::123456789012:role/aws-service-role/AWSServiceRoleForAmazonPrometheusScraper_1234abcd-2931", "status": { "statusCode": "DELETING" }, "createdAt": "2023-10-12T15:22:19.014000-07:00", "lastModifiedAt": "2023-10-12T15:55:43.487000-07:00", "tags": {}, "source": { "eksConfiguration": { "clusterArn": "arn:aws:eks:us-west-2:123456789012:cluster/my-cluster", "securityGroupIds": [ "sg-1234abcd5678ef90" ], "subnetIds": [ "subnet-abcd1234ef567890", "subnet-1234abcd5678ab90" ] } }, "destination": { "ampConfiguration": { "workspaceArn": "arn:aws:aps:us-west-2:123456789012:workspace/ws-1234abcd-5678-ef90-ab12-cdef3456a78" } } } ] }

Untuk menghapus scraper, cari scraper yang ingin Anda hapus, menggunakan ListScrapers operasi, lalu gunakan DeleteScraperoperasi untuk menghapusnya. scraperId

Atau, dengan AWS CLI, hubungi:

aws amp delete-scraper --scraper-id scraperId

Konfigurasi scraper

Anda dapat mengontrol bagaimana scraper Anda menemukan dan mengumpulkan metrik dengan konfigurasi scraper yang kompatibel dengan Prometheus. Misalnya, Anda dapat mengubah interval metrik yang dikirim ke ruang kerja. Anda juga dapat menggunakan pelabelan ulang untuk menulis ulang label metrik secara dinamis. Konfigurasi scraper adalah file YAMG yang merupakan bagian dari definisi scraper.

Saat scraper baru dibuat, Anda menentukan konfigurasi dengan menyediakan file YAMG yang dikodekan base64 dalam panggilan API. Anda dapat mengunduh file konfigurasi tujuan umum dengan GetDefaultScraperConfiguration operasi di Amazon Managed Service for Prometheus API.

Untuk memodifikasi konfigurasi scraper, hapus scraper dan buat ulang dengan konfigurasi baru.

Konfigurasi yang didukung

Untuk informasi tentang format konfigurasi scraper, termasuk rincian rinci dari nilai yang mungkin, lihat Konfigurasi dalam dokumentasi Prometheus. Opsi konfigurasi global, dan <scrape_config> opsi menjelaskan opsi yang paling umum dibutuhkan.

Karena Amazon EKS adalah satu-satunya layanan yang didukung, satu-satunya service discovery config (<*_sd_config>) yang didukung adalah. <kubernetes_sd_config>

Daftar lengkap bagian konfigurasi diperbolehkan:

  • <global>

  • <scrape_config>

  • <static_config>

  • <relabel_config>

  • <metric_relabel_configs>

  • <kubernetes_sd_config>

Keterbatasan dalam bagian ini tercantum setelah file konfigurasi sampel.

Contoh file konfigurasi

Berikut ini adalah contoh file konfigurasi YAMAL dengan interval scrape 30 detik.

global: scrape_interval: 30s external_labels: clusterArn: apiserver-test-2 scrape_configs: - job_name: pod_exporter kubernetes_sd_configs: - role: pod - job_name: cadvisor scheme: https authorization: type: Bearer credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token kubernetes_sd_configs: - role: node relabel_configs: - action: labelmap regex: __meta_kubernetes_node_label_(.+) - replacement: kubernetes.default.svc:443 target_label: __address__ - source_labels: [__meta_kubernetes_node_name] regex: (.+) target_label: __metrics_path__ replacement: /api/v1/nodes/$1/proxy/metrics/cadvisor # apiserver metrics - scheme: https authorization: type: Bearer credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token job_name: kubernetes-apiservers kubernetes_sd_configs: - role: endpoints relabel_configs: - action: keep regex: default;kubernetes;https source_labels: - __meta_kubernetes_namespace - __meta_kubernetes_service_name - __meta_kubernetes_endpoint_port_name # kube proxy metrics - job_name: kube-proxy honor_labels: true kubernetes_sd_configs: - role: pod relabel_configs: - action: keep source_labels: - __meta_kubernetes_namespace - __meta_kubernetes_pod_name separator: '/' regex: 'kube-system/kube-proxy.+' - source_labels: - __address__ action: replace target_label: __address__ regex: (.+?)(\\:\\d+)? replacement: $1:10249

Berikut ini adalah batasan khusus untuk kolektor yang AWS dikelola:

  • Interval mengikis - Konfigurasi scraper tidak dapat menentukan interval gesekan kurang dari 30 detik.

  • Target — Target dalam static_config harus ditentukan sebagai alamat IP.

  • Otorisasi - Hilangkan jika tidak ada otorisasi yang diperlukan. Jika diperlukan, otorisasi harusBearer, dan harus menunjuk ke file/var/run/secrets/kubernetes.io/serviceaccount/token. Dengan kata lain, jika digunakan, bagian otorisasi harus terlihat seperti berikut:

    authorization: type: Bearer credentials_file: /var/run/secrets/kubernetes.io/serviceaccount/token
    catatan

    type: Beareradalah default, sehingga dapat dihilangkan.

Memecahkan masalah konfigurasi scraper

Layanan Terkelola Amazon untuk kolektor Prometheus secara otomatis menemukan dan mengikis metrik. Tetapi bagaimana Anda bisa memecahkan masalah saat Anda tidak melihat metrik yang Anda harapkan di Layanan Terkelola Amazon untuk ruang kerja Prometheus?

upMetrik adalah alat yang bermanfaat. Untuk setiap titik akhir yang ditemukan oleh Amazon Managed Service untuk kolektor Prometheus, secara otomatis menjual metrik ini. Ada tiga status metrik ini yang dapat membantu Anda memecahkan masalah apa yang terjadi di dalam kolektor.

  • uptidak ada — Jika tidak ada up metrik untuk titik akhir, maka itu berarti kolektor tidak dapat menemukan titik akhir.

    Jika Anda yakin bahwa titik akhir ada, Anda mungkin perlu menyesuaikan konfigurasi scrape. Penemuan ini relabel_config mungkin perlu disesuaikan, atau mungkin ada masalah dengan yang role digunakan untuk penemuan.

  • upada, tetapi selalu 0 — Jika up ada, tetapi 0, maka kolektor dapat menemukan titik akhir, tetapi tidak dapat menemukan metrik yang kompatibel dengan Prometheus.

    Dalam hal ini, Anda dapat mencoba menggunakan curl perintah terhadap titik akhir secara langsung. Anda dapat memvalidasi bahwa Anda memiliki detail yang benar, misalnya, protokol (httpatauhttps), titik akhir, atau port yang Anda gunakan. Anda juga dapat memeriksa apakah titik akhir merespons dengan respons yang valid, dan mengikuti 200 format Prometheus. Akhirnya, tubuh respons tidak bisa lebih besar dari ukuran maksimum yang diizinkan. (Untuk batasan kolektor AWS terkelola, lihat bagian berikut.)

  • uphadir dan lebih besar dari 0 — Jika up ada, dan lebih besar dari 0, maka metrik sedang dikirim ke Amazon Managed Service untuk Prometheus.

    Validasi bahwa Anda mencari metrik yang benar di Amazon Managed Service untuk Prometheus (atau dasbor alternatif Anda, seperti Grafana yang Dikelola Amazon). Anda dapat menggunakan curl lagi untuk memeriksa data yang diharapkan di titik /metrics akhir Anda. Periksa juga apakah Anda belum melampaui batas lain, seperti jumlah titik akhir per scraper. Anda dapat memeriksa jumlah titik akhir metrik yang dikikis dengan memeriksa jumlah metrik, menggunakan. up count(up)

Keterbatasan scraper

Ada beberapa batasan untuk pencakar yang dikelola sepenuhnya yang disediakan oleh Amazon Managed Service untuk Prometheus.

  • Wilayah — Cluster EKS Anda, scraper terkelola, dan Layanan Terkelola Amazon untuk ruang kerja Prometheus semuanya harus berada di Wilayah yang sama. AWS

  • Akun — Kluster EKS Anda, scraper terkelola, dan Layanan Terkelola Amazon untuk ruang kerja Prometheus semuanya harus sama. Akun AWS

  • Kolektor - Anda dapat memiliki maksimal 10 Layanan Dikelola Amazon untuk pencakar Prometheus per wilayah per akun.

    catatan

    Anda dapat meminta kenaikan batas ini dengan meminta kenaikan kuota.

  • Respons metrik - Tubuh respons dari salah satu permintaan /metrics titik akhir tidak boleh lebih dari 50 megabyte (MB).

  • Titik akhir per scraper - Scraper dapat mengikis maksimum 30.000 titik akhir. /metrics

  • Interval mengikis - Konfigurasi scraper tidak dapat menentukan interval gesekan kurang dari 30 detik.