随着互联网的发展,已然成为一个数据的世界。了解数据库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容器管理工具部署到对应环境中这样便完成整个过程,也可在部署环境中完程开发需求。