王博遠(yuǎn),梁子陽(yáng),劉雪萌,李少彬,謝英柏
(華北電力大學(xué)(保定),河北 保定 071000)
隨著城市化進(jìn)程的發(fā)展,城市人口數(shù)量逐漸增多,冬季的供暖問題成為保障民生,提升居民生活幸福感的重要指標(biāo)。近年來,為應(yīng)對(duì)城市供熱面積增大而管網(wǎng)輸送能力不足的問題,大溫差長(zhǎng)輸供熱項(xiàng)目在我國(guó)的太原、銀川和石家莊等城市已經(jīng)得到了應(yīng)用。在長(zhǎng)輸供熱管網(wǎng)運(yùn)行的過程中,對(duì)于運(yùn)行參數(shù)進(jìn)行實(shí)時(shí)監(jiān)控顯得尤為重要。一方面,可以通過參數(shù)的變化調(diào)整電廠的供熱負(fù)荷和管網(wǎng)的熱量分配,另一方面,如果測(cè)量數(shù)據(jù)超出正常范圍,也可以做到及時(shí)告警,便于運(yùn)行人員盡早知道事故出現(xiàn)的地點(diǎn),從而盡早處理,以防造成更大的危害。本文討論利用Telegraf+InfluxDB+Grafana搭建監(jiān)控平臺(tái),來對(duì)長(zhǎng)輸供熱管網(wǎng)的運(yùn)行參數(shù)進(jìn)行實(shí)時(shí)監(jiān)控。
Telegraf是一個(gè)由插件驅(qū)動(dòng)的服務(wù)器代理,用于收集和報(bào)告指標(biāo)。Telegraf集成了直接從其運(yùn)行的容器和系統(tǒng)中提取各種指標(biāo)、事件和日志,從第三方API提取指標(biāo),甚至通過StatsD和Kafka消費(fèi)者服務(wù)監(jiān)聽指標(biāo)。它還具有輸出插件,可將指標(biāo)發(fā)送到各種其他數(shù)據(jù)存儲(chǔ),服務(wù)和消息隊(duì)列,包括InfluxDB、Graphite等。
InfluxDB是用Go語(yǔ)言編寫的一個(gè)開源分布式時(shí)序、事件和指標(biāo)數(shù)據(jù)庫(kù),無需外部依賴。在最新的DB-ENGINES給出的時(shí)間序列數(shù)據(jù)庫(kù)的排名中,InfluxDB高居第一位,可以預(yù)見,InfluxDB會(huì)越來越得到廣泛的應(yīng)用。
Grafana是一款用Go語(yǔ)言開發(fā)的開源數(shù)據(jù)可視化工具,可以做數(shù)據(jù)監(jiān)控和數(shù)據(jù)統(tǒng)計(jì),帶有告警功能。
Telegraf作為收集和報(bào)告指標(biāo)的服務(wù)器代理,具有以下優(yōu)點(diǎn):(1)使用Go語(yǔ)言編寫,編譯成單個(gè)二進(jìn)制文件,沒有外部依賴項(xiàng)。(2)占用內(nèi)存小。(3)可以通過添加新的插件進(jìn)行輸入輸出。(4)插件中包含常用的服務(wù)和API。
InfluxDB作為最常采用的時(shí)序數(shù)據(jù)庫(kù),具有以下優(yōu)點(diǎn):(1)內(nèi)置HTTP API,使用方便。(2)使用類SQL語(yǔ)法,數(shù)據(jù)查詢便捷。(3)自帶管理界面,管理很簡(jiǎn)單,并且讀寫效率高。
同時(shí)由于Telegraf和InfluxDB都是由InfluxData公司所開發(fā)的軟件,二者在數(shù)據(jù)的存儲(chǔ)策略上具有高度一致性,因此便于數(shù)據(jù)在二者之間進(jìn)行傳遞。
Grafana作為開源數(shù)據(jù)可視化工具,具有以下優(yōu)點(diǎn):(1)擁有快速靈活的客戶端圖表,面板插件有許多不同方式的可視化指標(biāo)和日志。(2)支持許多不同的時(shí)間序列數(shù)據(jù)(數(shù)據(jù)源)儲(chǔ)存后端。(3)使用來自不同數(shù)據(jù)源的豐富事件注釋圖表,將鼠標(biāo)懸停在事件上會(huì)顯示完整的事件元數(shù)據(jù)和標(biāo)記。(4)使用Ad-hoc過濾器允許動(dòng)態(tài)創(chuàng)建新的鍵/值過濾器,這些過濾器會(huì)自動(dòng)應(yīng)用于使用該數(shù)據(jù)源的所有查詢。
基于Telegraf+InfluxDB+Grafana搭建實(shí)時(shí)監(jiān)控平臺(tái)是最近幾年新產(chǎn)生的一種架構(gòu)方法,與傳統(tǒng)監(jiān)控方式對(duì)比,該架構(gòu)系統(tǒng)簡(jiǎn)單,無需編輯腳本,僅需獲得監(jiān)控?cái)?shù)據(jù)便可自動(dòng)抓取數(shù)據(jù)進(jìn)行實(shí)時(shí)展示,操作簡(jiǎn)單,便于進(jìn)行運(yùn)行維護(hù)。
監(jiān)控系統(tǒng)所起的作用主要可以分為兩個(gè)方面:運(yùn)行監(jiān)控和故障報(bào)警。要實(shí)現(xiàn)這兩個(gè)功能,則需要不間斷地從測(cè)量設(shè)備上采集數(shù)據(jù),然后通過數(shù)據(jù)庫(kù)轉(zhuǎn)化為統(tǒng)一的格式,最后使用可視化軟件對(duì)數(shù)據(jù)進(jìn)行實(shí)時(shí)的展示,并設(shè)置閾值,在數(shù)據(jù)超出閾值時(shí)進(jìn)行告警。
因此,從功能上看,Telegraf+InfluxDB+Grafana監(jiān)控系統(tǒng)的基礎(chǔ)構(gòu)架大致可分為以下幾層:數(shù)據(jù)收集層、數(shù)據(jù)存儲(chǔ)層和數(shù)據(jù)展示及告警層(圖1)。
圖1 監(jiān)控系統(tǒng)基礎(chǔ)架構(gòu)
對(duì)長(zhǎng)輸管網(wǎng)的供熱系統(tǒng)來說,需要監(jiān)控的數(shù)據(jù)主要有各級(jí)流量、各級(jí)壓力、供給水溫度、給水泵和循環(huán)水泵頻率等。這些數(shù)據(jù)由測(cè)量?jī)x器測(cè)量得到后,將上傳到服務(wù)器,接下來,通過Telegraf自帶的API接口針對(duì)不同的數(shù)據(jù)類型進(jìn)行采集,然后對(duì)數(shù)據(jù)進(jìn)行進(jìn)一步處理。
具體步驟如下:(1)通過多種input plugins與不同類型的數(shù)據(jù)進(jìn)行匹配,從而將數(shù)據(jù)進(jìn)行整合。(2)通過processor plugins和aggregator plugins對(duì)導(dǎo)入的數(shù)據(jù)進(jìn)行sum,min,max等的函數(shù)運(yùn)算,對(duì)數(shù)據(jù)進(jìn)行進(jìn)一步處理。(3)通過output plugins與后端進(jìn)行對(duì)接,這里選用對(duì)接InfluxDB的plugin,并設(shè)置數(shù)據(jù)存儲(chǔ)的database以及URL。
由Telegraf導(dǎo)入的數(shù)據(jù)儲(chǔ)存在InfluxDB里以供Grafana調(diào)用和展示,由于InfluxDB是時(shí)序數(shù)據(jù)庫(kù),每條數(shù)據(jù)都有特定的時(shí)間戳,因此每個(gè)數(shù)據(jù)都是獨(dú)一無二的??梢栽贗nfluxDB客戶端或者使用二進(jìn)制的命令行對(duì)數(shù)據(jù)庫(kù)進(jìn)行進(jìn)一步操作,這里采用命令行操作。
具體步驟如下:(1)在InfluxData官網(wǎng)下載所需版本的InfluxDB壓縮包,并解壓到自定義位置。(2)首先啟動(dòng)保護(hù)進(jìn)程influxd.exe,然后啟動(dòng)程序influx.exe輸入命令行進(jìn)行操作。查詢命令采用類SQL語(yǔ)句,具體格式詳見官網(wǎng)。運(yùn)行過程中,保護(hù)進(jìn)程不可關(guān)閉。(3)可以設(shè)置用戶名、密碼等,初始默認(rèn)端口為8086,也可以對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作,如修改數(shù)據(jù)保留策略(retention policy),新建數(shù)據(jù)庫(kù),過濾相關(guān)數(shù)據(jù)等。
數(shù)據(jù)展示及告警界面為web展示界面,將InfluxDB內(nèi)的數(shù)據(jù)通過柱狀圖、餅狀圖、折線圖等形式直觀地展現(xiàn)出來,讓工作人員了解一段時(shí)間內(nèi)供熱管網(wǎng)的壓力溫度等變化,從而對(duì)設(shè)備做出合適的調(diào)整。同時(shí),若某指標(biāo)超出閾值,系統(tǒng)也能自動(dòng)向工作人員進(jìn)行告警,從而及時(shí)解決問題,避免出現(xiàn)更大的事故。
具體步驟如下:(1)從GrafanaLabs官網(wǎng)下載所需版本的Grafana壓縮包,并解壓到自定義位置。(2)默認(rèn)端口為3000,初始用戶名與密碼均為admin,登錄后修改密碼。(3)設(shè)置所需的Data Sources,這里選擇Influxdb并輸入所需的數(shù)據(jù)庫(kù)的名稱,點(diǎn)擊Save&Test驗(yàn)證是否成功連接。(4)創(chuàng)建新的Dashboard,并根據(jù)數(shù)據(jù)類型選擇合適的可視化工具(Visualization)。Grafana社區(qū)中有許多plugins可供用戶進(jìn)行選擇,極大增強(qiáng)了數(shù)據(jù)的展示效果。再通過使用Grafana中自帶的Query,Variables等功能展示需要的數(shù)據(jù)。最終可以將完成的Dashboard轉(zhuǎn)化為json文件進(jìn)行輸出。(5)Grafana自帶告警功能(Alert)。在Alert面板中設(shè)置上下閾值,當(dāng)測(cè)量數(shù)據(jù)超出閾值范圍后就會(huì)進(jìn)行告警,可以選擇告警的方式,如短信、郵箱等。
監(jiān)控系統(tǒng)的顯示效果如下圖所示:
(1)熱力站1#熱泵三網(wǎng)供水溫度(℃)監(jiān)控效果如圖2所示。
圖2 熱力站1#熱泵三網(wǎng)供水溫度(℃)監(jiān)控效果
(2)中繼泵站一級(jí)網(wǎng)供水流量(m3/h)監(jiān)控效果如圖3所示。
圖3 中繼泵站一級(jí)網(wǎng)供水流量(m3/h)監(jiān)控效果
(3)隔壓站二級(jí)網(wǎng)供水壓力(MPa)監(jiān)控效果如圖4所示。
圖4 隔壓站二級(jí)網(wǎng)供水壓力(MPa)監(jiān)控效果
(4)多個(gè)監(jiān)控值集群監(jiān)控效果如圖5所示。
圖5 多個(gè)監(jiān)控值集群監(jiān)控效果
在長(zhǎng)輸供熱系統(tǒng)中,應(yīng)用基于Telegraf+InfluxDB+Grafana的監(jiān)控系統(tǒng),能夠?qū)崿F(xiàn)對(duì)測(cè)量數(shù)據(jù)的實(shí)時(shí)監(jiān)控,有利于工作人員及早發(fā)現(xiàn)問題并及時(shí)解決,提高了對(duì)于風(fēng)險(xiǎn)的抵抗能力,同時(shí),系統(tǒng)架構(gòu)簡(jiǎn)單,便于運(yùn)行人員進(jìn)行維護(hù)。