Prometheus 服务发现

news2024/11/16 1:20:26

1、基于文件的服务发现

基于文件的服务发现是仅仅略优于静态配置的服务发现方式,它不依赖于任何平台或第三方服务,因而也是最为简单和通用的实现方式。
Prometheus Server 会定期从文件中加载 Target 信息,文件可使用 YAML 和 JSON 格式,它含有定义的 Target 列表,以及可选的标签信息。

创建用于服务发现的文件,在文件中配置所需的 target 
cd /usr/local/prometheus
mkdir file_sd
cd file_sd/
vim node-exporter.yaml
- targets:
  - 20.0.0.10:9100
 
  labels:
    svc: node              
 
cd .. 
vim prometheus.yml
- job_name: "node-exporter"
    scheme: http
    metrics_path: /metrics
    file_sd_configs:                    #指定使用文件服务发现
    - files:                            #指定要加载的文件列表
      - file_sd/node-exporter.yaml      #文件加载
systemctl restart prometheus.service

如何实现不重载普罗米修斯重载配置文件

vim prometheus.yml
refresh_interval: 1m   #添加配置
 
 
systemctl restart prometheus.service
 
 
cd file_sd/
vim node-exporter.yaml
- 20.0.0.60:9100
 添加监控的ip

普罗米修斯服务器

20.0.0.60

2、基于 Consul 的服务发现

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

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

20.0.0.20服务器
cd /opt
上传consul_1.9.2_linux_amd64.zip
unzip consul_1.9.2_linux_amd64.zip
mv consul /usr/local/bin/
consul version

cd /usr/local/
mkdir consul
cd consul/
mkdir data conf logs
consul agent \
 -server \
 -bootstrap \
 -ui \
 -data-dir=/usr/local/consul/data \
 -config-dir=/usr/local/consul/conf \
 -bind=20.0.0.20 \
 -client=0.0.0.0 \
 -node=consul-server01 &> /usr/local/consul/logs/consul.log &
 
netstat -lntp | grep consul

使用consul发现目标主机

cd /usr/local/consul/conf
vim nodes.json
{
  "services": [
    {
      "id": "node_exporter-node01",
      "name": "node01",
      "address": "20.0.0.10",
      "port": 9100,
      "tags": ["nodes"],
      "checks": [{
        "http": "http://20.0.0.10:9100/metrics",
        "interval": "5s"
      }]
    },
 
    {
      "id": "node_exporter-node02",
      "name": "node01",
      "address": "20.0.0.80",
      "port": 9100,
      "tags": ["nodes"],
      "checks": [{
        "http": "http://20.0.0.80:9100/metrics",
        "interval": "5s"
      }]
    }
 
  ]
}
 
consul reload

关联普罗米修斯

普罗米修斯服务器
vim prometheus.yml
 
- job_name: "node-exporter1"
    scheme: http
    metrics_path: /metrics
    consul_sd_configs:
    - server: 20.0.0.20:8500
      tags:
      - nodes
      refresh_interval: 1m              每隔1分钟重新加载一次文件中定义的 Targets,默认为 5m
systemctl restart prometheus.service

如何剔除/添加consul中的主机

consul services deregister -id "node_exporter-node01"

consul services register ./nodes.json

3、基于 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 节点的入口

k8s主节点操作
 
vim rbac.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: monitoring
 
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: outside-prometheus
  namespace: monitoring
 
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: outside-prometheus
rules:
- apiGroups:
  - ""
  resources:
  - nodes
  - services
  - endpoints
  - pods
  - nodes/proxy
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - "networking.k8s.io"
  resources:
    - ingresses
  verbs:
  - get
  - list
  - watch
- apiGroups:
  - ""
  resources:
  - configmaps
  - nodes/metrics
  verbs:
  - get
- nonResourceURLs:
  - /metrics
  verbs:
  - get
 
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: outside-prometheus
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: outside-prometheus
subjects:
- kind: ServiceAccount
  name: outside-prometheus
  namespace: monitoring
