隨着互聯網的發展,已然成為一個數據的世界。了解數據庫TPS(每秒事物處理)、QPS(每秒查詢數),對他們進行頁面可視化也顯得越發重要,對此介紹自己對一套可視化監控系統的開發流程和監控庫的理解和運用。
首先先表述一下自己對grafana+influxDB+telegraf的配合使用:
Telegraf是一個用Go語言編寫的代理程序,可采集系統和服務的統計數據,並寫入InfluxDB數據庫。Telegraf具有內存占用小的特點,通過插件系統開發人員可輕松添加支持其他服務的擴展,
InfluxDB 是一個開源分布式時序、事件和指標數據庫,它具有的三大特性:
1. Time Series (時間序列):可以使用與時間有關的相關聚合函數
2. Metrics(度量):你可以實時對大量數據進行計算
3. Eevents(事件):它支持任意的事件數據,
它的核心概念:
database相當於mysql中的database
measurement相當於mysql中的表
point相當於mysql中的行
tag相當於mysql中的索引,只支持字符串類型
field相當於mysql中的列,支持多種類型
retention policy保存策略,這是influxdb特有的屬性,rp指定數據在influxdb中的保存時間,時間已過,influxdb會自動清除數據。influxdb不支持修改語句,雖然有刪除語句,但是不建議使用
continuous queries 特色功能之一,相當於定時任務。
它涵蓋的聚合函數:
1、count()函數:返回一個(field)字段中的非空值的數量。
2、DISTINCT()函數:返回一個字段(field)的唯一值。
3、MEAN() 函數:返回一個字段(field)中的值的算術平均值(平均值)。字段類型必須是長整型或float64。
4、MEDIAN()函數:從單個字段(field)中的排序值返回中間值(中位數)。中值是在一組數值中居於中間的數值。字段值的類型必須是長整型或float64格式。
5、SPREAD()函數:返回字段的最小值和最大值之間的差值。數據的類型必須是長整型或float64。
6、SUM()函數:返回一個字段中的所有值的和。字段的類型必須是長整型或float64。
一些基本命令:
1、influx 進入命令行,
2、操作數據庫:show databases (顯示所有數據庫),create/drop database <數據庫名> (創建/刪除對應數據庫) ,use <數據庫名> (進入指定數據庫) ,
3、操作表:show measurements(顯示數據庫中給所有表),insert <表名> , hostname=<索引> value=<有效值> (新建表名,並插入一條數據數據),drop measurement
<表名> 刪除表
4、數據保存策略:show retention policies on <數據庫名> 查看當前數據庫保存策略,
create/alter/drop retention policy <策略名>
on <數據庫名>
duration <存儲時間>
replication
1
<默認策略default>
創建修改刪除對應數據庫的對應策略(存儲時間h,d,w)
它具有的以上特點讓其與數據實時監控形成完美契合。成為開發監控系統的首選數據庫之一。
Grafana是一個純html/js的web應用,是一個開源儀表盤工具。具有儀表板排列,數據源添加,訪問權限的配置,開源,兼容多瀏覽器等特點,但也存在一些不足,如alert不能使用變量,時間格式為utc,數據安全有待考量,數據分析帶有缺陷等。
特征:
1、面板:包含圖形、singlestat 、表、熱圖、提醒清單,文本、儀表板列表
2、儀表板功能:變量(variables)、注釋(animation)、文件夾、播放列表、搜索、分享、時間范圍、進出口、腳本儀表板,JSON模型等
3、數據源:Graphite、Promthus、influxDB、mysql等
4、警報:引擎規則、度量、通知
開發面板注意事項和遇到的問題:
1、grafana 插件安裝:docker 進入grafana容器內,通過命令行
grafana-cli plugins list-remote (查看可下載安裝的grafana插件)
grafana-cli plugins install/remove <plugin-id> <version> (安裝/移除指定插件)
grafana-cli plugins ls (查詢已安裝插件列表)
grafana-cli plugins update (<plugin-id>) 更新一個或多個插件
也可通過指定插件地址下載
2、儀表板中變量的使用
儀表板中的變量使用比較普遍,在grafana中變量定義可參考官網設定自己想要的變量類型。
變量的使用類型:$<varname> (方便讀寫,不能再單詞中使用) 或 [[varname]],grafana中查詢數據庫是更改默認格式${var_name:option},在聚合函數中使用變量名 ${tag_varname},Dashboard中如果存在跳轉在跳轉地址中帶上指定參數變量 url?var-<varname>="value"&var-<varname>="value"
開發流程簡單介紹:
將telegraf安裝至目標主機中(具體查詢telegraf安裝)配置telegrafan開機啟動systemctl start telegraf.service ; service telegraf status;systemctl enable telegraf.service;配置好數據采集和數據庫后,准備安裝grafana配置,當然安裝方法太多,我這介紹一下當前使用量較多的docker (runcher)安裝部署grafana監控系統:本機安裝好docker之后 運行
docker run -d -p 3000:3000 grafana/grafana (后面可跟版本號) 生成一個本地grafana 容器,運行在本地3000端口,然后可以通過
docker exec -it <contianer_id> /bin/bash 進入容器更改一些對應
的grafana配置,然后我們就可以開始開發我們需要的對一個監控面板了,具體文檔查看http://docs.grafana.org/guides/getting_started/相關開發流程,部署,開發完成之后,通過docker commit 容器打包生成鏡像
,(記住一定要打docker tag)然后可通過Runcher容器管理工具部署到對應環境中這樣便完成整個過程,也可在部署環境中完程開發需求。