iT邦幫忙

2024 iThome 鐵人賽

DAY 16
1
DevOps

Grafana Zero to Hero系列 第 16

Grafana Zero to Hero - Data Source:攫取萬物的 Infinity

  • 分享至 

  • xImage
  •  

最後一個要介紹的 Data Source 是 Infinity,它於 2024 年正式由 Grafana Labs 接手維護,定位為能查詢各種尚未有專用 Data Source 的資料來源,支援解析 JSON、CSV 等格式,並涵蓋了常見的認證方式,包括 Basic authentication、API Key、OAuth 等。隨著 Infinity 地位的提升,許多相似功能的 Plugin 被建議改用 Infinity,並進入維護模式,例如 CSV Data SourceJSON API Data Source

Infinity
無限寶石手套,圖片來源:迪士尼影業

Data Source 設定

大部分的網路服務如果提供串接功能,都會提供 API 搭配指定的認證方式讓使用者取得資料。認證設定可以設定於 Data Source 中,只有管理人員可以修改,還可以額外設定 Allowed hosts,只讓認證在指定的 Host 上生效,以避免認證資訊外洩。

Auth

若想限縮 Infinity 的查詢目標,可以設定 Base URL。設定 Base URL 後,該 Data Source 的查詢 URL 只能在 Base URL 的基礎上進行擴展,無法任意查詢其他網站。

Base URL

配合 Grafana 只執行查詢的定位,在 Infinity 中只支援 GET 和 POST HTTP Method,不支援 UPDATE 或 DELETE 等其他 Method。

Method

在 API 中,許多地方會需要放入查詢條件等,Variable 也可以應用於 Infinity,可以放在 URL 或 Body 中任意組合。

URL var

Body var

格式解析

Infinity 支援多種格式,包括 JSON、CSV、TSV、GraphQL、XML、HTML 等。透過內建的 Backend ParserUQL Parser 可以將資料進行解析和篩選。

Backend Parser 與 UQL Parser

Backend Parser 提供了簡單快速的篩選功能,而 UQL(Unstructured Query Language)Parser 則包含多種不同的指令,能進行複雜的資料解析。兩種 Parser 都提供 summarize 功能,例如 sum、count 等工具,方便呈現統計後的數據。

Sum

HTML Table 解析

如果資料來源是 HTML 的 Table,Infinity 也可以進行爬取。不過,如果 Table 中有跨欄或跨列合併的情況,Infinity 會無法正常爬取。

Table
透過 CSS Selector 的 :nth-child() Selector 選擇到 Table 資料所在的第一列後,再逐一透過 td:nth-child 設定每個欄位的名稱。

Lab

範例程式碼:https://github.com/blueswen/grafana-zero-to-hero/tree/main/04-datasource/07-infinity

此 Lab 會建立

  1. Application:基礎的 API 供 Infinity 抓取資料
  2. Grafana:查看預先建立好的示範 Dashboard 與 Infinity Data Source

Quick Start

  1. 啟動所有服務

    docker-compose up -d
    
  2. 安裝 Infinity Data Source Plugin 與檢視服務

    1. Grafana: http://localhost:3000,登入帳號密碼為 admin/admin
      1. 點擊左上 Menu > Connections > Add new connection,搜尋 Infinity 並安裝
      2. 點擊左上 Menu > Dashboards > Provision Dashboards 即可選擇預先建立的 Dashboard
  3. 關閉所有服務

    docker-compose down
    

小結

從 Grafana 的 Big Tent 策略可以看出,他們仍在積極實踐「Democratize Metrics」的理念。除了官方支援的 Data Source 外,透過 Plugin 機制,使用者可以在 Grafana 上顯示任何類型的資料。這樣一個統一的平台,讓所有人都有機會接觸到各種指標或數據。

參考資料

  1. Infinity data source plugin Document
  2. Infinity plugin for Grafana: Grafana Labs will now maintain the versatile data source plugin

上一篇
Grafana Zero to Hero - Data Source:More Plugins!
下一篇
Grafana Zero to Hero - Plugin System:突破 Dashboard 限制
系列文
Grafana Zero to Hero30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言