Connect ke sumber data SAP HANA - Amazon Managed Grafana

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

Connect ke sumber data SAP HANA

SAP HANA adalah database dalam memori berkinerja tinggi yang mempercepat pengambilan keputusan dan tindakan real-time yang digerakkan oleh data. Ini dikembangkan dan dipasarkan oleh SAP. Plugin sumber data SAP HANA membantu Anda menghubungkan instance SAP HANA Anda dengan Grafana.

Dengan plugin SAP HANA Grafana Enterprise, Anda dapat memvisualisasikan data SAP HANA Anda bersama semua sumber data Anda yang lain di Grafana serta data log dan metrik dalam konteks. Plugin ini mencakup editor kueri bawaan, mendukung anotasi, dan memungkinkan Anda untuk mengatur ambang peringatan, mengontrol akses, mengatur izin, dan banyak lagi.

catatan

Sumber data ini hanya untuk Grafana Enterprise. Untuk informasi selengkapnya, lihat Kelola akses ke plugin Enterprise.

Selain itu, di ruang kerja yang mendukung versi 9 atau yang lebih baru, sumber data ini mungkin mengharuskan Anda untuk menginstal plugin yang sesuai. Untuk informasi selengkapnya, lihat Perluas ruang kerja Anda dengan plugin.

Fitur

  • Editor kueri - Plugin ini dilengkapi dengan editor kueri SQL bawaan dengan penyorotan sintaks yang memungkinkan Anda memvisualisasikan deret waktu atau data tabel dan secara otomatis melengkapi makro Grafana dasar.

  • Izin sumber data — Kontrol siapa yang dapat melihat atau menanyakan data SAP HANA di Grafana.

  • Anotasi — Hamparkan peristiwa atau data SAP HANA pada grafik Grafana apa pun untuk mengkorelasikan peristiwa dengan data grafik lainnya.

  • Peringatan - Atur toko metrik berbasis peringatan di SAP HANA.

  • Variabel untuk kueri — Buat variabel template di Grafana, yang didasarkan pada data SAP HANA, dan sertakan variabel dalam kueri SAP HANA untuk membuat dasbor interaktif.

Menambahkan sumber data

  1. Buka konsol Grafana di ruang kerja Grafana yang Dikelola Amazon dan pastikan Anda masuk.

  2. Di menu samping di bawah Konfigurasi (ikon roda gigi), pilih Sumber Data.

  3. Pilih Tambahkan sumber data.

    catatan

    Jika Anda tidak melihat link Sumber Data di menu samping Anda, itu berarti bahwa pengguna Anda saat ini tidak memiliki Admin peran.

  4. Pilih SAP HANA dari daftar sumber data.

  5. Di editor Config, masukkan informasi berikut:

    • Untuk alamat Server, Berikan alamat instance SAP HANA. Contoh:xxxxxxx-xxxx-xxxx-xxxx-xxxxxxx.hana.trial-us10.hanacloud.ondemand.com.

    • Untuk port Server, sediakan port instance SAP HANA.

    • Untuk Username, masukkan nama pengguna yang akan digunakan untuk terhubung ke instance SAP HANA.

    • Untuk Kata Sandi, masukkan kata sandi untuk pengguna ini.

    • (Opsional) Aktifkan Lewati verifikasi TLS jika Anda ingin melewati verifikasi TLS.

    • (Opsional) Aktifkan Auth Klien TLS jika Anda perlu memberikan sertifikat dan kunci klien.

    • (Opsional) Aktifkan Dengan sertifikat CA jika Anda ingin mengaktifkan verifikasi Sertifikat TLS yang ditandatangani sendiri.

    • (Opsional) Untuk skema Default, masukkan skema default yang akan digunakan. Jika Anda menghilangkan ini, Anda harus menentukan skema di setiap kueri.

Akses dan izin

