全部產品
Search
文件中心

Simple Log Service:對接Grafana

更新時間:Oct 25, 2024

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

前提條件

  • 已採集Nginx日誌資料。更多資訊,請參見採集主機文本日誌

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

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

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

    說明

    本文以2.9版本的Log Service外掛程式為例。

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

    說明
    • 本文以8.0.6版本的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對應的使用者,需要配置權限原則AliyunRAMReadOnlyAccess

● 配置DataSource的roleArn裡面的權限原則,必須有且只配置權限原則AliyunLogReadOnlyAccess,原理請參見控制台內嵌及分享

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

說明

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

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

為Grafana安裝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-8.0.6/data/plugins
  2. 修改Grafana設定檔。

    1. 開啟設定檔。

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

      • 使用.tar.gz檔案安裝的Grafana:{PATH_TO}/grafana-8.0.6/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

步驟二:添加資料來源

為Grafana添加Log Service的資料來源的操作步驟如下:

  1. 登入Grafana。

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

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

  4. Add data source頁面,單擊LogService對應的Selectimage

  5. 配置資料來源。

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

    參數

    說明

    Name

    資料來源的名稱。

    Default

    開啟Default開關。

    Endpoint

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

    Project

    Project的名稱。

    Logstore

    Logstore的名稱。

    AccessKeyId

    阿里雲AccessKey ID,用於標識使用者。為保證帳號安全,建議您使用RAM使用者的AccessKey。如何擷取AccessKey,請參見存取金鑰

    AccessKeySecret

    阿里雲AccessKey Secret,用於驗證使用者的密鑰。為保證帳號安全,建議您使用RAM使用者的AccessKey。如何擷取AccessKey,請參見存取金鑰

  6. 單擊Save & Test

