

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

# Memantau
<a name="windows-monitoring"></a>

Prometheus, proyek [CNCF yang lulus sejauh ini merupakan](https://www.cncf.io/projects/) sistem pemantauan paling populer dengan integrasi asli ke Kubernetes. Prometheus mengumpulkan metrik di sekitar kontainer, pod, node, dan cluster. Selain itu, Prometheus AlertsManager memanfaatkan yang memungkinkan Anda memprogram peringatan untuk memperingatkan Anda jika ada sesuatu di cluster Anda yang salah. Prometheus menyimpan data metrik sebagai data deret waktu yang diidentifikasi dengan nama metrik dan pasangan. key/value Prometheus menyertakan away to query menggunakan bahasa yang disebut PromQL, yang merupakan kependekan dari Prometheus Query Language.

Arsitektur tingkat tinggi dari koleksi metrik Prometheus ditunjukkan di bawah ini:

![\[Koleksi Metrik Prometheus\]](http://docs.aws.amazon.com/id_id/eks/latest/best-practices/images/windows/prom.png)


[Prometheus menggunakan mekanisme tarik dan mengorek metrik dari target menggunakan eksportir dan dari Kubernetes API menggunakan metrik status kube.](https://github.com/kubernetes/kube-state-metrics) Ini berarti aplikasi dan layanan harus mengekspos titik akhir HTTP (S) yang berisi metrik berformat Prometheus. Prometheus kemudian akan, sesuai konfigurasinya, secara berkala menarik metrik dari titik akhir HTTP (S) ini.

Eksportir memungkinkan Anda menggunakan metrik pihak ketiga sebagai metrik berformat Prometheus. Eksportir Prometheus biasanya digunakan pada setiap node. [Untuk daftar eksportir lengkap, silakan merujuk ke eksportir Prometheus.](https://prometheus.io/docs/instrumenting/exporters/) Sementara [pengekspor node](https://github.com/prometheus/node_exporter) cocok untuk mengekspor perangkat keras host dan metrik OS untuk node linux, itu tidak akan berfungsi untuk node Windows.

Dalam **cluster EKS node campuran dengan node Windows** saat Anda menggunakan bagan [helm Prometheus](https://github.com/prometheus-community/helm-charts) yang stabil, Anda akan melihat pod yang gagal pada node Windows, karena eksportir ini tidak ditujukan untuk Windows. Anda harus memperlakukan kumpulan pekerja Windows secara terpisah dan sebagai gantinya menginstal [eksportir Windows](https://github.com/prometheus-community/windows_exporter) pada grup node pekerja Windows.

Untuk mengatur pemantauan Prometheus untuk node Windows, Anda perlu mengunduh dan menginstal eksportir WMI di server Windows itu sendiri dan kemudian mengatur target di dalam konfigurasi scrape file konfigurasi Prometheus. [Halaman rilis](https://github.com/prometheus-community/windows_exporter/releases) menyediakan semua installer.msi yang tersedia, dengan set fitur masing-masing dan perbaikan bug. Pemasang akan mengatur windows\$1exporter sebagai layanan Windows, serta membuat pengecualian di firewall Windows. Jika penginstal dijalankan tanpa parameter apa pun, eksportir akan berjalan dengan pengaturan default untuk kolektor, port, dll yang diaktifkan.

Anda dapat memeriksa bagian **praktik terbaik penjadwalan** dari panduan ini yang menyarankan penggunaan taints/tolerations atau RuntimeClass untuk menyebarkan eksportir node secara selektif hanya ke node linux, sedangkan eksportir Windows diinstal pada node Windows saat Anda mem-bootstrap node atau menggunakan alat manajemen konfigurasi pilihan Anda (contoh chef, Ansible, SSM dll).

Perhatikan bahwa, tidak seperti node linux di mana pengekspor node diinstal sebagai daemonset, pada node Windows eksportir WMI diinstal pada host itu sendiri. Eksportir akan mengekspor metrik seperti penggunaan CPU, memori dan I/O penggunaan disk dan juga dapat digunakan untuk memantau situs dan aplikasi IIS, antarmuka jaringan dan layanan.

Windows\$1exporter akan mengekspos semua metrik dari kolektor yang diaktifkan secara default. Ini adalah cara yang disarankan untuk mengumpulkan metrik untuk menghindari kesalahan. Namun, untuk penggunaan lanjutan windows\$1exporter dapat diteruskan daftar opsional kolektor untuk memfilter metrik. Parameter collect [], dalam konfigurasi Prometheus memungkinkan Anda melakukannya.

Langkah-langkah penginstalan default untuk Windows termasuk mengunduh dan memulai eksportir sebagai layanan selama proses bootstrap dengan argumen, seperti kolektor yang ingin Anda filter.

```
> Powershell Invoke-WebRequest https://github.com/prometheus-community/windows_exporter/releases/download/v0.13.0/windows_exporter-0.13.0-amd64.msi -OutFile <DOWNLOADPATH>

> msiexec /i <DOWNLOADPATH> ENABLED_COLLECTORS="cpu,cs,logical_disk,net,os,system,container,memory"
```

Secara default, metrik dapat dikikis di titik akhir /metrics pada port 9182. Pada titik ini, Prometheus dapat menggunakan metrik dengan menambahkan scrape\$1config berikut ke konfigurasi Prometheus

```
scrape_configs:
    - job_name: "prometheus"
      static_configs:
        - targets: ['localhost:9090']
    ...
    - job_name: "wmi_exporter"
      scrape_interval: 10s
      static_configs:
        - targets: ['<windows-node1-ip>:9182', '<windows-node2-ip>:9182', ...]
```

Konfigurasi Prometheus dimuat ulang menggunakan

```
> ps aux | grep prometheus
> kill HUP <PID>
```

Cara yang lebih baik dan direkomendasikan untuk menambahkan target adalah dengan menggunakan Definisi Sumber Daya Kustom yang disebut ServiceMonitor, yang datang sebagai bagian dari operator [Prometheus](https://github.com/prometheus-operator/kube-prometheus/releases)] yang memberikan definisi untuk ServiceMonitor Objek dan pengontrol yang akan mengaktifkan ServiceMonitors kita mendefinisikan dan secara otomatis membangun konfigurasi Prometheus yang diperlukan.

The ServiceMonitor, yang secara deklaratif menentukan bagaimana kelompok layanan Kubernetes harus dipantau, digunakan untuk mendefinisikan aplikasi yang ingin Anda kikis metrik dari dalam Kubernetes. Di dalam ServiceMonitor kita menentukan label Kubernetes yang dapat digunakan operator untuk mengidentifikasi Layanan Kubernetes yang pada gilirannya mengidentifikasi Pod, yang ingin kita pantau.

Untuk memanfaatkan ServiceMonitor, buat objek Endpoint yang menunjuk ke target Windows tertentu, layanan tanpa kepala, dan ServiceMontor untuk node Windows.

```
apiVersion: v1
kind: Endpoints
metadata:
  labels:
    k8s-app: wmiexporter
  name: wmiexporter
  namespace: kube-system
subsets:
- addresses:
  - ip: NODE-ONE-IP
    targetRef:
      kind: Node
      name: NODE-ONE-NAME
  - ip: NODE-TWO-IP
    targetRef:
      kind: Node
      name: NODE-TWO-NAME
  - ip: NODE-THREE-IP
    targetRef:
      kind: Node
      name: NODE-THREE-NAME
  ports:
  - name: http-metrics
    port: 9182
    protocol: TCP

---
apiVersion: v1
kind: Service ##Headless Service
metadata:
  labels:
    k8s-app: wmiexporter
  name: wmiexporter
  namespace: kube-system
spec:
  clusterIP: None
  ports:
  - name: http-metrics
    port: 9182
    protocol: TCP
    targetPort: 9182
  sessionAffinity: None
  type: ClusterIP

---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor ##Custom ServiceMonitor Object
metadata:
  labels:
    k8s-app: wmiexporter
  name: wmiexporter
  namespace: monitoring
spec:
  endpoints:
  - interval: 30s
    port: http-metrics
  jobLabel: k8s-app
  namespaceSelector:
    matchNames:
    - kube-system
  selector:
    matchLabels:
      k8s-app: wmiexporter
```

Untuk detail lebih lanjut tentang operator dan penggunaan ServiceMonitor, periksa dokumentasi [operator](https://github.com/prometheus-operator/kube-prometheus) resmi. [Perhatikan bahwa Prometheus memang mendukung penemuan target dinamis menggunakan banyak opsi penemuan layanan.](https://prometheus.io/blog/2015/06/01/advanced-service-discovery/)