Untuk menghubungkan Grafana ke SAP HANA, gunakan kredensi khusus. Hanya berikan izin yang diperlukan kepada pengguna. Pertama, buat pengguna terbatas dengan nama pengguna dan kata sandi. Query berikut adalah contoh untuk membuat pengguna terbatas. Kueri ini juga menonaktifkan perubahan kata sandi paksa.

CREATE RESTRICTED USER <USER> PASSWORD <PASSWORD> NO FORCE_FIRST_PASSWORD_CHANGE;

Selanjutnya, izinkan pengguna untuk menghubungkan sistem melalui klien seperti Grafana dengan yang berikut:

ALTER USER <USER> ENABLE CLIENT CONNECT;

Terakhir, berikan pengguna akses ke tampilan, tabel, dan skema yang diperlukan.

ALTER USER <USER> GRANT ROLE PUBLIC; GRANT SELECT ON SCHEMA <SCHEMA> TO <USER>;

Izin tingkat pengguna

Batasi akses ke SAP HANA dengan mengklik tab Izin di halaman konfigurasi sumber data untuk mengaktifkan izin sumber data. Pada halaman izin, Admin dapat mengaktifkan izin dan membatasi izin kueri untuk Pengguna dan Tim tertentu.

Editor kueri

Plugin SAP HANA Grafana dilengkapi dengan editor kueri SQL tempat Anda dapat memasukkan kueri HANA apa pun. Jika kueri Anda mengembalikan data timeseries, Anda dapat memformatnya sebagai timeseries untuk memvisualisasikannya dalam panel grafik. Editor kueri menyediakan penyelesaian otomatis untuk makro Grafana yang didukung dan penyorotan sintaks kueri SQL Anda.

Anotasi

Anda dapat menggunakan kueri SAP HANA sebagai sumber anotasi Grafana. Kueri anotasi Anda harus mengembalikan setidaknya satu kolom waktu dan satu kolom teks. Untuk informasi selengkapnya tentang anotasi, lihatAnotasi.

Untuk membuat anotasi dari SAP HANA
  1. Pilih ikon roda gigi pengaturan Dasbor.

  2. Dari menu sebelah kiri, pilih Anotasi, Baru.

  3. Dari menu tarik-turun sumber data, pilih instance sumber data SAP HANA Anda.

  4. Di bidang Query, masukkan kueri SAP HANA yang mengembalikan setidaknya satu bidang waktu dan satu bidang teks.

  5. Di menu tarik-turun Format sebagai, pilih Seri Waktu.

  6. Untuk setiap anotasi, konfigurasikan bidang Dari.

Template dan variabel

Untuk menambahkan variabel kueri SAP HANA baru, lihatMenambahkan variabel kueri. Gunakan sumber data SAP HANA Anda sebagai sumber data Anda.

Contoh query berikut mengembalikan daftar yang berbeda username dari dari users tabel.

select distinct("username") from "users"
catatan

Pastikan untuk hanya memilih satu kolom dalam kueri variabel Anda. Jika query Anda mengembalikan dua kolom, kolom pertama akan digunakan sebagai nilai tampilan dan kolom kedua akan digunakan sebagai nilai aktual dari variabel. Jika kueri Anda mengembalikan lebih dari dua kolom, mereka akan ditolak.

Template dan variabel

Anda dapat menggunakan variabel Grafana apa pun dalam kueri Anda. Contoh berikut menunjukkan cara menggunakan variabel tunggal/multi dalam kueri Anda.

-- For example, following query select * from "users" where "city" = ${city} -- will be translated into select * from "users" where "city" = 'london' --- where you can see ${city} variable translated into actual value in the variable

Mirip dengan teks, variabel juga berfungsi untuk bidang numerik. Dalam contoh di bawah ini, ${age} adalah variabel kotak teks di mana ia menerima angka dan kemudian membandingkan dengan bidang numerik dalam tabel.

select * from "users" where "age" > ${age} --- wil be translated into select * from "users" where "age" > '36'

