Gunakan Grafana untuk memvisualisasikan dan menganalisis log Nginx yang dikumpulkan oleh Simple Log Service (SLS).
-
Untuk mencoba fitur ini secara cepat, Anda dapat menggunakan tautan akses tanpa login: Demo - Grafana.
-
Anda dapat mengekspor dasbor dari Simple Log Service (SLS) dan mengimpornya ke Grafana. Untuk informasi selengkapnya, lihat Ekspor dasbor dan impor ke Grafana.
Prasyarat
-
Kumpulkan log Nginx. Untuk informasi selengkapnya, lihat Gunakan mode konfigurasi Nginx untuk mengumpulkan log teks.
-
Aktifkan dan konfigurasikan indeks. Untuk informasi selengkapnya, lihat Analisis log akses Nginx.
-
Unduh paket proyek plugin sumber data.
Jalankan perintah berikut untuk mengunduh paket tersebut:
wget https://github.com/aliyun/aliyun-log-grafana-datasource-plugin/archive/refs/heads/master.zip.CatatanTopik ini menggunakan plugin SLS versi 2.36 sebagai contoh.
-
Instal Grafana. Untuk informasi selengkapnya, lihat dokumentasi resmi Grafana.
Catatan-
Topik ini menggunakan Grafana 11.4.0 sebagai contoh.
-
Jika Anda menginstal Grafana di mesin lokal, pastikan port 3000 dapat diakses dari browser Anda.
-
Untuk menggunakan grafik pie, jalankan perintah berikut untuk menginstal plugin Pie Chart.
grafana-cli plugins install grafana-piechart-panel
-
Kompatibilitas plugin
Tabel berikut menjelaskan kompatibilitas antara Grafana dan plugin SLS.
|
Versi Grafana |
Versi plugin SLS |
|
≥8.0.0 |
|
|
<8.0.0 |
Catatan penggunaan
Jika Anda mengonfigurasi pengalihan berbasis STS, kondisi keamanan berikut harus dipenuhi:
-
Pengguna yang terkait dengan kunci akses sumber data harus memiliki kebijakan akses
AliyunRAMReadOnlyAccessdanAliyunSTSAssumeRoleAccess, izin untuk memanggil API CreateTicket, serta izin yang diperlukan untuk SLS. -
Peran RAM yang ditentukan dalam bidang RoleArn sumber data hanya boleh memiliki kebijakan akses
AliyunLogReadOnlyAccess. -
Untuk informasi selengkapnya tentang cara kerja ini, lihat Sematkan dan bagikan halaman konsol.
Jika Anda mengonfigurasi akses tanpa login, pastikan sumber data tidak digunakan dalam dasbor Grafana yang dibagikan secara publik. Akses publik dapat meningkatkan biaya traffic dan membocorkan konten log.
Untuk informasi selengkapnya tentang kebijakan akses sistem, lihat Kebijakan akses sistem untuk Simple Log Service.
Langkah 1: Instal plugin SLS
-
Jalankan perintah berikut untuk mengekstrak paket plugin ke direktori plugin Grafana.
-
Untuk Grafana yang diinstal dari repositori YUM atau paket RPM:
unzip aliyun-log-grafana-datasource-plugin-master.zip -d /var/lib/grafana/plugins -
Untuk Grafana yang diinstal dari file .tar.gz:
Dalam perintah ini, {PATH_TO} adalah path instalasi Grafana.
unzip aliyun-log-grafana-datasource-plugin-master.zip -d {PATH_TO}/grafana-11.4.0/data/plugins
-
-
Ubah file konfigurasi Grafana.
-
Buka file konfigurasi.
-
Untuk Grafana yang diinstal dari repositori YUM atau paket RPM: /etc/grafana/grafana.ini
-
Untuk Grafana yang diinstal dari file .tar.gz: {PATH_TO}/grafana-11.4.0/conf/defaults.ini
-
-
Pada bagian
[plugins]file konfigurasi, atur parameterallow_loading_unsigned_plugins.allow_loading_unsigned_plugins = aliyun-log-service-datasource
-
-
Restart Grafana.
-
Gunakan perintah
killuntuk menghentikan proses Grafana. -
Jalankan salah satu perintah berikut untuk memulai Grafana.
-
Untuk Grafana yang diinstal dari repositori YUM atau paket RPM:
systemctl restart grafana-server -
Untuk Grafana yang diinstal dari file .tar.gz:
./bin/grafana-server web
-
-
Langkah 2: Tambahkan sumber data
-
Login ke Grafana.
-
Di panel navigasi sebelah kiri, pilih .
-
Pada tab Data Sources, klik Add data source.
-
Pada halaman Add data source, cari dan klik log-service-datasource.
-
Pada halaman aliyun-log-service-datasource, konfigurasikan pengaturan berikut.
-
Tabel berikut menjelaskan parameter yang diperlukan.
Parameter
Deskripsi
Endpoint
Titik akhir untuk Project, misalnya
http://cn-qingdao.log.aliyuncs.com. Gunakan titik akhir aktual Anda. Untuk informasi selengkapnya, lihat Endpoints.Project
Nama Project SLS.
AccessKeyID
ID AccessKey digunakan untuk mengidentifikasi pengguna. Untuk informasi selengkapnya, lihat Pasangan kunci akses.
Kami menyarankan agar Anda hanya memberikan izin yang diperlukan kepada pengguna RAM berdasarkan prinsip hak istimewa minimal. Untuk informasi selengkapnya tentang cara memberikan izin kepada pengguna RAM, lihat Buat pengguna RAM dan berikan izin dan Contoh kebijakan kustom RAM.
AccessKeySecret
Rahasia AccessKey digunakan untuk mengenkripsi dan memverifikasi string signature. Rahasia AccessKey harus dirahasiakan.
-
Tabel berikut menjelaskan parameter opsional.
Parameter
Deskripsi
Name
Nama sumber data. Nilai default-nya adalah aliyun-log-service-datasource.
Default
Sakelar ini diaktifkan secara default.
Default LogStore
Jika Anda mengabaikan Logstore, pastikan kunci akses Anda memiliki izin
ListProjectuntuk Project saat ini.RoleArn
Diperlukan untuk pengalihan berbasis STS. Tentukan ARN dari peran RAM.
HTTP headers
Header kustom didukung dan hanya berlaku ketika jenis sumber data adalah MetricStore(PromQL). Untuk detail konfigurasi, lihat pengaturan
FormValuedi Percepat kueri. Daftar berikut menjelaskan bidangHeaders:-
x-sls-parallel-enable: Menentukan apakah akan mengaktifkan komputasi konkuren. Secara default dinonaktifkan. -
x-sls-parallel-time-piece-interval: Unit waktu untuk sharding berdasarkan rentang waktu, dalam detik. Rentang yang didukung adalah[3600, 86400*30]. Nilai default-nya adalah21600(6 jam). -
x-sls-parallel-time-piece-count: Jumlah shard saat melakukan sharding berdasarkan rentang waktu. Rentang yang didukung adalah 1 hingga 16. Nilai default-nya adalah 8. -
x-sls-parallel-count: Konkurensi global. Rentang yang didukung adalah 2 hingga 64. Nilai default-nya adalah 8. -
x-sls-parallel-count-per-host: Konkurensi per host. Rentang yang didukung adalah 1 hingga 8. Nilai default-nya adalah 2. -
x-sls-global-cache-enable: Menentukan apakah akan mengaktifkan cache global. Secara default dinonaktifkan.
Region
Mendukung signature v4 untuk keamanan yang lebih baik.
-
-
-
Setelah menyelesaikan konfigurasi, klik Save & test.
Langkah 3: Tambahkan dasbor
Untuk menambahkan dasbor ke Grafana:
-
Di panel navigasi sebelah kiri, klik Dashboards.
-
Pada panel Dashboards, klik + Created dashboard. Lalu, klik + Add visualization.
-
Pada halaman Select data source, pilih aliyun-log-service-datasource sebagai sumber data.
-
Tambahkan panel visualisasi.
Daftar berikut menjelaskan pengaturannya:
-
Data Source Type: Tersedia empat jenis, berdasarkan sintaks (SQL dan PromQL) dan jenis penyimpanan: ALL(SQL), Logstore(SQL), MetricStore(SQL), dan MetricStore(PromQL).
-
Logstore mendukung SQL untuk kueri dan analisis.
-
Metricstore mendukung SQL dan PromQL untuk kueri dan analisis.
-
MetricStore(PromQL) mendukung penambahan header kustom pada halaman konfigurasi sumber data.
-
-
Logstore list: Pilih nama Logstore yang akan dikueri.
-
Query: Masukkan pernyataan kueri, contohnya:
* | select count(*) as c, __time__-__time__%60 as t group by t -
ycol:
null -
xcol: Pilih TimeSeries / Custom dan masukkan
t. -
goto SLS: Pengalihan satu klik ke konsol SLS.
Pada halaman Explore dan dasbor, Anda dapat mengklik goto SLS untuk langsung menuju konsol SLS guna perbandingan. Anda juga dapat menggunakan fitur yang lebih kuat dan kemampuan pencarian log yang fleksibel dari konsol SLS. Saat dialihkan, informasi kueri dan waktu ikut dibawa, sehingga tidak perlu dimasukkan manual.
Metode pengalihan ini membawa Anda langsung ke konsol SLS dan tidak memerlukan konfigurasi tambahan. Namun, Anda harus sudah login ke konsol SLS di browser Anda; jika tidak, Anda akan dialihkan ke halaman login.
CatatanFitur ini tersedia di SLS Grafana Plugin versi 2.30 dan yang lebih baru.
-
-
Pada Panel options di sebelah kanan, masukkan Judul, lalu klik Save dashboard di pojok kanan atas. Pada kotak dialog yang muncul, klik Save.
Konfigurasikan variabel templat
Variabel templat di Grafana memungkinkan Anda mengubah data yang ditampilkan dalam grafik secara dinamis.
Konfigurasikan variabel interval waktu
-
Di pojok kanan atas halaman New dashboard, klik .
-
Klik Variables.
-
Klik New variable.
-
Konfigurasikan variabel templat dengan parameter berikut, lalu klik Add.
Tabel berikut menjelaskan parameter utama.
Parameter
Deskripsi
Name
Nama variabel, misalnya myinterval. Variabel ini digunakan dalam konfigurasi Anda dan harus dimasukkan sebagai
$$myintervaldalam kondisi kueri.Type
Pilih Interval.
Label
Atur ke time interval.
Values
Atur ke 1m,10m,30m,1h,6h,12h,1d,7d,14d,30d.
Auto Option
Aktifkan sakelar Auto Option dan biarkan parameter lain tetap pada pengaturan default-nya.
-
Hasil. Setelah dikonfigurasi, daftar drop-down time interval muncul di bagian atas dasbor, memungkinkan Anda memilih interval seperti Auto, 1m, 10m, 30m, 1h, 6h, 12h, atau 1d.
Konfigurasikan variabel nama domain
-
Pada halaman Variables, klik New.
-
Konfigurasikan variabel templat dengan parameter berikut, lalu klik Add.
Parameter
Deskripsi
Name
Nama variabel, misalnya hostname. Ini adalah variabel yang Anda gunakan dalam konfigurasi, dan jika nama variabelnya adalah hostname, Anda harus menentukan
$hostnamedalam kondisi kueri.Type
Pilih Custom.
Label
Masukkan nama domain.
Custom Options
Jika Anda mengatur parameter menjadi
*,example.com,example.org,example.net, Anda dapat melihat status akses semua nama domain. Anda juga dapat melihat status aksesexample.com,example.org, atauexample.netsecara terpisah.Selection Options
Biarkan pengaturan default.
-
Hasil. Setelah dikonfigurasi, daftar drop-down nama domain muncul di bagian atas dasbor, memungkinkan Anda memilih * (semua domain), example.com, example.org, atau example.net.
Konfigurasikan variabel daftar Logstore
-
Pada halaman pengaturan Variables, pilih tipe Custom. Bidang
nameberfungsi sebagai pengenal unik dan harus mengandung string 'logstore', tidak peka huruf besar/kecil. Di Custom Options, masukkan nilai variabel, dipisahkan dengan koma.

