发布时间:2024-10-29 18:01
更多奇技淫巧欢迎订阅博客:https://fuckcloudnative.io
前言
在大厂工作久了,时常对一些工具的存在觉得理所当然。
比如说,需要计算资源的时候,一个配置文件就可以要来两百台虚拟化好的机子。需要试下缓存?点下鼠标就可以要到几十个配置好的 Redis 结点。
最省心的是,这些工具都已经根据工作流配置好了:鉴权、优化、网络连接等等通通不用你操心。
但一切要自己撸起袖子干的时候,开始发现各种踩坑。拿 Grafana 和服务监控来说:
服务监控到底咋配置?怎样保证数据安全?
保证健康的服务到底应该监控些什么?
配置好后的仪表盘为啥消失了?
查询 Query 又该咋写?
等等问题迎面而来。
中文世界里关于 Grafana 的教程少得令人发指,于是在卡拉搜索搭建服务监控的期间,特意记录了一下搭建的过程,写下了这篇详细的教程。
这篇文章(包括之后的一系列文章)里,我通过还热乎的经验介绍下我们是怎样一步步给卡拉搜索[1]配好 Grafana,来监控我们的搜索服务的。我们详细介绍怎样配置权限,具体运维监控的准则保证服务健康,以及用配套的代码让你搭起来第一个仪表盘。同时我们也会介绍一些在卡拉搜索的系统监控应用实践。
我保证这篇教程不会像 99% 的 CSDN 文章一样只是复制粘贴一些简单步骤,而是更多从原理出发,配合实践,一步步让你开始用服务监控,并从中受益。
如果你喜欢我的文章的话,请链接回来,分享给朋友或关注我们的公众号(HiXieke)。
在卡拉搜索,我们用 Grafana 监控所有的服务状态,从引擎到索引。完善的监控帮助我们实时了解卡拉的搜索延迟,慢搜索,Docker 状态等等。如果你对搜索引擎、数据库搜索、App 内搜索感兴趣,也欢迎通过博客[2] 或 Demo[3] 进一步了解或试用卡拉搜索
本文的例子中,我们用的是 Prometheus(普罗米修斯时序数据库)作为时序数据库。但实际上你可以用任何 Grafana 支持的数据源,只需要稍微替换一下配置即可(文中会讲)
本文的代码放在 GitHub 上,请参考:Grafana 教程代码[4]
开始前首先要问一个问题,Grafana 到底是什么。
Grafana 是一个监控仪表系统,它是由 Grafana Labs 公司开源的的一个系统监测 (System Monitoring) 工具。它可以大大帮助你简化监控的复杂度,你只需要提供你需要监控的数据,它就可以帮你生成各种可视化仪表。同时它还有报警功能,可以在系统出现问题时通知你。
Grafana 不对数据源作假设,它支持以下各种数据,也就是说如果你的数据源是以下任意一种,它都可以帮助生成仪表。同时在市面上,如果 Grafana 称第二,那么应该没有敢称第一的仪表可视化工具了。因此,如果你搞定了 Grafana,它几乎是一个会陪伴你到各个公司的一件称心应手的兵器。
Prometheus 本文中的例子,你没听过也没关系不影响阅读,把它想象成带时间戳的 MySQL 就好
Graphite
OpenTSDB
InfluxDB
MySQL/PostgreSQL
Microsoft SQL Server
等等