首页 > 其他分享 >prometheus学习笔记之其他常用服务自动发现

prometheus学习笔记之其他常用服务自动发现

时间:2024-09-06 16:18:15浏览次数:11  
标签:node http 9100 consul 笔记 prometheus 自动 192.168

一、consul_sd_configs

Consul SD配置允许从Consul的Catalog API检索抓取目标

1.部署Consul 

安装参考文档:https://developer.hashicorp.com/consul/install#linux ,确认自己的操作系统和安装环境及版本,根据文档下载并安装

unzip -q consul_1.12.2_linux_amd64.zip #由于下载比较慢,直接使用原来已有的,解压出来其实就是consul的二进制命令
mkdir -p /data/consul cp consul /usr/local/bin/
consul -h
# agent -server:以server模式运行服务 -bootstrap:首次部署时使用,会进行初始化,后面启动不需要 -bind:集群通信的监听地址 -client:客户端访问的地址 --data-dir:consul数据保存的目录 -ui:启用内置的web服务器,其他节点也可以开启 --datacenter指定默认的集群名称,不指定则默认为dc1 nohup consul agent -server -bootstrap -bind=192.168.10.91 -client=192.168.10.91 -data-dir=/data/consul -ui -node=192.168.10.91 & #如果是集群,则其他节点可以使用下面的命令和第一台组成集群,后面加入的集群不需要-bootstrap参数, -ui 可以只有第一个节点的也可以不配置 生产环境应当集群部署,此处仅为 验证通过consul自动发现功能 #nohup consul agent -bind=192.168.10.92 -client=192.168.10.92 -data-dir=/data/consul -node=192.168.10.92 -join=192.168.10.91 & #需要包二进制文件拷贝到节点上 -join:加入到已有的consul环境 91是第一个节点的IP,92是要加入节点的IP netstat -tnlp|grep consul #其中8500为consul的web端口,下面回访问

2.访问web

3.测试写入数据 

#通过consul API写入
#192.168.10.89 为k8s集群节点master,写其他节点也可以 91为consul的服务IP 9100为k8s节点node-exporter的监听端口 curl -X PUT -d '{"id": "node-exporter89","name": "node-exporter89","address":"192.168.10.89","port":9100,"tags": ["node-exporter"],"checks": [{"http":"http://192.168.10.89:9100/","interval": "5s"}]}' http://192.168.10.91:8500/v1/agent/service/register

web界面验证数据

点击进入查看明细

4.配置prometheus通过consul自动发现

参考文档:https://prometheus.io/docs/prometheus/latest/configuration/configuration/#consul_sd_config

为了方便调了,prometheus使用二进制部署的方式

  - job_name: monitor_for_consul
    honor_labels: true
    metrics_path: /metrics
    scheme: http
    consul_sd_configs:
      - server: 192.168.10.91:8500 # consul服务器地址,如果是集群则可以继续添加 -server: node2地址 可以添加多个 复制这两行依次粘贴即可
        services: [] #发现的目标服务名称,即consul中左侧列表中services标签内显示的服务  空为所有服务, 可以写 servicea,servcieb,servicec
    relabel_configs:
    - source_labels: ['__meta_consul_tags']
      target_label: 'product'
    - source_labels: ['__meta_consul_dc']
      target_label: 'idc'
    - source_labels: ['__meta_consul_service']
      regex: "consul"
      action: drop #删除consul自己本身的services

# honor_labels 控制 Prometheus 如何处理已经存在于已抓取数据中的标签与Prometheus 将附加服务器端的标签之间的冲突("job"和"instance"标签, 手动配置的目标标签以及服务发现实现生成的标签) 。
# 如果 honor_labels 设置为"true", 则通过保留已抓取数据的标签值并忽略冲突的服务器端标签来解决标签冲突。说人话就是prometheus不会对服务在consul中配置的tag做修改直接保留下来
# 如果 honor_labels 设 置 为 "false" , 则 通 过 将 已 抓 取 数 据 中 的 冲 突 标 签 重 命 名 为 "exported_<original-label>"(例如"exported_instance", "exported_job") 然后附加服务器端标签来解决标签冲突 

