写点什么

开源的监控技术栈除了 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:003003

评论

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

与AI相伴的一年

对枪吧

PS插件 Cartoon Maker - Clone激活中文最新版 一键生成卡通动漫风格插件

iMac小白

2023 最后一场技术会议 - QCon

air

#Qcon

癸卯年之大模型经验总结

穆雄雄

AI大模型 大模型时代 雄雄的小课堂

分享一套超有价值的JAVA开源MES系统

万界星空科技

mes #开源 云mes 开源mes 万界星空科技

聚道云软件连接器助力某券商公司实现资金系统与易快报的智能对接

聚道云软件连接器

案例分享

Acrobat Pro DC 2023 for Mac(PDF编辑器) 2023.006.20380永久激活版

mac

苹果mac Windows软件 PDF编辑和管理软件 Acrobat Pro DC

搜索引擎优化指南:SEO关键字、长尾关键字、短尾关键字以及反向链接

小万哥

程序人生 软件工程 后端开发 技术写作 SEO 优化

AI与深度学习的一年

十九是一只猫

MATLAB R2023b for Mac 最新破解版下载

iMac小白

AutoCAD 2024 for mac中文破解版下载

iMac小白

AE最新破解版 After Effects 2024 Mac永久激活版下载

iMac小白

星际争霸母巢之战 for Macv1.16.1汉化版

iMac小白

聚道云软件连接器助力知名美妆科技公司实现金蝶软件与银行系统对接

聚道云软件连接器

案例分享

奈斯启示录 Necesse for mac中文激活版

iMac小白

2023年总结:不上班的这半年!

王磊

代码人生

2023 年大模型技术基础架构盘点与开源工作速览

中杯可乐多加冰

foobar2000 for mac(经典音乐播放器) v2.6.0破解激活版

mac

音频播放器 苹果mac Windows软件 Foobar2000

无表情包不MEME,PADD 最具潜力的BRC20 meme

股市老人

基于大模型的图像视频处理技术总结

lisa

办公软件套装mac Office2021中文破解版下载

iMac小白

非技术人员怎么去判断体育赛事系统代码质量与规范

软件开发-梦幻运营部

好用的音频制作:Logic Pro X中文免激活最新

胖墩儿不胖y

Mac软件 音频制作软件 音频管理工具

Downie 4 v4.7.1中文版 Downie 4 安装下载

iMac小白

探索云原生化的服务架构体系的技术风向,攻克云原生化微服务架构的痛点和特性

洛神灬殇

微服务架构 云原生架构 #技术人的2023总结 火山引擎开发者社区

技术人的2023年总结:以梦为马,不负年华

言程序

大模型 AIGC 2023年技术盘点

i人福音:人工智能

双耳是聂

2023年度总结之大模型的微调

木子李

#技术人的2023总结

Java中的秘会厅ThreadLocal你了解吗?

架构虫哥

Java 并发编程 ThreadLocal java 并发 Java并发编程

我的2023技术总结:以梦为马,不负年华

言程序

大模型 #技术人的2023总结

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