prometheus监控数据远程写入Kafka集群
文章目录
- 前言
- 一、环境简介
- 1.1 环境简介
- 1.2 部署清单
- 1.3 组件版本
- 二、部署步骤
- 2.1 prometheus部署
- 2.2 kafka集群部署
- 2.3 prometheus-kafka-adapter部署
- 三、数据验证
- 四、总结
前言
根据项目要求,需将prometheus监控数据存储到kafka中。前面为了图方便就搭建了单机版的kafka进行验证,但是kafka中一直没有数据,后来部署了kafka集群,才解决了这个问题。
将prometheus监控数据写入到kafka中,大多数都是使用prometheus-kafka-adapter插件,当然如果条件允许,也可以自己开发。
一、环境简介
1.1 环境简介
#1 系统版本
[root@es2][/opt]
$cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)#2 可通外网
[root@es2][/usr/local/prometheus]
$ping -c 3 www.baidu.com
PING www.a.shifen.com (220.181.38.150) 56(84) bytes of data.
64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=1 ttl=51 time=6.65 ms
64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=2 ttl=51 time=6.48 ms
64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=3 ttl=51 time=5.95 ms--- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 5.950/6.363/6.652/0.306 ms
1.2 部署清单
| 序号 | IP | 主机名 | 部署服务 |
|---|---|---|---|
| 1 | 192.168.56.108 | es2 | prometheus |
| 2 | 192.168.56.116 | cydocker | docker,prometheus-kafka-adapter |
| 3 | kafka集群Ip192.168.56.101 | cnode1 | zk,kafka |
1.3 组件版本
| prometheus | 2.29.1 |
|---|---|
| docker | 20.10.14 |
| prometheus-kafka-adapter | 1.7.0 |
| kafka | 2.12-3.6.0 |
二、部署步骤
2.1 prometheus部署
#1 解压缩
[root@node1 package]# tar -zxvf prometheus-2.29.1.linux-amd64.tar.gz #2 移动并命名
[root@node1 package]# mv prometheus-2.29.1.linux-amd64 /usr/local/prometheus#3 创建数据存储路径
[root@es2][/usr/local/prometheus]
$ mkdir -p /data/prometheus#4 修改prometheus.yml文件
[root@es2][/usr/local/prometheus]
$vim prometheus.yml- job_name: "prometheus"# metrics_path defaults to '/metrics'# scheme defaults to 'http'.static_configs:- targets: ["localhost:9090"]# 远程写到prometheus-kafka-adaptor
remote_write:- url: "http://192.168.56.116:10401/receive" #这里换成部署prometheus-kafka-adaptor服务的节点IP#5 开启服务(只为测试用,正式环境请注册service)
/usr/local/prometheus/prometheus \--config.file=/usr/local/prometheus/prometheus.yml \--storage.tsdb.path=/data/prometheus \--storage.tsdb.retention.time=365d \--web.listen-address=0.0.0.0:9090 \--web.enable-admin-api \--web.enable-lifecycle
2.2 kafka集群部署
请参考我写的上一篇博客《kafka集群部署搭建【详细版】》,这里不错重复赘述,但是需要先创建好topic。
[root@cnode1][/opt/kafka_2.12-3.6.0/bin]
$ ./kafka-topics.sh --create --topic test1 --bootstrap-server cnode1:9092 --partitions 1 --replication-factor 3
2.3 prometheus-kafka-adapter部署
docker部署这里不做赘述,可以直接看其他人博客
#1 拉取镜像
[root@cydocker][~]
$ docker pull telefonica/prometheus-kafka-adapter:1.7.0#2 编写启动脚本
[root@cydocker][~/adapoter]
$ cat adapoter.sh
#!/usr/bin/env bash
docker run -d --name prometheus-kafka-adapter --restart=always -m 2g \
-e KAFKA_BROKER_LIST=192.168.56.101:9092 \
-e KAFKA_TOPIC=test1 \
-e PORT=10401 \
-e SERIALIZATION_FORMAT=json \
-e GIN_MODE=release \
-e LOG_LEVEL=debug \
-p 10401:10401 \
telefonica/prometheus-kafka-adapter:1.7.0#3 查看运行状态
[root@cydocker][~/adapoter]
$ docker ps |grep kafka
8d47b0210004 telefonica/prometheus-kafka-adapter:1.7.0 "/bin/sh -c /prometh…" 4 days ago Up 35 minutes 0.0.0.0:10401->10401/tcp, :::10401->10401/tcp prometheus-kafka-adapter
三、数据验证
登陆到kafka节点进行验证,结果如下:
[root@cnode1][/opt/kafka_2.12-3.6.0/bin]
$ ./kafka-console-consumer.sh --bootstrap-server cnode1:9092 --topic test1{"labels":{"__name__":"prometheus_tsdb_reloads_total","instance":"127.0.0.1:9090","job":"prometheus"},"name":"prometheus_tsdb_reloads_total","timestamp":"2024-11-14T04:39:38Z","value":"7"}
{"labels":{"__name__":"prometheus_tsdb_retention_limit_bytes","instance":"127.0.0.1:9090","job":"prometheus"},"name":"prometheus_tsdb_retention_limit_bytes","timestamp":"2024-11-14T04:39:38Z","value":"0"}
{"labels":{"__name__":"prometheus_tsdb_size_retentions_total","instance":"127.0.0.1:9090","job":"prometheus"},"name":"prometheus_tsdb_size_retentions_total","timestamp":"2024-11-14T04:39:38Z","value":"0"}
{"labels":{"__name__":"prometheus_tsdb_storage_blocks_bytes","instance":"127.0.0.1:9090","job":"prometheus"},"name":"prometheus_tsdb_storage_blocks_bytes","timestamp":"2024-11-14T04:39:38Z","value":"1239229"}
{"labels":{"__name__":"prometheus_tsdb_symbol_table_size_bytes","instance":"127.0.0.1:9090","job":"prometheus"},"name":"prometheus_tsdb_symbol_table_size_bytes","timestamp":"2024-11-14T04:39:38Z","value":"392"}
{"labels":{"__name__":"prometheus_tsdb_time_retentions_total","instance":"127.0.0.1:9090","job":"prometheus"},"name":"prometheus_tsdb_time_retentions_total","timestamp":"2024-11-14T04:39:38Z","value":"0"}
{"labels":{"__name__":"prometheus_tsdb_tombstone_cleanup_seconds_bucket","instance":"127.0.0.1:9090","job":"prometheus","le":"0.005"},"name":"prometheus_tsdb_tombstone_cleanup_seconds_bucket","timestamp":"2024-11-14T04:39:38Z","value":"0"}
{"labels":{"__name__":"prometheus_tsdb_tombstone_cleanup_seconds_bucket","instance":"127.0.0.1:9090","job":"prometheus","le":"0.01"},"name":"prometheus_tsdb_tombstone_cleanup_seconds_bucket","timestamp":"2024-11-14T04:39:38Z","value":"0"}
{"labels":{"__name__":"prometheus_tsdb_tombstone_cleanup_seconds_bucket","instance":"127.0.0.1:9090","job":"prometheus","le":"0.025"},"name":"prometheus_tsdb_tombstone_cleanup_seconds_bucket","timestamp":"2024-11-14T04:39:38Z","value":"0"}
四、总结
至此,prometheus监控数据推送到kafka集群验证完毕,大家如果有什么疑问,请及时和我沟通交流。
相关文章:
prometheus监控数据远程写入Kafka集群
文章目录 前言一、环境简介1.1 环境简介1.2 部署清单1.3 组件版本 二、部署步骤2.1 prometheus部署2.2 kafka集群部署2.3 prometheus-kafka-adapter部署 三、数据验证四、总结 前言 根据项目要求,需将prometheus监控数据存储到kafka中。前面为了图方便就搭建了单机…...
Excel使用-弹窗“此工作簿包含到一个或多个可能不安全的外部源的链接”的发生与处理
文章目录 前言一、探讨问题发生原因1.引入外部公式2.引入外部数据验证二、问题现象排查及解决1.排查公式2.排查数据验证3.特殊处理方式总结前言 作为一种常用的办公软件,Excel被大家所熟知。尽管使用了多年,有时候在使用Excel时候也会发生一些不太常见的现象,需要用心核查下…...
C++小白实习日记——Day 2 TSCNS怎么读取当前时间
和老板问了一下,今天就可以自己上手了: 用TSCNS写了一个cpp,运行出来老板说让我去看看另一个项目是怎么做的 用TSCNS和std库获取当前时间 #include <iostream> #include <iomanip> #include "tscns.h"using namespace std;TSCN…...
【Pythonr入门第二讲】你好,世界
"Hello, World!" 是一种传统的编程入门示例,通常是程序员学习一门新编程语言时编写的第一个程序。这个程序的目标非常简单:在屏幕上输出 "Hello, World!" 这个字符串。尽管它非常简单,但具有重要的象征意义和实际价值。 …...
3D Streaming 在线互动展示系统:NVIDIA RTX 4090 加速实时渲染行业数字化转型
随着科技的飞速发展,实时渲染正逐步成为游戏与实时交互领域的重要驱动力。与离线渲染不同,实时渲染需要极高的计算性能,对硬件设备尤其是GPU的性能要求极高。随着 RTX 4090 显卡的问世,其强大的算力和创新技术,为实时渲…...
Oracle 单机及 RAC 环境 db_files 参数修改
Oracle 数据库中 DB_FILES 定义了数据库中数据文件的个数,默认值为200,如果创建数据库文件时超过DB_FILES 定义的值就会报 ORA-00059 错误。 下面分别演示单机及 RAC 环境下修改 db_files 参数的操作步骤。 一、单机环境 1.查询当前参数值 SQL> sh…...
消息中间件分类
消息中间件(Message Middleware)是一种在分布式系统中实现跨平台、跨应用通信的软件架构。它基于消息传递机制,允许不同系统、不同编程语言的应用之间进行异步通信。 常见的消息中间件类型包括: 1. JMS(Java Message S…...
讯飞、阿里云、腾讯云:Android 语音合成服务对比选择
在 移动端 接入语音合成方面,讯飞和腾讯云等都是优秀的选择,但各有其特点和优势。咱们的需求是需要支持普通话/英语/法语三种语言,以下是对各个平台的详细比较: 一、讯飞语音合成介绍 与语音听写相反,语音合成是将一段…...
SpringBoot开发——整合AJ-Captcha实现安全高效的滑动验证码
文章目录 一、什么是AJ-Captcha二、项目配置1、Maven依赖配置2、滑动验证码的基本原理3、 后端实现3.1 生成滑动验证码图片代码解释3.2 校验滑块位置代码解释4、前端部分代码解释5、Redis 缓存滑动验证码信息5.1 Redis配置5.2使用Redis缓存验证码数据5.3 校验时从Redis获取总结…...
Spring Security 核心组件
Spring Security 是一个功能全面的安全框架,用于处理基于 Spring 应用程序的身份验证和授权。 它提供了开箱即用的支持,采用行业标准的做法和机制来保护你的应用。 无论你是开发简单的 Web 应用还是复杂的微服务架构,理解 Spring Security …...
聚焦 AUTO TECH 2025华南展:探索新能源汽车发展新趋势
随着“新四化”浪潮的推进,汽车行业正经历前所未有的变革。中国新能源汽车正逐渐走向世界。国内汽车制造巨头如比亚迪、吉利、奇瑞、长安等,已经将出口提升至核心战略地位。中国新能源汽车的发展,不仅推动了全球汽车产业的电动化转型…...
Python-简单病毒程序合集(一)
前言:简单又有趣的Python恶搞代码,往往能给我们枯燥无味的生活带来一点乐趣,激发我们对编程的最原始的热爱。那么话不多说,我们直接开始今天的编程之路。 编程思路:本次我们将会用到os,paltform,threading,ctypes,sys,…...
[STM32]从零开始的STM32 HAL库环境搭建
一、前言 之前在搭建STM32的标准库环境时就告诉过大家,开发STM32的方式主要有三种。一种是最原始但是效率最高的寄存器开发,另一种是效率仅次于寄存器难度相对较低的标准库开发,最后一种是最为简单但是程序效率最低的HAL库开发。如果对于初学…...
Docker部署Kafka SASL_SSL认证,并集成到Spring Boot
1,创建证书和密钥 需要openssl环境,如果是Window下,下载openssl Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions 还需要keytool环境,此环境是在jdk环境下 本案例所使用的账号密码均为: ka…...
Pr:音频过渡
Adobe Premiere Pro 自带一组共三个音频过渡 Audio Transitions效果。 对音频剪辑之间应用交叉淡化 Crossfade过渡,操作方式类似于应用视频过渡效果。 对于交叉淡化,要保证前剪辑的出点之后及后剪辑的入点之前有足够的预留内容(也称“手柄”&…...
HarmonyOs鸿蒙开发实战(17)=>沉浸式效果第二种方案一组件安全区方案
1.沉浸式效果的目的 开发应用沉浸式效果主要指通过调整状态栏、应用界面和导航条的显示效果来减少状态栏导航条等系统界面的突兀感,从而使用户获得最佳的UI体验。 2.组件安全区方案介绍 应用在默认情况下窗口背景绘制范围是全屏,但UI元素被限制在安全区内…...
从 const 到 mutable:C++ 中的优雅妥协与设计智慧
在C编程中,const 关键字被广泛应用于确保数据的不变性,它提供了一种强大的机制来防止意外修改,从而增强了代码的可靠性和可维护性。然而,在某些特定场景下,完全的不变性可能会限制设计的灵活性,这时 mutabl…...
CC工具箱使用指南:【CAD导出界址点Excel】
一、简介 群友定制工具。 面图层导出界址点Excel表之前已经做过好几个,这个工具则是将CAD导出Excel。 CAD数据如下: 工具将如上截图中的边界线导出界址点Excel,并记录下面内的文字。 二、工具参数介绍 点击【定制工具】组里的【CAD导出界…...
制作图片马常用的五种方法总结
目录 1. 以文本方式2. Windows的cmd方式3. PhotoShop方式4. 16进制5. Linux的cat方式 图片马:就是在图片中隐藏一句话木马。利用.htaccess等解析图片为PHP或者asp文件。达到执行图片内代码目的。 1. 以文本方式 用文本方式(这里用notepad。如果用记事本的方式打开…...
深入解析MySQL中的事务处理
一、引言 事务是数据库管理系统执行过程中的一个逻辑单位,它由一系列操作组成,这些操作要么全部执行,要么全部不执行。事务在保证数据的一致性、隔离性、持久性方面发挥着重要作用。MySQL作为一个广泛使用的数据库管理系统,对事务…...
【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
