<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          使用 Python 創(chuàng)建 Grafana Dashboards

          共 2451字,需瀏覽 5分鐘

           ·

          2020-08-25 20:25

          Grafana 是一個功能非常強(qiáng)大的圖表可視化工具,可以通過儀表盤輕松地將多個數(shù)據(jù)源的指標(biāo)/日志數(shù)據(jù)進(jìn)行可視化。有關(guān)其功能的更多介紹,可以查看官網(wǎng) https://grafana.com/ 的相關(guān)說明。創(chuàng)建一個儀表盤并不是非常困難,但是我們需要手動去點(diǎn)擊每個圖表的設(shè)置項(xiàng)去進(jìn)行配置,這個過程比較繁瑣,我們希望有更加工程化的工具來做這個事情。

          標(biāo)準(zhǔn)的 Dashboard

          Grafana 的 Dashboard 是通過 JSON 格式的數(shù)據(jù)提供的,我們大部分都會創(chuàng)建 Dashboard,然后將其粘貼到保存 Dashboard 的文件夾中,如果你也同樣使用 prometheus-operator 的話,則需要更新到對應(yīng)的 ConfigMap 中去。

          調(diào)整 Dashboard 后對應(yīng)的 JSON 模型

          這種復(fù)制粘貼 Dashboard 的過程中,我們會經(jīng)常在手動去更改 JSON 文件中的一些值的時候出錯,如何讓這個過程更加方便,減少錯誤,增加一些版本記錄呢?

          在本文中,我們將使用 Prometheus 數(shù)據(jù)源和 prometheus-operator,你可以通過一些小的調(diào)整來適配你的監(jiān)控棧方案。

          使用 Grafanalib

          Grafanalib 是一個開源的 Python 庫,我們可以使用這個庫來對 Dashboard 進(jìn)行編碼,編碼后的 Dashboard 會生成對應(yīng)的 JSON 數(shù)據(jù)。首先安裝這個依賴庫:

          $ pip install grafanalib

          然后獲取一個 Python 編寫的基本 Dashboard:

          $ curl -o example-core.dashboard.py \https://gist.githubusercontent.com/KamilSwiech/bd170b3724819fd14531b4bf36fee8da/raw/d705749745ceffefe86ee775c1e135a4aed95d01/example-core.dashboard.py

          然后我們查看 example-core.dashboard.py 文件的內(nèi)容:

          from grafanalib.core import (    Dashboard, Graph,    OPS_FORMAT, Row,    single_y_axis, Target, TimeRange, YAxes, YAxis)
          dashboard = Dashboard( title="Python generated dashboard", rows=[ Row(panels=[ Graph( title="Prometheus http requests", dataSource='default', targets=[ Target( expr='rate(prometheus_http_requests_total[5m])', legendFormat="{{ handler }}", refId='A', ), ], yAxes=single_y_axis(format=OPS_FORMAT), ), ]), ],).auto_panel_ids()

          其中有兩個地方值得注意:

          1. dataSource:指定 Grafana 中數(shù)據(jù)源的名稱

          1. expr:查詢表達(dá)式,我們這里使用 Prometheus,也就是對應(yīng)的 PromQL 語句

          如果需要則調(diào)整相關(guān)的字段,然后使用 Grafanalib 自帶的二進(jìn)制來創(chuàng)建 JSON 文件:

          $ generate-dashboard -o test.json example-core.dashboard.py

          這樣我們就有了一個簡單的 Dashboard 了,由于我這里使用的是 prometheus-operator,所以還需要做額外的配置,我這里已經(jīng)創(chuàng)建了包含 json 數(shù)據(jù)的 ConfigMap,包含指定的標(biāo)簽和命名空間,并將其保存到 yaml 文件中,因?yàn)槲疫@里使用了 GitOps 來做持續(xù)部署,所以只需要保存到 yaml 文件而不是直接創(chuàng)建到集群中:

          $ kubectl create cm test -n prometheus-operator --from-file=test.json -o yaml --dry-run | \kubectl label -f- --dry-run -o yaml --local grafana_dashboard="1" > test.yaml

          得到 yaml 文件后直接提交變更到 git 后,新的 Dashboard 就可以使用了。

          使用 Python 和 grafanalib 生成的 dashbord

          使用這種可編程的方式來生成 Dashboard 顯然更加工程化,而且我們還可以將代碼提交到 git 倉庫中進(jìn)行版本管理,然后再結(jié)合 GitOps 就完成可以將這個過程自動化了。

          ?

          原文鏈接:https://medium.com/swlh/create-grafana-dashboards-with-python-14a6962eb06c




          K8S進(jìn)階訓(xùn)練營,點(diǎn)擊下方圖片了解詳情

          瀏覽 188
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产久久在线播放 | 91土豪约大长腿美女嫩模 | 欧美一级网 | 精品人妻一区二区蜜桃视频 | 97国产超碰免费 |