当前位置: 首页 > article >正文

【云原生 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

http://www.kler.cn/a/145610.html

相关文章:

  • k8s使用nfs持久卷
  • 分子动力学模拟里的术语:leap-frog蛙跳算法和‌Velocity-Verlet算法
  • 基于单片机的智能台灯设计
  • STM32 ST7735 128*160
  • 2000-2010年各省第三产业就业人数数据
  • 2025.1.20——二、buuctf BUU UPLOAD COURSE 1 1 文件上传
  • 51单片机蜂鸣器发出悦耳的声音
  • cocos游戏引擎制作的滚动框地图防止误点操作的简单方法
  • vue.config.js详细说明
  • 基于jmeter的性能全流程测试
  • Java算法小结-Arrays的应用
  • SASS的导入文件详细教程
  • 每日一题(LeetCode)----哈希表--有效的字母异位词
  • 【LabVIEW学习】3.labview制作安装程序
  • C语言标准
  • TikTok 将开源“云中和”边缘加速器
  • 通过一个例子理解pytest的fixture的使用
  • npm配置最新淘宝镜像
  • 五大自动化测试的 Python 框架
  • centos 7.9 下利用miniconda里的pyinstaller打包python程序为二进制文件操作方法
  • 物联网AI 无线连接学习之蓝牙基础篇 协议的发展
  • 【ES6.0】- Promise对象
  • 打开CMD的六种方法,CMD快捷键,CMD命令大全及详解
  • 【自主探索】基于 frontier_exploration 的单个机器人自主探索建图
  • 乘法原理 LeetCode 828. 统计子串中的唯一字符
  • 顺序查找(线性查找),折半查找(二分或对分查找),分块查找(索引顺序查找)