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 的最优性能和进行有效的资源规划至关重要。