Using InfluxDB in Grafana,influxDB在grafana中使用
grafana帶有功能豐富的數據源插件influxDB。支持豐富的查詢編輯器、注釋和templating(模版)查詢。
增加數據源(Adding the data source)
- 點擊頂部Grafana圖標打開側邊的菜單。
- 在
Dashboards
鏈接下的側菜單中,您應該找到一個名為Data Sources的鏈接。 - 在頂部點擊
+ Add data source
按鈕。 - 在Type下拉選項中選擇 InfluxDB。
Edit/ADD data source
name :數據源名稱。這就是在面板和查詢中引用數據源的方式。
defalut:默認的數據源意味着它將被預先選中用於新的面板。
Type
Http settings
Url:您的http協議、ip和influxDB api的端口(influxdb api端口是默認的8086)
Access:proxy:通過grafana后端訪問,Direct:直接通過瀏覽器訪問
Http Auth
Basic Auth
with Credentials
Tls client Auth
With CA Cert
InfluxDB Details
Database:influxdb數據庫名稱
User:數據庫用戶名
Password:數據庫用戶密碼
Defalut group by time
注意:如果你沒有在你的側菜單中看到Data Sources鏈接,這意味着你當前的用戶沒有當前組織的Admin角色。
詳細見;http://docs.grafana.org/features/datasources/influxdb/
Proxy vs Direct access
Proxy access means that the Grafana backend will proxy all requests from the browser. So requests to InfluxDB will be channeled through grafana-server
. This means that the URL you specify needs to be accessible from the server you are running Grafana on. Proxy access mode is also more secure as the username & password will never reach the browser.
Query Editor
你在graph或singlestat面板的metrics 頁簽找到influxDB編輯器。我也可以通過單擊面板標題,然后edit。編輯器允許您選擇metrics頁簽。
Filter data (WHERE)
where 若要添加標記篩選器,請單擊Where加號圖標”+“。您可以通過單擊remove tag filters 來刪除所選擇的條件。
The $timeFilter or $__timeFilter Variable
$timefilter返回當前選擇的時間范圍為表達。
例如,time range表達時間為Last 7 days ,表達式為time > now() - 7d。
Grafana 會自動添加 $timeFilter,influxDB需要手動添加
如果你使用原始查詢,請至少確保where有$timeFilter,也總用時間區間和聚合函數功能。 否則InfluxDB 很容易返回成千上萬數據點提供瀏覽。
Regex matching
You can type in regex patterns for metric names or tag filter values, be sure to wrap the regex pattern in forward slashes (/
). Grafana will automatically adjust the filter tag condition to use the InfluxDB regex match condition operator (=~
)。
Field & Aggregation functions
在select行中,可以指定要使用的字段和函數。如果你有一個時間組(group by time),你需要一個聚合函數,像derivative 。
編輯器嘗試簡化並統一查詢的這一部分。如下例子
以上將產生以下InfluxDB SELECT子句:
Select multiple fields
使用加號按鈕並選擇 Field > field來添加另一個SELECT子句。你也可以指定一個星號*選擇所有字段
ALIAS BY
可以將Series取個別名。
Group By
GROUP BY,單擊組結尾處的+圖標。從出現的下拉列表中選擇一個標記。您可以通過單擊標簽刪除該組,然后單擊X圖標。
$interval:沒有特別指定,默認是5分鍾,$interval與auto一個意思 ,
Group by time interval
設置這邊可以改變$interval的值。我這寫的時候 基本要大於5分鍾,目前不是很清楚原因。
Group by time是很重要的,否則Grafana查詢會返回成千上萬的數據點會慢下來。
對於每個查詢,將時間字段分組為空,並根據圖的時間范圍和像素寬度計算該組。
如果使用fill(0)或fill(null),則按時間間隔為自動組設置一個低限
下限只能在您查詢的按組時間選項中設置。
在間隔之前添加一個更大的符號來設置一個下限。
例如:如果InfluxDB的metrics 為每60秒
Text Editor Mode (RAW)
您可以通過點擊漢堡圖標“”切換到原始查詢模式,更換數據庫,然后切換編輯器模式。
如果你使用原始查詢確認你的查詢至少有WHERE $timeFilter,也請一直有group by time 和聚合函數,否則InfluxDB可以返回的數據點,將瀏覽器數十萬。
Templating
metric 查詢中,不必硬編碼諸如server, application and sensor name 之類的東西,而是可以在它們的位置使用變量。
變量顯示在dashboard頂部的下拉式選擇框中。這些下拉菜單就可以很容易地改變在你的儀表板顯示的數據。
Query variable
如果你添加的template變量,類型為Query,你可以寫一個InfluxDB(meta data)查詢。這些查詢可以返回諸如measurement 名稱, key 名稱or key 值。
例如,你可以有一個變量包含標簽為hostname的所有值,如果你指定一個查詢在templating variable Query設置。
SHOW TAG VALUES WITH KEY = "hostname"
還可以創建嵌套變量。例如,如果您有另一個變量,例如region。然后,您可以擁有hosts變量,只顯示當前選擇區域中的主機,查詢如下:
SHOW TAG VALUES WITH KEY = "hostname" WHERE region =~ /$region/
你可以為一個給定的measurement獲取key的名字。
SHOW TAG KEYS [FROM <measurement_name>]
如果有一個帶有key的變量,可以在一個組子句中使用這個變量。這將允許您通過在儀表板頂部使用變量下拉菜單來更改組。
Ad hoc filters variable
InfluxDB支持特殊的“Ad hoc filters variable”變量類型。這個變量允許您任意指定任意數量的 key/value過濾器。這些過濾器將自動應用到所有的InfluxDB查詢。
Annotations(注釋)
annotations允許您在圖表頂部覆蓋豐富的事件信息。通過Dashboard menu / Annotations view添加注釋查詢。
一個查詢例子:
SELECT title, description from events WHERE $timeFilter order asc
對於InfluxDB需要輸入一個查詢,像上面的例子。where需要在 $timeFilter部分。如果只選擇一個列,就不需要在列映射字段中輸入任何內容。tag字段可以是一個逗號分隔的字符串。