kubectl apply -f rbac.yaml
 
 
获取ServiceAccount对应Secret资源对象中保存的token,然后将token保存到Prometheus节点上的文件里。
 
TOKEN=`kubectl get secret/$(kubectl -n monitoring get secret | awk '/outside-prometheus/{print $1}') -n monitoring -o jsonpath={.data.token} | base64 -d`
 
echo $TOKEN
 
cd /etc/kubernetes/pki/
scp ca.crt 20.0.0.80:/usr/local/prometheus

prometheus服务器
cd /usr/local/prometheus
echo eyJhbGciOiJSUzI1NiIsImtpZCI6IklnT2tQYnFwdlRPOGZoRXFKeUxCVDJ1T3o3MXhtUmNYc0NRVU9NcjJxaHcifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJtb25pdG9yaW5nIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZWNyZXQubmFtZSI6Im91dHNpZGUtcHJvbWV0aGV1cy10b2tlbi1ya2NjYyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJvdXRzaWRlLXByb21ldGhldXMiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJkNzZjZjYyNy04YWQzLTQxNGYtYjNlZi04MjExNWYwM2NhZDIiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6bW9uaXRvcmluZzpvdXRzaWRlLXByb21ldGhldXMifQ.FgXP5RK4cs5zz-r3R6N7iX7c29miEGYLMTXyKgD9roWR6iH99oI47ZrTz2o_u8XoVkAG240x4TbQ6u3Liccb4ad_1_uyHPNSR2P0z0g9u_wW57s8_-eG1F27_xc6TAq9eLwYNtP2LiZIXqaVsuyxuNJ8M2jFmoXJLj2UYROnWngnep6KoRGenedHX-rtfdmFcSUJvzA28nns4_x2yEHHzXMFYwO1YbrZFW_JT89pJIfpSsMp-G0ZglyGl5DMuI7S7Bhw2lltAzugFQqaWzeZvoA63eAqth0aVoLcCaFVzXB0f3tS70eXmhkurV2jTfulD2xunUgnpCxds_JuvwgXNw > k8s-api-token
cat k8s-api-token

k8s主节点
kubectl create clusterrolebinding cluster-system-anonymous --clusterrole=cluster-admin --user=system:anonymous

prometheus服务器
vim prometheus.yml
- job_name: "k8s-apiserver"
    scheme: https
    kubernetes_sd_configs:
    - role: endpoints
      api_server: https://20.0.0.10:6443
      tls_config:
        ca_file: /usr/local/prometheus/ca.crt
      authorization:
        credentials_file: /usr/local/prometheus/k8s-api-token
    tls_config:
        ca_file: /usr/local/prometheus/ca.crt
    authorization:
        credentials_file: /usr/local/prometheus/k8s-api-token
    relabel_configs:
    - source_labels: ["__meta_kubernetes_namespace", "__meta_kubernetes_endpoints_name", "__meta_kubernetes_endpoint_port_name"]
      regex: default;kubernetes;https
      action: keep
 
  - job_name: "kubernetes-nodes"
    kubernetes_sd_configs:
    - role: node
      api_server: https://20.0.0.10:6443
      tls_config:
        ca_file: /usr/local/prometheus/ca.crt
      authorization:
        credentials_file: /usr/local/prometheus/k8s-api-token
    relabel_configs:
    - source_labels: ["__address__"]
      regex: (.*):10250
      action: replace
      target_label: __address__
      replacement: $1:9100
    - action: labelmap
      regex: __meta_kubernetes_node_label_(.+)
 
systemctl restart prometheus.service

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实战项目:自主HTTP服务器

0. 项目介绍 本项目实现的是一个HTTP服务器,项目中将会通过基本的网络套接字读取客户端发来的HTTP请求并进行分析,最终构建HTTP响应并返回给客户端完成了HTTP服务器后端的处理逻辑,主要完成的是GET和POST请求方法,以及CGI机制的搭…

