【云原生 Prometheus篇】Prometheus的动态服务发现机制与认证配置

目录

  • 一、Prometheus服务发现的方式
    • 1.1 基于文件的服务发现
    • 1.2 基于consul的服务发现
    • 1.3 基于 Kubernetes API 的服务发现
      • 1.3.1 简介
      • 1.3.2 基于Kurbernetes发现机制的部分配置参数
  • 二、实例一:部署基于文件的服务发现
    • 2.1 创建用于服务发现的文件
    • 2.2 修改Prometheus的配置文件
    • 2.3 浏览器访问测试
  • 三、实例二:部署基于consul的服务发现
    • 3.1 部署Consul服务
    • 3.2 在Consul 上注册 Services
    • 3.3 修改 prometheus 配置文件

一、Prometheus服务发现的方式

1.1 基于文件的服务发现

基于文件的服务发现是仅仅略优于静态配置的服务发现方式,它不依赖于任何平台或第三方服务,因而也是最为简单和通用的实现方式。

Prometheus Server 会定期从文件中加载 Target 信息,文件可使用 YAML 和 JSON 格式,它含有定义的 Target 列表,以及可选的标签信息。

1.2 基于consul的服务发现

下载地址:https://www.consul.io/downloads/

Consul 是一款基于 golang 开发的开源工具,主要面向分布式,服务化的系统提供服务注册、服务发现和配置管理的功能。
提供服务注册/发现、健康检查、Key/Value存储、多数据中心和分布式一致性保证等功能。

1.3 基于 Kubernetes API 的服务发现

1.3.1 简介


//基于 Kubernetes API 的服务发现
基于 Kubernetes API 的服务发现机制,支持将API Server 中 Node、Service、Endpoint、Pod 和 Ingress 等资源类型下相应的各资源对象视作 target, 并持续监视相关资源的变动

●Node、Service、Endpoint、Pod 和 Ingress 资源分别由各自的发现机制进行定义

●负责发现每种类型资源对象的组件,在 Prometheus 中称为一个 role

●支持在集群上基于 DaemonSet 控制器部署 node-exporter 后发现各 Node 节点,也可以通过 kubelet 来作为 Prometheus 发现各 Node 节点的入口


#基于 Kubernetes 发现机制的部分配置参数
# The API server addresses. If left empty, Prometheus is assumed to run inside of the cluster and will discover API servers automatically
and use the pod's
# CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.
[ api_server: <host> ]

# The Kubernetes role of entities that should be discovered. One of endpoints, service, pod, node, or ingress.
role: <string>

# Optional authentication information used to authenticate to the API server.
# Note that 'basic_auth', 'bearer_token'和'bearer_token_file' 等认证方式互斥;
[ bearer_token: <secret> ]
[ bearer_token_file: <filename> ]

# TLS configuration.
tls_config:
# CA certificate to validate API server certificate with.
[ ca_file: <filename> ]

# Certificate and key files for client cert authentication to the server.
[ cert_file: <filename> ]
[ key_file: <filename> ]

# ServerName extension to indicate the name of the server.
[ server_name: <string> ]

# Optional namespace discovery. If omitted, all namespaces are used.
namespaces:
names:
[ - <string> ]

1.3.2 基于Kurbernetes发现机制的部分配置参数

# The API server addresses. If left empty, Prometheus is assumed to run inside of the cluster and will discover API servers automatically
and use the pod's
# CA certificate and bearer token file at /var/run/secrets/kubernetes.io/serviceaccount/.
[ api_server: <host> ]

# The Kubernetes role of entities that should be discovered. One of endpoints, service, pod, node, or ingress.
role: <string>

# Optional authentication information used to authenticate to the API server.
# Note that 'basic_auth', 'bearer_token'和'bearer_token_file' 等认证方式互斥;
[ bearer_token: <secret> ]
[ bearer_token_file: <filename> ]

# TLS configuration.
tls_config:
# CA certificate to validate API server certificate with.
[ ca_file: <filename> ]

