pushgetway(push上传metric数据)

Pushgateway简介

Pushgateway是prometheus的一个组件,prometheus server默认是通过exporter主动获取数据(默认采取pull拉取数据),pushgateway则是通过被动方式推送数据到prometheus server,用户可以写一些自定义的监控脚本把需要监控的数据发送给pushgateway, 然后pushgateway再把数据发送给Prometheus server

Pushgateway优点:

Prometheus 默认采用定时pull 模式拉取targets数据,但是如果不在一个子网或者防火墙,prometheus就拉取不到targets数据,所以可以采用各个target往pushgateway上push数据,然后prometheus去pushgateway上定时pull数据

在监控业务数据的时候,需要将不同数据汇总, 汇总之后的数据可以由pushgateway统一收集,然后由 Prometheus 统一拉取。

pushgateway缺点:

Prometheus拉取状态只针对 pushgateway, 不能对每个节点都有效;

Pushgateway出现问题,整个采集到的数据都会出现问题

监控下线,prometheus还会拉取到旧的监控数据,需要手动清理 pushgateway不要的数据。

安装pushgateway

[root@xianchaonode1 ~]# docker load -i pushgateway.tar.gz
[root@xianchaonode1 ~]# docker run -d --name pushgateway -p 9091:9091 prom/pushgateway
在浏览器访问192.168.40.181:9091出现如下ui界面 可以使用k8s编排

修改prometheus配置文件

修改prometheus-alertmanager-cfg.yaml文件,在k8s-master节点操作
添加如下job
- job_name: 'pushgateway'
scrape_interval: 5s
static_configs:
- targets: ['192.168.40.181:9091']
honor_labels: true kubectl apply -f prometheus-alertmanager-cfg.yaml
kubectl delete -f prometheus-alertmanager-deploy.yaml
kubectl apply -f prometheus-alertmanager-deploy.yaml

在prometheus的targets列表可以看到pushgateway

推送指定的数据格式到pushgateway

向 {job="test_job"} 添加单条数据:
echo " metric 3.6" | curl --data-binary @- http://192.168.40.181:9091/metrics/job/test_job
注:--data-binary 表示发送二进制数据,注意:它是使用POST方式发送的! 添加复杂数据
cat <<EOF | curl --data-binary @- http://192.168.40.181:9091/metrics/job/test_job/instance/test_instance
#TYPE node_memory_usage gauge
node_memory_usage 36
# TYPE memory_total gauge
node_memory_total 36000
EOF 删除某个组下某个实例的所有数据
curl -X DELETE http://192.168.40.181:9091/metrics/job/test_job/instance/test_instance 删除某个组下的所有数据:
curl -X DELETE http://192.168.40.181:9091/metrics/job/test_job

使用脚本上传数据

把数据上报到pushgateway
在被监控服务所在的机器配置数据上报,想要把192.168.40.181这个机器的内存数据上报到pushgateway,下面步骤需要在192.168.40.181操作 cat push.sh node_memory_usages=$(free -m | grep Mem | awk '{print $3/$2*100}')
job_name="memory"
instance_name="192.168.40.181"
cat <<EOF | curl --data-binary @- http://192.168.40.181:9091/metrics/job/$job_name/instance/$instance_name
#TYPE node_memory_usages gauge
node_memory_usages $node_memory_usages
EOF sh push.sh

打开pushgateway web ui界面,可看到如下:

打开prometheus ui界面,可看到如下node_memory_usages的metrics指标

###注意:从上面配置可以看到,我们上传到pushgateway中的数据有job也有instance,而prometheus配置pushgateway这个job_name中也有job和instance,这个job和instance是指pushgateway实例本身,添加 honor_labels: true 参数, 可以避免promethues的targets列表中的job_name是pushgateway的 job 、instance 和上报到pushgateway数据的job和instance冲突。

基于consul服务自动发现

简介:

Consul是分布式k/v数据库,是一个服务注册组件,其他服务都可以注册到consul上,prometheus基于consul的服务发现流程如下:

(1)在consul注册服务或注销服务(监控targets)

(2)Prometheus一直监视consul服务,当发现consul中符合要求的服务有新变化就会更新Prometheus监控对象

consul简介

Consul是一个分布式的,高可用的服务注册系统,由server端和client端组成,每个server和client都是consul的一个节点,consul客户端不保存数据,客户端将接收到的请求转发给响应的Server端。Server之间通过局域网或广域网通信实现数据一致性