深度学习设计模式之享元设计模式

文章目录 前言一、介绍二、特点三、详细介绍1.核心组成2.代码示例3.优缺点优点缺点 4.使用场景 总结 前言 享元设计模式主要用于减少创建对象的数量,以减少内存占用,提高性能。 一、介绍 享元设计模式(Flyweight Pattern)是一种…

c语言练习题1

1.输出Helloword /*输出Helloword*/ #include<stdio.h> int main() {printf("Hello word!");return 0; }2.整型变量的定义与使用 /*整型变量的定义与使用*/ #include <stdio.h> int main() {int a;int b;a 10;b 20;int c a b;int d a - b;printf(…

ETAS工具链自动化实战指南<一>

----自动化不仅是一种技术&#xff0c;更是一种思维方式&#xff0c;它将帮助我们在快节奏的工作环境中保持领先&#xff01; 目录 往期推荐 场景一&#xff1a;SWC 之间 port自动连接 命令示例 参数说明 场景二&#xff1a;SWC与ECU 自动映射 命令示例 参数说明 场景三&…

叉车刷卡系统,IC卡授权驾驶,提高叉车管理效率!

叉车作为仓储物流行业的主力军&#xff0c;长期占据着物流运输的主导地位。但由于厂区内叉车数量庞大&#xff0c;作为重型的特种设备&#xff0c;往往很容易发生碰撞事故。数量庞大且容易发生事故的叉车很难集中管理、叉车运输环境的复杂加之管理员不可能24小时全面监管工作。…

图表数据自动化软件有哪些?图表数据自动化怎么做

在数字化时代&#xff0c;数据的呈现方式越来越多样化&#xff0c;图表成为了表达复杂信息、数据趋势和分析结果的有效工具。然而&#xff0c;随着数据量的激增&#xff0c;手动创建和更新图表变得既耗时又低效。因此&#xff0c;图表数据自动化软件的应用变得尤为重要。这些软…

如何在没有密码的情况下解锁Oppo手机?5 种简单的方法

保护智能手机隐私的一种绝佳方法是设置复杂的锁屏密码或图案。一些OPPO手机的所有者在更改图案或密码后&#xff0c;在一夜之间失去了对其图案或密码的内存。事实上&#xff0c;OPPO用户遇到的众多问题包括忘记密码或锁定屏幕。遗憾的是&#xff0c;没有多少人知道无需密码即可…

在Chrome浏览器中安装JSON显示插件

步骤1&#xff1a; 在浏览器中打开https://github.com&#xff0c;在顶部的搜索栏中输入“chrome json”并开始搜索 输入关键字时&#xff0c;使用浏览器名称与“json”作为关键字&#xff0c;且中间使用空格进行分隔。 步骤2&#xff1a; 在搜索结果中选择第1个项目 在githu…

UE5用蓝图实现物体A始终朝向物体B |Find Look at Rotation|

非常常用的蓝图节点 |Find Look at Rotation|&#xff1a;获取 物体A 到 物体B 的Rotator。 Tick中将算出的Rotator设置给物体A&#xff0c;即可实现永远朝向物体B

IEEE |第五届机器学习与计算机应用国际学术会议(ICMLCA 2024)

第五届机器学习与计算机应用国际学术会议(ICMLCA 2024)定于2024年10月18-20日在中国杭州隆重举行。本届会议将主要关注机器学习和计算机应用面临的新的挑战问题和研究方向&#xff0c;着力反映国际机器学习和计算机应用相关技术研究的最新进展。 IEEE |第五届机器学习与计算机应…

喜报 | IDC中国Fintech50榜单正式发布!

IDC金融行业研究&#xff08;IDC Financial Insights&#xff09;团队以全球视角关注金融科技创新&#xff0c;并对金融科技厂商进行持续追踪。针对技术服务商的能力评估、比较优势分析以及市场份额等方面的研究是其中重要的组成部分。 基于研究报告以及行业用户的调研&#x…

