全部產品
Search
文件中心

Simple Log Service:對接Grafana

更新時間:Jan 06, 2026

本文介紹如何通過Grafana可視化分析Log Service所採集到的Nginx日誌。

重要

前提條件

  • 採集Nginx日誌資料。更多資訊,請參見使用Nginx配置模式採集文本日誌

  • 開啟並配置索引。更多資訊,請參見分析Nginx訪問日誌

  • 下載資料來源外掛程式專案壓縮包

    下載命令為wget https://github.com/aliyun/aliyun-log-grafana-datasource-plugin/archive/refs/heads/master.zip

    說明

    本文以 v2.36版本的Log Service外掛程式為例。

  • 安裝Grafana。具體操作,請參見Grafana官方文檔

    說明
    • 本文以11.4.0版本的Grafana為例。

    • 如果您是在本機上安裝Grafana,請提前在瀏覽器中開啟3000連接埠。

    • 如果您需要使用餅圖,需執行如下命令安裝Pie Chart外掛程式。

      grafana-cli plugins install grafana-piechart-panel

外掛程式相容性

Grafana和Log Service外掛程式的相容關係如下表所示:

Grafana版本

Log Service外掛程式版本

≥8.0.0

2.x

<8.0.0

1.0

注意事項

若配置STS跳轉,為許可權安全考慮,需要滿足以下兩個條件:

  • 配置DataSource的accessKey對應的使用者,需要配置權限原則AliyunRAMReadOnlyAccessAliyunSTSAssumeRoleAccess及調用CreateTicket介面的許可權和Log Service的相關許可權。

  • 配置DataSource的roleArn裡面的角色,必須有且只配置權限原則AliyunLogReadOnlyAccess

  • 原理請參見控制台內嵌及分享

若配置了免登跳轉,需注意資料來源是否涉及Grafana儀錶盤的公開訪問分享。公開訪問可能帶來流量成本增加和日誌內容公開暴露。

說明

系統權限原則請參見Log Service系統權限原則參考

步驟一:安裝Log Service外掛程式

  1. 執行以下命令將Log Service外掛程式專案壓縮包解壓到Grafana外掛程式目錄。

    • 使用YUM或RPM安裝的Grafana:

      unzip aliyun-log-grafana-datasource-plugin-master.zip -d /var/lib/grafana/plugins
    • 使用.tar.gz檔案安裝的Grafana:

      {PATH_TO}為Grafana的安裝路徑。

      unzip aliyun-log-grafana-datasource-plugin-master.zip -d {PATH_TO}/grafana-11.4.0/data/plugins
  2. 修改Grafana設定檔。

    1. 開啟設定檔。

      • 使用YUM或RPM安裝的Grafana:/etc/grafana/grafana.ini

      • 使用.tar.gz檔案安裝的Grafana:{PATH_TO}/grafana-11.4.0/conf/defaults.ini

    2. 在設定檔的[plugins] 節點中,設定allow_loading_unsigned_plugins參數。

      allow_loading_unsigned_plugins = aliyun-log-service-datasource
  3. 重啟Grafana。

    1. 使用kill命令終止Grafana進程。

    2. 執行以下命令啟動Grafana。

      • 使用YUM或RPM安裝的Grafana:

        systemctl restart grafana-server
      • 使用.tar.gz檔案安裝的Grafana:

        ./bin/grafana-server web

步驟二:添加資料來源

  1. 登入Grafana。

  2. 在左側功能表列,選擇Connections > Data Sources

  3. Data Sources頁簽,單擊Add data source

  4. Add data source頁面,搜尋log-service-datasource。找到後單擊log-service-datasourceimage

  5. 在開啟的aliyun-log-service-datasource頁面,配置以下資訊。image

    • 必填參數配置說明如下所示:

      參數

      說明

      Endpoint

      Project的服務入口,例如http://cn-qingdao.log.aliyuncs.com。請根據實際情況替換服務入口。更多資訊,請參見服務存取點

      Project

      需要對接的Log ServiceProject的名稱。

      AccessKeyID

      AccessKey ID用於標識使用者,更多資訊,請參見存取金鑰

      建議您遵循最小化原則,按需授予RAM使用者必要的許可權。關於授權的具體操作,請參見建立RAM使用者及授權RAM自訂授權樣本

      AccessKeySecret

      AccessKey Secret是使用者用於加密簽名字串和Log Service用來驗證簽名字串的密鑰,必須保密。

    • 選擇性參數配置說明如下所示:

      參數

      說明

      Name

      輸入資料來源的名稱。預設為:aliyun-log-service-datasource。

      Default

      預設開啟。

      Default LogStore

      如果不填寫 LogStore, 請確保你的填寫的Ak具備當前Project的ListProject許可權,

      RoleArn

      配置STS跳轉時需要填寫對應RAM角色Arn。

      HTTP headers

      支援自訂Headers,僅在資料來源類型為MetricStore(PromQL)生效。具體配置參考時序儲存FormValue配置項:查詢加速 。Headers參數說明如下所示:

      • x-sls-parallel-enable:是否開啟並發計算,預設關閉。

      • x-sls-parallel-time-piece-interval:按照時間區間進行分區的時間段單元,單位秒。支援的範圍為[3600, 86400*30],預設21600(6小時)。

      • x-sls-parallel-time-piece-count:按照時間區間進行分區的分區數,支援1-16,預設8。

      • x-sls-parallel-count:全域並發數,支援2-64,預設8。

      • x-sls-parallel-count-per-host:單機並發數,支援1-8,預設值為2。

      • x-sls-global-cache-enable:是否開啟全域緩衝,預設關閉。

      Region

      支援 v4 簽名,提供更高的安全性。

  6. 配置完成後,單擊Save & Test

