获取客户 Prometheus 监控数据

业务背景 在排查问题时,想通过Grafana看板查看用户的监控,只能靠拍照,效率低,质量一般,设计一个方案能够方便的将问题出现前24小时的监控数据拿到,在本地导入,就能够在本地Grafana方便的查看。Prometheus 本身只提供了API查询的功能并没有导出数据功能,自带的Promtool也只提供验证规则文件和配置文件,调试等。 参考文章 Analyzing Prometheus data with external tools Prometheus backfilling 方案一:使用API导出转换成CSV 使用API查询,将查询到的数据转换成CSV,刚好Grafana有插件能够将CSV作为数据源,经过实验后并不是特别顺利,能够读取到CSV,但没有成功绘制出图像。 总结 经过实验后并不是特别顺利,能够读取到CSV但没有成功绘制出图像,看板中部分查询语句中包含看板变量,CSV数据源无法实现看板变量。 方案二:拷贝Prometheus数据文件 Prometheus 按照两个小时为一个时间窗口,将两小时内产生的数据存储在一个块(Block)中。每个块都是一个单独的目录,里面含该时间窗口内的所有样本数据(chunks),元数据文件(meta.json)以及索引文件(index)。其中索引文件会将指标名称和标签索引到样板数据的时间序列中。此期间如果通过 API 删除时间序列,删除记录会保存在单独的逻辑文件 tombstone 当中。 Prometheus 为了防止丢失暂存在内存中的还未被写入磁盘的监控数据,引入了WAL机制。WAL被分割成默认大小为128M的文件段(segment),之前版本默认大小是256M,文件段以数字命名,长度为8位的整形。WAL的写入单位是页(page),每页的大小为32KB,所以每个段大小必须是页的大小的整数倍。如果WAL一次性写入的页数超过一个段的空闲页数,就会创建一个新的文件段来保存这些页,从而确保一次性写入的页不会跨段存储。这些数据暂时没有持久化,TSDB通过WAL将数据保存到磁盘上(保存的数据没有压缩,占用内存较大),当出现宕机,启动多协程读取WAL...

创建: 2023-09-08 | 字数: 9674字 | 时长: 20分钟

Flask+Vue 前后端分离记录

如题,记录告警平台从原来的layui升级到Vue,并实现Flask+Vue前后端分离,记录前后端三种解决跨域的方式(有点像茴香豆的四种写法?没事,技多不压身) ...

创建: 2023-07-12 | 字数: 1177字 | 时长: 3分钟

Kubernetes 和 Flask 的组合

众所周知Minikube有自带的dashboard,输入命令minikuke dashboard打开链接就能看到,某日突发奇想,加入公司内部需要一个自定义的kubernetes监控平台,以满足一些自定义的需求呢?比如,我想看到最近新建的100个pod,或者我想看最近的k8s集群的events,使用flask来开发一个平台满足自定义,是一个不错的选择。 ...

创建: 2023-05-14 | 字数: 589字 | 时长: 2分钟

使用 prometheus_client 写一个 exporter

在使用filebeat收集系统日志时,有些网络设备的日志是filebeat通过UDP端口收集的,并且有多个filebeat在使用多个UDP端口同时运行,为了保证日志的完整性,为了避免filebeat意外停止。于是需要监控filebeat的运行状态,首先想到的是process_exporter,在调研了proces_exporter的功能后,发现process_exporter对监控同名的多个进程也很麻烦,不能够很好的解决问题。另外一个方案使用blackbox_exporter监控filebeat使用的端口,但是详细了解后发现blackbox_exporter并不支持监控UDP端口,于是开始考虑自己写一个。 ...

创建: 2023-02-07 | 字数: 1791字 | 时长: 4分钟

Virtualenv 和 Virtualenvwrapper 使用指南

python 的虚拟环境可以为一个 python 项目提供独立的解释环境、依赖包等资源,既能够很好的隔离不同项目使用不同 python 版本带来的冲突,而且还能方便项目的发布。 ...

创建: 2021-06-10 | 字数: 775字 | 时长: 2分钟