写点什么

开源的监控技术栈除了 ELK,还有 InfluxData 的 TICK

  • 2018-11-17
  • 本文字数:3570 字

    阅读完需:约 12 分钟

开源的监控技术栈除了ELK,还有InfluxData的TICK

应用程序是会表达的,而时序数据就是它们的语言之一。DevOps,云计算和容器技术改变了我们编写和运行应用的方式。基于一些列开源项目,InfluxData 及其社区正在致力于提供一套现代化且灵活的监控工具包。


在过去的十年中,容器,虚拟机,云计算改变了一切。这些变化发生快速,我们需要能够应对这种变化速度的环境,应用程序也需要以一种更便于维护的方式继续演进。因此,我们需要理解应用的行为,准备好应对故障,进而改进应用。现在我们已经拥有了相应的工具和技术,只需要将它们集成起来去理解应用如何运行,基础设施如何演进,并最终理解系统故障进而提升性能。

监控日志

我们一直在读日志,也有一些工具能帮助我们理解应用行为。我们做这些是因为:


  1. 我们必须信任某些东西。光靠屏幕上的信息,我们是没法理解应用行为的。我们需要知道用户如何使用应用,出现了多少异常。可以跟踪的指标有很多,把它们结合起来才能在我们的系统中建立信任。

  2. 我们希望能预测未来。我们希望将预测建立在我们识别出的各类指标和行为上,这样就能够判断我们自身是否在成长,有多少成长,在未来还能够成长多快。有了这些信息,我们可以设计一个方案,或许还能预测一些不太好的事件。


日志样例


系统监控组使用一个叫“tail”的强大命令来读日志。通常,我们的应用通过这种方式表达。至于日志,有一个基础或者说正常状态。如果日志在正常状态下持续输出,那么没问题。如果日志输出地过快或者过慢,那么就有问题了,需要采取纠正措施。



日志并不是理解应用最聪明的方式,但却是最常见的,人人都在用这种方式监控应用。我们现在肯定可以做的更好,不过这个涉及到日志的特性。


日志是描述性的,包含大量信息。将它们保存在数据库中的代价太大。由于日志通常是纯文本格式,它们并不容易索引。这意味着引擎必须努力去理解日志间的关系并且支持搜索信息。如果你有很多日志,或者正在用日志记录应用中发生的一切,你需要一个很好的系统来支持。这很难,但也不是不可能。


有很多工具和服务能够将日志结合并且计算出正在发生的事件,比如 Logstash,Kibana,Elasticsearch,NewRelic,CloudWatch,Graphite 等等。它们中有些是以服务形式提供,有些是开源项目,有些两种形式兼有。关键一点是有很多的选择。

选择日志监控工具

如何选择合适的工具取决于你正在做的事情。有一些场景你需要日志来与人辩论或者仅仅用于存档。既然日志包含正在发生的事件的详细信息,你就可以将日志用于这些场景。当出现一个异常时,你可以断定它的类型。日志更多是用来获取这样的信息的。


然而,在一些其他的场景中,你仅仅想知道应用是如何运行的,比如说日志是变多了还是变少了,异常在时间上又是如何分布的。你并不需要知道究竟发生了什么事,它们为什么发生–你只需要知道应用在行为上有改变就行了。另一方面,你每天同时也在使用时序数据来帮助理解系统行为。时序数据并没有日志那么详细–它们是另一种语言。比如说,CPU、内存的使用率就是时序数据。


你不能仅仅使用时序数据而不使用日志,因为有些问题必须借助日志才能解决。我并不是要在这里辩论日志和时序数据谁更好,因为你很可能两种都需要,它们都有价值。不仅仅两种你都需要,实际上日志就是时序数据的一种形式。如果你用时间序列和值来简化日志,我们可以做一些计算,日志也会更容易索引。



你实际上是在将日志转换成时序数据。想象一下你的应用中有多少登录,多少异常,或者如果你是一家金融公司,有多少笔交易,这些都是时序数据,因为它们是时间点上的一个值,一次登录。它们是时间上的一个分布。这就是时序数据的含义。日志就是可以这样被转换的。这不是一个整数或者一个值,而是从不同角度看的一个日志。


简单说,你可以将日志简化为仅仅一个值以及对应的时间点,你可以将这些时间点进行聚合,比较等等。如果花 10 分钟思考一下你的应用,你能拿到很多时序数据。


另外,所有你能从服务器获得并且使用的资源都是时序数据。你可以使用应用数据统计来可视化它们,进而理解突增的异常率是怎样导致内存使用率上升的。