# Certificate and key files for client cert authentication to the server.
[ cert_file: <filename> ]
[ key_file: <filename> ]

# ServerName extension to indicate the name of the server.
[ server_name: <string> ]

# Optional namespace discovery. If omitted, all namespaces are used.
namespaces:
names:
[ - <string> ]

二、实例一:部署基于文件的服务发现

2.1 创建用于服务发现的文件

新建工作目录

cd /usr/local/prometheus

mkdir targets

在文件中配置所需的 target

vim targets/node-exporter.yaml
- targets:
  - 192.168.2.108:9100
  - 192.168.2.106:9100
  labels:
    app: node-exporter
    job: node


vim targets/mysqld-exporter.yaml
- targets:
  - 192.168.2.108:9104
  - 192.168.2.106:9104
  labels:
    app: mysqld-exporter
    job: mysqld

2.2 修改Prometheus的配置文件

修改 prometheus 配置文件,发现 target 的配置,定义在配置文件的 job 之中。

vim /usr/local/prometheus/prometheus.yml
......
scrape_configs:
  - job_name: nodes
    file_sd_configs:                  #指定使用文件服务发现
    - files:                          #指定要加载的文件列表
      - targets/node*.yaml            #文件加载支持通配符
      refresh_interval: 2m            #每隔 2 分钟重新加载一次文件中定义的 Targets,默认为 5m
  
  - job_name: mysqld
    file_sd_configs:
    - files:
      - targets/mysqld*.yaml
      refresh_interval: 2m

在这里插入图片描述

2.3 浏览器访问测试

#先重启服务
systemctl reload prometheus
#然后
浏览器查看 Prometheus 页面的 Status -> Targets

在这里插入图片描述

三、实例二:部署基于consul的服务发现

3.1 部署Consul服务

cd /opt/
unzip consul_1.9.2_linux_amd64.zip
mv consul /usr/local/bin/
#创建 Consul 服务的数据目录和配置目录
mkdir /var/lib/consul-data
mkdir /etc/consul/
#使用 server 模式启动 Consul 服务
consul agent \
-server \
-bootstrap \
-ui \
-data-dir=/var/lib/consul-data \
-config-dir=/etc/consul/ \
-bind=192.168.2.108 \
-client=0.0.0.0 \
-node=consul-server01 &> /var/log/consul.log &
#查看 consul 集群成员
consul members

在这里插入图片描述

3.2 在Consul 上注册 Services

#在配置目录中添加文件
vim /etc/consul/nodes.json
{
  "services": [
    {
      "id": "node_exporter-node01",
      "name": "node01",
      "address": "192.168.2.108",
      "port": 9100,
      "tags": ["nodes"],
      "checks": [{
        "http": "http://192.168.2.108:9100/metrics",
        "interval": "5s"
      }]
    },
    {
      "id": "node_exporter-node02",
      "name": "node02",
      "address": "192.168.2.106",
      "port": 9100,
      "tags": ["nodes"],
      "checks": [{
        "http": "http://192.168.2.106:9100/metrics",
        "interval": "5s"
      }]
    }
  ]
}
#让 consul 重新加载配置信息
consul reload		

浏览器访问:http://192.168.2.108:8500

在这里插入图片描述

3.3 修改 prometheus 配置文件

vim /usr/local/prometheus/prometheus.yml
......
  - job_name: nodes
    consul_sd_configs:                  #指定使用 consul 服务发现
    - server: 192.168.2.108:8500        #指定 consul 服务的端点列表
      tags:                             #指定 consul 服务发现的 services 中哪些 service 能够加入到 prometheus 监控的标签
      - nodes
      refresh_interval: 2m

在这里插入图片描述

systemctl reload prometheus
浏览器查看 Prometheus 页面的 Status -> Targets

在这里插入图片描述

#让 consul 注销 Service
consul services deregister -id="node_exporter-node02"

#重新注册
consul services register /etc/consul/nodes.json

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/183478.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

中国毫米波雷达产业分析2——毫米波雷达产业链分析