-
Di editor panel, ubah opsi Logstore list menjadi variabel kustom Anda, pilih nilai, dan refresh dasbor untuk melihat hasilnya.

Konfigurasi grafik
Panel Stat dan Gauge
Format xcol: stat.
Format ycol: <numeric_column>, <numeric_column>.
Jika Anda memberikan kolom non-numerik di tempat yang memerlukan kolom numerik, nilainya diatur menjadi 0.
-
Contoh 1
Jenis panel: Stat
xcol:
statycol:
PV, deltaPercentquery:
* | select diff[1] as "PV", round((diff[1] - diff[2])/diff[2] * 100, 2) as deltaPercent from (select compare("PV", 86400) as diff from (select count(*) as "PV" from log))Hasil kueri ditampilkan dalam panel Stat, menunjukkan dua metrik numerik: PV dan deltaPercent. Nilai positif ditampilkan dalam warna hijau dan nilai negatif dalam warna merah, dengan grafik garis tren mini di bawah setiap metrik.
-
Contoh 2
Jenis panel: Gauge
xcol:
statycol:
cquery:
* | select count(distinct labels['hostname']) as c from (select promql_query('${metricName}{cluster =~ "${cluster}"}') from metrics ) limit 100000Hasil kueri ditampilkan dalam panel Gauge. Nilainya ditunjukkan sebagai indikator busur pada gauge, dengan busur berubah dari hijau ke merah untuk merepresentasikan rentang nilai.
Grafik pie
Format xcol: pie.
Format ycol: <grouping_column>, <numeric_column>.
-
Contoh 1
Jenis panel: Pie Chart
xcol:
pieycol:
request_method, cquery:
request_method: "$method" | select count(*) as c, request_method group by request_methodHasil kueri ditampilkan sebagai grafik pie yang menunjukkan distribusi berbagai metode permintaan HTTP, seperti GET, POST, PUT, dan DELETE.
-
Contoh 2
Jenis panel: Pie Chart
xcol:
pieycol:
http_user_agent, pvquery:
* | select count(1) as pv, case when http_user_agent like '%Chrome%' then 'Chrome' when http_user_agent like '%Firefox%' then 'Firefox' when http_user_agent like '%Safari%' then 'Safari' else 'unKnown' end as http_user_agent group by case when http_user_agent like '%Chrome%' then 'Chrome' when http_user_agent like '%Firefox%' then 'Firefox' when http_user_agent like '%Safari%' then 'Safari' else 'unKnown' end order by pv desc limit 10Hasil kueri ditampilkan sebagai grafik pie yang menunjukkan persentase traffic dari browser berbeda: Chrome, Firefox, Safari, dan unKnown.
-
Kasus penggunaan lain
Format untuk panel Stat juga dapat diterapkan pada grafik pie untuk menghasilkan visualisasi yang valid.
Jenis panel: Pie Chart
xcol:
statycol:
hostNameNum, ipNumquery:
* | select count(distinct labels['hostname']) as hostNameNum, count(distinct labels['ip']) + 20 as ipNum from (select promql_query('${metricName}{cluster =~ ".*"}') from metrics ) limit 100000Hasil kueri ditampilkan sebagai grafik pie yang menunjukkan proporsi metrik hostNameNum dan ipNum.
Deret waktu
Format xcol: <time_column>.
Format ycol: <numeric_column> [, <numeric_column>, ...] (sintaks Logstore) atau <labels / grouping_column>#:#<numeric_column> (sintaks Metricstore atau sintaks agregasi log).
-
Contoh 1
Jenis panel: Time series
xcol:
timeycol:
pv, uvquery:
* | select __time__ - __time__ % $${myinterval} as time, COUNT(*)/ 100 as pv, approx_distinct(remote_addr)/ 60 as uv GROUP BY time order by time limit 2000Hasil kueri ditampilkan sebagai grafik garis deret waktu yang menunjukkan tren dua seri, pv dan uv, seiring waktu.
-
Contoh 2
Jenis panel: Time series
xcol:
timeycol:
labels#:#valuequery:
* | select time, * from (select promql_query_range('${metricName}') from metrics) limit 1000Hasil kueri ditampilkan sebagai grafik garis deret waktu, di mana setiap seri secara otomatis diberi nama dan dikelompokkan berdasarkan label-nya.
-
Contoh 3
Anda juga dapat menggunakan SQL untuk menyesuaikan tampilan label deret waktu.
Jenis panel: Time series
xcol:
timeycol:
customLabelsExtract#:#valuequery:
* | select concat(labels['ip'], ' -> ', labels['cluster']) as customLabelsExtract, value from (select promql_query_range('${metricName}') from metrics) limit 1000Hasil kueri ditampilkan sebagai grafik garis deret waktu, dengan nama seri ditentukan oleh bidang SQL kustom customLabelsExtract (format:
IP -> cluster).
Grafik batang
Format xcol: bar.
Format ycol: <grouping_column>, <numeric_column> [, <numeric_column>, ...].
-
Contoh 1
Jenis panel: Bar chart
xcol:
barycol:
host, pv, pv2, uvquery:
* | select host, COUNT(*)+10 as pv, COUNT(*)+20 as pv2, approx_distinct(remote_addr) as uv GROUP BY host ORDER BY uv desc LIMIT 5Hasil kueri ditampilkan sebagai grafik batang horizontal yang membandingkan metrik pv, pv2, dan uv untuk setiap host.
Tabel
Panel Tabel mendukung pengurutan berdasarkan waktu dengan presisi nanodetik jika ada bidang nanodetik.
Mendukung modifikasi jumlah totalLogs. Default-nya adalah 100, minimum 1, dan maksimum 5000. Ini hanya berlaku untuk pernyataan kueri, bukan pernyataan analisis.
Sintaks xcol: <empty>.
Format ycol: Biarkan bidang ini kosong atau tentukan <display_column> [, <display_column>, ...].
-
Contoh 1
Jenis panel: Table
xcol:
Table/Logycol:
<empty>query:
* | select __time__ - __time__ % 60 as time, COUNT(*)/ 100 as pv, approx_distinct(remote_addr)/ 60 as uv GROUP BY time order by time limit 2000Hasil kueri ditampilkan dalam tabel dengan kolom untuk time, pv, dan uv.
Log
Sintaks xcol: <empty>.
Sintaks ycol: <empty>.
Contoh
Jenis panel: Logs
xcol: <Empty>
ycol: <Empty>
query:
host: www.vt.mock.com
Hasil kueri ditampilkan dalam panel Logs yang menunjukkan entri log mentah, dengan setiap entri menampilkan pasangan kunci-nilai untuk bidang-bidangnya.
Jejak
Jenis panel: Traces
xcol: trace
ycol: <empty>
query:
traceID: "f88271003ab7d29ffee1eb8b68c58237"
Hasil kueri ditampilkan dalam panel Traces yang menunjukkan informasi jejak. Sisi kiri mencantumkan Service & Operation, dan sisi kanan menampilkan timeline diagram Gantt untuk setiap rentang, menggambarkan hierarki dan durasi jejak.
Contoh ini menggunakan Logstore yang berisi data jejak. Anda harus mengaktifkan layanan Trace di SLS. SLS mendukung ingestion data jejak OpenTelemetry secara native dan juga mendukung ingestion data jejak dari sistem pelacakan lainnya. Untuk informasi selengkapnya, lihat Ikhtisar ingestion data jejak.
Di Grafana 10.0 dan yang lebih baru, pemfilteran span untuk data jejak didukung. Jika Anda menggunakan versi Grafana yang lebih lama, Anda juga dapat menentukan filter span kustom dalam kueri Anda. Contohnya:
traceID: "f88271003ab7d29ffee1eb8b68c58237" and resource.deployment.environment : "dev" and service : "web_request" and duration > 10
GeoMap
Format xcol: map.
Format ycol: <country_column>, <geolocation_column>, <numeric_column>.
Contoh
Jenis panel: GeoMap
xcol: map
ycol: country, geo, pv
query:
* | select count(1) as pv ,geohash(ip_to_geo(arbitrary(remote_addr))) as geo,ip_to_country(remote_addr) as country from log group by country having geo <>'' limit 1000
Hasil kueri ditampilkan pada GeoMap, menunjukkan distribusi traffic di berbagai wilayah pada peta dunia. Ukuran lingkaran menunjukkan volume traffic.
FAQ
-
Di mana log Grafana disimpan?
Log Grafana disimpan di direktori berikut:
-
macOS: /usr/local/var/log/grafana
-
Linux: /var/log/grafana
-
-
Apa yang harus saya lakukan jika muncul pesan aliyun-log-plugin_linux_amd64: permission denied di log?
Berikan izin eksekusi ke direktori dist/aliyun-log-plugin_linux_amd64 di direktori plugin.