作为开发者,我们知道,5 年前我们做的所有事情如今会显得很复杂。我们现在的目标是将事情简化。简单的事情更容易解释给别人也容易维护。对于时序数据,我就是这样做的:一个值和一个时间,值是一个数字。有了这种模型,你可以做一些计算,聚合它们,创建一个图表,用代价不那么高昂的方式从应用中提取信息。然而,与 Cassandra,MySQL,MongoDB 这些传统的通用工具相比,InfluxDB 更适合用来处理这类数据,因为它专门为持续查询,保留策略等特定场景提供了功能特性,而不是一套序列和压缩的优化特性。

使用 InfluxDB 作为日志存储

InfluxDB 是一个时序数据库。你可以将应用或服务器产生的所有信息推送到这个数据库。它是一个在 Windows 和 Mac 上都可以下载的 Go 二进制文件,很容易安装和启动。InfluxDB 使用 InfluxQL 表达。这意味着你可以使用与 SQL 很相似的语言来查询这个数据库,而 SQL 你已经很熟悉了,不需要学习另一个新语言。这里是选择 InfluxDB 的一些理由的总结。


  • 容易上手

  • 熟悉的查询语法

  • 无外部依赖

  • 开源

  • 水平可扩展

  • 一套结合紧密的时序数据平台的成员


InfluxDB 拥有很大的用户群和社区。结合以下讨论的 InfluxData 平台的其他组件,InfluxDB 创建了一个全栈监控系统,同时支持非常规时序数据(非固定时间间隔发生的事件)和常规时序数据(固定时间间隔的事件指标),如下。



在 InfluxData,我们做了一系列基准测试来展示为什么你需要选择合适的时序数据库而不是你喜欢的那类数据库。InfluxDB 和其他可对比的数据库间的写性能差异很大。基准测试通常有倾向性,但是我们会通过独立测试尝试将它们变得更客观。参考 InfluxDB 与 Elasticsearch, MongoDB,Cassandra 和 OpenTSDB 的对比基准测试。

搭建现代化监控系统

InfluxData 拥有一套全栈的开源项目-- TelegrafInfluxDBChronografKapacitor 。 它们在一起构成 TICK 栈。


构建监控或事件系统的完整栈


  1. Telegraf 是服务端的一个指标采集和数据发送代理,它是一个可以下载和启动的 Go 二进制文件,使用起来非常简单。你可以在每个服务器上安装一个 Telegraf,将它配置为从所在服务器上采集信息。Telegraf 对各类指标,事件,运行它所在的容器或系统的日志,从第三方 API 拉取的指标甚至通过 StatsD 和 Kafka 消费者服务监听到的指标都提供了集成。Telegraf 是插件化的,并提供输入和输出插件,输出插件可以将指标发送至各类数据仓库,服务,消息队列,比如 InfluxDB,Graphite,OpenTSDB,Datadog,Librato,Kafka,MQTT,NSQ 等等。如果你已经有一个监控系统,并且正在寻找一个强大的采集器,你可以使用 Telegraf。



  1. InfluxDB 是存储引擎,可作为所有带有大量时间戳数据使用场景的数据仓库,包括 DevOps 监控,日志数据,应用指标,物联网(IoT)传感器数据以及实时分析数据。所有来自 Telegraf 的指标都可以被发送至 InfluxDB。InfluxDB 可以被配置为仅仅保留特定时长的数据,从系统中自动过期并删除不再需要的数据,这样可以节省机器的存储空间。InfluxDB 还提供了一个类似 SQL 的查询语言来进行数据交互。



  1. Chronograf 是 InfluxData 平台 TICK 栈的用户接口组件,在 Chronograf 上可以看到所有存储在 InfluxDB 的数据,这样就能构建健壮的查询和告警。Chronograf 使用简单,包含一些模板和库让你能够迅速构建带有实时可视化数据的仪表盘。你也可以在 Chronograf 上管理 InfluxDB 和 Kapacitor。如果你不打算使用 Chronograf,还有其他实现 InfluxDB 输出插件的项目,包括 Grafana。



  1. Kapacitor 是 TICK 栈的本地实时流式数据处理引擎,可以被配置为基于监听到的指标,对正在发生的事件提前采取措施。它可以同时处理来自 InfluxDB 的流式数据和批数据。Kapacitor 允许嵌入自定义逻辑或者用户定义的函数来处理动态阈值告警,对指标进行模式匹配,计算概率统计异常,以及基于告警执行类似动态负载均衡的特定动作。你可以发送 Kapacitor 告警到兼容的事件管理集成组件,包括 HipChat,OpsGenie,Alerta,Sensu,PagerDuty,Slack 等等。比如,Kapacitor 可以发送一条消息到 PagerDuty,如果夜里发生了问题你可以被通知到,或者发送一条消息到 Slack。