步驟三:添加儀錶盤

為Grafana添加儀錶盤的操作步驟如下:

  1. 在左側導覽列,單擊Dashboards

  2. Dashboards面板中,單擊+ Created dashboard。然後單擊+ Add visualizationimage

  3. Select data source頁面,選擇資料來源為aliyun-log-service-datasource

  4. 添加可視化圖表。image

    配置說明如下所示:

    • 資料來源類型:資料來源類型主要是兩種文法區別SQL和 PromQL,再加上存放庫的類型不同,有四種類型可選:ALL(SQL)LogStore(SQL)MetricStore(SQL)MetricStore(PromQL)

      • 日誌庫(LogStore)支援SQL查詢與分析

      • 時序庫(MetricStore)支援SQL + PromQL查詢與分析

      • MetricStore(PromQL)支援添加custom Headers,具體在該資料來源的配置介面進行添加。

    • 日誌庫列表:選擇需要查詢的LogStore名稱。

    • Query:輸入查詢語句,例如:

      * | select count(*) as c, __time__-__time__%60 as t group by t
    • ycol

    • xcol:選擇TimeSeries / Custom,並輸入t

    • goto SLS:一鍵跳轉SLS控制台。

      您可以在Explore介面和儀錶盤介面中,單擊goto SLS,隨時跳轉到SLS控制台進行比對了,同時也可以使用SLS控制台更強大的功能和更靈活的日誌檢索。跳轉到SLS控制台,將附帶query、時間資訊,無需手動輸入。

      此種跳轉方式是直接跳轉到SLS控制台,不涉及任何配置,但需要您的瀏覽器登入了SLS控制台,否則會顯示登入頁面。

      說明

      此功能在 SLS Grafana Plugin 2.30 版本及以上才可使用。

  5. 在右側Panel options中輸入Title,然後右上方單擊Save dashboard。接著在彈出的對話方塊中單擊Saveimage

配置模板變數

您可以在Grafana中配置模板變數,實現在同一個圖表中通過選擇不同的變數值,展示不同的結果。

配置時間區間大小的模板變數

  1. New dashboard頁面右上方,然後單擊Edit > Settings

  2. 單擊Variables

  3. 單擊New variable

  4. 按照如下參數配置模板變數,然後單擊Add

    重要參數說明如下表所示。

    參數

    說明

    Name

    變數名稱,例如myinterval。該名稱是您配置中使用的變數,此處為myinterval,則查詢條件中需寫成$$myinterval

    Type

    選擇Interval

    Label

    配置為time interval

    Values

    配置為1m,10m,30m,1h,6h,12h,1d,7d,14d,30d

    Auto Option

    開啟Auto Option開關,其他參數保持預設配置。

  5. 效果展示。image

佈建網域名的模板變數

  1. Variables頁面,單擊New

  2. 按照如下參數配置模板變數,然後單擊Add

    參數

    說明

    Name

    變數名稱,例如hostname。該名稱是您配置中使用的變數,此處為hostname,則查詢條件中需寫成$hostname

    Type

    選擇Custom

    Label

    輸入欄位名。

    Custom Options

    配置為*,example.com,example.org,example.net,表示可以查看所有網域名稱的訪問情況,也可以分別查看example.comexample.orgexample.net的訪問情況。

    Selection Options

    保持預設配置。

  3. 效果展示。image

組態變數替換日誌庫列表

  1. Variables 設定頁面選擇custom類型。name 欄位作為獨立標識,必須包含 'logstore' 字串,不區分大小寫。Custom Options手動填寫可選變數,以逗號區分。

    image.webp

  2. 編輯介面修改日誌庫列表選項為自訂 Variable,選擇相應變數並重新整理儀錶盤,即可獲得最新結果。image.webp

圖表標準寫法概覽

單值圖(Stat / Gauge)

xcol寫法:stat

ycol寫法:<數值列>, <數值列>

