

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

# Solusi untuk Memantau infrastruktur Amazon EKS dengan Grafana yang Dikelola Amazon
<a name="solution-eks"></a>

Memantau infrastruktur Amazon Elastic Kubernetes Service adalah salah satu skenario paling umum yang digunakan Amazon Managed Grafana. Halaman ini menjelaskan template yang memberi Anda solusi untuk skenario ini. Solusinya dapat diinstal menggunakan [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)atau dengan [Terraform](https://www.terraform.io/).

Solusi ini mengkonfigurasi:
+ Layanan Terkelola Amazon Anda untuk ruang kerja Prometheus untuk menyimpan metrik dari klaster Amazon EKS Anda, dan membuat kolektor terkelola untuk mengikis metrik dan mendorongnya ke ruang kerja tersebut. Untuk informasi selengkapnya, lihat [Metrik konsumsi dengan kolektor AWS terkelola](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-collector.html).
+ Mengumpulkan log dari klaster Amazon EKS Anda menggunakan CloudWatch agen. Log disimpan di CloudWatch, dan ditanyakan oleh Grafana Terkelola Amazon. Untuk informasi selengkapnya, lihat [Logging untuk Amazon EKS](https://docs.aws.amazon.com/prescriptive-guidance/latest/implementing-logging-monitoring-cloudwatch/kubernetes-eks-logging.html)
+ Ruang kerja Grafana Terkelola Amazon Anda untuk menarik log dan metrik tersebut, serta membuat dasbor dan peringatan untuk membantu Anda memantau klaster Anda.

Menerapkan solusi ini akan membuat dasbor dan peringatan yang:
+ Nilai kesehatan cluster Amazon EKS secara keseluruhan.
+ Tunjukkan kesehatan dan kinerja pesawat kontrol Amazon EKS.
+ Tunjukkan kesehatan dan kinerja pesawat data Amazon EKS.
+ Tampilkan wawasan tentang beban kerja Amazon EKS di seluruh ruang nama Kubernetes.
+ Menampilkan penggunaan sumber daya di seluruh ruang nama, termasuk CPU, memori, disk, dan penggunaan jaringan.

## Tentang solusi ini
<a name="solution-eks-about"></a>

Solusi ini mengonfigurasi ruang kerja Grafana Terkelola Amazon untuk menyediakan metrik untuk klaster Amazon EKS Anda. Metrik digunakan untuk menghasilkan dasbor dan peringatan.

Metrik ini membantu Anda mengoperasikan klaster Amazon EKS secara lebih efektif dengan memberikan wawasan tentang kesehatan dan kinerja bidang kontrol dan data Kubernetes. Anda dapat memahami klaster Amazon EKS Anda dari tingkat node, ke pod, hingga ke level Kubernetes, termasuk pemantauan mendetail penggunaan sumber daya.

Solusinya menyediakan kemampuan antisipatif dan korektif:
+ **Kemampuan antisipatif meliputi**:
  + Kelola efisiensi sumber daya dengan mendorong keputusan penjadwalan. Misalnya, untuk memberikan kinerja dan keandalan SLAs kepada pengguna internal klaster Amazon EKS, Anda dapat mengalokasikan sumber daya CPU dan memori yang cukup untuk beban kerja mereka berdasarkan pelacakan penggunaan historis.
  + Prakiraan penggunaan: Berdasarkan pemanfaatan sumber daya kluster Amazon EKS Anda saat ini seperti node, [Volume Persisten yang didukung oleh Amazon EBS](https://docs.aws.amazon.com/eks/latest/userguide/ebs-csi.html), atau [Application Load Balancer](https://docs.aws.amazon.com/eks/latest/userguide/aws-load-balancer-controller.html), Anda dapat merencanakan ke depan, misalnya, untuk produk atau proyek baru dengan permintaan serupa.
  + Deteksi potensi masalah lebih awal: Misalnya, dengan menganalisis tren konsumsi sumber daya pada tingkat namespace Kubernetes, Anda dapat memahami musiman penggunaan beban kerja.
+ Kemampuan **korektif** meliputi:
  + Kurangi mean time to detection (MTTD) masalah pada infrastruktur dan tingkat beban kerja Kubernetes. Misalnya, dengan melihat dasbor pemecahan masalah, Anda dapat dengan cepat menguji hipotesis tentang apa yang salah dan menghilangkannya.
  + Tentukan di mana dalam tumpukan masalah sedang terjadi. Misalnya, control plane Amazon EKS sepenuhnya dikelola oleh AWS dan operasi tertentu seperti memperbarui penerapan Kubernetes mungkin gagal jika server API kelebihan beban atau konektivitas terpengaruh.

Gambar berikut menunjukkan contoh folder dasbor untuk solusinya.

![\[Gambar yang menunjukkan contoh folder dasbor Grafana yang dibuat menggunakan solusi ini.\]](http://docs.aws.amazon.com/id_id/grafana/latest/userguide/images/eks-solution-dashboard-folder.png)


Anda dapat memilih dasbor untuk melihat detail selengkapnya, misalnya, memilih untuk melihat Sumber Daya Komputasi untuk beban kerja akan menampilkan dasbor, seperti yang ditunjukkan pada gambar berikut.

![\[Gambar yang menunjukkan contoh dasbor Grafana yang menunjukkan penggunaan CPU yang dibuat menggunakan solusi ini.\]](http://docs.aws.amazon.com/id_id/grafana/latest/userguide/images/eks-solution-dashboard-resource-usage.png)


Metrik dikikis dengan interval gesekan 1 menit. Dasbor menampilkan metrik yang dikumpulkan menjadi 1 menit, 5 menit, atau lebih, berdasarkan metrik tertentu.

Log juga ditampilkan di dasbor, sehingga Anda dapat menanyakan dan menganalisis log untuk menemukan akar penyebab masalah. Gambar berikut menunjukkan dasbor log.

![\[Gambar yang menunjukkan contoh dasbor Grafana dengan log, dibuat menggunakan solusi ini.\]](http://docs.aws.amazon.com/id_id/grafana/latest/userguide/images/eks-solution-dashboard-logs.png)


Untuk daftar metrik yang dilacak oleh solusi ini, lihat. [Daftar metrik yang dilacak](#solution-eks-metrics)

Untuk daftar peringatan yang dibuat oleh solusi, lihat[Daftar peringatan yang dibuat](#solution-eks-alerts).

## Biaya
<a name="solution-eks-costs"></a>

Solusi ini membuat dan menggunakan sumber daya di ruang kerja Anda. Anda akan dikenakan biaya untuk penggunaan standar sumber daya yang dibuat, termasuk:
+ Akses ruang kerja Grafana yang Dikelola Amazon oleh pengguna. Untuk informasi selengkapnya tentang harga, lihat harga [Grafana Terkelola Amazon](https://aws.amazon.com/grafana/pricing/).
+ Layanan Terkelola Amazon untuk konsumsi dan penyimpanan metrik Prometheus, termasuk penggunaan Layanan Terkelola Amazon untuk kolektor tanpa agen Prometheus, dan analisis metrik (pemrosesan sampel kueri). Jumlah metrik yang digunakan oleh solusi ini bergantung pada konfigurasi dan penggunaan klaster Amazon EKS.

  *Anda dapat melihat metrik konsumsi dan penyimpanan di Layanan Terkelola Amazon untuk Prometheus menggunakan Untuk informasi CloudWatch selengkapnya, lihat metrik [CloudWatchdi](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-CW-usage-metrics.html) Panduan Pengguna Layanan Terkelola Amazon untuk Prometheus.*

  Anda dapat memperkirakan biaya menggunakan kalkulator harga di halaman harga [Amazon Managed Service for Prometheus](https://aws.amazon.com/prometheus/pricing/). Jumlah metrik akan tergantung pada jumlah node di cluster Anda, dan metrik yang dihasilkan aplikasi Anda.
+ CloudWatch Log konsumsi, penyimpanan, dan analisis. Secara default, penyimpanan log diatur agar tidak pernah kedaluwarsa. Anda dapat menyesuaikan ini di CloudWatch. Untuk informasi selengkapnya tentang harga, lihat [ CloudWatch Harga Amazon](https://aws.amazon.com/cloudwatch/pricing/).
+ Biaya jaringan. Anda mungkin dikenakan biaya AWS jaringan standar untuk lintas zona ketersediaan, Wilayah, atau lalu lintas lainnya.

Kalkulator harga, tersedia dari halaman harga untuk setiap produk, dapat membantu Anda memahami potensi biaya untuk solusi Anda. Informasi berikut dapat membantu mendapatkan biaya dasar, untuk solusi yang berjalan di zona ketersediaan yang sama dengan cluster Amazon EKS.


| Produk | Kalkulator metrik | Nilai | 
| --- | --- | --- | 
| Amazon Managed Service for Prometheus | Seri aktif | 8000 (dasar) 15.000 (per node) | 
|  | Interval Pengumpulan Rata-rata | 60 (detik) | 
| Layanan Terkelola Amazon untuk Prometheus (kolektor terkelola) | Jumlah kolektor | 1 | 
|  | Jumlah sampel | 15 (dasar) 150 (per simpul) | 
|  | Jumlah aturan | 161 | 
|  | Interval ekstraksi aturan rata-rata | 60 (detik) | 
| Amazon Managed Grafana | Jumlah editor/administrator aktif | 1 (atau lebih, berdasarkan pengguna Anda) | 
| CloudWatch (Log) | Log Standar: Data tertelan | 24,5 GB (dasar) 0,5 GB (per node) | 
|  | Log Storage/Archival (Log Standar dan Penjual) | Ya untuk menyimpan log: Dengan asumsi retensi 1 bulan | 
|  | Data Log yang Diharapkan Dipindai | Setiap kueri wawasan log dari Grafana akan memindai semua konten log dari grup selama periode waktu yang ditentukan. | 

Angka-angka ini adalah nomor dasar untuk solusi yang menjalankan EKS tanpa perangkat lunak tambahan. Ini akan memberi Anda perkiraan biaya dasar. Ini juga mengabaikan biaya penggunaan jaringan, yang akan bervariasi berdasarkan apakah ruang kerja Grafana yang Dikelola Amazon, Layanan Terkelola Amazon untuk ruang kerja Prometheus, dan kluster Amazon EKS berada di zona ketersediaan yang sama,, dan VPN. Wilayah AWS

**catatan**  
Ketika item dalam tabel ini menyertakan `(base)` nilai dan nilai per sumber daya (misalnya,`(per node)`), Anda harus menambahkan nilai dasar ke nilai per sumber daya kali jumlah yang Anda miliki dari sumber daya tersebut. Misalnya, untuk **deret waktu aktif rata-rata**, masukkan nomor yang ada`8000 + the number of nodes in your cluster * 15,000`. Jika Anda memiliki 2 node, Anda akan masuk`38,000`, yaitu`8000 + ( 2 * 15,000 )`.

## Prasyarat
<a name="solution-eks-prerequisites"></a>

Solusi ini mengharuskan Anda melakukan hal berikut sebelum menggunakan solusinya.

1. Anda harus memiliki atau **membuat klaster Amazon Elastic Kubernetes Service** yang ingin Anda pantau, dan cluster harus memiliki setidaknya satu node. Cluster harus memiliki akses endpoint server API yang disetel untuk menyertakan akses pribadi (juga dapat mengizinkan akses publik).

   [Mode otentikasi](https://docs.aws.amazon.com/eks/latest/userguide/grant-k8s-access.html#set-cam) harus menyertakan akses API (dapat diatur ke salah satu `API` atau`API_AND_CONFIG_MAP`). Hal ini memungkinkan penerapan solusi untuk menggunakan entri akses.

   Berikut ini harus diinstal di cluster (true secara default saat membuat cluster melalui konsol, tetapi harus ditambahkan jika Anda membuat cluster menggunakan AWS API atau AWS CLI): AWS CNI, CoreDNS dan Kube-proxy. AddOns

   *Simpan nama Cluster untuk menentukan nanti*. Ini dapat ditemukan di detail cluster di konsol Amazon EKS.
**catatan**  
Untuk detail tentang cara membuat klaster Amazon EKS, lihat [Memulai Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/getting-started.html).

1. Anda harus **membuat Layanan Terkelola Amazon untuk ruang kerja Prometheus** sama Akun AWS dengan kluster Amazon EKS Anda. Untuk detailnya, lihat [Membuat ruang kerja](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-create-workspace.html) di *Amazon Managed Service for Prometheus* User Guide.

   *Simpan Layanan Terkelola Amazon untuk ARN ruang kerja Prometheus untuk ditentukan nanti.*

1. Anda harus **membuat ruang kerja Grafana Terkelola Amazon dengan** Grafana versi 9 atau yang lebih baru, sama dengan cluster Amazon EKS Wilayah AWS Anda. Untuk detail tentang membuat ruang kerja baru, lihat[Buat ruang kerja Grafana yang Dikelola Amazon](AMG-create-workspace.md).

   Peran ruang kerja harus memiliki izin untuk mengakses Amazon Managed Service untuk Prometheus dan Amazon. CloudWatch APIs Cara termudah untuk melakukannya adalah dengan menggunakan [izin yang dikelola Layanan](AMG-manage-permissions.md) dan pilih Layanan Terkelola Amazon untuk Prometheus dan. CloudWatch Anda juga dapat menambahkan [AmazonGrafanaCloudWatchAccess](security-iam-awsmanpol.md#security-iam-awsmanpol-AmazonGrafanaCloudWatchAccess)kebijakan [AmazonPrometheusQueryAccess](https://docs.aws.amazon.com/prometheus/latest/userguide/security-iam-awsmanpol.html#AmazonPrometheusQueryAccess)dan kebijakan secara manual ke peran IAM ruang kerja Anda.

   *Simpan ID ruang kerja Grafana Terkelola Amazon dan titik akhir untuk ditentukan nanti.* ID ada dalam bentuk`g-123example`. ID dan titik akhir dapat ditemukan di konsol Grafana Terkelola Amazon. Endpoint adalah URL untuk ruang kerja, dan menyertakan ID. Misalnya, `https://g-123example.grafana-workspace.<region>.amazonaws.com/`.

1. Jika Anda menerapkan solusi dengan Terraform, Anda harus membuat **bucket Amazon S3** yang dapat diakses dari akun Anda. Ini akan digunakan untuk menyimpan file status Terraform untuk penerapan.

   *Simpan ID bucket Amazon S3 untuk ditentukan nanti.*

1. Untuk melihat aturan peringatan Layanan Terkelola Amazon untuk Prometheus, Anda harus mengaktifkan peringatan Grafana untuk ruang kerja [Grafana](v10-alerting-use-grafana-alerts.md) yang Dikelola Amazon.

   Selain itu, Grafana Terkelola Amazon harus memiliki izin berikut untuk sumber daya Prometheus Anda. Anda harus menambahkannya ke kebijakan yang dikelola layanan atau yang dikelola pelanggan yang dijelaskan dalam. [Izin dan kebijakan Grafana yang Dikelola Amazon untuk sumber data AWS](AMG-manage-permissions.md)
   + `aps:ListRules`
   + `aps:ListAlertManagerSilences`
   + `aps:ListAlertManagerAlerts`
   + `aps:GetAlertManagerStatus`
   + `aps:ListAlertManagerAlertGroups`
   + `aps:PutAlertManagerSilences`
   + `aps:DeleteAlertManagerSilence`

**catatan**  
Meskipun tidak sepenuhnya diperlukan untuk menyiapkan solusi, Anda harus menyiapkan autentikasi pengguna di ruang kerja Grafana Terkelola Amazon sebelum pengguna dapat mengakses dasbor yang dibuat. Untuk informasi selengkapnya, lihat [Mengautentikasi pengguna di ruang kerja Grafana Terkelola Amazon](authentication-in-AMG.md).

## Menggunakan solusi ini
<a name="solution-eks-use"></a>

Solusi ini mengonfigurasi AWS infrastruktur untuk mendukung metrik pelaporan dan pemantauan dari klaster Amazon EKS. Anda dapat menginstalnya menggunakan salah satu [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/v2/guide/home.html)atau dengan [Terraform](https://www.terraform.io/).

------
#### [ Using AWS CDK ]

Salah satu cara solusi ini diberikan kepada Anda adalah sebagai AWS CDK aplikasi. Anda akan memberikan informasi tentang sumber daya yang ingin Anda gunakan, dan solusinya akan membuat scraper, log, dan dasbor untuk Anda.

**catatan**  
Langkah-langkah di sini mengasumsikan bahwa Anda memiliki lingkungan dengan AWS CLI, dan AWS CDK, dan keduanya [Node.js](https://nodeja.org/) dan [NPM](https://docs.npmjs.com/) diinstal. Anda akan menggunakan `make` dan `brew` menyederhanakan build dan tindakan umum lainnya.

**Untuk menggunakan solusi ini untuk memantau cluster Amazon EKS dengan AWS CDK**

1. Pastikan Anda telah menyelesaikan semua langkah [prasyarat](#solution-eks-prerequisites).

1. Unduh semua file untuk solusi dari Amazon S3. File-file tersebut berada di`s3://aws-observability-solutions/EKS/OSS/CDK/v3.0.0/iac`, dan Anda dapat mengunduhnya dengan perintah Amazon S3 berikut. Jalankan perintah ini dari folder di lingkungan baris perintah Anda.

   ```
   aws s3 sync s3://aws-observability-solutions/EKS/OSS/CDK/v3.0.0/iac/ .
   ```

   Anda tidak perlu memodifikasi file-file ini.

1. Di lingkungan baris perintah Anda (dari folder tempat Anda mengunduh file solusi), jalankan perintah berikut.

   Siapkan variabel lingkungan yang dibutuhkan. Ganti*REGION*,*AMG\$1ENDPOINT*,*EKS\$1CLUSTER*, dan *AMP\$1ARN* dengan Wilayah AWS, titik akhir ruang kerja Grafana yang Dikelola Amazon (di formulir)`http://g-123example.grafana-workspace.us-east-1.amazonaws.com`, nama klaster Amazon EKS, dan Layanan Terkelola Amazon untuk ARN ruang kerja Prometheus.

   ```
   export AWS_REGION=REGION
   export AMG_ENDPOINT=AMG_ENDPOINT
   export EKS_CLUSTER_NAME=EKS_CLUSTER
   export AMP_WS_ARN=AMP_ARN
   ```

1. Anda harus membuat token akun layanan dengan akses ADMIN untuk memanggil Grafana HTTP. APIs Lihat perinciannya di [Gunakan akun layanan untuk mengautentikasi dengan Grafana HTTP APIs](service-accounts.md). Anda dapat menggunakan perintah berikut untuk membuat token. AWS CLI Anda harus mengganti *GRAFANA\$1ID* dengan ID ruang kerja Grafana Anda (itu akan dalam formulir). `g-123example` Kunci ini akan kedaluwarsa setelah 7.200 detik, atau 2 jam. Anda dapat mengubah waktu (`seconds-to-live`), jika perlu. Penyebaran memakan waktu kurang dari satu jam.

   ```
   GRAFANA_SA_ID=$(aws grafana create-workspace-service-account \
     --workspace-id GRAFANA_ID \
     --grafana-role ADMIN \
     --name grafana-operator-key \
     --query 'id' \
     --output text)
     
   # creates a new token for calling APIs
   export AMG_API_KEY=$(aws grafana create-workspace-service-account-token \
     --workspace-id $managed_grafana_workspace_id \
     --name "grafana-operator-key-$(date +%s)" \
     --seconds-to-live 7200 \
     --service-account-id $GRAFANA_SA_ID \
     --query 'serviceAccountToken.key' \
     --output text)
   ```

   Buat API Key tersedia AWS CDK dengan menambahkannya AWS Systems Manager dengan perintah berikut. Ganti *AWS\$1REGION* dengan Wilayah tempat solusi Anda akan berjalan (dalam formulir`us-east-1`).

   ```
   aws ssm put-parameter --name "/observability-aws-solution-eks-infra/grafana-api-key" \
       --type "SecureString" \
       --value $AMG_API_KEY \
       --region AWS_REGION \
       --overwrite
   ```

1. Jalankan `make` perintah berikut, yang akan menginstal dependensi lain untuk proyek.

   ```
   make deps
   ```

1. Akhirnya, jalankan AWS CDK proyek:

   ```
   make build && make pattern aws-observability-solution-eks-infra-$EKS_CLUSTER_NAME deploy
   ```

1. [Opsional] Setelah pembuatan tumpukan selesai, Anda dapat menggunakan lingkungan yang sama untuk membuat lebih banyak instance tumpukan untuk kluster Amazon EKS lainnya di wilayah yang sama, selama Anda menyelesaikan prasyarat lain untuk masing-masing (termasuk Grafana Terkelola Amazon terpisah dan Layanan Terkelola Amazon untuk ruang kerja Prometheus). Anda perlu mendefinisikan ulang `export` perintah dengan parameter baru.

Saat pembuatan tumpukan selesai, ruang kerja Grafana Terkelola Amazon Anda akan diisi dengan dasbor yang menampilkan metrik untuk klaster Amazon EKS Anda. Diperlukan beberapa menit agar metrik ditampilkan, karena scraper mulai mengumpulkan metrik.

------
#### [ Using Terraform ]

Salah satu cara solusi ini diberikan kepada Anda adalah sebagai solusi Terraform. Anda akan memberikan informasi tentang sumber daya yang ingin Anda gunakan, dan solusinya akan membuat scraper, log, dan dasbor untuk Anda.

**Untuk menggunakan solusi ini untuk memantau cluster Amazon EKS dengan Terraform**

1. Pastikan Anda telah menyelesaikan semua langkah [prasyarat](#solution-eks-prerequisites).

1. Unduh semua file untuk solusi dari Amazon S3. File-file tersebut berada di`s3://aws-observability-solutions/EKS/OSS/Terraform/v3.0.0/`, dan Anda dapat mengunduhnya dengan perintah Amazon S3 berikut. Jalankan perintah ini dari folder di lingkungan baris perintah Anda, lalu ubah direktori ke folder tempat Anda akan menyebarkan.

   ```
   aws s3 sync s3://aws-observability-solutions/EKS/OSS/Terraform/v3.0.0/ .
   cd eks-monitoring
   ```

   Anda tidak perlu memodifikasi file-file ini.

1. Di lingkungan baris perintah Anda (dari folder tempat Anda mengunduh file solusi), jalankan perintah berikut.

   Siapkan variabel lingkungan yang dibutuhkan. Ganti*REGION*,*AMG\$1ENDPOINT*,*EKS\$1CLUSTER*,*AMP\$1ARN*,, dan*S3\$1ID*, dengan Wilayah AWS tempat Anda ingin sumber daya baru diterapkan (misalnya,`us-east-1`), titik akhir ruang kerja Grafana yang Dikelola Amazon (dalam formulir`http://g-123example.grafana-workspace.us-east-1.amazonaws.com`), nama klaster Amazon EKS, Layanan Terkelola Amazon untuk ARN ruang kerja Prometheus, dan ID bucket Amazon S3.

   ```
   export TF_VAR_aws_region=REGION
   export TF_VAR_amg_endpoint=AMG_ENDPOINT
   export TF_VAR_eks_cluster_name=EKS_CLUSTER
   export TF_VAR_amp_ws_arn=AMP_ARN
   export TF_VAR_s3_bucket_id=S3_ID
   ```

1. Anda harus membuat token akun layanan dengan akses ADMIN untuk memanggil Grafana HTTP. APIs Lihat perinciannya di [Gunakan akun layanan untuk mengautentikasi dengan Grafana HTTP APIs](service-accounts.md). Anda dapat menggunakan perintah berikut untuk membuat token. AWS CLI Anda harus mengganti *GRAFANA\$1ID* dengan ID ruang kerja Grafana Anda (itu akan dalam formulir). `g-123example` Kunci ini akan kedaluwarsa setelah 7.200 detik, atau 2 jam. Anda dapat mengubah waktu (`seconds-to-live`), jika perlu. Penyebaran memakan waktu kurang dari satu jam.

   ```
   GRAFANA_SA_ID=$(aws grafana create-workspace-service-account \
     --workspace-id GRAFANA_ID \
     --grafana-role ADMIN \
     --name grafana-operator-key \
     --query 'id' \
     --output text)
     
   # creates a new token for running Terraform
   export TF_VAR_grafana_api_key=$(aws grafana create-workspace-service-account-token \
     --workspace-id $managed_grafana_workspace_id \
     --name "grafana-operator-key-$(date +%s)" \
     --seconds-to-live 7200 \
     --service-account-id $GRAFANA_SA_ID \
     --query 'serviceAccountToken.key' \
     --output text)
   ```
**catatan**  
Langkah pertama di atas, membuat akun layanan untuk ruang kerja tidak diperlukan jika Anda sudah memiliki akun layanan. Dalam hal ini, ganti *\$1GRAFANA\$1SA\$1ID* dengan ID akun layanan Anda.

1. Jalankan `terraform` perintah berikut untuk menginisialisasi Terraform dengan solusinya.

   ```
   terraform init -reconfigure \
   -backend-config="bucket=${TF_VAR_s3_bucket_id}" \
   -backend-config="region=${TF_VAR_aws_region}" \
   -backend-config="key=state/${TF_VAR_eks_cluster_name}/terraform.tfstate"
   ```

1. Terakhir, terapkan proyek Terraform:

   ```
   terraform apply
   ```

Saat pembuatan solusi selesai, ruang kerja Grafana Terkelola Amazon Anda akan diisi dengan dasbor yang menampilkan metrik untuk klaster Amazon EKS Anda. Diperlukan beberapa menit agar metrik ditampilkan, karena scraper mulai mengumpulkan metrik.

------

## Daftar metrik yang dilacak
<a name="solution-eks-metrics"></a>

Solusi ini membuat scraper yang mengumpulkan metrik dari cluster Amazon EKS Anda. Metrik tersebut disimpan di Amazon Managed Service untuk Prometheus, dan kemudian ditampilkan di dasbor Grafana Terkelola Amazon. Secara default, scraper mengumpulkan semua [metrik yang kompatibel dengan Prometheus](https://docs.aws.amazon.com/prometheus/latest/userguide/prom-compatible-metrics.html) yang diekspos oleh cluster. Menginstal perangkat lunak di cluster Anda yang menghasilkan lebih banyak metrik akan meningkatkan metrik yang dikumpulkan. Jika mau, Anda dapat mengurangi jumlah metrik dengan [memperbarui scraper dengan konfigurasi yang memfilter](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-collector-how-to.html#AMP-collector-configuration) metrik.

Metrik berikut dilacak dengan solusi ini, dalam konfigurasi kluster Amazon EKS dasar tanpa perangkat lunak tambahan yang diinstal.


| Metrik | Deskripsi/Tujuan | 
| --- | --- | 
|  `aggregator_unavailable_apiservice`  |  Gauge APIServices yang ditandai sebagai tidak tersedia dipecah berdasarkan APIService nama.  | 
|  `apiserver_admission_webhook_admission_duration_seconds_bucket`  |  Penerimaan histogram latensi webhook dalam hitungan detik, diidentifikasi berdasarkan nama dan dipecah untuk setiap operasi dan sumber daya API dan jenis (memvalidasi atau mengakui).  | 
|  `apiserver_current_inflight_requests`  |  Jumlah maksimal batas permintaan dalam pesawat yang saat ini digunakan dari apiserver ini per jenis permintaan di detik terakhir.  | 
|  `apiserver_envelope_encryption_dek_cache_fill_percent`  |  Persentase slot cache saat ini ditempati oleh cache DEKs.  | 
|  `apiserver_flowcontrol_current_executing_requests`  |  Jumlah permintaan dalam tahap eksekusi awal (untuk WATCH) atau apa pun (untuk non-Watch) dalam subsistem Prioritas dan Keadilan API.  | 
|  `apiserver_flowcontrol_rejected_requests_total`  |  Jumlah permintaan dalam tahap eksekusi awal (untuk WATCH) atau apa pun (untuk non-Watch) dalam subsistem Prioritas dan Keadilan API yang ditolak.  | 
|  `apiserver_flowcontrol_request_concurrency_limit`  |  Jumlah nominal kursi eksekusi yang dikonfigurasi untuk setiap tingkat prioritas.  | 
|  `apiserver_flowcontrol_request_execution_seconds_bucket`  |  Histogram durasi tahap awal (untuk WATCH) atau tahap eksekusi permintaan apa pun (untuk non-Watch) dalam subsistem Prioritas dan Keadilan API.  | 
|  `apiserver_flowcontrol_request_queue_length_after_enqueue_count`  |  Hitungan tahap awal (untuk WATCH) atau tahap eksekusi permintaan apa pun (untuk non-Watch) dalam subsistem Prioritas dan Keadilan API.  | 
|  `apiserver_request`  |  Menunjukkan permintaan server API.  | 
|  `apiserver_requested_deprecated_apis`  |  Ukuran usang APIs yang telah diminta, dipecah oleh grup API, versi, sumber daya, subsumber daya, dan removed\$1release.  | 
|  `apiserver_request_duration_seconds`  |  Distribusi latensi respons dalam hitungan detik untuk setiap kata kerja, nilai dry run, grup, versi, sumber daya, subsumber daya, ruang lingkup, dan komponen.  | 
|  `apiserver_request_duration_seconds_bucket`  |  Histogram bucketed dari distribusi latensi respons dalam hitungan detik untuk setiap kata kerja, nilai dry run, grup, versi, sumber daya, subsumber daya, ruang lingkup, dan komponen.  | 
|  `apiserver_request_slo_duration_seconds`  |  Distribusi latensi respons Service Level Objective (SLO) dalam hitungan detik untuk setiap kata kerja, nilai dry run, grup, versi, sumber daya, subsumber daya, ruang lingkup, dan komponen.  | 
|  `apiserver_request_terminations_total`  |  Jumlah permintaan yang apiserver dihentikan untuk membela diri.  | 
|  `apiserver_request_total`  |  Penghitung permintaan apiserver dipecah untuk setiap kata kerja, nilai dry run, grup, versi, sumber daya, ruang lingkup, komponen, dan kode respons HTTP.  | 
|  `container_cpu_usage_seconds_total`  |  Waktu cpu kumulatif dikonsumsi.  | 
|  `container_fs_reads_bytes_total`  |  Jumlah kumulatif byte yang dibaca.  | 
|  `container_fs_reads_total`  |  Jumlah kumulatif pembacaan selesai.  | 
|  `container_fs_writes_bytes_total`  |  Hitungan kumulatif byte yang ditulis.  | 
|  `container_fs_writes_total`  |  Hitungan kumulatif penulisan selesai.  | 
|  `container_memory_cache`  |  Total memori cache halaman.  | 
|  `container_memory_rss`  |  Ukuran RSS.  | 
|  `container_memory_swap`  |  Penggunaan swap kontainer.  | 
|  `container_memory_working_set_bytes`  |  Set kerja saat ini.  | 
|  `container_network_receive_bytes_total`  |  Jumlah kumulatif byte yang diterima.  | 
|  `container_network_receive_packets_dropped_total`  |  Jumlah kumulatif paket turun saat menerima.  | 
|  `container_network_receive_packets_total`  |  Jumlah kumulatif paket yang diterima.  | 
|  `container_network_transmit_bytes_total`  |  Jumlah kumulatif byte yang ditransmisikan.  | 
|  `container_network_transmit_packets_dropped_total`  |  Jumlah kumulatif paket turun saat transmisi.  | 
|  `container_network_transmit_packets_total`  |  Jumlah kumulatif paket yang ditransmisikan.  | 
|  `etcd_request_duration_seconds_bucket`  |  Histogram yang diselimuti etcd meminta latensi dalam hitungan detik untuk setiap operasi dan jenis objek.  | 
|  `go_goroutines`  |  Jumlah goroutine yang saat ini ada.  | 
|  `go_threads`  |  Jumlah utas OS yang dibuat.  | 
|  `kubelet_cgroup_manager_duration_seconds_bucket`  |  Histogram durasi yang diselimuti dalam hitungan detik untuk operasi manajer cgroup. Dipecahkan dengan metode.  | 
|  `kubelet_cgroup_manager_duration_seconds_count`  |  Durasi dalam hitungan detik untuk operasi manajer cgroup. Dipecahkan dengan metode.  | 
|  `kubelet_node_config_error`  |  Metrik ini benar (1) jika node mengalami kesalahan terkait konfigurasi, false (0) sebaliknya.  | 
|  `kubelet_node_name`  |  Nama node. Hitungannya selalu 1.  | 
|  `kubelet_pleg_relist_duration_seconds_bucket`  |  Histogram durasi yang diselimuti dalam hitungan detik untuk menghidupkan kembali polong di PLEG.  | 
|  `kubelet_pleg_relist_duration_seconds_count`  |  Hitungan durasi dalam hitungan detik untuk melepaskan pod di PLEG.  | 
|  `kubelet_pleg_relist_interval_seconds_bucket`  |  Histogram interval yang diselimuti dalam hitungan detik antara pengulangan di PLEG.  | 
|  `kubelet_pod_start_duration_seconds_count`  |  Hitungan durasi dalam hitungan detik dari kubelet melihat pod untuk pertama kalinya hingga pod mulai berjalan.  | 
|  `kubelet_pod_worker_duration_seconds_bucket`  |  Histogram durasi yang diselimuti dalam hitungan detik untuk menyinkronkan satu pod. Diuraikan berdasarkan jenis operasi: buat, perbarui, atau sinkronkan.  | 
|  `kubelet_pod_worker_duration_seconds_count`  |  Hitungan durasi dalam hitungan detik untuk menyinkronkan satu pod. Diuraikan berdasarkan jenis operasi: buat, perbarui, atau sinkronkan.  | 
|  `kubelet_running_containers`  |  Jumlah kontainer yang sedang berjalan.  | 
|  `kubelet_running_pods`  |  Jumlah pod yang memiliki kotak pasir pod yang sedang berjalan.  | 
|  `kubelet_runtime_operations_duration_seconds_bucket`  |  Histogram durasi yang diselimuti dalam hitungan detik operasi runtime. Diuraikan berdasarkan jenis operasi.  | 
|  `kubelet_runtime_operations_errors_total`  |  Jumlah kumulatif kesalahan operasi runtime menurut jenis operasi.  | 
|  `kubelet_runtime_operations_total`  |  Jumlah kumulatif operasi runtime menurut jenis operasi.  | 
|  `kube_node_status_allocatable`  |  Jumlah sumber daya yang dapat dialokasikan untuk pod (setelah memesan beberapa untuk daemon sistem).  | 
|  `kube_node_status_capacity`  |  Jumlah total sumber daya yang tersedia untuk sebuah node.  | 
|  `kube_pod_container_resource_limits (CPU)`  |  Jumlah sumber daya batas yang diminta oleh kontainer.  | 
|  `kube_pod_container_resource_limits (Memory)`  |  Jumlah sumber daya batas yang diminta oleh kontainer.  | 
|  `kube_pod_container_resource_requests (CPU)`  |  Jumlah sumber daya permintaan yang diminta oleh kontainer.  | 
|  `kube_pod_container_resource_requests (Memory)`  |  Jumlah sumber daya permintaan yang diminta oleh kontainer.  | 
|  `kube_pod_owner`  |  Informasi tentang pemilik Pod.  | 
|  `kube_resourcequota`  |  Kuota sumber daya di Kubernetes memberlakukan batasan penggunaan pada sumber daya seperti CPU, memori, dan penyimpanan dalam ruang nama.  | 
|  `node_cpu`  |  Metrik penggunaan CPU untuk node, termasuk penggunaan per inti dan total penggunaan.  | 
|  `node_cpu_seconds_total`  |  Detik yang CPUs dihabiskan di setiap mode.  | 
|  `node_disk_io_time_seconds`  |  Jumlah kumulatif waktu yang dihabiskan untuk melakukan I/O operasi pada disk oleh sebuah node.  | 
|  `node_disk_io_time_seconds_total`  |  Jumlah total waktu yang dihabiskan untuk melakukan I/O operasi pada disk oleh node.  | 
|  `node_disk_read_bytes_total`  |  Jumlah total byte yang dibaca dari disk oleh node.  | 
|  `node_disk_written_bytes_total`  |  Jumlah total byte yang ditulis ke disk oleh node.  | 
|  `node_filesystem_avail_bytes`  |  Jumlah ruang yang tersedia dalam byte pada sistem berkas dari sebuah node dalam klaster Kubernetes.  | 
|  `node_filesystem_size_bytes`  |  Ukuran total filesystem pada node.  | 
|  `node_load1`  |  Rata-rata beban 1 menit dari penggunaan CPU node.  | 
|  `node_load15`  |  Rata-rata beban 15 menit dari penggunaan CPU node.  | 
|  `node_load5`  |  Rata-rata beban 5 menit dari penggunaan CPU node.  | 
|  `node_memory_Buffers_bytes`  |  Jumlah memori yang digunakan untuk buffer caching oleh sistem operasi node.  | 
|  `node_memory_Cached_bytes,`  |  Jumlah memori yang digunakan untuk disk caching oleh sistem operasi node.  | 
|  `node_memory_MemAvailable_bytes`  |  Jumlah memori yang tersedia untuk digunakan oleh aplikasi dan cache.  | 
|  `node_memory_MemFree_bytes`  |  Jumlah memori bebas yang tersedia di node.  | 
|  `node_memory_MemTotal_bytes`  |  Jumlah total memori fisik yang tersedia pada node.  | 
|  `node_network_receive_bytes_total`  |  Jumlah total byte yang diterima melalui jaringan oleh node.  | 
|  `node_network_transmit_bytes_total`  |  Jumlah total byte yang ditransmisikan melalui jaringan oleh node.  | 
|  `process_cpu_seconds_total`  |  Total waktu CPU pengguna dan sistem yang dihabiskan dalam hitungan detik.  | 
|  `process_resident_memory_bytes`  |  Ukuran memori residen dalam byte.  | 
|  `rest_client_requests_total`  |  Jumlah permintaan HTTP, dipartisi berdasarkan kode status, metode, dan host.  | 
|  `rest_client_request_duration_seconds_bucket`  |  Histogram yang diselimuti latensi permintaan dalam hitungan detik. Diuraikan berdasarkan kata kerja, dan host.  | 
|  `storage_operation_duration_seconds_bucket`  |  Histogram berember durasi operasi penyimpanan.  | 
|  `storage_operation_duration_seconds_count`  |  Hitungan durasi operasi penyimpanan.  | 
|  `storage_operation_errors_total`  |  Jumlah kesalahan kumulatif selama operasi penyimpanan.  | 
|  `up`  |  Metrik yang menunjukkan apakah target yang dipantau (misalnya, node) aktif dan berjalan.  | 
|  `volume_manager_total_volumes`  |  Jumlah total volume yang dikelola oleh manajer volume.  | 
|  `workqueue_adds_total`  |  Jumlah total penambahan yang ditangani oleh workqueue.  | 
|  `workqueue_depth`  |  Kedalaman antrian kerja saat ini.  | 
|  `workqueue_queue_duration_seconds_bucket`  |  Histogram yang diselimuti berapa lama dalam detik suatu item tetap berada dalam antrean kerja sebelum diminta.  | 
|  `workqueue_work_duration_seconds_bucket`  |  Histogram yang diselimuti berapa lama dalam hitungan detik memproses item dari antrean kerja.  | 

## Daftar peringatan yang dibuat
<a name="solution-eks-alerts"></a>

Tabel berikut mencantumkan peringatan yang dibuat oleh solusi ini. Peringatan dibuat sebagai aturan di Layanan Terkelola Amazon untuk Prometheus, dan ditampilkan di ruang kerja Grafana Terkelola Amazon Anda.

Anda dapat mengubah aturan, termasuk menambahkan atau menghapus aturan dengan [mengedit file konfigurasi aturan di ruang kerja](https://docs.aws.amazon.com/prometheus/latest/userguide/AMP-rules-edit.html) Amazon Managed Service for Prometheus.

Kedua peringatan ini adalah peringatan khusus yang ditangani sedikit berbeda dari peringatan biasa. Alih-alih mengingatkan Anda tentang suatu masalah, mereka memberi Anda informasi yang digunakan untuk memantau sistem. Deskripsi mencakup detail tentang cara menggunakan peringatan ini.


| Pemberitahuan | Deskripsi dan penggunaan | 
| --- | --- | 
| `Watchdog` | Ini adalah peringatan yang dimaksudkan untuk memastikan bahwa seluruh saluran peringatan berfungsi. Peringatan ini selalu menyala, oleh karena itu harus selalu menembak di Alertmanager dan selalu menembak penerima. Anda dapat mengintegrasikan ini dengan mekanisme notifikasi Anda untuk mengirim pemberitahuan ketika peringatan ini *tidak* diaktifkan. Misalnya, Anda dapat menggunakan **DeadMansSnitch**integrasi di PagerDuty. | 
| `InfoInhibitor` | Ini adalah peringatan yang digunakan untuk menghambat peringatan info. Dengan sendirinya, peringatan tingkat info bisa sangat bising, tetapi relevan bila dikombinasikan dengan peringatan lainnya. Peringatan ini menyala setiap kali ada `severity=info` peringatan, dan berhenti menyala ketika peringatan lain dengan tingkat keparahan `warning` atau `critical` mulai menyala pada namespace yang sama. Peringatan ini harus diarahkan ke penerima nol dan dikonfigurasi untuk menghambat peringatan dengan. `severity=info` | 

Peringatan berikut memberi Anda informasi atau peringatan tentang sistem Anda.


| Pemberitahuan | Kepelikan | Deskripsi | 
| --- | --- | --- | 
|  `NodeNetworkInterfaceFlapping`  | warning |  Antarmuka jaringan sering mengubah statusnya  | 
|  `NodeFilesystemSpaceFillingUp`  | warning |  Sistem file diperkirakan akan kehabisan ruang dalam 24 jam ke depan.  | 
|  `NodeFilesystemSpaceFillingUp`  | critical |  Sistem file diperkirakan akan kehabisan ruang dalam 4 jam ke depan.  | 
|  `NodeFilesystemAlmostOutOfSpace`  | warning |  Sistem file memiliki kurang dari 5% ruang tersisa.  | 
|  `NodeFilesystemAlmostOutOfSpace`  | critical |  Sistem file memiliki kurang dari 3% ruang tersisa.  | 
|  `NodeFilesystemFilesFillingUp`  | warning |  Sistem file diperkirakan akan kehabisan inode dalam 24 jam ke depan.  | 
|  `NodeFilesystemFilesFillingUp`  | critical |  Sistem file diperkirakan akan kehabisan inode dalam 4 jam ke depan.  | 
|  `NodeFilesystemAlmostOutOfFiles`  | warning |  Sistem file memiliki kurang dari 5% inode yang tersisa.  | 
|  `NodeFilesystemAlmostOutOfFiles`  | critical |  Sistem file memiliki kurang dari 3% inode tersisa.  | 
|  `NodeNetworkReceiveErrs`  | warning |  Antarmuka jaringan melaporkan banyak kesalahan penerimaan.  | 
|  `NodeNetworkTransmitErrs`  | warning |  Antarmuka jaringan melaporkan banyak kesalahan pengiriman.  | 
|  `NodeHighNumberConntrackEntriesUsed`  | warning |  Jumlah entri conntrack semakin mendekati batas.  | 
|  `NodeTextFileCollectorScrapeError`  | warning |  Pengumpul file teks Node Exporter gagal mengikis.  | 
|  `NodeClockSkewDetected`  | warning |  Kemiringan jam terdeteksi.  | 
|  `NodeClockNotSynchronizzing`  | warning |  Jam tidak disinkronkan.  | 
|  `NodeRAIDDegraded`  | critical |  RAID Array terdegradasi  | 
|  `NodeRAIDDiskFailure`  | warning |  Perangkat gagal dalam array RAID  | 
|  `NodeFileDescriptorLimit`  | warning |  Kernel diperkirakan akan segera membuang batas deskriptor file.  | 
|  `NodeFileDescriptorLimit`  | critical |  Kernel diperkirakan akan segera membuang batas deskriptor file.  | 
|  `KubeNodeNotReady`  | warning |  Node belum siap.  | 
|  `KubeNodeUnreachable`  | warning |  Node tidak dapat dijangkau.  | 
|  `KubeletTooManyPods`  | info |  Kubelet berjalan pada kapasitas.  | 
|  `KubeNodeReadinessFlapping`  | warning |  Status kesiapan node mengepak.  | 
|  `KubeletPlegDurationHigh`  | warning |  Kubelet Pod Lifecycle Event Generator membutuhkan waktu terlalu lama untuk relist.  | 
|  `KubeletPodStartUpLatencyHigh`  | warning |  Latensi startup Kubelet Pod terlalu tinggi.  | 
|  `KubeletClientCertificateExpiration`  | warning |  Sertifikat klien Kubelet akan segera kedaluwarsa.  | 
|  `KubeletClientCertificateExpiration`  | critical |  Sertifikat klien Kubelet akan segera kedaluwarsa.  | 
|  `KubeletServerCertificateExpiration`  | warning |  Sertifikat server Kubelet akan segera kedaluwarsa.  | 
|  `KubeletServerCertificateExpiration`  | critical |  Sertifikat server Kubelet akan segera kedaluwarsa.  | 
|  `KubeletClientCertificateRenewalErrors`  | warning |  Kubelet gagal memperbarui sertifikat kliennya.  | 
|  `KubeletServerCertificateRenewalErrors`  | warning |  Kubelet gagal memperbarui sertifikat servernya.  | 
|  `KubeletDown`  | critical |  Target menghilang dari penemuan target Prometheus.  | 
|  `KubeVersionMismatch`  | warning |  Versi semantik yang berbeda dari komponen Kubernetes berjalan.  | 
|  `KubeClientErrors`  | warning |  Klien server API Kubernetes mengalami kesalahan.  | 
|  `KubeClientCertificateExpiration`  | warning |  Sertifikat klien akan segera kedaluwarsa.  | 
|  `KubeClientCertificateExpiration`  | critical |  Sertifikat klien akan segera kedaluwarsa.  | 
|  `KubeAggregatedAPIErrors`  | warning |  API agregat Kubernetes telah melaporkan kesalahan.  | 
|  `KubeAggregatedAPIDown`  | warning |  API agregat Kubernetes sedang down.  | 
|  `KubeAPIDown`  | critical |  Target menghilang dari penemuan target Prometheus.  | 
|  `KubeAPITerminatedRequests`  | warning |  Apiserver kubernetes telah menghentikan \$1\$1\$1value \$1 humanizePercentage\$1\$1 dari permintaan yang masuk.  | 
|  `KubePersistentVolumeFillingUp`  | critical |  Volume Persisten mengisi.  | 
|  `KubePersistentVolumeFillingUp`  | warning |  Volume Persisten terisi.  | 
|  `KubePersistentVolumeInodesFillingUp`  | critical |  Persistent Volume Inodes sedang terisi.  | 
|  `KubePersistentVolumeInodesFillingUp`  | warning |  Inodes Volume Persisten terisi.  | 
|  `KubePersistentVolumeErrors`  | critical |  Volume Persisten mengalami masalah dengan penyediaan.  | 
|  `KubeCPUOvercommit`  | warning |  Cluster memiliki permintaan sumber daya CPU yang berlebihan.  | 
|  `KubeMemoryOvercommit`  | warning |  Cluster memiliki permintaan sumber daya memori yang berlebihan.  | 
|  `KubeCPUQuotaOvercommit`  | warning |  Cluster memiliki permintaan sumber daya CPU yang berlebihan.  | 
|  `KubeMemoryQuotaOvercommit`  | warning |  Cluster memiliki permintaan sumber daya memori yang berlebihan.  | 
|  `KubeQuotaAlmostFull`  | info |  Kuota Namespace akan penuh.  | 
|  `KubeQuotaFullyUsed`  | info |  Kuota Namespace sepenuhnya digunakan.  | 
|  `KubeQuotaExceeded`  | warning |  Kuota namespace telah melampaui batas.  | 
|  `CPUThrottlingHigh`  | info |  Proses mengalami peningkatan pelambatan CPU.  | 
|  `KubePodCrashLooping`  | warning |  Pod sedang crash looping.  | 
|  `KubePodNotReady`  | warning |  Pod telah berada dalam keadaan tidak siap selama lebih dari 15 menit.  | 
|  `KubeDeploymentGenerationMismatch`  | warning |  Ketidakcocokan pembuatan penerapan karena kemungkinan roll-back  | 
|  `KubeDeploymentReplicasMismatch`  | warning |  Penerapan belum cocok dengan jumlah replika yang diharapkan.  | 
|  `KubeStatefulSetReplicasMismatch`  | warning |  StatefulSet belum cocok dengan jumlah replika yang diharapkan.  | 
|  `KubeStatefulSetGenerationMismatch`  | warning |  StatefulSet ketidakcocokan generasi karena kemungkinan roll-back  | 
|  `KubeStatefulSetUpdateNotRolledOut`  | warning |  StatefulSet pembaruan belum diluncurkan.  | 
|  `KubeDaemonSetRolloutStuck`  | warning |  DaemonSet peluncuran macet.  | 
|  `KubeContainerWaiting`  | warning |  Kontainer pod menunggu lebih dari 1 jam  | 
|  `KubeDaemonSetNotScheduled`  | warning |  DaemonSet pod tidak dijadwalkan.  | 
|  `KubeDaemonSetMisScheduled`  | warning |  DaemonSet pod salah jadwal.  | 
|  `KubeJobNotCompleted`  | warning |  Job tidak selesai pada waktunya  | 
|  `KubeJobFailed`  | warning |  Job gagal diselesaikan.  | 
|  `KubeHpaReplicasMismatch`  | warning |  HPA belum cocok dengan jumlah replika yang diinginkan.  | 
|  `KubeHpaMaxedOut`  | warning |  HPA berjalan pada replika maksimal  | 
|  `KubeStateMetricsListErrors`  | critical |  kube-state-metrics mengalami kesalahan dalam operasi daftar.  | 
|  `KubeStateMetricsWatchErrors`  | critical |  kube-state-metrics mengalami kesalahan dalam operasi arloji.  | 
|  `KubeStateMetricsShardingMismatch`  | critical |  kube-state-metrics sharding salah dikonfigurasi.  | 
|  `KubeStateMetricsShardsMissing`  | critical |  kube-state-metrics pecahan hilang.  | 
|  `KubeAPIErrorBudgetBurn`  | critical |  Server API membakar terlalu banyak anggaran kesalahan.  | 
|  `KubeAPIErrorBudgetBurn`  | critical |  Server API membakar terlalu banyak anggaran kesalahan.  | 
|  `KubeAPIErrorBudgetBurn`  | warning |  Server API membakar terlalu banyak anggaran kesalahan.  | 
|  `KubeAPIErrorBudgetBurn`  | warning |  Server API membakar terlalu banyak anggaran kesalahan.  | 
|  `TargetDown`  | warning |  Satu atau lebih target turun.  | 
|  `etcdInsufficientMembers`  | critical |  Etcd cluster anggota tidak mencukupi.  | 
|  `etcdHighNumberOfLeaderChanges`  | warning |  Etcd cluster tingginya jumlah perubahan pemimpin.  | 
|  `etcdNoLeader`  | critical |  Cluster Etcd tidak memiliki pemimpin.  | 
|  `etcdHighNumberOfFailedGRPCRequests`  | warning |  Etcd mengelompokkan sejumlah besar permintaan gRPC yang gagal.  | 
|  `etcdGRPCRequestsSlow`  | critical |  Permintaan gRPC cluster Etcd lambat.  | 
|  `etcdMemberCommunicationSlow`  | warning |  Komunikasi anggota cluster Etcd lambat.  | 
|  `etcdHighNumberOfFailedProposals`  | warning |  Etcd mengelompokkan sejumlah besar proposal yang gagal.  | 
|  `etcdHighFsyncDurations`  | warning |  Etcd cluster durasi fsync tinggi.  | 
|  `etcdHighCommitDurations`  | warning |  Cluster Etcd memiliki durasi komit yang lebih tinggi dari yang diharapkan.  | 
|  `etcdHighNumberOfFailedHTTPRequests`  | warning |  Cluster Etcd telah gagal permintaan HTTP.  | 
|  `etcdHighNumberOfFailedHTTPRequests`  | critical |  Cluster Etcd memiliki sejumlah besar permintaan HTTP yang gagal.  | 
|  `etcdHTTPRequestsSlow`  | warning |  Permintaan HTTP cluster Etcd lambat.  | 
|  `HostClockNotSynchronizing`  | warning |  Jam host tidak disinkronkan.  | 
|  `HostOomKillDetected`  | warning |  Pembunuhan Host OOM terdeteksi.  | 

## Pemecahan masalah
<a name="solution-eks-troubleshooting"></a>

Ada beberapa hal yang dapat menyebabkan penyiapan proyek gagal. Pastikan untuk memeriksa yang berikut ini.
+ Anda harus menyelesaikan semua [Prasyarat](#solution-eks-prerequisites) sebelum menginstal solusi.
+ Cluster harus memiliki setidaknya satu node di dalamnya sebelum mencoba membuat solusi atau mengakses metrik.
+ Cluster Amazon EKS Anda harus menginstal`AWS CNI`, `CoreDNS` dan `kube-proxy` add-on. Jika tidak diinstal, solusinya tidak akan berfungsi dengan benar. Mereka diinstal secara default, saat membuat cluster melalui konsol. Anda mungkin perlu menginstalnya jika cluster dibuat melalui AWS SDK.
+ Waktu penginstalan pod Amazon EKS habis. Ini bisa terjadi jika tidak ada kapasitas node yang cukup tersedia. Ada beberapa penyebab masalah ini, termasuk:
  + Cluster Amazon EKS diinisialisasi dengan Fargate, bukan Amazon EC2. Proyek ini membutuhkan Amazon EC2.
  + Node [tercemar](https://docs.aws.amazon.com/eks/latest/userguide/node-taints-managed-node-groups.html) dan karena itu tidak tersedia.

    Anda dapat menggunakan `kubectl describe node NODENAME | grep Taints` untuk memeriksa noda. Kemudian `kubectl taint node NODENAME TAINT_NAME-` untuk menghapus noda. Pastikan untuk menyertakan nama `-` setelah noda.
  + Node telah mencapai batas kapasitas. Dalam hal ini Anda dapat membuat node baru atau meningkatkan kapasitas.
+ Anda tidak melihat dasbor apa pun di Grafana: menggunakan ID ruang kerja Grafana yang salah.

  Jalankan perintah berikut untuk mendapatkan informasi tentang Grafana:

  ```
  kubectl describe grafanas external-grafana -n grafana-operator
  ```

  Anda dapat memeriksa hasil untuk URL ruang kerja yang benar. Jika bukan yang Anda harapkan, gunakan kembali dengan ID ruang kerja yang benar.

  ```
  Spec:
    External:
      API Key:
        Key:   GF_SECURITY_ADMIN_APIKEY
        Name:  grafana-admin-credentials
      URL:     https://g-123example.grafana-workspace.aws-region.amazonaws.com
  Status:
    Admin URL:  https://g-123example.grafana-workspace.aws-region.amazonaws.com
    Dashboards:
      ...
  ```
+ Anda tidak melihat dasbor apa pun di Grafana: Anda menggunakan kunci API yang kedaluwarsa.

  Untuk mencari kasus ini, Anda harus mendapatkan operator grafana dan memeriksa log untuk kesalahan. Dapatkan nama operator Grafana dengan perintah ini:

  ```
  kubectl get pods -n grafana-operator
  ```

  Ini akan mengembalikan nama operator, misalnya:

  ```
  NAME                               READY   STATUS    RESTARTS   AGE
  grafana-operator-1234abcd5678ef90   1/1     Running   0          1h2m
  ```

  Gunakan nama operator dalam perintah berikut:

  ```
  kubectl logs grafana-operator-1234abcd5678ef90 -n grafana-operator
  ```

  Pesan galat seperti berikut ini menunjukkan kunci API yang kedaluwarsa:

  ```
  ERROR   error reconciling datasource    {"controller": "grafanadatasource", "controllerGroup": "grafana.integreatly.org", "controllerKind": "GrafanaDatasource", "GrafanaDatasource": {"name":"grafanadatasource-sample-amp","namespace":"grafana-operator"}, "namespace": "grafana-operator", "name": "grafanadatasource-sample-amp", "reconcileID": "72cfd60c-a255-44a1-bfbd-88b0cbc4f90c", "datasource": "grafanadatasource-sample-amp", "grafana": "external-grafana", "error": "status: 401, body: {\"message\":\"Expired API key\"}\n"}
  github.com/grafana-operator/grafana-operator/controllers.(*GrafanaDatasourceReconciler).Reconcile
  ```

  Dalam hal ini, buat kunci API baru dan terapkan solusinya lagi. Jika masalah berlanjut, Anda dapat memaksa sinkronisasi dengan menggunakan perintah berikut sebelum menerapkan kembali:

  ```
  kubectl delete externalsecret/external-secrets-sm -n grafana-operator
  ```
+ *Pemasangan CDK* - Parameter SSM tidak ada. Jika Anda melihat kesalahan seperti berikut ini, jalankan `cdk bootstrap` dan coba lagi.

  ```
  Deployment failed: Error: aws-observability-solution-eks-infra-$EKS_CLUSTER_NAME: SSM 
  parameter /cdk-bootstrap/xxxxxxx/version not found. Has the environment been 
  bootstrapped? Please run 'cdk bootstrap' (see https://docs.aws.amazon.com/cdk/latest/
  guide/bootstrapping.html)
  ```
+ Penerapan dapat gagal jika penyedia OIDC sudah ada. Anda akan melihat kesalahan seperti berikut (dalam hal ini, untuk penginstalan CDK):

  ```
  | CREATE_FAILED | Custom::AWSCDKOpenIdConnectProvider | OIDCProvider/Resource/Default
  Received response status [FAILED] from custom resource. Message returned: 
  EntityAlreadyExistsException: Provider with url https://oidc.eks.REGION.amazonaws.com/id/PROVIDER ID already exists.
  ```

  Dalam hal ini, buka portal IAM dan hapus penyedia OIDC dan coba lagi.
+ *Terraform menginstal* — Anda melihat pesan kesalahan yang menyertakan dan. `cluster-secretstore-sm failed to create kubernetes rest client for update of resource` `failed to create kubernetes rest client for update of resource`

  Kesalahan ini biasanya menunjukkan bahwa Operator Rahasia Eksternal tidak diinstal atau diaktifkan di klaster Kubernetes Anda. Ini diinstal sebagai bagian dari penerapan solusi, tetapi terkadang tidak siap ketika solusi membutuhkannya.

  Anda dapat memverifikasi bahwa itu diinstal dengan perintah berikut:

  ```
  kubectl get deployments -n external-secrets
  ```

  Jika sudah terpasang, dibutuhkan beberapa waktu bagi operator untuk sepenuhnya siap digunakan. Anda dapat memeriksa status Custom Resource Definitions (CRDs) yang diperlukan dengan menjalankan perintah berikut:

  ```
  kubectl get crds|grep external-secrets
  ```

  Perintah ini harus mencantumkan yang CRDs terkait dengan operator rahasia eksternal, termasuk `clustersecretstores.external-secrets.io` dan`externalsecrets.external-secrets.io`. Jika tidak terdaftar, tunggu beberapa menit dan periksa lagi.

  Setelah CRDs terdaftar, Anda dapat menjalankan `terraform apply` lagi untuk menyebarkan solusi.