Prometheus服务发现+Grafana炫酷的界面展示

目录

部署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:9100
  labels:
    app: node-exporter
    job: node
[root@prometheus /usr/local/prometheus-2.27.1.linux-amd64/file_sd/targets]# cat prometheus_server.yml
- targets:
  - 192.168.37.100:9090
  labels:
    app: prometheus
    job: 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.zip
  inflating: /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、日志存储、团队开发等等一些通用的可视化展示工具

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小柏ぁ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值