PrometheusServer不能通过静态配置管理监控目标,只能使用Service+Discov?

Prometheus指标抓取的生命周期发现->配置-> relabel ->指标数据抓取-> metrics relabel发现:prometheus启动,启动后发现 被监控端配置:定义怎么采集,怎么监控(周期),监控哪些节点relabel:例如:expoters采集数据后,需要“转换”为pro可以兼容识别的格式,例如以下node_cpu_guest_seconds_total{cpu=“0”,mode=“nice”} 0这种转换,就是一种聚合数据指标数据抓取:pro pull数据metrics relabel:1)筛选2)正则提取(选择性)3)自定义标签4)重组标签Prometheus的服务发现①基于文件的服务发现;②基于DNS的服务发现;③基于API的服务发现:Kubernetes、Consul、Azure、重新标记target重新打标metric重新打标④基于K8S的服务发现Prometheus 服务发现机制 Prometheus Server的数据抓取工作于Pull模型,因而,它必需要事先知道各Target的位置,然后才能从相应的Exporter或Instrumentation中抓取数据
对于小型的系统环境来说,通过static_configs指定各Target便能解决问题,这也是最简单的配置方法;每个Targets用一个网络端点(ip:port)进行标识;
对于中大型的系统环境或具有较强动态性的云计算环境来说,静态配置显然难以适用;因此,Prometheus为此专门设计了一组服务发现机制,以便于能够基于服务注册中心(服务总线)自动发现、检测、分类可被监控的各Target,以及更新发生了变动的Target指标抓取的生命周期
在每个scrape_interval期间,Prometheus都会检查执行的作业(Job);这些作业首先会根据Job上指定的发现配置生成target列表,此即服务发现过程;服务发现会返回一个Target列表,其中包含一组称为元数据的标签,这些标签都以" meta_"为前缀;
服务发现还会根据目标配置来设置其它标签,这些标签带有"“前缀和后缀,b包括"scheme”、" address"和" metrics path_",分别保存有target支持使用协议(http或https,默认为http) 、 target的地址及指标的URI路径(默认为/metrics) ;
若URI路径中存在任何参数,则它们的前缀会设置为" param"这些目标列表和标签会返回给Prometheus,其中的一些标签也可以配置中被覆盖;
配置标签会在抓取的生命周期中被重复利用以生成其他标签,例如,指标上的instance标签的默认值就来自于address标签的值;
对于发现的各目标,Prometheus提供了可以重新标记(relabel)目标的机会,它定义在job配置段的relabel_config配置中,常用于实现如下功能1)将来自服务发现的元数据标签中的信息附加到指标的标签上2)过滤目标3)之后便是数据抓取,以及指标返回的过程,抓取而来的指标在保存之前,还允许用户对指标重新打标过滤的方式4)它定义在job配置段的metric_relabel_configs配置中,常用于实现如下功能①删除不必要的指标②从指标中删除敏感或者不需要的标签③添加、编辑或者修改指标的标签值或标签格式 修改prometheus服务器上的配置为文件,指定targets的端口上面配置过- job_name: 'nodes'
static_config:
- targets:
- 192.168.32.20:9100
- 192.168.32.30:9100
- 192.168.32.40:9100
1.基于文件服务发现192.168.32.10基于文件的服务发现仅仅略优于静态配置的服务发现方式,它不依赖于任何平台或第三方服务,因而也是最为简单和通用的实现方式。prometheus server定期从文件中加载target信息(pro-server pull指标发现机制-job_name 获取我要pull的对象target)文件可以只用json和yaml格式,它含有定义的target列表,以及可选的标签信息;以下第一配置,能够将prometheus默认的静态配置转换为基于文件的服务发现时所需的配置;(rometheus会周期性的读取、重载此文件中的配置,从而达到动态发现、更新的操作)编写Prometheus.yml文件cd /usr/local/prometheus-2.37.1.linux-amd64/#切换到prometheus的工作目录mkdir file_sd && cd files_sdmkdir targets将Prometheus.yml文件拖进去------只列出与静态Prometheus.yml文件区别的地方-------
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
file_sd_configs:
- files:
- targets/prometheus_*.yaml
refresh_interval: 2m
# All nodes
- job_name: 'nodes'
file_sd_configs:
- files:
- targets/nodes_*.yaml
refresh_interval: 2m
指定配置文件启动cd /usr/local/prometheus-2.37.1.linux-amd64./prometheus --config.file=./file_sd/prometheus.yml注意在node节点开启服务cd node_exporter-1.1.2.linux-amd64/./node_exporter注意:先关闭服务,再更改配置文件killall prometheusnetstat -nautp
grep prometheus文件发现的作用如果增加node或者prometheus服务端节点只需更改nodes_centos.yaml prometheus_server.yaml两个文件添加地址就行,不需要停止服务基于DNS自动发现基于DNS的服务发现针对一组DNS域名进行定期查询,以发现待监控的目标查询时使用的DNS服务器由/etc/resolv.conf文件指定;该发现机制依赖于A、AAAA和SRv资源记录,且仅支持该类方法,尚不支持RFC6763中的高级DNS发现方式PS:SRV: SRV记录的作用是指明某域名下提供的服务。实例:_http._tcp.example.com.SRV 10 5 80. www.example.comSRV后面项目的含义:10 -优先级,类似MX记录5 -权重80-端口www.example.com -实际提供服务的主机名。同时SRV可以指定在端口上对应哪个servicehprometheus 基于Dws的服务中的SRV记录,让prometheus发现指定target上对应的端口对应的是exporter或instrumentation基于consul发现1)相关概念一款基于golang开发的开源工具,主要面向分布式,服务化的系统提供服务注册、服务一发现和配置管理的功能提供服务注册/发现、健康检查、Key/Value存储、多数据中心和分布式一致性保证等功能原理:通过定义json文件将可以进行数据采集的服务注册到consul中,用于自动发现同时使用prometheus做为client端获取consul上注册的服务,从而进行获取数据2)安装consul_1.9.0版本unzip consul_1.9.0_linux_amd64.zip -d /usr/local/bin3)启动开发者模式consul开发者模式,可以快速开启单节点的consul服务,具有完整功能,方便开发测试mkdir -pv /consul/data/
mkdir /etc/consul && cd /etc/consul
consul agent -dev -ui -data-dir=/consul/data/ \
-config-dir=/etc/consul/ -client=0.0.0.0
agent -dev:运行开发模式agent -server:运行server模式-ui:ui界面-data-dir:数据位置/etc/consul:可以以文件形式定义各个services的配置,也可以基于api接口直接配置-client:监听地址4)编辑/etc/consul目录下的prometheus-servers.json配置文件vim /etc/consul/prometheus-servers.json
{
"services": [
{
"id": "prometheus-server-node01",
"name": "prom-server-node01",
"address": "192.168.32.10",
"port": 9090,
"tags": ["prometheus"],
"checks": [{
"http": "http://192.168.32.10:9090/metrics",
"interval": "5s"
}]
}
]
}
#重载配置文件consul reload或使用consul service register /etc/consul/prometheus-servic.jsoncd /usr/local/prometheus-2.37.1.linux-amd64/./prometheus#记得先关prometheus监控,再启动##浏览器访问 192.168.32.10:85005)创建consul自动发现的prometheus.yml文件cd /usr/local/prometheus-2.37.1.linux-amd64/mkdir consul_sd && cd consul_sdvim prometheus.yml-------只列出job部分----------
- job_name: 'prometheus'
# metrics_path defaults to '/metrics'
# scheme defaults to 'http'.
consul_sd_configs:
- server: "192.168.32.10:8500"
tags:
- "prometheus"
refresh_interval: 2m
# All nodes
- job_name: 'nodes'
consul_sd_configs:
- server: "192.168.32.10:8500"
tags:
- "nodes"
refresh_interval: 2m
#指点配置文件启动cd /usr/local/prometheus-2.37.1.linux-amd64/killall prometheus./prometheus --config.file=./consul_sd/prometheus.yml#开启consul服务consul agent -dev -ui -data-dir=/consul/data/ -config-dir=/etc/consul/ -client=0.0.0.06)注册其他node节点1.在192.168.32.10 /etc/consul/目录下编辑nodes.json文件vim nodes.json
{
"services": [
{
"id": "node_exporter-node01",
"name": "node01",
"address": "192.168.32.20",
"port": 9100,
"tags": ["nodes"],
"checks": [{
"http": "http://192.168.32.20:9100/metrics",
"interval": "5s"
}]
},
{
"id": "node_exporter-node02",
"name": "node02",
"address": "192.168.32.30",
"port": 9100,
"tags": ["nodes"],
"checks": [{
"http": "http://192.168.32.30:9100/metrics",
"interval": "5s"
}]
}
]
}
重载配置文件consul reload2.启动node节点如果node节点没有上线重启以下node节点服务./node_exporter浏览器访问192.168.32.10:9090 / 192.168.32.10:8500}

我要回帖

更多关于 oracle客户端连接服务器无监听 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信