本文介紹如何通過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 | |
<8.0.0 |
注意事項
若配置STS跳轉,為許可權安全考慮,需要滿足以下兩個條件:
● 配置DataSource的accessKey對應的使用者,需要配置權限原則AliyunRAMReadOnlyAccess
。
● 配置DataSource的roleArn裡面的權限原則,必須有且只配置權限原則AliyunLogReadOnlyAccess
,原理請參見控制台內嵌及分享。
若配置了免登跳轉,需注意資料來源是否涉及Grafana儀錶盤的公開訪問分享。公開訪問可能帶來流量成本增加和日誌內容公開暴露。
系統權限原則請參見Log Service系統權限原則參考。
步驟一:安裝Log Service外掛程式
為Grafana安裝Log Service外掛程式的操作步驟如下:
執行以下命令將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
修改Grafana設定檔。
開啟設定檔。
使用YUM或RPM安裝的Grafana:/etc/grafana/grafana.ini
使用.tar.gz檔案安裝的Grafana:{PATH_TO}/grafana-8.0.6/conf/defaults.ini
在設定檔的[plugins] 節點中,設定allow_loading_unsigned_plugins參數。
allow_loading_unsigned_plugins = aliyun-log-service-datasource
重啟Grafana。
使用kill命令終止Grafana進程。
執行以下命令啟動Grafana。
使用YUM或RPM安裝的Grafana:
systemctl restart grafana-server
使用.tar.gz檔案安裝的Grafana:
./bin/grafana-server web
步驟二:添加資料來源
為Grafana添加Log Service的資料來源的操作步驟如下:
登入Grafana。
在左側功能表列,選擇 。
在Data Sources頁簽,單擊Add data source。
在Add data source頁面,單擊LogService對應的Select。
配置資料來源。
重要參數說明如下表所示。
參數
說明
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,請參見存取金鑰。
單擊Save & Test。
步驟三:添加儀錶盤
為Grafana添加儀錶盤的操作步驟如下:
在左側導覽列,選擇 。
在New Panel面板中,單擊Choose Visualization。
配置模板變數。
您可以在Grafana中配置模板變數,實現在同一個圖表中通過選擇不同的變數值,展示不同的結果。
配置時間區間大小的模板變數。
在New dashboard頁面右上方,配置時間區間,然後單擊表徵圖。
單擊Variables。
單擊Add variable。
按照如下參數配置模板變數,然後單擊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開關,其他參數保持預設配置。
佈建網域名的模板變數。
在Variables頁面,單擊New。
按照如下參數配置模板變數,然後單擊Add。
參數
說明
Name
變數名稱,例如hostname。該名稱是您配置中使用的變數,此處為hostname,則查詢條件中需寫成
$hostname
。Type
選擇Custom。
Label
輸入欄位名。
Custom Options
配置為
*,example.com,example.org,example.net
,表示可以查看所有網域名稱的訪問情況,也可以分別查看example.com
、example.org
或example.net
的訪問情況。Selection Options
保持預設配置。
在左側功能表列,單擊Save。
添加可視化圖表。
用於展示PV&UV的圖表(Graph)
單擊右上方表徵圖。
在New Panel頁面,單擊Add Query。
單擊表徵圖,在Visualization下拉式清單中選擇Graph。
單擊表徵圖,在Title文字框輸入UV&PV。
單擊表徵圖,在Query下拉式清單中選擇Logservice,並完成如下配置。
參數
說明
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。
如果UV和PV的值相差較大,可配置雙Y軸圖表。
單擊右上方表徵圖,根據頁面提示完成儲存。
用於展示流入流出流量的圖表(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。
查看結果。
您可以在Dashboard頁面上方選擇統計的時間範圍,還可以篩選time interval和hostname。
常見問題
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目錄執行許可權。