目录

部署service discovery

相关概念

prometheus 服务发现机制

基于文件服务发现

文件发现的作用

基于DNS自动发现

基于consul发现

相关概念

安装consul_1.9.0版本

启动开发者模式

编辑/etc/consul目录下的prometheus-servers.json配置文件

创建consul自动发现的prometheus.yml文件

Grafana部署及模板展示

centos系统上的部署Grafana(端口3000)步骤(版本7.3.6)

总结


部署service discovery

相关概念

Prometheus指标抓取的生命周期

发现->配置-> relabel(配置定义/服务自身执行) ->指标数据抓取-> metrics relabel(自定义)

Prometheus的服务发现

默认:static_config :静态配置形式的服务发现(上篇提到过)

① 基于文件的服务发现;

② 基于DNS的服务发现;

③ 基于API的服务发现:Kubernetes、Consul、Azure、重新标记

target重新打标
  metric重新打标

④ 基于K8S的服务发现

prometheus 服务发现机制

① Prometheus Server的数据抓取工作于Pull模型,因而,它必需要事先知道各Targets的位置,然后才能从相应的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)之后便是数据抓取,以及指标返回的过程,抓取而来的指标在保存之前,还允许用户对指标重新打标过滤的方式它定义在job配置段的metric_relabel_configs配置中,常用于实现如下功能

删除不必要的指标

从指标中删除敏感或者不需要的标签

添加、编辑或者修改指标的标签值或标签格式

基于文件服务发现

基于文件的服务发现仅仅略优于静态配置的服务发现方式,它不依赖于任何平台或第三方服务,因而也是最为简单和通用的实现方式。

prometheus server定期从文件中加载target信息(pro-server pull指标发现机制-job_name 获取我要pull的对象target)文件可以只用json和yaml格式,它含有定义的target列表,以及可选的标签信息;以下配置,能够将prometheus默认的静态配置转换为基于文件的服务发现时所需的配置;(prometheus会周期性的读取、重载此文件中的配置,从而达到动态发现、更新的操作)

编写Prometheus.yml文件 

[root@prometheus /usr/local/prometheus-2.27.1.linux-amd64/file_sd]# mv ../prometheus.yml prometheus.yml
[root@prometheus /usr/local/prometheus-2.27.1.linux-amd64/file_sd]# ls
prometheus.yml
[root@prometheus /usr/local/prometheus-2.27.1.linux-amd64/file_sd]# vim promethues.yml

 编写yml文件的目录及yml文件

[root@prometheus /usr/local/prometheus-2.27.1.linux-amd64/file_sd]# mkdir targets
[root@prometheus /usr/local/prometheus-2.27.1.linux-amd64/file_sd]# cd targets/
[root@prometheus /usr/local/prometheus-2.27.1.linux-amd64/file_sd/targets]# ls
nodes_server.yml  prometheus_server.yml
[root@prometheus /usr/local/prometheus-2.27.1.linux-amd64/file_sd/targets]# cat nodes_server.yml
- targets:- 192.168.37.101:9100- 192.168.37.102:9100- 192.168.37.107:9100labels:app: node-exporterjob: node
[root@prometheus /usr/local/prometheus-2.27.1.linux-amd64/file_sd/targets]# cat prometheus_server.yml
- targets:- 192.168.37.100:9090labels:app: prometheusjob: prometheus

开启服务

[root@prometheus /usr/local/prometheus-2.27.1.linux-amd64]# ./prometheus --config.file=./file_sd/prometheus.yml

在node节点也开启

[root@node1 ~]# systemctl start node_exporter.service[root@node2 ~]# systemctl start node_exporter.service[root@node3 ~]# systemctl start node_exporter.service

访问192.168.37.100:9090端口,可以看到此时的数据是基于文件发现的

文件发现的作用

如果增加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可以指定在端口上对应哪个service

hprometheus 基于Dws的服务中的SRV记录,让prometheus发现指定target上对应的端口对应的是exporter或instrumentation

基于consul发现

相关概念

一款基于golang开发的开源工具,主要面向分布式,服务化的系统提供服务注册、服务一发现和配置管理的功能提供服务注册/发现、健康检查、Key/Value存储、多数据中心和分布式一致性保证等功能

原理:通过定义json文件将可以进行数据采集的服务注册到consul中,用于自动发现同时使用prometheus做为client端获取consul上注册的服务,从而进行获取数据

安装consul_1.9.0版本

Prometheus节点部署consul 官网Downloads | Consul by HashiCorp

[root@prometheus /opt]# unzip consul_1.9.0_linux_amd64.zip -d /usr/local/bin/
Archive:  consul_1.9.0_linux_amd64.zipinflating: /usr/local/bin/consul

启动开发者模式

consul开发者模式,可以快速开启单节点的consul服务,具有完整功能,方便开发测试

