4.Prometheus 监控技术与实践 --- 服务发现
Posted enlyhua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4.Prometheus 监控技术与实践 --- 服务发现相关的知识,希望对你有一定的参考价值。
第4章 服务发现
prometheus 服务发现能够自动化检测分类,并且能够识别新目标和变更目标。也就是说,可以在容器平台或者云平台中,自动发现并监控新目标或变更目标,
动态进行数据采集和处理。目前prometheus版本已经可以支持许多的服务信息来源,例如 Consul,亚马逊的EC2,OpenStack和Kubernetes。
4.1 基于文件的服务发现
1台服务器:
vim prometheus.yml
scrape_configs:
- job_name: 'node_exporter'
static_configs:
-targets: ['192.168.24.17:9100']
新增2台服务器:
scrape_configs:
- job_name: 'node_exporter'
static_configs:
-targets: ['192.168.24.17:9100', '192.168.24.18:9100']
-targets: ['192.168.24.61:9100']
拆分配置文件,类似于 include 功能,基于文件的服务发现只是比静态配置提高了配置功能:
1.添加 json 文件
cd /data/prometheus
mkdir targets
touch targets/dev_node.json
[
{
"targets":['192.168.24.17:9100','192.168.24.17:9100','192.168.24.17:9100'],
"labels": {
"env":"dev_webgame"
}
}
]
2.修改 prometheus.yml 文件
vim prometheus.yml
scrape_configs:
- job_name: 'node_service_discovery'
static_configs:
-targets: ['192.168.24.17:9100']
file_sd_configs:
- files:
-targets/*.json
refresh_interval: 60m
file_sd_configs,指定prometheus 基于文件的服务发现配置使用的选项。
- files,自定义的和prometheus持续同级目录的targets目录,要被自动加载的所有 .json 格式的文件。当然也可以指定单独某一文件。
refresh_interval:60m,自定义刷新时间间隔60m。
这里需要注意的是,首次添加 json 或 yaml 格式的动态服务发现文件时,需要重启启动 prometheus 服务进行加载后才能生效,若再修改配置文件时无需重新启动。
我们对json格式文件 dev_node.json 修改,添加一台服务器:
[
{
"targets":['192.168.24.17:9100','192.168.24.17:9100','192.168.24.17:9100'],
"labels": {
"env":"dev_webgame"
}
},
{
"targets":['192.168.24.43:9100'],
"labels": {
"env":"dev_mgame",
"job":"mysqld_node"
}
}
]
4.2 基于Consul的服务发现
4.2.1 Consul体验应用信息
4.2.2 软件下载与部署
4.2.3 服务注册发现
4.2.4 与Prometheus集成
基于 Consul 的服务发现内容:
vim prometheus.yml
scrape_configs:
- job_name: 'consul_sd_node_exporter'
scheme: http
consul_sd_configs:
- server: 127.0.0.1:8500
services: ['node_exporter']
consul_sd_configs 指定 prometheus 是基于 Consul 的自动服务发现所使用的选项。
- server:指定 consul 服务地址
services: 服务名称列表数组,指定当前需要发现哪种服务的信息。可以指定多服务名称,例如 services:['node_exporter','mysqld_exporter'],如果不填,默认获取
consul 上注册的所有服务。
4.3 基于DNS的服务发现
不是所有的应用环境都能使用 prometheus 基于文件和基于 Consul 的服务发现。
DNS SRV 是 dns 资源记录中的一种记录类型,用来指定服务地址和服务端口,并且可以设置每个服务地址的优先级和权重。访问服务的时候,本地的DNS resolver 从dns服务器
查询到一个地址列表,根据优先级和权重,从中选取一个地址作为本次请求的目的地址。
4.3.1自建DNS服务SRV记录设置
4.3.2阿里云域名解析SRV记录设置
4.4 Relabelling
prometheus 通过重新标记机制进行控制管理,尽可能实现标准化环境中的指标。
Target 以双下划线 '__' 作为内置标签的开头。在默认情况下,被加载的 Target 包含以下标签:
1.__address__,当前目标实例的访问地址 <host>:<port>
2.__metrics_path__,采集目标服务访问地址的访问路径
3.__scheme__,采集目标服务访问地址的 http 或 https 协议
4.__param_<name>,是采集任务目标服务中包含的请求参数
其中,instance 标签内容与 __address__ 相对应,这里其实发生了一次标签重写处理。针对这种情况在采集样本数据之前,对Target 实例的标签进行重写的机制,在
prometheus 中称之为 Relabeling 行为机制,可以通过配置文件中的 relabel_configs 字段自定义重写标签。relabel_configs 是一个强大的功能,除了修改标签,
还可以为采集的指标添加新标签。
以上是关于4.Prometheus 监控技术与实践 --- 服务发现的主要内容,如果未能解决你的问题,请参考以下文章
linux12 -prometheus监控 -->简述与安装
监控大神Prometheus的概述安装与服务发现(持续更新中...)
Linux企业运维——Kubernetes(二十)Prometheus监控