Jika variabel Anda mengembalikan beberapa nilai, maka Anda dapat menggunakannya dalam in kondisi query SAP HANA seperti di bawah ini. Perhatikan tanda kurung yang mengelilingi variabel untuk membuat where in kondisi valid di SAP HANA.

select * from "users" where "city" in (${cities}) --- will be translated into select * from "users" where "city" in ('london','perth','delhi') --- where you can see ${cities} turned into a list of grafana variables selected. --- You can also write the same query using shorthand notation as shown below select * from "users" where "city" in ($cities)

Makro

  • $__timeFilter(<time_column>)— Menerapkan rentang waktu Grafana ke kolom yang ditentukan saat digunakan dalam kueri mentah. Berlaku untuk kolom tanggal/stempel waktu/waktu lama.

  • $__timeFilter(<time_column>, <format>)Sama seperti di atas. Tetapi memberikan kemampuan untuk menentukan format time_column yang disimpan dalam database.

  • $__timeFilter(<time_column>, "epoch", <format>)— Sama seperti di atas tetapi dapat digunakan ketika kolom waktu Anda dalam zaman. format dapat menjadi salah satu dari 's', 'ms' dan 'ns'.

  • $__fromTimeFilter(<time_column>)— Sama seperti di atas tetapi dapat digunakan ketika kolom waktu Anda dalam zaman. format dapat menjadi salah satu dari 's', 'ms' dan 'ns'.

  • $__fromTimeFilter(<time_column>, <comparison_predicate>)— Sama seperti di atas tetapi dapat menentukan comparison_predicate.

  • $__fromTimeFilter(<time_column>, <format>)— Sama seperti di atas tetapi dapat menentukan format kolom waktu.

  • $__fromTimeFilter(<time_column>, <format>, <comparison_predicate>)— Sama seperti di atas tetapi dapat menentukan comparison_predicate.

  • $__toTimeFilter(<time_column>)— Mengembalikan kondisi waktu berdasarkan grafana ke waktu melalui bidang waktu.

  • $__toTimeFilter(<time_column>, <comparison_predicate>)— Sama seperti di atas tetapi dapat menentukan comparison_predicate.

  • $__toTimeFilter(<time_column>, <format>)— Sama seperti di atas tetapi dapat menentukan format kolom waktu.

  • $__toTimeFilter(<time_column>, <comparison_predicate>)— Sama seperti di atas tetapi dapat menentukan comparison_predicate.

  • $__timeGroup(<time_column>, <interval>)— Memperluas kolom waktu ke dalam kelompok interval. Berlaku untuk kolom tanggal/stempel waktu/lama..

$ __TimeFilter () makro <time_column>

Contoh berikut menjelaskan $__timeFilter(<time_column>) makro:

- In the following example, the query select ts, temperature from weather where $__timeFilter(ts) --- will be translated into select ts, temperature from weather where ts > '2021-02-24T12:52:48Z' AND ts < '2021-03-24T12:52:48Z' --- where you can see the grafana dashboard's time range is applied to the column ts in the query.

$__TimeFilter (,) makro <time_column><format>

Dalam beberapa kasus, kolom waktu dalam database disimpan dalam format khusus. Contoh berikut menjelaskan $__timeFilter(<time_column>, <format>) makro, yang membantu memfilter stempel waktu khusus berdasarkan pemilih waktu grafana:

SELECT TO_TIMESTAMP("TS",'YYYYMMDDHH24MISS') AS METRIC_TIME , "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TS","YYYYMMDDHH24MISS") -- TS is in 20210421162012 format SELECT TO_TIMESTAMP("TS",'YYYY-MON-DD') AS METRIC_TIME , "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TS","YYYY-MON-DD") -- TS is in 2021-JAN-15 format

Di makro, formatnya bisa menjadi salah satu format HANA yang valid yang cocok dengan kolom stempel waktu Anda. Misalnya, YYYYMMDDHH24MISS adalah format yang valid ketika data Anda disimpan dalam 20210421162012 format.