创建consul工作目录 

[root@prometheus ~]# mkdir -p /consul/data
[root@prometheus ~]# mkdir /etc/consul && cd /etc/consul

运行开发者模式

[root@prometheus /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:监听地址

编辑/etc/consul目录下的prometheus-servers.json配置文件

[root@prometheus /etc/consul]# cat prometheus-servers.json
{"services": [{"id": "prometheus-server-node01","name": "prom-server-node01","address": "192.168.37.100","port": 9090,"tags": ["prometheus"],"checks": [{"http": "http://192.168.37.100:9090/metrics","interval": "5s"}]}]
}

重载配置文件

[root@prometheus /etc/consul]# consul reload
Configuration reload triggered

创建consul自动发现的prometheus.yml文件

[root@prometheus /etc/consul]# cd /usr/local/prometheus-2.27.1.linux-amd64/
[root@prometheus /usr/local/prometheus-2.27.1.linux-amd64]# ls
console_libraries  consoles  data  file_sd  LICENSE  NOTICE  prometheus  promtool
[root@prometheus /usr/local/prometheus-2.27.1.linux-amd64]# mkdir consul-sd
[root@prometheus /usr/local/prometheus-2.27.1.linux-amd64]# cd consul-sd/
[root@prometheus /usr/local/prometheus-2.27.1.linux-amd64/consul-sd]# vim prometheus.yml

 指点配置文件启动

[root@prometheus /usr/local/prometheus-2.27.1.linux-amd64]# ./prometheus --config.file=./consul-sd/prometheus.yml

consul服务一定要开启,之前已经开启了,开始注册其他node节点

在192.168.37.100 /etc/consul/目录下编辑nodes.json文件

[root@prometheus /etc/consul]# cat nodes.json
{"services": [{"id": "node_exporter-node01","name": "node01","address": "192.168.37.101","port": 9100,"tags": ["nodes"],"checks": [{"http": "http://192.168.37.101:9100/metrics","interval": "5s"}]},{"id": "node_exporter-node02","name": "node02","address": "192.168.37.102","port": 9100,"tags": ["nodes"],"checks": [{"http": "http://192.168.37.102:9100/metrics","interval": "5s"}]},{"id": "node_exporter-node03","name": "node03","address": "192.168.37.107","port": 9100,"tags": ["nodes"],"checks": [{"http": "http://192.168.37.107:9100/metrics","interval": "5s"}]}]
}

重载consul配置文件

[root@prometheus /etc/consul]# consul reload
Configuration reload triggered

重启其他node节点

[root@node1 ~]# systemctl restart node_exporter.service
[root@node2 ~]# systemctl restart node_exporter.service
[root@node3 ~]# systemctl restart node_exporter.service

访问192.168.37.100:9090或者8500

Grafana部署及模板展示

grafana是一款基于go语言开发的通用可视化工具,支持从不同的数据源加载并展示数据,可作为其数据源的部分储存系统如下所示:

TSDB:Prometheus、InfluxDB、OpenTSDB和Graphit

日志和文档存储:Loki和ElasitchSearch

分布式请求跟踪:Zipkin、Jaeger和Tenpo

SQL DB:Mysql、PostgreSQL和Microsoft SQL server

grafana基础默认监听于TCP协议的3000端口,支持集成其他认证服务,且能够通过/metrics输出内建指标;

数据源(Data Source):提供用于展示的数据的储存系统

仪表盘(Dashboard):组织和管理数据的可视化面板(Panel)

团队和用户:提供了面向企业组织层级的管理能力;

centos系统上的部署Grafana(端口3000)步骤(版本7.3.6)

将grafana包拖进来,因为下载的是rpm包不考虑依赖关系直接yum安装

[root@prometheus /opt]# yum install grafana-7.3.6-1.x86_64.rpm -y

开启grafana

[root@prometheus /opt]# systemctl start grafana-server.service

访问192.168.37.100:3000端口,账号密码默认为admin,admin

grafana默认配置文件目录 /etc/grafana/grafana.ini,170-180左右标识密码用户 security模块

配置Prometheus的数据源 

设置自己的IP地址 

 导入Prometheus

应用 数据源

可以看到多种多样的形式 

接下来监控自己主机的信息,导入node expor

grafana模板
Dashboards | Grafana Labs

输入1860或者导入文件即可,这部分图忘截了。。。。

剩下的就导入即可

此时就可以管理节点了是不是很酷........

总结

Prometheus的几种动态服务发现

基于文件发现:如需再添加node节点不需要停止服务,只需在所指的位置下添加地址即可

DNS发现;它是发现针对一组DNS域名进行定期查询,以发现待监控的目标查询时使用

基于consul发现:用于自动发现同时使用prometheus做为client端获取consul上注册的服务,从而进行获取数据

  Grafana的部署和展示有多种存储系统如tsdb、日志存储、团队开发等等一些通用的可视化展示工具

Prometheus服务发现+Grafana炫酷的界面展示相关推荐

  1. Prometheus 服务发现

    文章目录 一.Prometheus 部署 二.部署监控其他节点 1. 主配置文件解析 2. server 节点配置 3. 加入slave节点监控 4. 验证是否加入成功 三.表达式浏览器 1. 表达式 ...

  2. BOLT.NET 学习笔记(一) 开篇 用.net winform 快速开发 炫酷的界面

    BOLT.NET 学习笔记(一) 开篇 用.net winform 快速开发 炫酷的界面 bolt 基本介绍 Bolt界面引擎是迅雷公司从2009年开始开发的第四代界面库.迅雷7是首个采用该引擎成功开 ...

  3. 总结:Prometheus服务发现机制

    一.介绍 当我们使用各类exporter分别对系统.数据库和HTTP服务进行监控指标采集,对于所有监控指标对应的Target的运行状态和资源使用情况,都是用Prometheus的静态配置功能 stat ...

  4. js和CSS3炫酷3D相册展示

    <!doctype html> <html> <head> <meta charset="UTF"> <title>js ...

  5. 超级时尚炫酷快速图文展示PR2021模板MOGRT|AE模板

    Premiere超级时尚炫酷快速图文展示PR2021模板Mogrt|AE模板 时尚介绍 模板功能 需要 After Effects CC 2021 和 Premiere Pro CC 2021 无需插 ...

  6. html动画图片重叠,CSS3炫酷堆叠图片展示动画特效

    这是一款效果的CSS3炫酷堆叠图片展示动画特效.该堆叠图片展示效果是将一组图片堆叠在一起,然后以各种CSS动画效果来切换最上面的一张图片.该特效将使用纯CSS3制作,它可以在所有现代浏览器和移动设备上 ...

  7. python3d相册源代码_js和CSS3炫酷3D相册展示

    js和CSS3炫酷3D相册展示 *{margin:0;padding:0;} body{background:url(img/bg.jpg);width:100%;height:100%;overfl ...

  8. android打开小屏登录画面,Android炫酷登录界面

    来看一波图片吧 CoverEyeLogin.gif 动画效果介绍 1.当用户输入用户名时,小猫头鹰的眼睛是没有被捂住的 2.当用户输入密码时,小猫头鹰会用手捂住眼睛 3.如果用户名和密码都已经输入完毕 ...

  9. grafana结合zabbix打造炫酷监控界面

    一.安装并启动grafana //直接yum源安装 yum install -y https://dl.grafana.com/oss/release/grafana-5.4.2-1.x86_64.r ...

最新文章

  1. Go 语言编程 — net/http — HTTP 服务端
  2. (五)Java工具类ArrayUtils详解
  3. 代码之谜(零)- 开篇/前言/序
  4. C语言程序流程设计之跳转【程序流程设计】(14)
  5. Win32ASM-进程学习[3]-读写进程空间
  6. C#中双问号、双冒号等几个特殊关键字
  7. QAQ的幸运数字 数学
  8. 机器学习线性回归_机器学习实例--线性回归
  9. java 类一定要声明成public_java测试题(四)--答案
  10. 婆媳关系不好首先就有一个斤斤计较的婆婆
  11. css+div(2)
  12. psp记忆棒测试软件,PSP记忆棒有问题?修复软件MS-Format帮你解忧
  13. gmail如何设置邮箱别名
  14. 虚拟机几种联网的方式,如何共享主机IP
  15. 计算机合成图像的过程码,专转本计算机习题
  16. 诺基亚7plus支持html,【诺基亚7Plus评测】诺基亚7Plus评测:三蔡司镜头“全面”来袭(全文)_诺基亚 7 Plus(4GB RAM/全网通)_手机评测-中关村在线...
  17. windows10网络共享及重启后失效的解决办法
  18. cad相贯展开图lisp_cad相贯线的画法
  19. SHELL编程之三剑客
  20. oracle standby rac,同一环境下新建Standby RAC库

热门文章

  1. 新浪微博Android版 登录之Logo欢迎页
  2. 现代办公室信号干扰解决方案
  3. android:ellipsize=end在ConstraintLayout中无效的问题
  4. Android上好用的DLNA播放器BubbleUPnP
  5. 【解决方案】EasyNVR视频边缘计算网关城市智慧交通解决方案
  6. CnOpenData中国高校专利授权数量统计
  7. Android课程设计--网上购物商城
  8. 16-内存分配与回收策略-对象优先分配Eden+大对象进老年代
  9. 子墨对酒《三国杀》里论模式(三)适配器模式
  10. win10打不开cmd,windows找不到文件cmd怎么办?