SLS基于telegraf的监控快捷接入

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
可观测监控 Prometheus 版,每月50GB免费额度
简介: 介绍sls基于telegraf提供的监控模板快捷接入功能

telegraf简介

Telegraf是InfluxData开发的一个数据采集器(collector), 用来收集各种监控数据, 因为其非常灵活的插件体系, 社区贡献了大量的采集插件, 从操作系统层面的指标到各种数据库, 中间件的插件应有尽有.

Telegraf vs Prometheus Exporter

在开源届另一个非常流行的监控方案是Prometheus, 在云原生里几乎就是标准, Prometheus本身是pull模型, 因此对于使用者来说只需要把需要采集的监控数据暴露出来, 最主要的方式就是exporter. 官网也有一个长长的exporter列表: Exporters and integrations | Prometheus
可以看出来telegraf和Prometheus exporter实现的功能是比较类似的, 但由于Prometheus exporter本身是只给Prometheus使用的, 因此他跟telegraf之间也有一些差别:

开发模式

Prometheus exporter是独立开发的, 每个exporter都有自己的代码仓库和维护人员, 没有统一的社区进行管理, telegraf则是将所有插件维护在一个代码仓库下, 好处是可以在全局进行考虑, 例如类似功能的插件可以进行合并, 以减少用户的选择成本, 或者当某个功能可以通过一些配置组合实现时就不必重新开发, 代码可以复用

部署方式

Prometheus exporter是独立部署的, 每个exporter需要监听一个端口来提供http服务, 而telegraf是单实例部署, 也不监听端口
在某些场景下, 比如jvm的监控, exporter有更好的集成, 通过一个javaagent就可以完成对jmx指标的采集和暴露, 对于telegraf来说则需要借助jolokia将jmx协议转换成http协议再进行采集

配置管理

每个Prometheus exporter都有自己的配置文件, 也没有共通的配置文件规范, 意味着开发者可以自行选择, 可以用yaml也可以用json, 或者用命令行参数控制等, telegraf则有统一的配置文件规范, 使用toml格式, 其中相同名称的字段含义也是相同的, 因为在同一个代码仓库维护, 维护者会进行把关
当需要对label做一些自定义时, 例如重命名一个label, 或者添加删除某个label, 忽略一些不需要的metric, Prometheus的配置维护在服务端, telegraf中这些配置是和采集配置在一起的, 可以通过processor插件做各种处理

对于小规模的用户自行围绕Prometheus构建监控系统来说, Prometheus exporter提供了更好的灵活性, 同时和Prometheus, grafana的整合都更好, 但当平台需要集成采集的配置管理时, 会带来额外的复杂度, 基于以上考虑, SLS决定集成telegraf作为一个logtail的插件, 提供各种监控采集的能力
当然, 由于SLS出色的开放性, 原先使用Prometheus的用户无需改变使用习惯, 我们支持Prometheus remote write写入, 并且兼容查询API, 因此telegraf接入的方式对于这部分用户来说只是多了一个选择

使用telegraf的痛点

  1. 需要自行管理配置文件的下发, 更新等
  2. 开源软件总是提供尽量灵活的配置, 但缺少最佳实践, 需要用户去探索
  3. 数据之间难以打通, 需要制定label的规范(exporter也有同样的问题)

SLS通过将telegraf作为logtail的插件来统一管理他的部署和配置下发更新, 提供了图形化配置界面, 统一了label等规范, 并且提供了内置的dashboard来解决以上问题

logtail telegraf插件的工作机制

自动安装

当logtail初次获取到telegraf插件的配置时, 会自动下载telegraf进行安装

中心化配置管理

logtail配置中包含了telegraf配置, logtail拿到时会将其提取出来, 生成对应的telegraf配置, 更新和删除也与logtail配置同步, 由于logtail配置在sls服务端进行管理, 因为telegraf也同时拥有了中心化配置管理的能力

采集

logtail实现了influxdb的http协议, 在telegraf中的output使用influxdb, 输出目标填写logtail地址(用户无需填写, 创建采集配置时自动生成), telegraf的数据将通过logtail中转写入sls服务端存储
6FF0F452-8280-41F3-BE99-1FCE2C7539AC.png

模板化监控配置

SLS不仅负责了telegraf的配置的生命周期管理, 甚至也会帮助用户来生成最佳实践的配置, 对用户来说只需要通过图形化的界面wizard即可完成配置:
0648B647-9422-40F5-A60D-29946FFA1BB3.png
在这个简单的页面背后, 我们也做了不少工作, 例如其中集群名称是我们作为最佳实践要求用户填写的, 否则需要依赖采集插件是否产出了相关的label, 如果没有则用户的数据就会混在一起. 统一提供了instance label, 让用户在采集不同的中间件时都可以用相同的label识别, 实际telegraf插件的开发者在表达instance这个含义时可能使用instance, 也可能使用server, host等名称, 很容易混淆; 我们也根据最佳实践去除了一些几乎没用的指标来节省存储空间, 对一些指标的命名做了规范化等
完成接入配置后, 我们也提供了自动生成的dashboard:
E2E7498C-CC51-4920-99D2-9BA3B5E9DE66.png
F51123D5-D934-437B-9F77-4396A5D8380C.png
C885D5FD-0BDA-4010-9D34-7947F1B94B9B.png

后续也会进一步整合预置的告警规则, 让用户一键开启即可完成整个监控所需工作

数据源支持情况

