Tutorial untuk menambahkan target scrape Prometheus baru: Redis OSS di Amazon EKS dan Kubernetes cluster - Amazon CloudWatch

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

Tutorial untuk menambahkan target scrape Prometheus baru: Redis OSS di Amazon EKS dan Kubernetes cluster

Tutorial ini memberikan pengantar langsung untuk mengikis metrik Prometheus dari contoh aplikasi Redis OSS di Amazon EKS dan Kubernetes. Redis OSS (https://redis.io/) adalah sumber terbuka (berlisensi BSD), penyimpanan struktur data dalam memori, digunakan sebagai database, cache, dan broker pesan. Untuk informasi selengkapnya, silakan lihat redis.

redis_exporter (Lisensi MIT berlisensi) digunakan untuk mengekspos metrik Redis OSS Prometheus pada port yang ditentukan (default: 0.0.0. 0:9121). Untuk informasi selengkapnya, silakan lihat redis_exporter.

Citra Docker dalam dua repositori Docker Hub berikut digunakan dalam tutorial ini:

Untuk menginstal sampel beban kerja Redis OSS yang mengekspos metrik Prometheus
  1. Mengatur namespace untuk sampel beban kerja Redis OSS.

    REDIS_NAMESPACE=redis-sample
  2. Jika Anda menjalankan Redis OSS pada cluster dengan tipe peluncuran Fargate, Anda perlu mengatur profil Fargate. Untuk menyiapkan profilnya, masukkan perintah berikut. Ganti MyCluster dengan nama klaster Anda.

    eksctl create fargateprofile --cluster MyCluster \ --namespace $REDIS_NAMESPACE --name $REDIS_NAMESPACE
  3. Masukkan perintah berikut untuk menginstal sampel beban kerja Redis OSS.

    curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/sample_traffic/redis/redis-traffic-sample.yaml \ | sed "s/{{namespace}}/$REDIS_NAMESPACE/g" \ | kubectl apply -f -
  4. Instalasi termasuk layanan bernama my-redis-metrics yang mengekspos metrik Redis OSS Prometheus pada port 9121 Masukkan perintah berikut untuk mendapatkan rincian layanan:

    kubectl describe service/my-redis-metrics -n $REDIS_NAMESPACE

    Di Annotations bagian hasil, Anda akan melihat dua anotasi yang cocok dengan konfigurasi scrape Prometheus agen, sehingga dapat menemukan beban kerja CloudWatch secara otomatis:

    prometheus.io/port: 9121 prometheus.io/scrape: true

    Konfigurasi scraping Prometheus terkait dapat ditemukan di bagian - job_name: kubernetes-service-endpoints dari kubernetes-eks.yaml atau kubernetes-k8s.yaml.

Untuk mulai mengumpulkan metrik Redis OSS Prometheus di CloudWatch
  1. Unduh versi terbaru dari file kubernetes-eks.yaml atau kubernetes-k8s.yaml dengan memasukkan salah satu perintah dari perintah-perintah berikut. Untuk cluster Amazon EKS dengan tipe EC2 peluncuran, masukkan perintah ini.

    curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks.yaml

    Untuk sebuah klaster Amazon EKS dengan tipe peluncuran Fargate, masukkan perintah ini:

    curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-eks-fargate.yaml

    Untuk klaster Kubernetes yang berjalan pada EC2 instance Amazon, masukkan perintah ini.

    curl -O https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/prometheus-k8s.yaml
  2. Buka file dengan editor teks, dan temukan bagian cwagentconfig.json. Tambahkan subbagian berikut dan simpan perubahannya. Pastikan bahwa indentasi mengikuti pola yang ada saat itu.

    { "source_labels": ["pod_name"], "label_matcher": "^redis-instance$", "dimensions": [["Namespace","ClusterName"]], "metric_selectors": [ "^redis_net_(in|out)put_bytes_total$", "^redis_(expired|evicted)_keys_total$", "^redis_keyspace_(hits|misses)_total$", "^redis_memory_used_bytes$", "^redis_connected_clients$" ] }, { "source_labels": ["pod_name"], "label_matcher": "^redis-instance$", "dimensions": [["Namespace","ClusterName","cmd"]], "metric_selectors": [ "^redis_commands_total$" ] }, { "source_labels": ["pod_name"], "label_matcher": "^redis-instance$", "dimensions": [["Namespace","ClusterName","db"]], "metric_selectors": [ "^redis_db_keys$" ] },

    Bagian yang Anda tambahkan menempatkan metrik Redis OSS ke daftar izin CloudWatch agen. Untuk daftar metrik ini, silakan lihat bagian berikut.

  3. Jika Anda sudah memiliki CloudWatch agen dengan dukungan Prometheus yang diterapkan di cluster ini, Anda harus menghapusnya dengan memasukkan perintah berikut.

    kubectl delete deployment cwagent-prometheus -n amazon-cloudwatch
  4. Terapkan CloudWatch agen dengan konfigurasi Anda yang diperbarui dengan memasukkan salah satu perintah berikut. Ganti MyCluster dan region untuk mencocokkan pengaturan Anda.

    Untuk cluster Amazon EKS dengan tipe EC2 peluncuran, masukkan perintah ini.

    kubectl apply -f prometheus-eks.yaml

    Untuk sebuah klaster Amazon EKS dengan tipe peluncuran Fargate, masukkan perintah ini:

    cat prometheus-eks-fargate.yaml \ | sed "s/{{cluster_name}}/MyCluster/;s/{{region_name}}/region/" \ | kubectl apply -f -

    Untuk sebuah klaster Kubernetes, masukkan perintah ini.

    cat prometheus-k8s.yaml \ | sed "s/{{cluster_name}}/MyCluster/;s/{{region_name}}/region/" \ | kubectl apply -f -

Melihat metrik Redis OSS Prometheus Anda

Tutorial ini mengirimkan metrik berikut ke namespace ContainerInsights/Prometheus di. CloudWatch Anda dapat menggunakan CloudWatch konsol untuk melihat metrik di namespace tersebut.

Nama metrik Dimensi

redis_net_input_bytes_total

ClusterName, Namespace

redis_net_output_bytes_total

ClusterName, Namespace

redis_expired_keys_total

ClusterName, Namespace

redis_evicted_keys_total

ClusterName, Namespace

redis_keyspace_hits_total

ClusterName, Namespace

redis_keyspace_misses_total

ClusterName, Namespace

redis_memory_used_bytes

ClusterName, Namespace

redis_connected_clients

ClusterName, Namespace

redis_commands_total

ClusterName, Namespace, cmd

redis_db_keys

ClusterName, Namespace, db

catatan

Nilai dari dimensi cmd bisa berupa: append, client, command, config, dbsize, flushall, get, incr, info, latency, atau slowlog.

Nilai dari dimensi db bisa db0 hingga db15.

Anda juga dapat membuat CloudWatch dasbor untuk metrik Prometheus Redis OSS Anda.

Untuk membuat dasbor untuk metrik Redis OSS Prometheus
  1. Buat variabel lingkungan, yang menggantikan nilai di bawah ini untuk menyesuaikan dengan deployment Anda.

    DASHBOARD_NAME=your_cw_dashboard_name REGION_NAME=your_metric_region_such_as_us-east-1 CLUSTER_NAME=your_k8s_cluster_name_here NAMESPACE=your_redis_service_namespace_here
  2. Masukkan perintah berikut untuk membuat dasbor tersebut.

    curl https://raw.githubusercontent.com/aws-samples/amazon-cloudwatch-container-insights/latest/k8s-deployment-manifest-templates/deployment-mode/service/cwagent-prometheus/sample_cloudwatch_dashboards/redis/cw_dashboard_redis.json \ | sed "s/{{YOUR_AWS_REGION}}/${REGION_NAME}/g" \ | sed "s/{{YOUR_CLUSTER_NAME}}/${CLUSTER_NAME}/g" \ | sed "s/{{YOUR_NAMESPACE}}/${NAMESPACE}/g" \