$__TimeFilter (, “epoch”) makro <time_column><format>

Dalam beberapa kasus, stempel waktu disimpan sebagai stempel waktu epoch di DB Anda. Contoh berikut menjelaskan $__timeFilter(<time_column>, "epoch" <format>) makro yang membantu menyaring stempel waktu epoch berdasarkan pemilih waktu grafana. Dalam makro, format bisa menjadi salah satu ms, s atau ns. Jika tidak ditentukan, s akan diperlakukan sebagai format default.

SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP") AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch") -- Example : TIMESTAMP field stored in epoch_second format 1257894000 SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP") AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch","s") -- Example : TIMESTAMP field stored in epoch_second format 1257894000 SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP"/1000) AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch","ms") -- Example : TIMESTAMP field stored in epoch_ms format 1257894000000 SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP"/1000000000) AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch","ns") -- Example : TIMESTAMP field stored in epoch_nanoseconds format 1257894000000000000

Alih-alih menggunakan argumen ketiga ke $__timeFilter, Anda dapat menggunakan salah satu epoch_s, epoch_ms atau epoch_ns sebagai argumen kedua Anda..

SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP"/1000) AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch","ms") -- is same as SELECT ADD_SECONDS('1970-01-01', "TIMESTAMP"/1000) AS "METRIC_TIME", "VALUE" FROM "SCH"."TBL" WHERE $__timeFilter("TIMESTAMP","epoch_ms")

Makro $__ fromTimeFilter () dan $__ toTimeFilter ()

$__fromTimeFilter()Makro berkembang ke kondisi selama bidang waktu berdasarkan pemilih waktu Grafana dari waktu.

Ini menerima tiga parameter. Parameter pertama adalah nama bidang waktu. Anda dapat meneruskan comparison_predicate atau format kolom waktu sebagai argumen kedua. Jika Anda ingin meneruskan keduanya, maka formatnya adalah parameter kedua dan gunakan comparison_predicate sebagai parameter ketiga Anda.

<format>Jika format tidak ditentukan, plugin akan mengasumsikan bahwa kolom waktu adalah tipe stempel waktu/tanggal. Jika kolom waktu Anda disimpan dalam format lain selain stempel waktu/tanggal, maka berikan format sebagai argumen kedua. <format>dapat berupa salah satu epoch_s, epoch_ms, epoch_ns atau format khusus lainnya seperti YYYY-MM-DD.

<comparison_predicate>parameter opsional. Jika tidak diteruskan, plugin akan menggunakan> sebagai predikat perbandingan. <comparison_predicate>bisa menjadi salah satu dari =,! =, <>, <, <=, >, >=

$__toTimeFilter()bekerja sama dengan $__ fromTimeFilter (). Alih-alih menggunakan Grafana dari waktu ke waktu, itu akan digunakan untuk waktu. Juga predikat perbandingan default adalah <.

$ __TimeGroup (,) <time_column><interval>

Misalnya, makro $__TimeGroup (timecol,1h) diperluas ke SERIES_ROUND (“timecol”, 'INTERVAL 1 HOUR') dalam kueri.

Contoh berikut menjelaskan $__timeGroup(<time_column>, <interval>) macro.

SELECT $__timeGroup(timestamp,1h), "user", sum("value") as "value" FROM "salesdata" WHERE $__timeFilter("timestamp") GROUP BY $__timeGroup(timestamp,1h), "user" ORDER BY $__timeGroup(timestamp,1h) ASC

Ini diterjemahkan ke dalam kueri berikut di $__timeGroup(timestamp,1h) mana diperluas keSERIES_ROUND("timestamp", 'INTERVAL 1 HOUR').

