Trino 可观测性最佳实践

Trino 介绍

Trino 是一个开源的分布式 SQL 查询引擎,它提供了强大的交互式数据分析能力,能够快速查询和分析大规模数据集中的关键信息,如数据的聚合、关联和转换等。在数据湖和数据仓库环境中,Trino 对于高效处理和分析海量数据至关重要。本文将介绍如何通过 DataKit 数据采集工具将查询结果进行可视化展示和分析。

主要功能:

  • 高性能分布式查询:Trino 能够高效处理大规模数据集,支持对 PB 级数据的快速查询和分析,涵盖 CPU、内存、磁盘 I/O 和网络使用情况等关键指标。
  • 模块化架构:Trino 采用插件化设计,用户可以通过加载不同的连接器(Connector)灵活地启用或禁用对特定数据源的支持,以适应多样化的数据环境。
  • 低依赖性:Trino 使用 Java 编写,运行在 JVM 上,无需复杂的第三方依赖,易于部署和维护。
  • 配置灵活性:提供丰富的配置选项,允许用户自定义查询优化策略、资源限制、日志级别等,以满足不同的性能和安全需求。
  • 数据源兼容性:支持广泛的存储和计算平台,包括 Hive、Cassandra、Kafka、MySQL、PostgreSQL 等,确保与现有数据生态的无缝对接。
  • 多种部署方式:支持通过二进制文件、Docker 容器或 Kubernetes 等方式进行部署,适应不同的生产环境和运维需求。
  • 集成生态系统:Trino 能够轻松集成到现有的数据生态系统中,通过 JDBC 或 REST API 提供数据查询服务,支持与 BI 工具(如 Tableau、Grafana)或数据湖平台(如 AWS S3、Hadoop)的无缝对接。
  • 社区支持:作为开源项目,Trino 拥有活跃的社区支持,提供丰富的文档、插件和定期更新,帮助用户快速解决问题并扩展功能。
  • 自定义扩展:支持通过自定义函数、连接器或插件扩展功能,用户可以根据自身需求开发特定的查询逻辑或数据源支持,增强系统的灵活性和适应性。
    Trino 的可观测性必要性
  • 性能优化:通过监控 Trino 的查询性能指标(如查询延迟、执行时间、资源占用等),可以及时发现性能瓶颈,优化查询计划,提升数据处理效率,从而保障数据查询的响应速度和处理能力。
  • 资源管理:Trino 作为分布式查询引擎,需要合理分配计算资源(如 CPU、内存、磁盘 I/O)。监控资源使用情况有助于了解集群的负载状态,合理规划资源分配,避免资源浪费或过载。
  • 故障排查:当查询失败或性能下降时,Trino 的可观测性指标(如错误日志、资源使用峰值、查询失败率等)可以帮助快速定位问题源头,例如是否是某个节点故障、查询计划不合理或数据倾斜,从而加速故障恢复。
  • 数据安全与合规性:监控 Trino 的数据访问和查询行为,可以识别潜在的安全威胁,如未经授权的查询或数据泄露风险。同时,这些监控数据也可以作为合规性审计的依据,满足行业标准和法规要求。
  • 系统可靠性:通过持续监控 Trino 集群的运行状态(如节点健康、查询成功率等),可以及时发现潜在问题并采取措施,减少系统宕机时间,确保数据查询服务的高可用性。
  • 成本控制:在云环境或资源受限的情况下,监控 Trino 的资源使用情况可以帮助企业根据实际需求调整资源配置,优化成本,避免过度配置或资源不足。
  • 用户体验:Trino 的性能和稳定性直接影响数据分析师和业务用户的体验。通过监控和优化查询性能,可以确保用户能够快速获取数据洞察,提升用户满意度。
  • 自动化与弹性扩展:结合自动化工具,Trino 的监控指标可以用于实现集群的自动扩展和自愈能力。例如,在检测到查询负载过高时,自动增加计算节点或调整资源分配,确保系统始终处于最佳运行状态。
  • 数据治理与质量:通过监控 Trino 的数据处理流程和查询结果,可以发现数据质量问题(如数据不一致、脏数据等),并及时采取措施进行数据治理,确保数据的准确性和可靠性。

暴露 Trino 指标

Trino 是 Java 语言编写的应用,可以通过 jmx 方式获取到指标信息,JMX Exporter 是一个用于将 Java 应用程序的 JMX(Java Management Extensions)指标导出为 Prometheus 格式的度量数据的开源工具。

下载 JMX Exporter

bash 复制代码
mkdir /opt/trino/jmx-exporter
wget https://repo1.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/0.19.0/jmx_prometheus_javaagent-0.19.0.jar -O /opt/trino/jmx-exporter/jmx_prometheus_javaagent-0.19.0.jar

创建 JMX 配置文件

创建 jmx_config.yaml 文件,设置采集规则。

