grafana插件開發(fā)快速入門

簡(jiǎn)介

Panels能夠幫助我們通過不同的方式可視化數(shù)據(jù),grafana里面已經(jīng)集成了一些panel,但是我們也可以自定義開發(fā)panel,來支持一些官方panel插件不支持的顯示。

準(zhǔn)備工作

npm install yarn -g

環(huán)境配置

在開發(fā)grafana插件之前,我們先需要配置好grafana的配置環(huán)境

grafana將會(huì)掃描插件目錄,其具體的地址取決于讀者的操作系統(tǒng)

  1. 在讀者電腦新建一個(gè)文件夾grafana-plugins,該目錄未來為開發(fā)插件的工作目錄

  2. 找到在配置文件(/path/to/grafana/conf/defaults.ini)內(nèi)的plugins屬性,屬性值修改成為工作目錄的路徑

    [paths]
    plugins = "/path/to/grafana-plugins"
     # plugins = D:/grafana-plugins
    
  3. 重啟grafana加載配置

linux平臺(tái),systemctl restart grafana-server
windows平臺(tái),任務(wù)管理器-》服務(wù)-》grafana 右鍵重新啟動(dòng)

也可以通過docker 啟動(dòng)grafana,具體命令如下:

docker run -d -p 3000:3000 \
  -v "$(pwd)"/grafana-plugins:/var/lib/grafana/plugins \
   --name=grafana grafana/grafana:7.2.0

如果重新添加插件之后需要重啟grafana

docker restart grafana

創(chuàng)建一個(gè)新的插件

# 進(jìn)入插件工作目錄
cd /path/to/grafana-plugins
# 創(chuàng)建插件
npx @grafana/toolkit plugin:create my-plugin
cd my-plugin
# 下載必要的依賴
yarn install 
# 編譯插件
yarn dev 
# 重啟grafana 啟用插件,這時(shí)打開grafana,檢查configuration -> plugins,確保系統(tǒng)加載了該插件
image.png

插件剖析

具體插件的代碼都不盡相同,但是在我們深入研究之前,我們先看看各個(gè)插件共性的部分,每個(gè)插件都有plugin.json和module.ts 這2個(gè)文件。

plugin.json

grafana開始的時(shí)候,將會(huì)掃描plugin文件夾下所有子文件下都包含一個(gè)plugin.json文件,該文件包含plugin的基本信息,告訴grafana該插件的類型、能力以及依賴:

  • type 類型,grafana支持panel,datasourceapp
  • name用戶在插件list中看到的插件名字
  • id插件的唯一表示,為了避免和其他插件沖突,最好該名字是grafana賬戶名開始,可在官網(wǎng)注冊(cè)你的用戶名

更多的plugin.json配置,請(qǐng)查看官網(wǎng)

module.ts

grafana讀取了插件的信息之后,需要加載插件,module.ts文件既為加載插件的入口文件,module.ts暴露了插件的實(shí)現(xiàn)。

module.ts需要實(shí)現(xiàn)如下三個(gè)類之一

panel 插件

從grafana 6開始panel插件使用reactJS組件實(shí)現(xiàn)

panel屬性

PanelProps 接口暴露panel的運(yùn)行信息,如輪廓尺寸、當(dāng)前的時(shí)間區(qū)間。

我們可以通過props屬性訪問panel屬性

src/SimplePanel.tsx

const { options, data, width, height } = props;

開發(fā)流程

下面我們來學(xué)習(xí)如何開發(fā)自己的panel的基本流程,編譯grafana然后重啟grafana來生效我們的改動(dòng)

首先我們需要添加panel到dashboard上:

  1. 在瀏覽器上打開grafana.
  2. 創(chuàng)建一個(gè)新的dashboard,添加一個(gè)新的pannel.
  3. 從visualizaion類型中選擇panel類型.
  4. 保存dashboard.

現(xiàn)在我們可以看在頁面上看到該panel,嘗試著修改panel的代碼:

  1. 修改文件 SimplePanel.tsx中圓的顏色.
  2. 運(yùn)行yarn dev 編譯插件.
  3. 在瀏覽器重新加載,即可看到改變(無需重啟grafana)

添加panel配置

有時(shí),我們想為用戶提供一些可配置的行為,這時(shí)需要panel有參數(shù)輸入的能力,具體步驟如下:

添加一個(gè)配置項(xiàng)

SimpleOptions 是一個(gè)用來描述panel 配置對(duì)象的一個(gè)對(duì)象。

在types.ts內(nèi)添加一個(gè)CircleColor 類型來保存用戶可以選擇的顏色,并在SimpleOptions 內(nèi)添加color顏色

type SeriesSize = 'sm' | 'md' | 'lg';
type CircleColor = 'red' | 'green' | 'blue';

export interface SimpleOptions {
  text: string;
  showSeriesCount: boolean;
  seriesCountSize: SeriesSize;
  color: CircleColor;
}

添加一個(gè)配置控制面板

為了可以配置panel編輯器,我們需要綁定顏色選項(xiàng)和顏色控制器。

grafana支持范圍控制器、text輸入、開關(guān)和radio groups

該場(chǎng)景我們創(chuàng)建一個(gè)radio控制器然后綁定可選顏色。

修改文件 src/module.ts,末尾添加如下builder:

.addRadio({
  path: 'color',
  name: 'Circle color',
  defaultValue: 'red',
  settings: {
    options: [
      {
        value: 'red',
        label: 'Red',
      },
      {
        value: 'green',
        label: 'Green',
      },
      {
        value: 'blue',
        label: 'Blue',
      },
    ],
  }
});

path熟悉用來綁定這個(gè)control到option,我們也可以綁定一個(gè)嵌套的控制器,在控制器內(nèi)options屬性聲明對(duì)應(yīng)對(duì)象即可,如:colors.background.

Grafana builds an options editor for you and displays it in the panel editor sidebar in the Display section.

配置參數(shù)的使用

在SimplePanel.tsx文件中添加參數(shù)的在圖形的應(yīng)用。
src/SimplePanel.tsx

let color: string;
switch (options.color) {
  case 'red':
    color = theme.palette.redBase;
    break;
  case 'green':
    color = theme.palette.greenBase;
    break;
  case 'blue':
    color = theme.palette.blue95;
    break;
}
Configure the circle to use the color.

<g>
  <circle style={{ fill: color }} r={100} />
</g>

完整的工程請(qǐng)查看:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容