Selasa, 22 Februari 2022

Monitoring Metrics Typesense Menggunakan Prometheus

Typesense memiliki endpoint  metrics.json  untuk melakukan monitoring dengan data yang dihasilkan format JSON.

{
   "system_cpu1_active_percentage": "0.00",
   "system_cpu2_active_percentage": "0.00",
   "system_cpu3_active_percentage": "0.00",
   "system_cpu4_active_percentage": "0.00",
   "system_cpu_active_percentage": "0.00",
   "system_disk_total_bytes": "1043447808",
   "system_disk_used_bytes": "561152",
   "system_memory_total_bytes": "2086899712",
   "system_memory_used_bytes": "1004507136",
   "system_network_received_bytes": "1466",
   "system_network_sent_bytes": "182",
   "typesense_memory_active_bytes": "29630464",
   "typesense_memory_allocated_bytes": "27886840",
   "typesense_memory_fragmentation_ratio": "0.06",
   "typesense_memory_mapped_bytes": "69701632",
   "typesense_memory_metadata_bytes": "4588768",
   "typesense_memory_resident_bytes": "29630464",
   "typesense_memory_retained_bytes": "25718784"
}
Kita dapat melakukan monitoring endpoint tersebut menggunakan Prometheus.

1. Install Prometheus

export RELEASE="2.33.3"

Cek versi terakhir di Official Page

wget https://github.com/prometheus/prometheus/releases/download/v${RELEASE}/prometheus-${RELEASE}.linux-amd64.tar.gz

tar xvf prometheus-${RELEASE}.linux-amd64.tar.gz

Masuk ke direktori Prometheus yang baru di ekstrak 

cd prometheus-${RELEASE}.linux-amd64/

2. Install json_exporter

Karena metrics dari Typesense menggunakan format JSON, maka harus menggunakan service lagi untuk melakukan konversi dari JSON ke metric Prometheus.

git clone https://github.com/prometheus-community/json_exporter.git

3. Install make

sudo apt install make

Make build

cd json_exporter

make build

Jika diperlukan, install  go  terlebih dahulu

sudo snap install go --classic

4. Buat file config.xml

nano config.yml

---
metrics:
- name: typesense_metric_system_cpu1_active_percentage
  path: "{ .system_cpu1_active_percentage }"
  help: System CPU 1 active percentage
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_system_cpu2_active_percentage
  path: "{ .system_cpu2_active_percentage }"
  help: System CPU 2 active percentage
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_system_cpu3_active_percentage
  path: "{ .system_cpu3_active_percentage }"
  help: System CPU 3 active percentage
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_system_cpu4_active_percentage
  path: "{ .system_cpu4_active_percentage }"
  help: System CPU 4 active percentage
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_system_cpu_active_percentage
  path: "{ .system_cpu_active_percentage }"
  help: System CPU active percentage
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_system_disk_total_bytes
  path: "{ .system_disk_total_bytes }"
  help: System disk total bytes
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_system_disk_used_bytes
  path: "{ .system_disk_used_bytes }"
  help: System disk used bytes
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_system_memory_total_bytes
  path: "{ .system_memory_total_bytes }"
  help: System memory total bytes
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_system_memory_used_bytes
  path: "{ .system_memory_used_bytes }"
  help: System memory used bytes
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_system_network_received_bytes
  path: "{ .system_network_received_bytes }"
  help: System network received bytes
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_system_network_sent_bytes
  path: "{ .system_network_sent_bytes }"
  help: System network sent bytes
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_typesense_memory_active_bytes
  path: "{ .typesense_memory_active_bytes }"
  help: Typesense memory active bytes
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_typesense_memory_allocated_bytes
  path: "{ .typesense_memory_allocated_bytes }"
  help: Typesense memory allocated bytes
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_typesense_memory_fragmentation_ratio
  path: "{ .typesense_memory_fragmentation_ratio }"
  help: Typesense memory fragmentation ratio
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_typesense_memory_mapped_bytes
  path: "{ .typesense_memory_mapped_bytes }"
  help: Typesense memory mapped bytes
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_typesense_memory_metadata_bytes
  path: "{ .typesense_memory_metadata_bytes }"
  help: Typesense memory metadata bytes
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_typesense_memory_resident_bytes
  path: "{ .typesense_memory_resident_bytes }"
  help: Typesense memory resident bytes
  labels:
    server: typesense-server-0
    location: 10.102.235.99
- name: typesense_metric_typesense_memory_retained_bytes
  path: "{ .typesense_memory_retained_bytes }"
  help: Typesense memory retained bytes
  labels:
    server: typesense-server-0
    location: 10.102.235.99
headers:
  X-TYPESENSE-API-KEY: ${API ANDA DISINI}

5. Jalankan json_exporter

./json_exporter --config.file config.yml

Untuk melakukan pengecekan, coba akses 

curl http://[IP ADDRESS JSON_EXPORTER]:7979/probe?target=http://[IP ADDRESS TYPESENSE]:8108/metrics.json

Seharusnya metrics Typesense sudah dikonversi menjadi metrics Prometheus.

6. Jalankan Prometheus

Langkah selanjutnya adalah konfigurasi Prometheus

Tambahkan job baru pada config

- job_name: 'typesense'
  metrics_path: /probe
    static_configs:
      - targets:
        - http://[IP TYPESENSE]:8108/metrics.json
  relabel_configs:
    - source_labels: [__address__]
      target_label: __param_target
    - source_labels: [__param_target]
      target_label: instance
    - target_label: __address__
      replacement: localhost:7979

Jalankan Prometheus

./prometheus

Cek menggunakan browser di http://[IP PROMETHEUS]:9090/targets

Tidak ada komentar:

Posting Komentar