部署consul集群

在master1、master2、node1三个节点部署consul
master1是consul的server,master2是consul的client,node1是consul的client
1.下载consul二进制包,在各个节点操作
mkdir /opt/consul/data -p && cd /opt/consul
wget https://releases.hashicorp.com/consul/1.7.1/consul_1.7.1_linux_amd64.zip
unzip consul_1.7.1_linux_amd64.zip
注:在https://releases.hashicorp.com/consul处可下载各个版本的consul,1.7.1是最新版本
2.启动consul
在master1上:
cd /opt/consul
nohup ./consul agent -server -bootstrap -bind=192.168.124.16 -client=192.168.124.16 -data-dir=data -ui -node=192.168.124.16 & 这样就启动了master1上的consul 在master2上:
cd /opt/consul
nohup ./consul agent -bind=192.168.124.26 -client=192.168.124.26 -data-dir=data -node=192.168124.26 -join=192.168.124.16 & 在node1上:
cd /opt/consul
nohup ./consul agent -bind=192.168.124.56 -client=192.168.124.56 -data-dir=data -node=192.168.124.56 -join=192.168.124.16 &

各个节点都启动完之后

在浏览器访问http://192.168.124.16:8500/

可看到consul的管理界面

服务注册到consul

使用HTTP API 方式注册node-exporter服务注册到Consul,在master1上执行

curl -X PUT -d '{"id": "node-exporter","name": "node-exporter","address": "192.168.124.16","port":9100,"tags": ["node-exporter"],"checks": [{"http": "http://192.168.124.16:9100/","interval": "5s"}]}' http://192.168.124.16:8500/v1/agent/service/register
看到如下显示health checks都是正常,说明node-exporter已经成功注册到consul中了
http://192.168.124.16:8500/ui/dc1/services

http://192.168.124.16:8500/ui/dc1/services/node-exporter

这个步骤是移除,先不操作,把consul中注册的服务移除:

curl --request PUT http://192.168.124.16:8500/v1/agent/service/deregister/192.168.124.16

修改prometheus配置文件,变成基于consul的服务发现

在master1上操作
cd /data/prometheus
cat prometheus.yaml
scrape_configs:
- job_name: consul
honor_labels: true
metrics_path: /metrics
scheme: http
consul_sd_configs:
- server: 192.168.124.16:8500
services: []
relabel_configs:
- source_labels: ['__meta_consul_tags']
target_label: 'product'
- source_labels: ['__meta_consul_dc']
target_label: 'idc'
- source_labels: ['__meta_consul_service']
regex: "consul" #匹配为"consul" 的service
action: drop # 执行的动作 static_configs: 配置数据源
consul_sd_configs: 基于consul服务发现的配置
rebel_configs:重新标记
services: [] :这个表示匹配consul中所有的service
docker restart prometheus

在prometheus web ui界面查看

prometheus配置consul服务发现的标签说明

- source_labels: ['__meta_consul_tags']
target_label: 'product'
- source_labels: ['__meta_consul_dc']
target_label: 'idc'
- source_labels: ['__meta_consul_service']
regex: "consul" #匹配为"consul" 的service
action: drop # 执行的动作 参数解释如下:
__meta_consul_tags:标记分隔符连接的目标的标记列表
__meta_consul_dc:目标的数据中心名称
__meta_consul_service:目标所属服务的名称
job':目标服务器的job
__meta_consul_service_port:目标的服务端口

