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

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

时间:2024-09-26 12:52:21浏览次数:9  
标签:node http consul 笔记 prometheus 自动 192.168 sd

一、consul_sd_configs

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

1.部署Consul 

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

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

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

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

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界面验证数据

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

点击进入查看明细

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

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

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

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学习笔记之其他常用服务自动发现_数据_06

prometheus验证

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

7.验证节点下线

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

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

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

二、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

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

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

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

验证

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

三、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解析记录

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

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.验证配置

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

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

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

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

验证

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

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

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

 

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

prometheus验证

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

 

"一劳永逸" 的话,有是有的,而 "一劳永逸" 的事却极少



标签:node,http,consul,笔记,prometheus,自动,192.168,sd
From: https://blog.51cto.com/u_8901540/12118329

相关文章

  • prometheus学习笔记之kube-state-metrics
    一、kube-state-metrics简介Kube-state-metrics:通过监听APIServer生成有关资源对象的状态指标,比如Deployment、Node、Pod,需要注意的是kube-state-metrics只是简单的提供一个metrics数据,并不会存储这些指标数据,所以我们可以使用Prometheus来抓取这些数据然后存储,主要......
  • prometheus学习笔记之基于三方exporter实现监控
    一、redis_exporter通过redis_exporter监控redis服务状态git地址:https://github.com/oliver006/redis_exporterdocker地址:https://hub.docker.com/r/oliver006/redis_exporter实验环境:redisk8部署prometheus二进制部署1.redis_exporter使用简解二进制部署prometheus配置方式......
  • 从此告别消息堆积焦虑!个微自动回复真的太方便啦!
    你是不是也曾为消息堆积、回复不及时而苦恼?手动逐一通过大量好友验证是否让你觉得无比繁琐?今天,我要向大家推荐一个多微管理工具,它的机器人自动功能能够有效地减轻你的负担,让你从此告别消息焦虑!1、自动通过好友请求只要有新的好友请求,系统都会自动进行验证,省去你手动逐一处理......
  • prometheus学习笔记之prometheus联邦集群
    一、简介对于大部分监控规模而言,我们只需要在每一个数据中心安装一个PrometheusServer实例,就可以在各个数据中心处理上千规模的集群。同时将PrometheusServer部署到不同的数据中心可以避免网络配置的复杂性。在每个数据中心部署单独的PrometheusServer,用于采集当前数据中心监......
  • 个微自动化,让多微管理更智能、更高效!
    当你有好几个微信号需要管理时,自动化设置简直是救星!今天,要给大家推荐一个很哇塞的多微管理工具,让你的微信号管理变得简单又高效!一起来看看它都有哪些自动化设置吧!1、自动添加好友这个系统支持批量导入客户号码,多账号同时进行自动加好友。再也不用一个个手动添加好友啦,省下的......
  • prometheus学习笔记之prometheus存储系统
    一、prometheus本地存储系统1.本地存储架构默认情况下,prometheus将采集到的数据存储在本地的TSDB数据库中,路径默认为prometheus安装目录的data目录,数据写入过程为先把数据写入wal日志并放在内存,然后2小时后将内存数据保存至一个新的block块,同时再把新采集的数据......
  • 【GiraKoo】PowerShell美化笔记
    【GiraKoo】PowerShell美化笔记oh-my-poshinitpwsh--config"$env:POSH_THEMES_PATH/powerlevel10k_lean.omp.json"|Invoke-Expression#-------------------------------ps-read-line-------------------------------#引入ps-read-lineImport-ModulePSReadLi......
  • C# 异步自动数据采集功能
    ///<summary>///执行数据采集命令///</summary>///<paramname="m"></param>///<returns></returns>[HttpPost][Route("DataAcquisitionAuto")]publicasyncTask<MessageModel<string>>DataAcquis......
  • LDAP学习笔记之五:LDAP客户端实现系统帐号验证
    一、创建LDAP认证用户及权限1.控制台修改密码的存储格式(因为从NIS迁移来的账号密码是cyrpt,ldap默认SSHA格式)2.控制台创建一个用户,并给该用户指定ACI权限,用于linux客户端连接ldapserver(默认使用匿名用户)3.给client-root用户添加权限  设置ACI名称及选择需要绑定的用户取消默......
  • LDAP学习笔记之八:openLDAP sudo权限
    一、openLDAPsudo权限常见属性sudoCommand:可执行的二进制命令,如useradd、userdel、mount、umount等。sudoHost:可在哪些机器上执行sudoCommand定义的BASH命令。sudoNotAfter:起始时间sudo规则匹配。sudoNotBefore:结束时间sudo规则匹配。sudoOption:定义超过自身权限及切换至......