makefile 复制代码
rules:
- pattern: ".*"

修改 Trino 的 JVM 配置

/opt/trino/etc/jvm.config 中添加 JMX Exporter 的启动参数。

ruby 复制代码
-javaagent:/opt/trino/jmx-exporter/jmx_prometheus_javaagent-0.19.0.jar=3900:/opt/trino/jmx-exporter/jmx_config.yaml

重启 Trino 服务

执行以下命令,重启 Trino 服务以应用配置。

bash 复制代码
/opt/trino/bin/launcher restart

执行完毕后,可通过 http://主机ip:3900/metrics 查看获取到的所有监控数据。

观测云

观测云是一款功能强大的统一可观测平台,它提供了对多云环境、大数据平台、数据湖以及各类数据处理系统的实时监控和分析能力。Trino 会暴露一个 metrics 端点,DataKit 可以通过这个端点拉取指标数据。这样,DataKit 就可以根据用户的配置,定期从 Trino 收集指标数据,并将其发送到观测云平台。

部署 DataKit

DataKit 是一个开源的、跨平台的数据收集和监控工具,由观测云开发并维护。它旨在帮助用户收集、处理和分析各种数据源,如日志、指标和事件,以便进行有效的监控和故障排查。DataKit 支持多种数据输入和输出格式,可以轻松集成到现有的监控系统中。

登录观测云控制台,在「集成」 - 「DataKit」选择对应安装方式,当前采用 Linux 主机部署 DataKit。

采集器配置

进入 DataKit 安装目录下的 conf.d/prom 目录,复制 prom.conf.sample 并命名为 trino.conf

ini 复制代码
[[inputs.prom]]
  urls = ["http://127.0.0.1:3900/metrics"]                                                                                   
  ## 采 集 器 别 名                                                                                                                  
  source = "trino"                                                                                                          
  ## 采 集 间 隔  "ns", "us" (or "µs"), "ms", "s", "m", "h"                                                                         
  interval = "10s"                                                                                                              
  measurement_name = "trino"                                                                                                
  metric_types = []                                                                                                             
  ## TLS 配 置                                                                                                                    
  tls_open = false                                                                                                              
  [inputs.prom.tags]                                                                                                            
    service = ""  
  # ·················
  [inputs.prom.as_logging]
    enable = false
    service = "service_name"

  ## Customize tags.
  # [inputs.prom.tags]
    # some_tag = "some_value"
    # more_tag = "some_other_value"
  
  ## (Optional) Collect interval: (defaults to "30s").
  # interval = "30s"

  ## (Optional) Timeout: (defaults to "30s").
  # timeout = "30s"

主要修改 urls,配置好后保存,重启 DataKit 即可。

关键指标

登录观测云控制台,点击「指标」 -「指标管理」,输入"trino",就能查询采集到的指标。

场景视图

登录 观测云控制台,点击「场景」 -「新建仪表板」,输入 "Trino", 选择 " Trino ",点击 "确定" 即可添加视图。

监控器(告警)

  • Trino 失败的任务数量过高
  • Trino 失败的查询数量过高
  • Trino 过去 15 分钟内查询的执行时间总和过高

总结

通过监控 Trino 的关键性能指标,例如查询执行时间、任务失败率、资源使用情况(如 CPU 和内存)、以及集群的健康状态等,我们能够全面掌握 Trino 集群的运行状况。这些指标涵盖了查询性能、资源利用率、任务调度效率、以及集群的稳定性,为我们提供了一个全面的性能视图。通过综合监控这些关键指标,可以及时发现并解决潜在的性能瓶颈和故障,从而确保 Trino 集群的高效运行和稳定性。这种持续的监控和分析对于维护 Trino 的最优性能和进行有效的资源规划至关重要。

相关推荐
CodeDevMaster13 小时前
SkyWalking全平台部署指南:Windows、Linux与Docker环境下的安装配置与实践
分布式·微服务·监控
小霖家的混江龙5 天前
你的前端系统“有”监控,但它真的“有用”吗?
前端·架构·监控
一心0925 天前
Linux部署bmc TrueSight 监控agent步骤
linux·运维·服务器·监控·bmc truesight
可观测性用观测云9 天前
观测云,全球领先的监控观测平台亮相亚马逊云科技中国峰会!
监控
可观测性用观测云9 天前
Traefik 可观测性最佳实践
监控
可观测性用观测云14 天前
观测云OaC能力升级,通过Terraform实现配置闭环
监控
可观测性用观测云21 天前
HAProxy 可观测性最佳实践
监控
Hello World......1 个月前
互联网大厂Java面试:从Spring到微服务的深度探讨
数据库·spring boot·微服务·监控·java面试·日志管理·缓存技术
Sylvan Ding1 个月前
远程主机状态监控-GPU服务器状态监控-深度学习服务器状态监控
运维·服务器·深度学习·监控·远程·gpu状态