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 监控技术与实践 --- 服务发现的主要内容,如果未能解决你的问题,请参考以下文章

监控Prometheus的概述安装与服务发现

linux12 -prometheus监控 -->简述与安装

监控大神Prometheus的概述安装与服务发现(持续更新中...)

Linux企业运维——Kubernetes(二十)Prometheus监控

3.Prometheus 监控技术与实践 --- Exporter

6.Prometheus 监控技术与实践 --- 告警处理