FF08F716-D19D-463A-94BC-52C2BEA8A778.png
新的数据源在持续开发中, 也欢迎大家反馈需要接入的数据源, 如果认可我们做的事情, 也欢迎加入: SLS团队长期招聘人才,欢迎对大数据、监控、可观察性、前端可视化、移动端开发、机器学习等有兴趣的同学可发简历至邮箱: luoxing.klx@alibaba-inc.com
也欢迎加入我们的用户交流群或微信公众号了解SLS的最新信息
image.png

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
目录
相关文章
|
4月前
|
存储 Prometheus 监控
程序开发中的监控和日志分析
监控和日志分析在软件开发中至关重要,它们帮助实时了解应用状态、及时发现并解决问题。监控确保系统稳定运行,优化性能和资源;日志分析则助于追踪问题根源、监测用户行为并提供安全审计。利用如Prometheus、ELK Stack等工具可实现高效监控与日志管理,从而优化应用性能和用户体验。
182 0
|
6月前
|
运维 Prometheus 监控
监控与日志分析:运维的双剑合璧
【6月更文挑战第21天】监控与日志分析在IT运维中至关重要。监控守护系统健康,通过性能指标、服务状态和安全事件预警确保稳定性;日志分析则用于问题追踪,通过错误、访问和安全日志定位故障。监控工具如Prometheus与日志分析工具如ELK堆栈协同工作,统一平台、合理告警、定期分析和团队协作是高效运维的关键。这两者的结合助力运维人员迅速响应和解决问题,维护系统稳定。
|
2月前
|
存储 监控 固态存储
如何监控和优化 WAL 日志文件的存储空间使用?
如何监控和优化 WAL 日志文件的存储空间使用?
|
2月前
|
监控 网络协议 CDN
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
阿里云国际监控查询流量、用量查询流量与日志统计流量有差异?
|
4月前
|
存储 运维 监控
监控与日志管理:保障系统稳定运行与高效运维的基石
【8月更文挑战第16天】监控与日志管理是保障系统稳定运行和高效运维的基石。它们不仅能够帮助企业及时发现并解决问题,还能够为性能调优、资源优化和业务决策提供有力支持。因此,在构建系统架构时,企业应高度重视监控与日志管理的规划和实施,确保它们能够充分发挥作用,为企业的发展保驾护航。同时,随着技术的不断进步和应用场景的不断拓展,监控与日志管理也将持续演进和创新,为企业带来更多的价值和便利。
|
3月前
|
运维 Kubernetes 监控
Loki+Promtail+Grafana监控K8s日志
综上,Loki+Promtail+Grafana 监控组合对于在 K8s 环境中优化日志管理至关重要,它不仅提供了强大且易于扩展的日志收集与汇总工具,还有可视化这些日志的能力。通过有效地使用这套工具,可以显著地提高对应用的运维监控能力和故障诊断效率。
343 0
|
4月前
|
SQL 数据库 Java
Hibernate 日志记录竟藏着这些秘密?快来一探究竟,解锁调试与监控最佳实践
【8月更文挑战第31天】在软件开发中,日志记录对调试和监控至关重要。使用持久化框架 Hibernate 时,合理配置日志可帮助理解其内部机制并优化性能。首先,需选择合适的日志框架,如 Log4j 或 Logback,并配置日志级别;理解 Hibernate 的多级日志,如 DEBUG 和 ERROR,以适应不同开发阶段需求;利用 Hibernate 统计功能监测数据库交互情况;记录自定义日志以跟踪业务逻辑;定期审查和清理日志避免占用过多磁盘空间。综上,有效日志记录能显著提升 Hibernate 应用的性能和稳定性。
52 0
|
4月前
|
开发者 前端开发 编解码
Vaadin解锁移动适配新境界:一招制胜,让你的应用征服所有屏幕!
【8月更文挑战第31天】在移动互联网时代,跨平台应用开发备受青睐。作为一款基于Java的Web应用框架,Vaadin凭借其组件化设计和强大的服务器端渲染能力,助力开发者轻松构建多设备适应的Web应用。本文探讨Vaadin与移动设备的适配策略,包括响应式布局、CSS媒体查询、TouchKit插件及服务器端优化,帮助开发者打造美观且实用的移动端体验。通过这些工具和策略的应用,可有效应对屏幕尺寸、分辨率及操作系统的多样性挑战,满足广大移动用户的使用需求。
68 0
|
4月前
|
存储 运维 监控
Entity Framework Core 实现审计日志记录超棒!多种方法助你跟踪数据变化、监控操作,超实用!
【8月更文挑战第31天】在软件开发中,审计日志记录对于跟踪数据变化、监控用户操作及故障排查至关重要。Entity Framework Core (EF Core) 作为强大的对象关系映射框架,提供了多种实现审计日志记录的方法。例如,可以使用 EF Core 的拦截器在数据库操作前后执行自定义逻辑,记录操作类型、时间和执行用户等信息。此外,也可通过在实体类中添加审计属性(如 `CreatedBy`、`CreatedDate` 等),并在保存实体时更新这些属性来记录审计信息。这两种方法都能有效帮助我们追踪数据变更并满足合规性和安全性需求。
95 0
|
4月前
|
存储 JSON 监控
FastAPI日志之谜:如何揭开Web应用监控与调试的面纱?
【8月更文挑战第31天】在现代Web开发中,日志记录对于监控应用状态、诊断问题和了解用户行为至关重要。FastAPI框架提供了强大的日志功能,使开发者能轻松集成日志记录。本文将详细介绍如何在FastAPI中设置和利用日志,包括基础配置、请求响应日志、错误处理和结构化日志等内容,帮助提升应用的可维护性和性能。
169 0