5.重启prometheus并查看服务

curl -X POST http://127.0.0.1:9090/-/reload 

6.添加其他k8s节点,验证是否会自动发现

curl -X PUT -d '{"id": "node-exporter90","name": "node-exporter90","address":"192.168.10.90","port":9100,"tags": ["node-exporter"],"checks": [{"http":"http://192.168.10.90:9100/","interval": "5s"}]}' http://192.168.10.91:8500/v1/agent/service/register
curl -X PUT -d '{"id": "node-exporter91","name": "node-exporter91","address":"192.168.10.91","port":9100,"tags": ["node-exporter"],"checks": [{"http":"http://192.168.10.91:9100/","interval": "5s"}]}' http://192.168.10.91:8500/v1/agent/service/register

consul验证

prometheus验证

7.验证节点下线

curl --request PUT http://192.168.10.91:8500/v1/agent/service/deregister/node-exporter91 #下线节点也叫反注册

二、file_sd_configs

参考文档:https://prometheus.io/docs/prometheus/latest/configuration/configuration/#file_sd_config

基于文件的服务发现提供了一种更通用的配置静态目标的方法,并作为插入自定义服务发现机制的接口。优点在于无需重启prometheus服务,并且兼顾类似Nginx include的功能 
它读取一组包含零个或多个<static-config>s列表的文件。对所有已定义文件的更改都会通过磁盘监视检测到并立即应用。
虽然这些单独的文件会被监视是否有更改,但父目录也会被隐式监视。这是为了高效地处理原子重命名,并检测与配置的glob匹配的新文件。如果父目录包含大量其他文件,这可能会导致问题,
因为这些文件中的每一个都会被监视,即使与它们相关的事件并不相关。 文件可以以YAML或JSON格式提供。只应用导致目标群体形成良好的变化。

1.创建服务发现的配置文件

cd /usr/local/prometheus/
mkdir file_sd
cd file_sd
vim node.yaml
- targets:
  - '192.168.10.89:9100'
  - '192.168.10.90:9100'
  - '192.168.10.91:9100'

2.添加prometheus配置

  - job_name: monitor_for_file
    honor_labels: true
    metrics_path: /metrics
    scheme: http
    file_sd_configs:
      - files: 
        - /usr/local/prometheus/file_sd/node.yaml 
        refresh_interval: 10s #默认5分钟 

3.验证

curl -X POST http://127.0.0.1:9090/-/reload 

4.修改文件,验证是否自动发现

 vim node.yaml  #删除一个节点
- targets:
  - '192.168.10.89:9100'
  - '192.168.10.90:9100'

验证

三、dns_sd_configs

参考文档:https://prometheus.io/docs/prometheus/latest/configuration/configuration/#dns_sd_config

基于 DNS 的服务发现配置允许指定一组 DNS 域名,定期查询这些域名以发现目标列表。从 /etc/resolv.conf 中读取要发现的 DNS 服务器。
DNS服务发现方法仅支持 A、AAAA、MX、NS 和 SRV 记录查询,不支持 RFC6763中指定的高级 DNS-SD 方法。

1.添加DNS解析记录

2.配置promtheus

  - job_name: monitor_for_dns
    metrics_path: "/metrics"
    dns_sd_configs:
    - names:
      - k8s-master.xxxx.com
      - k8s-node1.xxxx.com
      type: A #类型
      port: 9100
      refresh_interval: 15s #默认30s

curl -X POST http://127.0.0.1:9090/-/reload 

3.验证配置

4.添加记录验证自动发现

prometheus配置

    dns_sd_configs:
    - names:
      - k8s-master.xxxx.com
      - k8s-node1.xxxx.com
      - k8s-node2.xxxx.com

curl -X POST http://127.0.0.1:9090/-/reload 

验证

5.修改记录值验证自动发现

删除node2记录,修改node1记录值

 

prometheus验证

 

标签:node,http,9100,consul,笔记,prometheus,自动,192.168
From: https://www.cnblogs.com/panwenbin-logs/p/18400062