重要

圖中要求的數值列若提供的是非數值列,會直接置0。

  • 樣本1

    圖表類型:Stat

    xcolstat

    ycolPV, deltaPercent

    query

    * | 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))

    image

  • 樣本2

    圖表類型:Gauge

    xcolstat

    ycolc

    query

    * | select count(distinct labels['hostname']) as c from (select promql_query('${metricName}{cluster =~ "${cluster}"}') from metrics ) limit 100000

    image

餅圖(Pie)

xcol寫法:pie

ycol寫法:<彙總列>, <數值列>

  • 樣本1

    圖表類型:Pie

    xcolpie

    ycolrequest_method, c

    query

    request_method: "$method" | select count(*) as c, request_method group by request_method

    image

  • 樣本2

    圖表類型:Pie

    xcolpie

    ycolhttp_user_agent, pv

    query

    * | 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 10

    image

  • 其他情境

    Stat圖的寫法也適用於餅圖,也可以展示出效果。

    圖表類型:Pie

    xcolstat

    ycolhostNameNum, ipNum

    query

    * | select count(distinct labels['hostname']) as hostNameNum, count(distinct labels['ip']) + 20 as ipNum from (select promql_query('${metricName}{cluster =~ ".*"}') from metrics ) limit 100000

    image

線圖(TimeSeries)

xcol寫法:<時間列>

ycol寫法:<數值列> [, <數值列>, ...](日誌寫法)<labels / 彙總列>#:#<數值列>(時序庫寫法或日誌彙總寫法)。

  • 樣本1

    圖表類型:Time series

    xcoltime

    ycolpv, uv

    query

    * | select __time__ - __time__ % $${myinterval} as time, COUNT(*)/ 100 as pv, approx_distinct(remote_addr)/ 60 as uv GROUP BY time order by time limit 2000

    image

  • 樣本2

    圖表類型:Time series

    xcoltime

    ycollabels#:#value

    query

    * | select time, * from (select promql_query_range('${metricName}') from metrics) limit 1000

    image

  • 樣本3

    也可以通過SQL對時序labels進行自訂展示。

    圖表類型:Time series

    xcoltime

    ycolcustomLabelsExtract#:#value

    query

    * | select concat(labels['ip'], ' -> ', labels['cluster']) as customLabelsExtract, value from (select promql_query_range('${metricName}') from metrics) limit 1000

    image

柱狀圖(Bar)

xcol寫法:bar

ycol寫法:<彙總列>, <數值列> [, <數值列>, ...]

  • 樣本1

    圖表類型:Bar

    xcolbar

    ycolhost, pv, pv2, uv

    query

    * | select host, COUNT(*)+10 as pv, COUNT(*)+20 as pv2, approx_distinct(remote_addr) as uv GROUP BY host ORDER BY uv desc LIMIT 5

    image

表格(Table)

支援當存在納秒欄位時,time按納秒精度排序。

支援修改總查詢記錄數totalLogs, 預設值為 100,最小值為1,最大值為 5000,僅對 Query 查詢語句生效,分析語句無效。

xcol寫法:<空>

ycol寫法:<空> 或者 <展示列> [, <展示列>, ...]

  • 樣本1

    圖表類型:Table

    xcol:Table/Log

    ycol:<空>

    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 2000

    image

日誌(Log)

xcol寫法:<空>

ycol寫法:<空>

樣本

圖表類型:Logs

xcol:<空>

ycol:<空>

query:

host: www.vt.mock.com

image

Trace(Traces)

圖表類型:Traces

xcoltrace

ycol<空>

query

traceID: "f88271003ab7d29ffee1eb8b68c58237"

image

說明

該樣本中使用了Trace的日誌庫,需要您在SLS使用Trace服務,Log Service支援OpenTelemetry Trace資料的原生接入,還支援通過其他Trace系統接入Trace資料。更多細節請參見:接入Trace資料概述

在 Grafana 10.0 以上版本,支援Trace資料的span篩選功能,如果您使用的是低版本Grafana,也可以在query篩選中自訂span的篩選。例如:

traceID: "f88271003ab7d29ffee1eb8b68c58237" and resource.deployment.environment : "dev" and service : "web_request" and duration > 10

地圖(Map)

xcol寫法:map

ycol寫法:<國家列>, <地理位置列>, <數值列>

樣本

圖表類型:GeoMap

xcolmap

ycolcountry, 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

image

常見問題

  • Grafana日誌儲存在哪裡?

    Grafana日誌儲存在如下檔案中:

    • macOS系統:/usr/local/var/log/grafana

    • Linux系統:/var/log/grafana

  • 如果日誌中提示aliyun-log-plugin_linux_amd64: permission denied,怎麼處理?

    請授予外掛程式目錄下的dist/aliyun-log-plugin_linux_amd64目錄執行許可權。