Typesense memiliki endpoint metrics.json untuk melakukan monitoring dengan data yang dihasilkan format JSON.
{Kita dapat melakukan monitoring endpoint tersebut menggunakan Prometheus.
"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"
}
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