一、产业链构成 毫米波雷达产业链分为三部分&#xff1a;上游主要包括射频前端组件&#xff08;MMIC&#xff09;、数字信号处理器&#xff08;DSP/FPGA&#xff09;、高频PCB板、微控制器&#xff08;MCU&#xff09;、天线及控制电路等硬件供应商&#xff1b;中游主体是毫米波…

多线程 02

1.线程的常见构造方法 方法说明Thread()创建线程对象Thread(Runnable target)使用 Runnable 对象创建线程对象Thread(String name)创建线程对象&#xff0c;并命名Thread(Runnable target, String name)使用 Runnable 对象创建线程对象&#xff0c;并命名【了解】Thread(Threa…

【Flink】状态管理

目录 1、状态概述 1.1 无状态算子 1.2 有状态算子 2、状态分类 ​编辑 2.1 算子状态 2.1.1 列表状态&#xff08;ListState&#xff09; 2.1.2 联合列表状态&#xff08;UnionListState&#xff09; 2.1.3 广播状态&#xff08;BroadcastState&#xff09; 2.2 按键分…

YOLO目标检测——泄露检测数据集下载分享【含对应voc、coco和yolo三种格式标签】

实际项目应用&#xff1a;泄露检测数据集说明&#xff1a;泄露检测数据集&#xff0c;真实场景的高质量图片数据&#xff0c;数据场景丰富&#xff0c;含多个类别标签说明&#xff1a;使用lableimg标注软件标注&#xff0c;标注框质量高&#xff0c;含voc(xml)、coco(json)和yo…

Python爬虫-获取汽车之家新车优惠价

前言 本文是该专栏的第10篇,后面会持续分享python爬虫案例干货,记得关注。 本文以汽车之家新车优惠价为例,获取各车型的优惠价,示例图如下: 地址:aHR0cHM6Ly9idXkuYXV0b2hvbWUuY29tLmNuLzAvMC8wLzQyMDAwMC80MjAxMDAvMC0wLTAtMS5odG1sI3B2YXJlYWlkPTIxMTMxOTU= 需求:获…

电感热点温度概述及估算方法总结

🏡《电子元器件学习目录》 目录 1,什么是电感的热点温度2,热点温度参数意义3,热点温度计算方法3.1,测温估算法3.2,电阻变化估算法4,总结1,什么是电感的热点温度 电感的热点指电感的发热点,一般是电感的绕阻。电感的热点温度为电感绕阻的温度。 2,热点温度参数意义 电…

JDK11新特性

目录 一、JShell 二、Dynamic Class-File Constants类文件新添的一种结构 三、局部变量类型推断&#xff08;var ”关键字”&#xff09; 四、新加的一些实用API 1. 新的本机不可修改集合API 2. Stream 加强 3. String 加强 4. Optional 加强 5. 改进的文件API 五、移…

从0开始学习JavaScript--JavaScript模块化编程

JavaScript模块化编程是现代前端开发中的核心概念之一。通过模块化&#xff0c;能够将复杂的代码分割成独立的模块&#xff0c;提高代码的可维护性、可扩展性&#xff0c;同时实现代码的复用。本文将深入探讨JavaScript模块化的各个方面&#xff0c;包括模块的定义、导入导出、…

YOLOv8改进 | CARAFE既减少参数又提高精度的上采样方法

论文地址&#xff1a;官方论文地址点击即可跳转 代码地址&#xff1a;官方代码地址点击即可跳转 一、本文介绍 本文给大家带来的CARAFE&#xff08;Content-Aware ReAssembly of FEatures&#xff09;是一种用于增强卷积神经网络特征图的上采样方法。其主要旨在改进传统的上采…

Springmvc原理解析

1. DispatcherServlet springmvc的核心控制器&#xff0c;负责截获所有的请求&#xff0c;当截获请求后委托给HandlerMapping进行请求映射的解析工作&#xff0c;目的是找到哪一个Controller的方法可以处理该请求&#xff0c;找到后再交由给HandlerAdaptor去负责调用并返回Mod…