SELECT SERIES_ROUND("timestamp", 'INTERVAL 1 HOUR') as "timestamp", "user", sum("value") as "value" FROM "salesdata" WHERE "timestamp" > '2020-01-01T00:00:00Z' AND "timestamp" < '2020-01-01T23:00:00Z' GROUP BY SERIES_ROUND("timestamp", 'INTERVAL 1 HOUR'), "user" ORDER BY "timestamp" ASC
catatan

Saat menggunakan grup dengan makro $__TimeGroup, pastikan bahwa pilihan Anda, urutkan menurut bidang mengikuti nama yang sama dengan grup Anda menurut bidang. Jika tidak, HANA mungkin tidak mengenali kueri.

Jika Anda tidak ingin membuat kode keras interval dalam fungsi $__timeGroup (), maka Anda dapat menyerahkannya ke Grafana dengan menentukan $__interval sebagai interval Anda. Grafana akan menghitung interval itu dari rentang waktu dasbor. Contoh kueri:

SELECT $__timeGroup(timestamp, $__interval), sum("value") as "value" FROM "salesdata" WHERE $__timeFilter("timestamp") GROUP BY $__timeGroup(timestamp, $__interval) ORDER BY $__timeGroup(timestamp, $__interval) ASC

Kueri itu diterjemahkan ke dalam kueri followin berdasarkan rentang waktu dasbor.

SELECT SERIES_ROUND("timestamp", 'INTERVAL 1 MINUTE'), sum("value") as "value" FROM "salesdata" WHERE "timestamp" > '2019-12-31T23:09:14Z' AND "timestamp" < '2020-01-01T23:17:54Z' GROUP BY SERIES_ROUND("timestamp", 'INTERVAL 1 MINUTE') ORDER BY SERIES_ROUND("timestamp", 'INTERVAL 1 MINUTE') ASC

Peringatan

Untuk mengatur peringatan SAP HANA di Grafana
  1. Buat panel grafik di dasbor Anda.

  2. Buat kueri SAP HANA dalam format deret waktu.

  3. Pilih tab Alert dan tentukan kriteria peringatan.

  4. Pilih Aturan Uji untuk menguji kueri peringatan.

  5. Tentukan penerima peringatan, pesan, dan penanganan kesalahan.

  6. Simpan dasbor.

Peringatan tentang data non-timeseries

Untuk memperingatkan data non-timeseries, gunakan TO_TIMESTAMP('${__to:date}') makro untuk membuat metrik non-timeseries menjadi timeseries. Ini akan mengubah metrik Anda menjadi kueri deret waktu titik tunggal. Format kueri diberikan di bawah ini

SELECT TO_TIMESTAMP('${__to:date}'), <METRIC> FROM <TABLE≶ WHERE <YOUR CONDITIONS>

Dalam contoh berikut, tabel memiliki empat bidang yang disebut nama pengguna, usia, kota, dan peran. Tabel ini tidak memiliki bidang waktu. Kami ingin memberi tahu ketika jumlah pengguna dengan peran dev kurang dari tiga.

SELECT TO_TIMESTAMP('${__to:date}'), count(*) as "count" FROM ( SELECT 'John' AS "username", 32 AS "age", 'Chennai' as "city", 'dev' as "role" FROM dummy UNION ALL SELECT 'Jacob' AS "username", 32 AS "age", 'London' as "city", 'accountant' as "role" FROM dummy UNION ALL SELECT 'Ali' AS "username", 42 AS "age", 'Delhi' as "city", 'admin' as "role" FROM dummy UNION ALL SELECT 'Raja' AS "username", 12 AS "age", 'New York' as "city", 'ceo' as "role" FROM dummy UNION ALL SELECT 'Sara' AS "username", 35 AS "age", 'Cape Town' as "city", 'dev' as "role" FROM dummy UNION ALL SELECT 'Ricky' AS "username", 25 AS "age", 'London' as "city", 'accountant' as "role" FROM dummy UNION ALL SELECT 'Angelina' AS "username", 31 AS "age", 'London' as "city", 'cxo' as "role" FROM dummy ) WHERE "role" = 'dev'