prometheus(5)之consul服务自动发现及pushgetway的更多相关文章

  1. 1.利用consul实现k8s服务自动发现

    标题 : 1.利用consul实现k8s服务自动发现 目录 : 微服务架构设计 序号 : 1 ] } } ] } } ​ - consul自身支持ACL,但目前,Helm图表不支持其中一些功能,需要额 ...

  2. marathon的高可用服务自动发现和负载均衡

    上一篇我们说谈了docker+zookeeper+mesos+marathon集群,本篇我们来谈谈marathon的集群和自动发现服务. marathon的服务自动发现和负载均衡有两种,1是mesos ...

  3. ASP.NET Core gRPC 使用 Consul 服务注册发现

    一. 前言 gRPC 在当前最常见的应用就是在微服务场景中,所以不可避免的会有服务注册与发现问题,我们使用gRPC实现的服务可以使用 Consul 或者 etcd 作为服务注册与发现中心,本文主要介绍 ...

  4. Kubernetes 服务自动发现CoreDNS

    前言 Service服务,是一个概念,逻辑通过selector标签代理指定后端pod.众所周知,pod生命周期短,状态不稳定,pod错误异常后新生成的Pod IP会发生变化,之前Pod的访问方式均不可 ...

  5. dubbo与zk注册中心如何对接,如何做到服务自动发现

    先看下consumer端发起调用时的链路流程: +---------------------------+ +---------------------------+ +--------------- ...

  6. Prometheus 通过 consul 实现自动服务发现

    1.Consul 介绍 Consul 是基于 GO 语言开发的开源工具,主要面向分布式,服务化的系统提供服务注册.服务发现和配置管理的功能.Consul 提供服务注册/发现.健康检查.Key/Valu ...

  7. Prometheus基于consul自动发现监控对象 https://www.iloxp.com/archive/11/

      Prometheus 监控目标为什么要自动发现 频繁对Prometheus配置文件进行修改,无疑给运维人员带来很大的负担,还有可能直接变成一个“配置小王子”,即使是配置小王子也会存在人为失误的情况 ...

  8. Prometheus 自动发现

    目录 简介 环境说明 静态配置 重新加载配置文件 基于文件发现配置 重新加载配置文件 添加主机测试 基于DNS的A记录 修改配置文件 重新加载配置文件 基于DNS的SRV记录自动发现 修改配置文件 重 ...

  9. spring-cloud-consul 服务注册发现与配置

    下面是 Spring Cloud 支持的服务发现软件以及特性对比(Eureka 已停止更新,取而代之的是 Consul): Feature euerka Consul zookeeper etcd 服 ...

随机推荐

  1. PHP 7.4 checking for libzip 和 failed to open error_log 问题

    来源: https://hqidi.com/154.html 两个深坑,成年阿根廷龙踩出来的坑,网上都没找到解决方法,都是自己摸索出来的. 前面一切顺利: yum install -y libxml2 ...

  2. MySQL 服务无法启动。 服务没有报告任何错误。 请键入 NET HELPMSG 3534 以获得更多的帮助。

    第一步 有一部分人成功了在安装根目录创建data文件夹 第二步 有一部分人成功了D:\Program Files\mysql\bin>mysqld initialize 第三步 这步之后我安装成 ...

  3. pyqt5设计无边框窗口(一)

    import sys from PyQt5 import QtGui,QtCore from PyQt5 import QtCore, QtGui, QtWidgets ############### ...

  4. c++ 的学习 第二集函数的重载之3 -利用IDA分析bebug里面

    1. 对项目右击,在文件资源管理器中打开文件夹 2.看debug里面的.exe     这个文件 函数的真实的名字 打开.exe文件就是还是显示,,, 3.debug模式有太多的断点信息还有许多不精简 ...

  5. Linux如何配置网络ip?

    Linux如何配置网络ip? 1.首先切换至root用户 su root 输入root用户密码 2.借助dhclient工具自动生成一个网络内可用的ip地址 我们可以手动配置对应的网段的ip地址,但是 ...

  6. supervisor + celery 的简单配置与报错处理

    ubuntu服务器下使用 supervisor 和 celery supervisor 的卸载过程: sudo apt purge supervisor whereis supervisord如果有用 ...

  7. AT3945-[ARC092D]Two Faced Edges【dfs】

    正题 题目链接:https://www.luogu.com.cn/problem/AT3945 题目大意 \(n\)个点\(m\)条边的一张图,对于每条边求它翻转后强连通分量数量是否变化. \(1\l ...

  8. bzoj3729-Gty的游戏【Splay,博弈论】

    正题 题目链接:https://darkbzoj.tk/problem/3729 题目大意 给出\(n\)个点的一棵树,第\(i\)个节点上有\(a_i\)个石子,然后每次可以选择不超过\(L\)个石 ...

  9. Redis5种常用数据类型的使用以及内部编码

    String 字符串类型是redis的最基本类型,首先无论值是什么数据类型,其键都是字符串,且其他数据类型的数据结构都是在字符串的基础上搭建的,相信读者能够体会到字符串在redis的地位是有多么的重要 ...

  10. 基于Jetpack组件构建的开源项目-WanLearning

    「WanLearning App」基于 Material Design 风格构建的 玩 Android 客户端,主要是为了适应Kotlin语言开发流程. 主要特点 基于Google官方宣贯的MVVM模 ...