aliyun-timestream adalah mesin deret waktu yang dikembangkan oleh tim Alibaba Cloud Elasticsearch bersama komunitas Elastic, menggabungkan fitur-fitur dari produk deret waktu komunitas tersebut. Alibaba Cloud Elasticsearch menyediakan integrasi tanpa hambatan dengan Prometheus dan Grafana, mendukung API Prometheus Query Language (PromQL), serta memungkinkan Anda menggunakan indeks deret waktu secara langsung sebagai sumber data Prometheus di Grafana. Konfigurasi ini meningkatkan performa penyimpanan dan kueri data metrik deret waktu sekaligus mengurangi biaya. Panduan ini menjelaskan cara menggunakan mesin aliyun-timestream untuk berintegrasi dengan Prometheus dan Grafana demi observabilitas cloud-native.
Latar Belakang
Penyimpanan lokal Prometheus memiliki keterbatasan berikut:
-
Tidak ada replika data: Jika node kluster lokal gagal, Prometheus menjadi tidak dapat diakses.
-
Penyimpanan single-node: Seiring pertumbuhan volume data, Anda mungkin menghadapi bottleneck perangkat keras yang menghalangi skalabilitas.
-
Tidak ada kemampuan backup: Kehilangan data dapat terjadi jika hard disk rusak.
-
Biaya penyimpanan disk lokal tinggi: Tidak mendukung pemisahan data hot-cold.
Pengaturan Prometheus ber-availability tinggi memerlukan solusi penyimpanan remote terdistribusi dan highly available. Mesin aliyun-timestream untuk Alibaba Cloud Elasticsearch menyediakan kemampuan penyimpanan dan kueri remote untuk Prometheus. Dibangun di atas arsitektur Elasticsearch yang terdistribusi, elastis, dan highly available—yang juga mendukung backup dan pemisahan data hot-cold—aliyun-timestream merupakan pilihan unggul untuk penyimpanan remote Prometheus.
Gambar berikut menunjukkan bagaimana Alibaba Cloud Elasticsearch berintegrasi dengan Prometheus dan Grafana.
Berikut cara kerjanya:
-
Prometheus mengumpulkan data dari berbagai exporter.
-
Prometheus menggunakan fitur remote write untuk mengirim data yang dikumpulkan ke Alibaba Cloud Elasticsearch.
-
Anda dapat melihat data tersebut di Kibana atau Grafana.
CatatanSaat menggunakan Grafana untuk mengakses data di Alibaba Cloud Elasticsearch, Anda dapat menggunakan sumber data Elasticsearch native atau sumber data Prometheus. Sumber data Prometheus memungkinkan Anda langsung melakukan kueri data di Elasticsearch menggunakan PromQL.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
-
Kluster Alibaba Cloud Elasticsearch yang memenuhi salah satu persyaratan versi berikut:
-
Versi kluster V7.10, versi kernel V1.8.0 atau lebih baru
-
Versi kluster V7.16 atau lebih baru, versi kernel V1.7.0 atau lebih baru
-
Untuk petunjuk membuat kluster, lihat Buat kluster Alibaba Cloud Elasticsearch.
Prosedur
Langkah 1: Siapkan lingkungan
-
Buat kluster Alibaba Cloud Elasticsearch Edisi Komersial tujuan umum versi 7.16.
Untuk informasi lebih lanjut, lihat Buat kluster Alibaba Cloud Elasticsearch.
-
Buat Instance ECS di VPC yang sama dengan instans Elasticsearch yang Anda buat di Langkah 1, dan pilih Linux sebagai sistem operasi.
Untuk detail pembuatan Instance ECS, lihat Buat instance dengan Custom Launch. Instance ECS ini digunakan untuk mengakses kluster Alibaba Cloud Elasticsearch serta men-deploy Prometheus dan Grafana.
-
Buat indeks deret waktu di Elasticsearch untuk menyimpan data dari Prometheus.
-
Login ke konsol Kibana untuk kluster Alibaba Cloud Elasticsearch Anda.
Untuk informasi lebih lanjut, lihat Login ke konsol Kibana.
-
Di panel navigasi kiri, klik ikon
lalu pilih . -
Di console, jalankan perintah
PUT _time_stream/prom_indexuntuk membuat indeks deret waktu bernama prom_index.
-
Langkah 2: Unduh dan jalankan node_exporter
node_exporter mengumpulkan berbagai metrik terkait perangkat keras dan kernel, lalu mengeksposnya agar dapat di-scrape oleh Prometheus. Untuk informasi lebih lanjut, lihat node_exporter.
-
Hubungkan ke Instance ECS.
Untuk informasi lebih lanjut, lihat Login ke instance Linux menggunakan password atau kunci.
CatatanDokumen ini menggunakan pengguna non-root untuk semua operasi.
-
Unduh paket instalasi node_exporter.
Panduan ini menggunakan node_exporter 1.3.1 sebagai contoh. Jalankan perintah berikut untuk mengunduhnya:
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz -
Ekstrak paket instalasi dan jalankan node_exporter.
tar xvfz node_exporter-1.3.1.linux-amd64.tar.gz cd node_exporter-1.3.1.linux-amd64 ./node_exporter
Langkah 3: Unduh, konfigurasikan, dan jalankan Prometheus
-
Hubungkan ke Instance ECS.
Untuk informasi lebih lanjut, lihat Login ke instance Linux menggunakan password atau kunci.
-
Di direktori home, unduh paket instalasi Prometheus.
Panduan ini menggunakan Prometheus 2.36.2 sebagai contoh. Jalankan perintah berikut untuk mengunduhnya:
cd ~ wget https://github.com/prometheus/prometheus/releases/download/v2.36.2/prometheus-2.36.2.linux-amd64.tar.gz -
Ekstrak paket instalasi Prometheus.
tar xvfz prometheus-2.36.2.linux-amd64.tar.gz -
Di file prometheus.yml, konfigurasikan node_exporter dan remote_write.
cd prometheus-2.36.2.linux-amd64 vim prometheus.ymlKode berikut memberikan contoh konfigurasi:
scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: 'prometheus' # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ['localhost:9090'] # Configure node_exporter. - job_name: "node" static_configs: - targets: ["127.0.0.1:9100"] # Configure remote_write. Ensure that Prometheus can access the Elasticsearch cluster. remote_write: - url: "http://xxx:9200/_time_stream/prom_write/prom_index" basic_auth: username: elastic password: xxxxParameter
Deskripsi
node_exporter
Konfigurasikan informasi koneksi untuk node_exporter. Atur targets ke alamat akses dan port node_exporter.
Karena panduan ini menggunakan Instance ECS yang sama untuk men-deploy Prometheus dan node_exporter, alamat IP-nya adalah 127.0.0.1 dan menggunakan port default 9100.
remote_write
Pengaturan koneksi untuk indeks deret waktu di kluster Alibaba Cloud Elasticsearch Anda. Anda harus mengonfigurasi parameter dasar berikut. Untuk parameter lanjutan, lihat remote_write.
-
url: URL titik akhir untuk indeks deret waktu, dalam format berikut: http://<titik_akhir_publik_atau_internal_kluster_Elasticsearch_anda>:9200/_time_stream/prom_write/<indeks_deret_waktu_anda>.
Catatan-
Titik akhir publik atau internal kluster Elasticsearch Anda: Temukan ini di halaman Basic Information konsol kluster Alibaba Cloud Elasticsearch Anda. Jika Instance ECS tempat Prometheus dideploy berada di VPC yang sama dengan kluster Elasticsearch Anda, gunakan titik akhir internal seperti pada contoh ini. Jika tidak, Anda harus menggunakan titik akhir publik dan mengonfigurasi Daftar putih alamat IP publik. Untuk informasi lebih lanjut, lihat Kelola Daftar putih alamat IP.
-
<indeks_deret_waktu_anda>: Nama indeks deret waktu yang menerima data dari Prometheus. Anda harus membuat indeks ini terlebih dahulu. Panduan ini menggunakan prom_index sebagai contoh.
-
-
username: Username untuk mengakses indeks deret waktu. Default-nya adalah
elastic. Anda juga dapat menggunakan pengguna kustom, tetapi pastikan pengguna tersebut memiliki izin yang diperlukan untuk mengakses dan mengelola indeks deret waktu. Untuk informasi lebih lanjut, lihat Kelola kontrol akses dengan peran X-Pack Elasticsearch. -
password: Password untuk pengguna yang ditentukan. Password untuk akun
elasticditetapkan saat Anda membuat kluster. Jika lupa, Anda dapat mengatur ulang. Untuk informasi lebih lanjut, lihat Atur ulang password kluster Elasticsearch.
-
-
Jalankan Prometheus.
./prometheus -
Verifikasi bahwa data Prometheus sedang dikirim ke indeks deret waktu di Elasticsearch.
Di konsol Kibana untuk kluster Alibaba Cloud Elasticsearch Anda, jalankan perintah berikut untuk verifikasi:
-
Periksa apakah indeks prom_index berisi data.
GET _cat/indices/prom_index?v&s=iHasil yang diharapkan:
PUT _time_stream/prom_index GET _cat/indices/prom_index?v&s=i health status index uuid pri rep docs.count docs.deleted store.size pri.store.size green open .ds-prom_index-2022.06.29-000001 U-y2z4j4RyWlKmxxx 1 1 178 0 5.6kb 226b -
Konfirmasi bahwa Anda dapat melakukan kueri dan melihat data.
GET prom_index/_searchHasil yang diharapkan:
PUT _time_stream/prom_index GET _cat/indices/prom_index?v&s=i GET prom_index/_search { "took" : 354, "timed_out" : false, "_shards" : { "total" : 1, "successful" : 1, "skipped" : 0, "failed" : 0 }, "hits" : { "total" : { "value" : 3036, "relation" : "eq" }, "max_score" : 1.0, "hits" : [ { "_index" : ".ds-prom_index-2022.06.29-000001", "_type" : "_doc", "_id" : "kBXXroEBMnT0XiRApR78", "_score" : 1.0, "_source" : { "labels" : { "instance" : "localhost:9090", "job" : "prometheus" }, "metrics" : { "prometheus_remote_storage_exemplars_in_total" : 0.0, "prometheus_target_scrape_pools_failed_total" : 0.0, "prometheus_tsdb_data_replay_duration_seconds" : 6.66077E-4, "prometheus_tsdb_wal_completed_pages_total" : 1.0, "prometheus_tsdb_lowest_timestamp" : 1.656495558477E12, "prometheus_tsdb_head_gc_duration_seconds_count" : 0.0, "prometheus_tsdb_out_of_bound_samples_total" : 0.0, "prometheus_tsdb_isolation_high_watermark" : 30.0, "prometheus_tsdb_storage_blocks_bytes" : 0.0, "up" : 1.0, "go_gc_duration_seconds_sum" : 9.66942E-4, "process_cpu_seconds_total" : 2.96, "prometheus_tsdb_wal_writes_failed_total" : 0.0, "prometheus_tsdb_head_max_time_seconds" : 1.656495768E9, "prometheus_tsdb_head_chunks_created_total" : 455.0, "prometheus_sd_kuma_fetch_duration_seconds_sum" : 0.0 } } } ] } }
-
Langkah 4: Unduh, jalankan, dan konfigurasikan Grafana
-
Hubungkan ke Instance ECS.
Untuk informasi lebih lanjut, lihat Login ke instance Linux menggunakan password atau kunci.
-
Di direktori home, unduh paket instalasi Grafana.
Panduan ini menggunakan Grafana 9.0.2 sebagai contoh. Jalankan perintah berikut untuk mengunduhnya:
cd ~ wget https://dl.grafana.com/enterprise/release/grafana-enterprise-9.0.2.linux-amd64.tar.gz -
Ekstrak paket instalasi Grafana dan jalankan Grafana.
tar xvfz grafana-enterprise-9.0.2.linux-amd64.tar.gz cd grafana-9.0.2 ./bin/grafana-server -
Di browser web, buka
http://<IP_publik_ECS_anda>:3000untuk membuka halaman login Grafana. Masukkan username dan password Anda untuk mengakses konsol Grafana.-
Saat login pertama kali, gunakan
adminuntuk username dan password. Anda akan diminta mengganti password. -
Untuk menemukan alamat IP publik Instance ECS Anda, buka Konsol ECS dan temukan alamat tersebut di kolom IP Address untuk instance Anda.
-
Port default Grafana adalah 3000. Untuk mengakses port ini, tambahkan aturan inbound ke grup keamanan Instance ECS Anda. Atur port Destination ke
3000dan Source ke alamat IP client Anda. Untuk informasi lebih lanjut, lihat Tambahkan aturan grup keamanan.
-
-
Tambahkan sumber data Prometheus di Grafana.
-
Di bilah navigasi kiri konsol Grafana, pilih .
-
Di tab Data sources, klik Add data source.
-
Di daftar Time series databases, klik Prometheus.
-
Di tab Settings, konfigurasikan sumber data Prometheus.
Tabel berikut menjelaskan parameter yang harus dikonfigurasi untuk contoh ini.
Parameter
Deskripsi
URL
URL titik akhir untuk indeks deret waktu, dalam format berikut: http://<titik_akhir_publik_atau_internal_kluster_Elasticsearch_anda>:9200/_time_stream/prom/<indeks_deret_waktu_anda>.
Catatan-
Titik akhir publik atau internal kluster Elasticsearch Anda: Temukan ini di halaman Basic Information konsol kluster Alibaba Cloud Elasticsearch Anda. Jika Instance ECS tempat Prometheus dideploy berada di VPC yang sama dengan kluster Elasticsearch Anda, gunakan titik akhir internal seperti pada contoh ini. Jika tidak, Anda harus menggunakan titik akhir publik dan mengonfigurasi Daftar putih alamat IP publik. Untuk informasi lebih lanjut, lihat Kelola Daftar putih alamat IP.
-
<indeks_deret_waktu_anda>: Nama indeks deret waktu yang menerima data dari Prometheus. Anda harus membuat indeks ini terlebih dahulu. Panduan ini menggunakan prom_index sebagai contoh.
Basic auth
Mengaktifkan atau menonaktifkan Basic Authentication untuk kluster. Saat diaktifkan, Anda harus menyediakan username dan password.
User
Username untuk mengakses indeks deret waktu. Default-nya adalah
elastic. Anda juga dapat menggunakan pengguna kustom, tetapi pastikan pengguna tersebut memiliki izin yang diperlukan untuk mengakses dan mengelola indeks deret waktu. Untuk informasi lebih lanjut, lihat Kelola kontrol akses dengan peran X-Pack Elasticsearch.Password untuk pengguna yang ditentukan. Password untuk akun
elasticditetapkan saat Anda membuat kluster. Jika lupa, Anda dapat mengatur ulang. Untuk informasi lebih lanjut, lihat Atur ulang password kluster Elasticsearch. -
-
Klik Save & test.
Jika konfigurasi berhasil, pesan Data source is working akan muncul.
-
-
Di Grafana, buat dasbor untuk sumber data Prometheus.
-
Di bilah navigasi kiri konsol Grafana, pilih .
-
Klik Add a new panel.
-
Pilih data source, pilih rentang waktu, lalu klik Run queries.
Sebagai contoh, atur Data source ke test_datastream, atur Metric ke
go_gc_duration_seconds, dan atur rentang waktu ke Last 2 days. -
Klik Save di pojok kanan atas untuk menyimpan dasbor.
-
-
Di Grafana, impor dasbor default
node_exporterdan hubungkan ke sumber data Prometheus Anda untuk memantau metrik.-
Di bilah navigasi kiri konsol Grafana, pilih .
-
Di kotak teks Import via grafana.com, masukkan URL dasbor https://grafana.com/grafana/dashboards/1860 atau ID 1860.
-
Klik Load.
-
Di halaman konfigurasi, dari daftar drop-down sumber data Prometheus, pilih sumber data yang telah Anda buat.
-
Klik Import.
-
Di dasbor, pilih rentang waktu di pojok kanan atas untuk melihat metrik periode tersebut.
CatatanUntuk informasi lebih rinci tentang Grafana, lihat Dokumentasi Grafana.
-
> Data sources
> New dashboard