惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cisco Talos Blog
Cisco Talos Blog
K
Kaspersky official blog
T
The Exploit Database - CXSecurity.com
NISL@THU
NISL@THU
AWS News Blog
AWS News Blog
V2EX - 技术
V2EX - 技术
Google DeepMind News
Google DeepMind News
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
Security @ Cisco Blogs
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Recent Commits to openclaw:main
Recent Commits to openclaw:main
J
Java Code Geeks
Microsoft Azure Blog
Microsoft Azure Blog
Attack and Defense Labs
Attack and Defense Labs
Jina AI
Jina AI
The Last Watchdog
The Last Watchdog
W
WeLiveSecurity
H
Help Net Security
V
Visual Studio Blog
宝玉的分享
宝玉的分享
C
Cybersecurity and Infrastructure Security Agency CISA
T
Threat Research - Cisco Blogs
IT之家
IT之家
Hugging Face - Blog
Hugging Face - Blog
Latest news
Latest news
T
Tor Project blog
I
Intezer
美团技术团队
GbyAI
GbyAI
T
Tailwind CSS Blog
Last Week in AI
Last Week in AI
博客园 - 三生石上(FineUI控件)
Google DeepMind News
Google DeepMind News
Scott Helme
Scott Helme
Y
Y Combinator Blog
博客园 - 司徒正美
T
Tenable Blog
O
OpenAI News
N
News and Events Feed by Topic
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
V
Vulnerabilities – Threatpost
P
Palo Alto Networks Blog
博客园 - 聂微东
酷 壳 – CoolShell
酷 壳 – CoolShell
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Threatpost
Google Online Security Blog
Google Online Security Blog
Apple Machine Learning Research
Apple Machine Learning Research
云风的 BLOG
云风的 BLOG
Help Net Security
Help Net Security

吴润写字的地方

从零构建 A 股 ETF 动量轮动系统:一个量化新手的完整指南 2025 年 8 月 Digest 2025 年 7 月 Digest 2025 年 6 月 Digest 2025 年 5 月 Digest 2025 年 4 月 Digest 清明桐庐行 2025 年 3 月 Digest 2024 年终总结 换车 崇明岛一日游 夜游徐汇滨江绿地 2023 年终总结 踏春之浦康休闲公园 香港澳门行 读「投资第一课」有感 皮皮玩球 Chrome 插件推荐 Go 并发之道:并发介绍 The Night Agent 我是如何使用 ChatGPT 的 2022 年终总结 在 Ubuntu 上搭建 MinIO 2021 年终总结 Golang 不可寻址的理解 Golang 的 defer 关键字使用注意事项 恭王府 强制删除 k8s terminating 状态命名空间 PromQL 计算 CPU 使用率 PromQL 如何计算变化(率) 奥森的向日葵 Go Modules - checksum mismatch 错误解决 CDN 使用初探 k8s 介绍 再探 798 解决 gin 路由冲突问题 wu.run 域名正式使用 GoLand 使用指南 macOS 软件推荐 2020 这一年 Python 循环列表删除元素的注意事项 Mac 下的定时任务工具:Launchctl Linux 服务器搭建 VNC 可视化桌面 Jenkins 个别 job 页面打开超时的解决方法 遇见 Aamir Khan Hexo 从 GitHub 到阿里云 『从未说出口的秘密』词云分析 768 的秋天 北戴河 Outing 飞盘记 三里屯夜景 爬虫图解:轮子哥关注了哪些人 2017-06-30 GitHub+Hexo 搭建个人网站详细教程 特朗普税改 如果有一天,苹果和微信只能选一个,你会选哪一个? About | 吴润写字的地方 Links | 吴润写字的地方 Memos | 吴润写字的地方
Trickster 使用
2021-07-22 · via 吴润写字的地方
Table of Contents

介绍

Trickster 是 comcast 开源的 HTTP 反向代理缓存,能够加快 TSDB(时间序列数据库,如 Prometheus)查询速度。

目的

在 k8s 集群里使用 Trickster 代理 Prometheus,验证 Trickster 能够加快 Grafana 查询的速度。

注:集群中已部署 Prometheus 和 Grafana

安装

根据官方文档,Trickster 提供以下安装方式:

  • Docker
  • k8s
  • Helm
  • 源码安装

