- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
本文分享自华为云社区《Prometheus搭乘华为云GaussDB(for Influx):让监控数据更安全》,作者:高斯Influx官方博客。
Prometheus 作为一个独立的开源项目,开发者和用户社区非常活跃,目前已经有超过650+位贡献者参与其研发工作上,并且超过120+项的第三方集成。是目前很受欢迎的系统监控和告警工具包。但是Prometheus默认使用本地数据库存储数据,作为正式业务,面临无法弹性扩容、没有副本、没有备份等问题。
GaussDB(for Influx)是一款分布式架构,云原生的时序数据库。可无缝被Prometheus集成,在协议上原生支持Prometheus远端存储对接至GaussDB(for Influx),解决了Prometheus在使用本地数据库存储数据的痛点问题。
Prometheus是一款开源的数据监控告警系统,支持数据的采集,存储,可视化以及告警功能。
1、Prometheus部署简单,依赖少。核心部分只有一个单独的二进制文件,不存在任何的第三方依赖(数据库,缓存等等) ,只需要下载一个包就可以运行起来。
2、功能完整,包括数据采集,存储,可视化,告警等功能,其基本架构如下:
数据采集部分,exporter用来采集监控数据,并向Prometheus server提供标准格式的监控数据。
数据存储部分,Prometheus Server负责数据的抓取和存储,其定时在目标上抓取metrics(指标)数据并保存到本地存储里面。Prometheus采用了一种Pull(拉)的方式获取数据,不仅降低客户端的复杂度,客户端只需要采集数据,无需了解服务端情况,而且服务端可以更加方便的水平扩展。Prometheus默认存储是一套TSDB本地部署的时序数据库。通过对接第三方时序数据库扩展历史数据的存储。
数据可视化部分默认提供了自带的UI界面,同时支持开源的Grafana工具。
Prometheus的默认部署的本地时序数据库,可以减少其自身运维和管理的复杂度,能够满足大部分用户监控规模的需求,但是随着业务的增长和数据规模的不断扩大,本地存储存在一些无法解决的问题:
1、存储大小有限,且无法灵活扩容。存储容量有限,无法存储时间太长的数据,存储能力的扩展目前依赖磁盘的扩展,本地磁盘的扩展涉及到迁移数据等。
2、没有副本,可靠性不足。本地存储数据只有一份,没有副本架构,一旦磁盘或者数据损坏,无法修复。
3、存储成本高。数据库一般使用性能较高的SSD,数据存储成本高。
4、存储安全性低。所有人都可以看到本地的数据,数据安全性不足。
5、数据难共享。本地存储的数据库,不利于其他分析组件的数据共享。
6、缺少备份能力。本地数据库没有备份能力,一旦业务数据损坏,无法恢复数据。
GaussDB(for Influx)作为一款采用分布式架构,云原生的时序数据库,作为Prometheus的远程存储,完美解决了使用本地数据库存储时遇到的问题,并且可维护性,读写性能等方面也做了很多的优化。
1、存储按需扩容。GaussDB(for Influx)依托云原生能力,采用计算存储分离架构,存储使用分布式共享存储,实现了秒级扩容,且在扩容过程中不中断业务,可以根据业务需求灵活进行扩展,不担心随着业务增长,存储不足的问题。
2、三副本高可用架构。GaussDB(for Influx)基于华为分布式共享存储,将数据存为3副本,保证数据可靠性。业务写一份数据到数据库,系统会根据一定的策略将数据复制成3份,分别存储。如果其中一份数据损坏,系统会根据其他两份数据,重新恢复出被损坏的数据。
3、支持冷热存储分离。GaussDB(for Influx)支持数据冷热分离存储,时序数据随着时间的推移,其被查询和分析的概率越来越低。用户可以根据时序数据的特点以及业务需求将数据划分为热数据和冷数据,热数据保存在分布式共享存储上保证读写的性能。冷数据保留在低成本存储上,降低存储的成本。GaussDB(for Influx)支持一键购买冷存储,如下图所示,可以根据需要购买对应的冷存储空间。
4、数据安全性高。GaussDB(for Influx)的存储文件对业务是不可见的,客户只能通过InfluxQL语句来访问数据,而无法看到真实文件。降低了数据被损坏和泄露的风险。
5、数据访问共享分析。数据存储到远端时,其他组件可以通过数据库访问地址,直接访问采集到的数据。
6、支持备份功能。GaussDB(for Influx)依托云原生能力,支持全量备份和增量备份,数据一旦异常,可以选择历史备份迅速恢复。
除了以上优势外,GaussDB(for Influx)还在在计算能力方面,采用集群架构,支持灵活扩容。在写入性能,查询性能,数据压缩率等方面做了很多优化。
Prometheus使用GaussDB(for Influx)非常方便。在华为云上购买GaussDB(for Influx)实例后,只需要在配置文件prometheus.yml中添加以下配置项,然后重启Prometheus服务即可。
remote_write:
- url:"http://127.0.0.1:8086/api/v1/prom/write?db=prometheus&u=rwuser&p=******
remote_read:
- url: “http://127.0.0.1:8086/api/v1/prom/read?db=prometheus&u=rwuser&p=******
其余参数不变。
重启后就可以通过Prometheus自带的界面来查询数据了。在浏览器中输入http://localhost:9090,打开Prometheus界面,输入一条查询语句,如下图:
可以看到已经可以查到相关数据。也可以通过登录GaussDB(for Influx)来查看写入的数据情况。登录数据库后,执行以下语句
use Prometheus
show measurements
可以看到Prometheus已经成功的写入数据了。如下图:
本文作者:华为 云数据库创新Lab & 华为云时空数据库团队
更多技术文章,关注GaussDB(for Influx)官方博客:
高斯Influx官方博客的博客_云社区-华为云
Lab官网:云数据库创新Lab-主页-华为云
产品首页:时序数据库_GaussDB for Influx_数据库-华为云
欢迎加入我们!
云数据库创新Lab(成都、北京)简历投递邮箱:xiangyu9@huawei.com
华为云时空数据库团队(西安、深圳)简历投递邮箱:yujiandong@huawei.com
我是普罗米修斯的新手。根据我到目前为止所阅读和尝试的内容,Prometheus 客户端库通过 HTTP 公开收集的指标,Prometheus 定期读取(抓取)。 在 Prometheus 抓取指标之前
我们正在寻求实现监控和警报解决方案,我们希望为每个功能单元提供自己的 prometheus 实例。 目前我们通过 prometheus-operator 使用单个 prometheus 实例运行它,但
在 Prometheus 中,有标签柯里化(Currying)。一些示例方法类似于 CurryWith()。 这是什么意思?抱歉,我没有找到这方面的任何文档。 问题可能与英语不是我的母语有关,我从函数
如何编写一个查询来输出过去 24 小时内实例的平均内存使用情况? 以下查询显示当前内存使用情况 100 * (1 - ((node_memory_MemFree + node_memory_Cache
我正在向 prometheus 发送与两个磁盘相关的数据。我想提醒一个磁盘的指标是否停止发送指标。假设我有 diskA 和 diskB,我正在收集 disk_up 指标。现在diskB失败了。在普罗米
我正在考虑将一些指标导出到 Prometheus,但我对我计划做的事情感到紧张。 我的系统由一个工作流引擎组成,我想跟踪工作流中每个步骤的一些指标。这似乎是合理的,有一个名为 wfengine_ste
我想根据 prometheus 值文件中的环境 qa/prod 设置环境特定的值 ## Additional alertmanager container environment variable
我有一个包含路径和状态代码的请求直方图...如果过去一小时内的错误比前一小时增加了 20%,我如何发出警报? 一个指标示例: {instance="someIp",instance_hostname=
我有一个包含路径和状态代码的请求直方图...如果过去一小时内的错误比前一小时增加了 20%,我如何发出警报? 一个指标示例: {instance="someIp",instance_hostname=
像这样的 Prometheus 规则文件: groups: - name: ./example.rules rules: - alert: ExampleAlert expr: vec
我们有多个在数据中心运行的 Prometheus 实例(我将它们称为 DC Prometheus 实例),以及一个额外的 Prometheus 实例(在下面的文本中我们将其称为“主”),我们在其中从
最近 prometheus-operator图表已弃用,图表已重命名 kube-prometheus-stack更清楚地反射(reflect)它安装了 kube-prometheus 项目堆栈,其中
我在 Amazon linux 2 实例上安装了 prometheus,这是我在用户数据中使用的配置: cat /etc/systemd/system/prometheus.service [Uni
我们正在使用 prometheus 运算符,我们现在想将数据存储在磁盘上,有一个博客对此进行了解释,但不确定来自查询的数字/大小响应 https://www.robustperception.io/h
目标 通过 grafana 和 prometheus 跟踪 RPM 和正常运行时间 情况 我们正在使用 django-prometheus -> To emit metrics fluent-bit
我有 Prometheus 从几台机器上的节点导出器中抓取指标,配置如下: scrape_configs: - job_name: node_exporter static_configs
我的 Prometheus 设置中有一个警报,它会在 someMetric > 100 时发送警报已对 5m 有效然后每隔 24h 重新发送警报根据下面的配置: prometheus-alert.ym
我有两个计数器。一个是测量累加器,另一个是测量计数。如何生成范围向量平均值? 我尝试了以下但得到的结果为空。 rate(my_events{type="sum"}[60s]) / rate(my_ev
因为 Prometheus 仅支持文本指标和许多 json 中的工具返回指标(如 Finatra、Spring Boot),所以我创建了一个简单的代理,将 json 转换为文本。因为我想将它用于多个源
Prometheus 是否可以计算指标具有特定值的持续时间(例如以秒为单位)? 一个简单的例子是 up可以有两个值的度量:1或 0指示系统是否正在运行。想象一下,自上周以来,系统多次上下波动。 我希望
我是一名优秀的程序员,十分优秀!