Qt点亮开发板的一个LED-思维导图-学习笔记-基于正点原子阿尔法开发板

Qt点亮开发板的一个LED Qt如何操控开发板上的一个LED Qt与硬件控制的关系 Qt本身并不直接控制开发板上的硬件&#xff0c;而是通过中间层进行交互 驱动层的作用 驱动层是连接Qt应用层和硬件的关键部分&#xff0c;它提供了必要的接口和功能&#xff0c;使得Qt能够通过这些接…

2024局域网管理软件大盘点!哪款局域网软件好用?一文解答不容错过哦!

“不积跬步无以至千里&#xff0c;不积小流无以成江海。”在当今社会&#xff0c;每一项细微的技术进步都在推动着企业向前发展。 对于现代企业而言&#xff0c;高效管理局域网不仅能够提升工作效率&#xff0c;还能保障网络安全。这篇文章小编将为您盘点目前市场上优秀的局域…

星环科技×鼎捷软件强强联手,共建数智制造新引擎

近日&#xff0c;星环科技与鼎捷软件基于雅典娜新型工业互联网平台强强联手&#xff0c;围绕制造业普遍面临的生产计划、过程控制、成本管理等环节存在的经营痛点&#xff0c;以数据为核心打造工业互联网平台&#xff0c;从关键生产流程入手&#xff0c;建立了实时、系统、全面…

SSM老年人活动信息管理系统---附源码121730

目 录 摘要 1 绪论 1.1研究背景 1.2国内外研究现状 1.3系统开发技术的特色 1.4论文结构与章节安排 2 老年人活动信息管理系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1数据增加流程 2.3.2数据修改流程 2.3.3数据删除流程 2.3 系统功能分析 2.3.1 功能性分析 …

vue2表单校验:el-form表单绑定数组并使用rules进行校验

前言 vue项目中&#xff0c;大量使用element ui组件中的el-form来构建丰富且具有交互性的表单页面&#xff08;官网&#xff1a;Element - The worlds most popular Vue UI framework&#xff09;。el-form提供了丰富的表单控件&#xff0c;如输入框、下拉框、日期选择器等&am…

React原理之Fiber双缓冲

前置文章&#xff1a; React原理之 React 整体架构解读React原理之整体渲染流程React原理之Fiber详解 -----读懂这一篇需要对 React 整体架构和渲染流程有大致的概念 &#x1f60a;----- 在前面的文章中&#xff0c;简单介绍了 Fiber 架构&#xff0c;也了解了 Fiber 节点的…

Python功能强大且易于使用的命令行 shell库之xonsh使用详解

概要 Xonsh 是一种基于 Python 的跨平台、用户友好的命令行 shell。它结合了 Python 和传统 shell 命令的优势&#xff0c;允许用户在同一个环境中使用两者。Xonsh 为开发者和系统管理员提供了强大的工具&#xff0c;简化了任务自动化和脚本编写。本文将详细介绍 xonsh 库&…

基于php网上差旅费报销系统设计与实现

网上报销系统以LAMP(LinuxApacheMySQLPHP)作为平台,涉及到PHP语言、MySQL数据库、JavaScript语言、HTML语言。 2.1 PHP语言简介 PHP&#xff0c;一个嵌套的缩写名称&#xff0c;是英文 “超级文本预处理语言”&#xff08;PHP: Hypertext Preprocessor&#xff09;的缩写。P…

又学了几个新的comfyui小技巧,分享给大家!

前言 掌握一些小技巧&#xff0c;提升效率&#xff01; 1、图像选择器 出图批次是四张&#xff0c;然后想选一张图进入到之后的工作流&#xff0c;就可以用这个节点 默认是这样的 运行到这个节点的时候&#xff0c;会出现四张图片&#xff0c;选中满意的图片&#xff0c;点…