本次通过 Helm 安装,安装步骤见这里

通过 Helm 安装

添加 Trickster Helm repo:

helm repo add tricksterproxy https://helm.tricksterproxy.io

查看是否添加成功:

# helm search repo tricksterproxy
NAME                    	CHART VERSION	APP VERSION	DESCRIPTION
tricksterproxy/trickster	1.5.4        	1.1        	Trickster is an HTTP Reverse Proxy Cache and ti...

到这里,需要看下 Trickster 的配置信息,即 values.yaml

为了能让 Trickster 跑起来,该配置文件 values.yaml 中,需要注意以下配置项:

origins

里面的 originURL,填写已有的 Prometheus 地址,即 Trickster 将代理这个地址,并将查询的数据缓存

caches

Trickster 支持多种缓存类型,如:memory、bbolt、badger、filesystem 和 redis,其中使用 memory 缓存是默认方式,基于 sync.Map,这里就直接使用默认的 memory 方式,建议生产环境使用 filesystem 和 redis 方式

replicaCount

pod 数量,默认是 1,这里也是直接使用默认值

service

即 k8s 服务暴露的方式,这里使用 lb 方式暴露服务,需要在里面的 annotations 配置:

service.beta.kubernetes.io/alibaba-cloud-loadbalancer-force-override-listeners: "true"
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-id: 这里填写 lb 实例 id
service.beta.kubernetes.io/alicloud-loadbalancer-protocol-port: http:80

注:使用的是阿里云 k8s 集群

并将 service 里面的 type 改为:LoadBalancer

ingress

如果上述的 service 暴露方式不是 LoadBalancer,而是想通过 ingress 暴露服务,修改 ingress 配置项即可

resources

资源的 limits 和 requests 配置,这里填的是:

resources:
  limits:
    cpu: "2"
    memory: 4Gi
  requests:
    cpu: "1"
    memory: 2Gi

通过命令安装:

helm upgrade -i trickster tricksterproxy/trickster -f values.yaml --namespace monitoring --debug

使用自定义的 values.yaml 安装 trickster,安装在 monitoring 命名空间下,安装过程开启 debug 模式,可以输出详细的安装过程。

检查是否安装成功,可以直接访问 http://lb-IP:8480/trickster/ping 地址,进行健康检查:

curl http://lb-IP:8480/trickster/ping
pong

另外,可以直接访问: http://lb-IP:8480/metrics 查看 Trickster 的 metrics 数据

注:这里是通过 lb 方式暴露服务,lb-IP 是 lb 的 IP 地址,8480 是 Trickster 默认的代理端口

验证

现在来看看使用 Trickster 后,Grafana 中同样的查询有没有加速,以及加速了多少。

首先在已有的 Grafana 上添加一个新的 data source,URL 为 Trickster 反向代理地址:http://lb-IP:8480

找一个查询比较耗时的 panel,做两次实验,每个实验有两组,data source 分别为原生的 Prometheus 和给 Prometheus 做了代理的 Trickster,每组实验 refresh 面板 15 次,通过 Grafana 的 Query Inspector 查看每次 refresh 查询耗时,结果如下:

实验一

查看该 panel 过去 1 小时的数据,refresh 时间是 10s,结果:

原生 Prometheus 查询时间共计:42s,平均查询时间:2.8s Trickster 查询时间共计:13.899s,平均查询时间:0.9266s

实验二

查看该 panel 过去 3 小时的数据,refresh 时间是 10s,结果:

原生 Prometheus 查询时间共计:108s,平均查询时间:7.2s Trickster 查询时间共计:22.579s,平均查询时间:1.505s

结论

初步验证 Trickster 能够加快时序数据库如 Prometheus 的查询速度。

原理

那 Trickster 为什么能加快 Prometheus 的查询速度呢?

因为每次加载或重新加载仪表盘时,大多数仪表盘都会从时间序列数据库请求整个时间范围的数据,而 Trickster 的 Delta Proxy 会检查客户端查询的时间范围,以确定哪些数据点已经被缓存,并仅请求 Prometheus 上真正需要的数据点,这种增量查询,将大大加快图表的加载时间。

注意事项

  • 上述过程只是为了测试使用 Trickster,供参考。