在這篇文章中我想分享我使用開源系統Zabbix和Grafana視覺化生產線運行的經驗。 對於那些尋求快速直觀地顯示或分析工業自動化或物聯網專案中收集的數據的人來說,這些資訊可能很有用。 本文不是詳細的教程,而是基於製造工廠開源軟體的監控系統的概念。
工具
ZABBIX – 我們長期以來一直使用它來監控工廠的 IT 基礎架構。 事實證明,該系統是如此方便和通用,以至於我們開始將來自生產線、感測器和控制器的資料輸入其中。 這使我們能夠將所有指標數據收集在一個地方,製作資源消耗和設備性能的簡單圖表,但我們確實缺乏分析和漂亮的圖表。
格拉法納 是分析和資料視覺化的強大工具。 大量外掛程式可讓您從各種來源(zabbix、clickhouse、influxDB)獲取數據,動態處理它(計算平均值、總和、差值等)並繪製各種圖形(從簡單的線條、速度表、表格到複雜的圖表)。
Draw.io – 一項服務,可讓您在線上編輯器中將簡單的框圖繪製為平面圖。 有許多現成的模板和繪製的物件。 資料可以匯出為所有主要圖形格式或 xml。
把它們放在一起
關於如何安裝和設定Grafana和Zabbix的文章有很多,我會告訴你主要的設定點。
在 Zabbix 伺服器上建立一個「網路節點」(主機),它將擁有帶有來自我們感測器的指標的「資料元素」(專案)。 建議提前考慮節點和資料元素的名稱,並使其盡可能結構化,因為我們將透過正規表示式從 grafana 存取它們。 這種方法很方便,因為您可以透過一個請求從一組元素取得資料。
要配置grafana,您需要安裝其他外掛程式:
- Zabbix by Alexander Zobnin (alexanderzobnin-zabbix-app) – 與 zabbix 集成
- natel-discrete-panel – 用於在水平圖上離散可視化的插件
- pierosavi-imageit-panel – 用於在圖像頂部顯示資料的插件
- agenty-flowcharting-panel – 來自draw.io的圖表動態視覺化插件
與Zabbix本身的整合是在grafana中配置的,選單項目ConfigurationDatasourcesZabbix。 在那裡你需要指定api zabbix伺服器的位址,這就是我的
建立儀表板
這就是 Grafana 及其插件的魔力開始的地方。
Natel 離散面板插件
我們有線路上馬達狀態的資料(工作 = 1,不工作 = 0)。 使用離散圖,我們可以繪製一個比例尺來顯示:引擎的狀態、工作了多少分鐘/小時或百分比以及啟動的頻率。
引擎狀態可視化
在我看來,這是可視化硬體效能的最佳圖表之一。 您可以立即看到它閒置了多長時間以及它在哪些模式下工作得更頻繁。 資料可以很多,可以按範圍聚合,按值轉換(如果值為“1”,則顯示為“ON”)
插件pierosavi-imageit-面板
當您已經繪製了圖表或平面圖並希望在其上套用來自感測器的資料時,使用 Imageit 會很方便。 在視覺化設定中,您需要指定圖像的 URL 並添加所需的感測器元素。 此元素出現在圖片中,可以用滑鼠放置在所需的位置。
帶有溫度和壓力指標的爐圖
代理商流程圖面板插件
我想更詳細地討論建立流程圖視覺化,因為它是一個非常實用的工具。 它允許您製作動態助記圖,其中的元素將對指標的值做出反應(更改顏色、位置、名稱等)。
接收資料
Grafana 中任何視覺化元素的建立都始於對來源資料的請求,在我們的例子中是 zabbix。 使用查詢,我們需要取得要在圖表中使用的所有指標。 指標詳細資訊是 Zabbix 中資料元素的名稱;您可以指定單一指標或透過正規表示式篩選的集合。 在我的範例中,項目欄位包含表達式:「/(^line 1)|(availability)|(zucchini)/」 - 這表示:選擇名稱嚴格以「line 1」開頭或包含單字「availability」的所有指標”或包含“西葫蘆”一詞
設定一線引擎數據和原材料可用性請求的範例
數據轉換
來源資料可能並不總是我們需要顯示的形式。 例如,我們有容器中產品重量(公斤)的每分鐘數據,並且需要以噸/小時為單位顯示填充速率。 我透過以下方式執行此操作:我獲取重量數據並使用 grafana delta 函數對其進行轉換,該函數計算度量值之間的差異,因此當前重量轉換為 kg/min。 然後乘以 0.06 得到以噸/小時為單位的結果。 由於權重指標在多個查詢中使用,因此我為其指定了一個新別名 (setAlias) 並將在視覺化規則中使用它。
使用 delta 和 multiplier 參數並在查詢中重新命名指標的範例
這是另一個資料轉換的例子:我需要計算批次數(循環開始=引擎啟動)。 該指標是根據引擎狀態「線路 1 - 來自油箱 1 的泵浦泵(狀態)」計算的。 轉換:我們用delta函數(值的差異)改變原始指標的數據,因此指標將在啟動引擎時值為“+1”,在停止時為“-1”,在引擎停止時為“0”不改變其狀態。 然後我刪除所有小於1的值並對它們求和。 結果是引擎啟動的次數。
將資料從目前狀態轉換為啟動次數的範例
現在關於視覺化本身
在顯示設定中有一個「編輯繪圖」按鈕;它會啟動一個編輯器,您可以在其中繪製圖表。 圖中的每個物件都有自己的參數。 例如,如果您在編輯器中指定字體設置,它們將應用於 Grafana 中的資料視覺化。
這就是 Draw.io 中編輯器的樣子
儲存圖表後,它將出現在 grafana 中,您可以建立更改元素的規則。
在parameters()中我們指定:
- 選項 - 設定規則名稱、將使用其資料的指標的名稱或別名(套用於指標)。 資料聚合(Aggregation)的類型會影響指標的最終結果,因此Last表示將選擇最後一個值,avg是右上角選擇的時間段的平均值。
- Thresholds - 閾值參數描述了顏色應用的邏輯,即所選顏色將根據度量資料應用於圖表上的元素。 在我的範例中,如果指標值為“0”,則狀態為“Ok”,顏色將為綠色,如果值為“>1”,則狀態將為“Critical”,顏色將為紅色。
- 顏色/工具提示映射”和“標籤/文字映射” - 選擇架構元素及其行為場景。 在第一個場景中,物件將被繪製,在第二個場景中,物件上將有帶有度量資料的文字。 要選擇圖表上的對象,您需要點擊電路符號並點擊圖表。
在此範例中,如果泵浦正常工作,我將泵浦及其箭頭塗成紅色,如果無法正常工作,則將其塗成綠色。
使用流程圖插件,我能夠繪製整條生產線的圖表,其中:
- 單位的顏色會根據其狀態而變化
- 容器內無產品時發出警報
- 顯示馬達頻率設定
- 第一罐充/卸速度
- 計算生產線運行(批次)的週期數
生產線運行可視化
導致
對我來說最困難的事情是從控制器取得數據。 由於Zabbix在接收資料方面的多功能性以及Grafana由於插件而具有的靈活性,只花了幾天的時間就創建了一個全面的產線監控螢幕。 視覺化使查看圖表和狀態統計數據成為可能,並且每個感興趣的人都可以透過網路輕鬆存取 - 所有這些使得快速識別瓶頸和低效使用單元成為可能。
結論
我真的很喜歡 Zabbix+Grafana 組合,如果您需要快速處理來自控制器或感測器的數據,而無需編程或實現複雜的商業產品,我建議您關注它。 當然,這不會取代專業的SCADA系統,但它足以作為整個生產集中監控的工具。
來源: www.habr.com