RT-Thread 线程间通信【邮箱、消息队列、信号】

线程间通信 一、邮箱1. 创建邮箱2. 发送邮件3. 接收邮件4. 删除邮箱5. 代码示例 二、消息队列1. 创建消息队列2. 发送消息3. 接收消息4. 删除消息队列5. 代码示例 三、信号1. 安装信号2. 阻塞信号3. 解除信号阻塞4. 发送信号5. 等待信号6. 代码示例 一、邮箱 RT-Thread 操作系…

15.Python 异常处理和程序调试

1. 异常处理 异常就是在程序执行过程中发生的超出预期的事件。一般情况下&#xff0c;当程序无法正常执行时&#xff0c;都会抛出异常。 在开发过程中&#xff0c;由于疏忽或考虑不周&#xff0c;出现的设计错误。因此&#xff0c;在后期程序调试中应该根据错误信息&#xff…

Vector - CANoe - Vector Hardware Manager以太网

前面的文章中有介绍过基于Network based mode和channel base mode的环境配置&#xff0c;不过我们都是使用比较旧的办法&#xff0c;在我使用了一段时间Vector Hardware Manager配置之后发现这个更加好用结合之前的配置方法&#xff0c;使用起来也更加的灵活&#xff0c;今天就…

Linux系统介绍及文件类型和权限

终端:CtrlAltT 或者桌面/文件夹右键,打开终端 切换为管理员:sudo su 退出:exit 查看内核版本号:uname -a 内核版本号含义:5 代表主版本号;13代表次版本号;0代表修订版本号;30代表修订版本的第几次微调;数字越大表示内核越新. 目录结构 /bin:存放常用命令(即二进制可执行程序…

Redis打包事务,分批提交

一、需求背景 接手一个老项目&#xff0c;在项目启动的时候&#xff0c;需要将xxx省整个省的所有区域数据数据、以及系统字典配置逐条保存在Redis缓存里面&#xff0c;这样查询的时候会更快; 区域数据字典数据一共大概20000多条,&#xff0c;前同事直接使用 list.forEach…

视频如何去水印?怎么下载保存无水印视频?

在社交媒体平台上&#xff0c;如某音、某手等&#xff0c;你是否曾经在观看视频时&#xff0c;因为烦人的水印而感到烦恼&#xff1f;是否曾经因为水印遮挡了关键信息&#xff0c;而错过了重要的内容&#xff1f;今天&#xff0c;我要向大家介绍三种视频去水印的方法&#xff0…

怎样通过代理ip提高上网速度

在当今互联网高度发达的时代&#xff0c;我们经常需要使用代理IP来隐藏自己的真实IP地址或提高网络连接速度。然而&#xff0c;有些用户可能会遇到代理IP无法提高网络速度的情况。那么&#xff0c;如何通过代理IP提高上网速度呢&#xff1f;以下是几个技巧&#xff1a; 1.选择…

【性能优化】CPU利用率飙高与内存飙高问题

&#x1f4eb;作者简介&#xff1a;小明java问道之路&#xff0c;2022年度博客之星全国TOP3&#xff0c;专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化&#xff0c;文章内容兼具广度、深度、大厂技术方案&#xff0c;对待技术喜欢推理加验证&#xff0c;就职于…

Redis入门教程

1. 什么是NoSql NoSQL一词最早出现于1998年&#xff0c;是Carlo Strozzi开发的一个轻量、开源、不提供SQL功能的关系数据库。2009年&#xff0c;Last.fm的Johan Oskarsson发起了一次关于分布式开源数据库的讨论&#xff0c;来自Rackspace的Eric Evans再次提出了NoSQL的概念&am…

在数组的指定位置插入指定元素值numpy.insert()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 在数组的指定位置插入指定元素值 numpy.insert() [太阳]选择题 请问以下代码中最后输出结果是&#xff1f; import numpy as np arr np.array([1, 2, 3]) print("【显示】arr ",…