赞
踩
TDengine 由北京涛思数据科技有限公司(TAOS Data)自主研发,而且不依赖于任何开源或第三方软件,拥有自主的知识产权。其应用领域涉及到物联网、车联网、工业互联网、IT运维等。接下来聊一下 TDengine 在IT运维监控领域
的应用。
TDengine 是一个时序数据库,所谓时序数据,就是以时间轴为维度至上而下的一系列序列(样本),尤其是在 IT 基础设施、运维监控系统和物联网中应用得最为广泛。当然时序数据库来说还有很多,比如 InfluxDB、Prometheus、Graphite等。而对于 TDengine,它有以下几个特点:
至于这些特点所代表的是什么意思,我认为只有你亲自实践和应用
之后才能有所体会。而我们为什么不选择传统的关系型数据库呢?尽管传统的关系型数据库也能够处理这些数据,但在面对物联网大数据时就会显得心有余而力不足。
接下来就是我们的安装部署环节,为了节省时间,我这里选择使用 Docker 方式进行部署。而对于 Docker 的安装,我之前的博客有做过详细介绍《Docker + Jenkins + Gitlab 自动化构建部署》,这里就不再过多赘述。想要了解更多 Docker 相关内容,可去其 Docker官方,里面介绍都非常详细。废话不多说,接下来直接进行安装部署。
1、pull 镜像
2、运行容器
-itd # -i:标准输入输出 -t:分配一个终端或控制台 -d:后台启动
-u root # 以root身份执行
--privileged=true # 拥有root权限
--name tdengine # 容器实例名
--restart=always # 容器随docker自启动,因为重启docker时,默认容器都会被关闭
-p # 映射端口
-v # 映射目录
-e # 指定时区
启动容器时,我映射了多个端口,关于这些端口,大家可以查看TDengine 官方端口说明。而我们用 Docker 启动的容器时,其时间和宿主机时间可能不一致,关于如何实现两者时间的一致性,大家可以参考我之前的博文《Docker容器与宿主机设置时间同步》。
3、安装 TDengine 客户端
注:这里很奇怪,在我没安装 TDengine 客户端之前,TDengine 容器的目录卷/etc/taos
总是映射(挂载)不到宿主机上,其实也不是映射不了,就是映射后宿主机的/etc/taos
是一个空文件夹,配置文件居然不见了,然后我就docker exec
进入容器后,找出配置文件所在路径xxx(具体路径忘了),不应该啊,不是在/etc/taos
吗。既然这样我就重新把这个目录xxx
挂载到/etc/taos
,这次总该没错了吧,结果宿主机目录依然为空。尽管容器是可正常运行的,但是外部根本访问不了 TDengine,那这将毫无意义啊,还占用我那么多端口。
还得出杀手锏啊,运行的容器总该要有客户端来登录吧,要不然每次都docker exec
进入,真麻烦。然后我就去 TDengine 官网下载客户端的源码包(下载地址传送门),安装很简单,直接运行压缩包里的可执行脚本文件即可(安装成功可看到successful字样)。然后你会发现宿主机的/etc/taos
居然出现了配置文件,当然这一切都回归正常了,外部也可正常访问了。不知道用 Docker 方式部署的小伙伴们有没有出现这个问题。
通过 TDengineGUI 看看是否可连接上部署好的数据库,配置完成后可看到连接成功。TDengineGUI 是由天大某团队开发的一款开源工具,该工具通过 TDengine RESTful 连接数据库,可对相关的表做简单的查询,还是挺方便的,大家可以体验一下,下载渠道为:GitHub、码云。
至此,TDengine 就已经部署完成!!
1、监控方案
在实际生产中,我制定了多套监控方案(告警这里先忽略,后续会讲到),分别为:
Exporter + prometheus + Grafana;
Telegraf + prometheus + Grafana;
Telegraf + TDengine + Grafana;
Telegraf + InfluxDB + Grafana。
我个人认为相对于 Exporter 来说,Telegraf 更容易管理和维护。首先 Exporter 是各种独立的资源包,尽管它是开箱即用,但是你并不能保证每个 Exporter 都是存活的。而对于 Telegraf 来说,它更集中。在说 Telegraf 之前先说一声 Telegraf 是什么?
2、Telegraf 介绍
Telegraf 是TICK Stack
的一部分,是一个轻量级插件驱动的服务器代理,用于收集和报告各种指标,包括从第三方 API 提取指标 , 它还具有输出插件,可将指标发送到各种其他数据存储、服务和消息队列,包括 InfluxDB、Graphite、OpenTSDB、Datadog、Librato、Kafka、MQTT、NSQ 等。 Telegraf 下载地址传送门,Telegraf 官方文档传送门。
3、相关部署文档
以上监控方案的部署文档在我之前的博客中有详细部署步骤(除了 InfluxDB,不过部署方法都大同小异),还没部署过得小伙伴可以去参考参考哦。
《Telegraf + Promethue + Grafana 监控平台》
《Telegraf + TDengine + Grafana 监控平台》
其实部署都很简单,重点在于监控指标,指标查询方法,用过 TDengine 的小伙伴应该都知道,其查询方式基本上和 mysql 的查询方式一致。
4、其他说明
相对于 Prometheus、InfluxDB 来说,其在 grafana web 展示中没有更多的模板,也就是说每个图表都需要手动创建,以及相应的指标查询(计算)sql 语句,因此要熟悉基本的 sql 查询语句、相关的 sql 函数、聚合等。不过相对于 Prometheus 来说,学习成本更低,因为 Prometheus 也有一套查询语言。关于如何选择时序数据库,这得根据你的应用场景,后续会继续对比分析各时序的优缺点、性能等。在者就是,TDengine 支持集群,而且是免费的,InfluxDB 也支持集群,但是其集群版是收费,而 Prometheus 却只支持单节点部署,因此接下来我会介绍使用 Prometheus 作为数据存储时,如何对其做远端扩展。
这里我采用 Prometheus 作为数据存储,同样跳过部署过程,由于 Prometheus 是单节点部署,没有集群或高可用,因此我们可以采用其他时序数据库作为远端存储,从而实现 Prometheus 仅收集数据,不存储数据,其数据可存储到其他时序数据库,如 InfluxDB、TimescaleDB、 PostgreSQL、TDengine 等。本次选择 TDengine 作为远端数据存储,关于 Prometheus 写入 TDengine,可参考 TD 官方文档,其实就是通过 Bailongma API 接口写入。
1、Bailongma 注意事项
Bailongma 源码包提供了 telegraf API 和 Prometheus API 的编译,针对 telegraf API 的编译方法我前面的博文也有具体步骤,Prometheus API 方式与其一致,但编译时可能会提示缺少相关依赖,根据提示执行即可,具体实例操作如下图:下图是在编译 Prometheus API 出现的小问题,根据提示执行即可。
当生成blm_prometheus
可执行文件时,表明编译成功。具体参数说明,可通过 ./blm_prometheus -h
进行查看。
2、Prometheus 写入配置
remote_write:
- url: "http://10.20.10.69:6666/receive"
remote_read:
- url: "http://10.20.10.69:6666/pull"
这样做的好处有什么呢?由于 Prometheus 是单节点的,不支持集群,因此存储就成为它的瓶颈,这时通过写入远端时序数据库就可解决集群这个瓶颈,最关键的是 TDengine 的集群版是免费的,而且性能也是非常好的,为 TDengine 官方的开源精神点赞。
3、监控告警
其实,以上仅仅是实现了数据的采集与存储,还差最后的告警。如果仅仅是采集数据,那在监控的领域中将是毫无意义的,因此我们还得配合 AlertManager 进行相应的告警阈值设置和告警操作(邮件、短信等),这个告警部分后面单独分享。
通过上面的简单介绍,其实 TDengine 还是挺人性化的,其有着我们熟悉的 sql 查询语句,而且还支持连续查询、数据订阅、缓存、报警监测等高级功能。再就是关于 TDengine 在监控领域的应用,重点不在于如何安装部署,而是在于其数据存储的性能,因为监控无非是做一个数据的存储。后续会继续分享各时序数据库的性能对比、应用场景以及告警操作等。
本文正在参与 拥抱开源 │ 涛思数据 TDengine 有奖征稿
活动链接:https://marketing.csdn.net/p/0ada836ca30caa924b9baae0fd33857c
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。