步驟三:添加儀錶盤

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

  1. 在左側導覽列,選擇表徵圖1 > Dashboards

  2. New Panel面板中,單擊Choose Visualization

  3. 配置模板變數。

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

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

      1. New dashboard頁面右上方,配置時間區間,然後單擊表徵圖2表徵圖。

      2. 單擊Variables

      3. 單擊Add 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開關,其他參數保持預設配置。

    2. 佈建網域名的模板變數。

      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. 在左側功能表列,單擊Save

  4. 添加可視化圖表。

    • 用於展示PV&UV的圖表(Graph)

      1. 單擊右上方表徵圖3 表徵圖。

      2. New Panel頁面,單擊Add Query

      3. 單擊G小表徵圖4表徵圖,在Visualization下拉式清單中選擇Graph

      4. 單擊G小表徵圖5表徵圖,在Title文字框輸入UV&PV

      5. 單擊G小表徵圖6表徵圖,在Query下拉式清單中選擇Logservice,並完成如下配置。grafana-pv&uv01

        參數

        說明

        Query

        查詢和分析語句樣本如下:

        $hostname| select approx_distinct(remote_addr) as uv ,count(1) as pv , __time__ - __time__ % $$myinterval as time group by time order by time limit 1000

        在展示結果中,$hostname會被替換成您選擇的網域名稱。$$myinterval會被替換成您選擇的時間區間。

        重要

        myinterval前有2個貨幣符號($$),hostname前只有1個貨幣符號($)。

        X-Column

        配置為time,格式為秒級的Unix時間戳記。

        Y-Column

        配置為uv,pv

      6. 如果UV和PV的值相差較大,可配置雙Y軸圖表。grafana-pv&uv02

      7. 單擊右上方儲存按鈕表徵圖,根據頁面提示完成儲存。

    • 用於展示流入流出流量的圖表(Graph)

      添加步驟請參見添加PV&UV資訊圖表,相關參數說明如下表所示。

      參數

      說明

      Query

      查詢和分析語句樣本如下:

      $hostname | select sum(body_byte_sent) as net_out, sum(request_length) as net_in,__time__ - __time__ % $$myinterval as time group by __time__ - __time__ % $$myinterval limit 10000

      在展示結果中,$hostname會被替換成您選擇的網域名稱。$$myinterval會被替換成您選擇的時間區間。

      重要

      myinterval前有2個貨幣符號($$),hostname前只有1個貨幣符號($)。

      X-Column

      配置為time,格式為秒級的Unix時間戳記。

      Y-Column

      配置為net_in,net_out

    • 用於展示HTTP要求方法佔比的圖表(Pie Chart)

      添加步驟請參見添加PV&UV資訊圖表,相關參數說明如下表所示。

      參數

      說明

      Query

      查詢和分析語句樣本如下:

      $hostname | select count(1) as pv ,method group by method

      在展示結果中,$hostname會被替換成您選擇的網域名稱。

      X-Column

      配置為pie

      Y-Column

      配置為method,pv

    • 用於展示HTTP請求狀態代碼佔比的圖表(Pie Chart)

      添加步驟請參見添加PV&UV資訊圖表,相關參數說明如下表所示。

      參數

      說明

      Query

      查詢和分析語句樣本如下:

      $hostname | select count(1) as pv ,status group by status

      在展示結果中,$hostname會被替換成您選擇的網域名稱。

      X-Column

      配置為pie

      Y-Column

      配置為status,pv

    • 用於展示熱門訪問來源的圖表(Pie Chart)

      添加步驟請參見添加PV&UV資訊圖表,相關參數說明如下表所示。

      參數

      說明

      Query

      查詢和分析語句樣本如下:

      $hostname | select count(1) as pv , referer group by referer order by pv desc

      在展示結果中,$hostname會被替換成您選擇的網域名稱。

      X-Column

      配置為pie

      Y-Column

      配置為referer,pv

    • 用於展示延時最高頁面的圖表(Table)

      添加步驟請參見添加PV&UV資訊圖表,相關參數說明如下表所示。

      參數

      說明

      Query

      查詢和分析語句樣本如下:

      $hostname | select URL as top_latency_URL ,request_time order by request_time desc limit 10

      在展示結果中,$hostname會被替換成您選擇的網域名稱。

      X-Column

      無需配置。

      Y-Column

      配置為top_latency_url,request_time

    • 用於展示熱門頁面的圖表(Table)

      添加步驟請參見添加PV&UV資訊圖表,相關參數說明如下表所示。

      配置項

      說明

      Query

      查詢和分析語句樣本如下:

      $hostname | select count(1) as pv, split_part(URL,'?',1) as path group by split_part(URL,'?',1) order by pv desc limit 20

      在展示結果中,$hostname會被替換成您選擇的網域名稱。

      X-Column

      無需配置。

      Y-Column

      配置為path,pv

    • 用於展示非200請求的Top頁面圖表(Table)

      添加步驟請參見添加PV&UV資訊圖表,相關參數說明如下表所示。

      配置項

      說明

      Query

      查詢和分析語句樣本如下:

      $hostname not status:200| select count(1) as pv , url group by url order by pv desc

      在展示結果中,$hostname會被替換成您選擇的網域名稱。

      X-Column

      無需配置。

      Y-Column

      配置為url,pv

    • 用於展示平均延時的圖表(Singlestat)

      添加步驟請參見添加PV&UV資訊圖表,相關參數說明如下:

      配置項

      說明

      Query

      查詢和分析語句樣本如下:

      $hostname | select avg(request_time) as response_time, avg(upstream_response_time) as upstream_response_time ,__time__ - __time__ % $$myinterval as time group by __time__ -  __time__ % $$myinterval limit 10000

      在展示結果中,$hostname會被替換成您選擇的網域名稱。$$myinterval會被替換成您選擇的時間區間。

      重要

      myinterval前有2個貨幣符號($$),hostname前只有1個貨幣符號($)。

      X-Column

      配置為time

      Y-Column

      配置為upstream_response_time,response_time

    • 用於展示詳細日誌的圖表(Logs)

      添加步驟請參見添加PV&UV資訊圖表

      說明

      每頁最多展示100條,即Logs Per Page最大值為100。

    • 用於展示用戶端統計的圖表(Pie Chart)

      添加步驟請參見添加PV&UV資訊圖表,相關參數說明如下:

      配置項

      說明

      Query

      查詢和分析語句樣本如下:

      $hostname  | select count(1) as pv, case when  regexp_like(http_user_agent , 'okhttp') then 'okhttp' when  regexp_like(http_user_agent ,  'iPhone') then 'iPhone' when regexp_like(http_user_agent ,  'Android')  then 'Android' else 'unKnown' end as http_user_agent group by  http_user_agent order by pv desc limit 10

      在展示結果中,$hostname會被替換成您選擇的網域名稱。

      X-Column

      配置為pie

      Y-Column

      配置為http_user_agent,pv

    • 用於展示1分鐘內各個HTTP請求狀態數量的圖表(Graph)

      添加步驟請參見添加PV&UV資訊圖表,相關參數說明如下所示。

      配置項

      說明

      Query

      查詢和分析語句樣本如下:

      $hostname  | select to_unixtime(time) as time,status,count from (select time_series(__time__, '1m', '%Y-%m-%d %H:%i', '0')  as time,status,count(*) as count from log group by status,time order by time limit 10000)

      在展示結果中,$hostname會被替換成您選擇的網域名稱。

      X-Column

      配置為時間列。

      Y-Column

      配置為col1#:#col2。其中col1為分組列,col2為數字列。

      新版的配置為#:#col2,可以適配Grafana警示,分組列預設擷取。

    • 用於展示來源IP分布的圖表(Worldmap Panel)

      添加步驟請參見添加PV&UV資訊圖表,相關參數說明如下。

      參數

      說明

      Query

      查詢和分析語句樣本如下:

      $hostname  | 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

      在展示結果中,$hostname會被替換成您選擇的網域名稱。

      X-Column

      配置為map

      Y-Column

      配置為country,geo,pv

      參數

      說明

      Location Data

      配置為geohash

      Location Name Field

      配置為country

      geo_point/geohash Field

      配置為geo

      Metric Field

      配置為pv

  5. 查看結果。

    您可以在Dashboard頁面上方選擇統計的時間範圍,還可以篩選time intervalhostname

常見問題

  • 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目錄執行許可權。