启动 InfluxDB 并运行整个 TICK 栈是相当简单的。你可以运行二进制文件或者 Docker 容器,这样一个监控系统就正常运转了。但是一个监控系统真正的目标是当基础设施出问题或者应用宕机时通知你。如果你的监控系统和服务器一起宕掉了,那么它就没有正常工作。所以你需要信任你的监控系统。你需要将它与应用以及基础设施解耦,这样你能 100%确定当应用和服务器宕掉时监控系统仍然能正常工作。你需要知道这不是一个简单的目标,也不仅仅意味着一些 Docker 运行命令。


不是人人都能管理一个监控系统


查看英文原文:How to Use the Open Source TICK Stack to Spin Up a Modern Monitoring System for Your Application and Infrastructure


2018-11-17 00:002993

评论

发布
暂无评论
发现更多内容

开箱即用!教你如何正确使用华为云编译构建服务CodeArts Build!

华为云PaaS服务小智

云计算 软件开发 华为云 编译构建

博睿动态|GOPS全球运维大会2023上海站即将开启!

博睿数据

可观测性

大模型在数据分析场景下的能力评测

Kyligence

数据分析 Kyligence Copilot

挑战吧,HarmonyOS应用开发工程师

HarmonyOS开发者

HarmonyOS

协同发展,生态聚合丨1024程序员节暨「源聚一堂」开源技术沙龙(北京站)成功举办

开放原子开源基金会

如何制作二维码会议签到系统?

草料二维码

1024 有奖征名|来给矩阵起源办公室的新猫取名字呀~

MatrixOrigin

1024 MatrixOrigin MatrixOne

幸福里基于 Flink & Paimon 的流式数仓实践

字节跳动云原生计算

flink paimon

​交易所开发 PancakeSwap DeFi 成功的秘密:您的 DEX 发展蓝图

区块链软件开发推广运营

交易所开发 dapp开发 区块链开发 链游开发 NFT开发

等保测评后还要花很多钱做等保整改吗?

行云管家

等保 等级保护 等保测评 等保2.0

如何确定Apache Kafka的大小和规模

互联网工科生

kafka

一站式 DB2 数据管理解决方案

NineData

sql 数据 客户端 db2 NineData

把握效率与最优性:Dijkstra算法的探索

高端章鱼哥

算法 计算机 Dijkstra

多款国产操作系统安装数据库干货文档汇总(含Oracle/MySQL/国产数据库等)

墨天轮

MySQL 数据库 oracle 国产操作系统 麒麟软件

1024程序员节|是时候,展示真正的实力了!

Openlab_cosmoplat

1024 1024程序员节

Op丨ARB链dapp代币合约质押项目系统开发

l8l259l3365

EndNote 21 for mac破解版 EndNote 21激活安装

iMac小白

EndNote 21下载 EndNote 21破解版 EndNote 21 mac

如何为3D模型设置自发光材质?

3D建模设计

材质 纹理 贴图

揭示Lombok的代码设计缺陷:探索封装问题

树上有只程序猿

lombok Java 开发

Microsoft Remote Desktop for Mac 10.9.4中文版

iMac小白

microsoft remote desktop

焕新升级!新一代云原生可观测平台

华为云原生团队

云计算 容器 云原生 边缘计算

如何使用透明贴图实现火焰效果

3D建模设计

材质 纹理 贴图

苹果Mac电脑思维导图软件XMind for mac中文破解版

iMac小白

XMind下载 XMind2023 XMind破解版 XMind中文版 XMind Pro

得物 Redis 设计与实践

得物技术

redis 架构 运维

战略牵手OXY精英设计、朗生、MPE美亚,小度合作生态重构再迎重要时刻

新消费日报

关于数据库分片你需要知道的

遥遥知识库

Java 分布式数据库 后端 数据库分片 关于XX你应该知道的

TuGraph Analytics图建模研发:为图计算业务提速增效

TuGraphAnalytics

分布式 图计算 图平台 图研发 图运维

出海 SaaS 企业增长修炼手册2:Kyligence 落地 PLG 是如何避坑的?

Kyligence

指标管理 SaaS 增长

Acrobat Pro DC 2023中文直装版 专业PDF编辑

iMac小白

Acrobat Pro DC 2023 Adobe Acrobat Pro DC下载 Adobe Acrobat Pro DC破解

HarmonyOS多音频播放并发政策及音频管理解析

HarmonyOS开发者

HarmonyOS

开源的监控技术栈除了ELK,还有InfluxData的TICK_软件工程_Influxdata_InfoQ精选文章