相关文章

  • Mybatis学习笔记(已完结)
    Mybatis-011.框架​ 框架相当于是一个脚手架,内部已经写好了很多代码,我们只要其基础上进行开发就可以提高我们的开发效率。​框架阶段学习:①先去学习如何使用框架②然后再使用熟练的情况下去猜测内部的原理③通过源码去验证自己的猜测。2.Mybatis介绍MyBatis是一款优......
  • prometheus
    Metrics类型Counter:  单调递增,例如请求的数量或错误的次数例如:http_requests_total 记录了HTTP请求的总数Gauge:可以任意递增递减,适合表示瞬时值Histogram用于记录观察结果的分布情况,例如请求的响应时间。数据类型可以收集不同区间的数据,并自动计算总......
  • jekins自动化部署完项目后发送消息到企业微信
    在上一篇文章说到了,部署一个执行远程虚拟机的脚本的item这里说一下执行完脚本后通过企业微信的群聊机器人发送消息1:安装插件 QyWechatNotification 2:在群聊新建群机器人,拿到webhook 3:jenkins具体的项目配置有中3.1:点击构建后操作,选择企业微信通知Webhook地址:填写企......
  • 2.接口自动化测试
    接口自动化测试基于pytest和allure构建接口自动化测试框架构与项目。框架目录结构我们要构建一个自动化测试框架,就要以项目的概念来对项目中所有的代码文件进行划分目录和文件结构,不同的代码功能不一样,所以我们需要设计一个合理的目录结构,以方便与测试开发团队的其他人员进行测......
  • STM32学习笔记——GPIO
    GPIO——GeneralPurposeInputOutput——通用输入输出出口特点:通用性、快速翻转、中断支持、支持多种工作模式。8种输入输出模式模式性质特征应用标识浮空输入数字输入可读取引脚电平,若引脚悬空,则电平不确定适用于需要读取外部信号的场景,但外部信号状态......
  • 测试基础、单元测试自动化
    基本概念自动化测试,也叫软件测试自动化。要学习软件测试自动化,首先就需要清楚什么是软件测试。软件测试因为当局者迷,旁观者清的道理,软件开发是个复杂而周期性的过程,期间很容易产生或遗留下错误,而对于开发人员自己所编写与开发的应用程序(软件),往往有很多问题是他们自己发现不了,所......
  • Python全网最全基础课程笔记(五)——选择结构+Python新特性Match
    本专栏系列为Pythong基础系列,每篇内容非常全面,包含全网各个知识点,非常长,请耐心看完。每天都会更新新的内容,搜罗全网资源以及自己在学习和工作过程中的一些总结,可以说是非常详细和全面。以至于为什么要写的这么详细:自己也是学过Python的,很多新手只是简单的过一篇语法,其实对......
  • 【运维自动化-配置平台】平台管理功能如何使用
    BlueKing智云配置平台,以下简称配置平台配置平台里的平台管理功能是管理员的一些操作,比如一些全局纬度的设置1、全局配置-业务通用业务快照名称:通常不需要修改,保持平台搭建好默认业务(BlueKing)即可拓扑最大可见层级:可根据实际业务场景自定义调整,需要注意的是,这个是全局的调整,针......
  • Meta-Prompt: 自动构建Prompt
    我强烈建议你使用claude-3.5-sonnet,在生成Prompt这个工作上比GPT-4o有着更好的表现将用户的输入需求转化为一个清晰结构化的Prompt,确保Prompt简单而且富有层次,能够让LLM理解并且高效地执行#Thought‍‍```mermaidmindmaproot((如何设计高效Prompt))需求分析......
  • 【运维自动化-配置平台】模型及模型关联最小化实践
    蓝鲸智云配置平台,以下简称配置平台我们知道主机是配置平台最常见的管控资源对象,在业务拓扑里可以通过划分模块来清晰的可视化管理;那其他资源如何通过配置平台来纳管呢,比如网络设备交换机。场景需求:如何把交换机和主机的关联关系在配置平台进行可视化的纳管一.不友好的方式通......