prometheus+consul 服务自动发现监控

搭建prometheus监控平台请参考:https://blog.csdn.net/han949417140/article/details/112345172

一、 简介

prometheus配置文件 prometheus.yml 里配置需要监听的服务时,是按服务名写死的,如果后面增加了节点或者组件信息,就得手动修改此配置,并重启 promethues;那么能否动态的监听微服务呢?Prometheus 提供了多种动态服务发现的功能,这里以 consul 为例。

二、引入 consul 的好处

在没有使用 consul 服务自动发现的时候,我们需要频繁对 Prometheus 配置文件进行修改,无疑给运维人员带来很大的负担。引入consul之后,只需要在consul中维护监控组件配置,prometheus就能够动态发现配置了。

三、Prometheus 支持的多种服务发现机制

#Prometheus数据源的配置主要分为静态配置和动态发现, 常用的为以下几类:
1)static_configs: #静态服务发现
2)file_sd_configs: #文件服务发现
3)dns_sd_configs: DNS #服务发现
4)kubernetes_sd_configs: #Kubernetes 服务发现
5)consul_sd_configs: Consul #服务发现
...#在监控kubernetes的应用场景中,频繁更新的pod,svc,等等资源配置应该是最能体现Prometheus监控目标自动发现服务的好处

四、docker、docker-compose安装(已安装的可以忽略)

4.1 docker安装

# 阿里云 docker hub 镜像
export REGISTRY_MIRROR=https://registry.cn-hangzhou.aliyuncs.com# 卸载旧版本
yum remove -y docker \
docker-client \
docker-client-latest \
docker-ce-cli \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine# 设置 yum repository
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 安装并启动 docker
yum install -y docker-ce-19.03.11 docker-ce-cli-19.03.11 containerd.io-1.2.13mkdir /etc/docker || truecat > /etc/docker/daemon.json <<EOF
{"registry-mirrors": ["${REGISTRY_MIRROR}"],"exec-opts": ["native.cgroupdriver=systemd"],"log-driver": "json-file","log-opts": {"max-size": "100m"},"storage-driver": "overlay2","storage-opts": ["overlay2.override_kernel_check=true"]
}
EOFmkdir -p /etc/systemd/system/docker.service.d# Restart Docker
systemctl daemon-reload
systemctl enable docker
systemctl restart docker

4.2 docker-compose安装

  • 下载docker-compose包并上传到linux下:
    下载地址:https://download.csdn.net/download/han949417140/14801125
  • 目录转移,权限
    mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
    chomd -R 777 /usr/local/bin/docker-compose

五、基于 docker 的 consul 集群

  • 这里使用 docker-compose 方式部署 consul 集群
cat > /data0/consul/docker-compose.yaml << \EOF
version: '2'
networks:byfn:services:consul1:image: consulcontainer_name: node1volumes: - /data0/consul/conf_with_acl:/consul/configcommand: agent -server -bootstrap-expect=3 -node=node1 -bind=0.0.0.0 -client=0.0.0.0 -config-dir=/consul/confignetworks:- byfnconsul2:image: consulcontainer_name: node2volumes:- /data0/consul/conf_with_acl:/consul/configcommand: agent -server -retry-join=node1 -node=node2 -bind=0.0.0.0 -client=0.0.0.0 -config-dir=/consul/configports:- 8500:8500depends_on:- consul1networks:- byfnconsul3:image: consulvolumes:- /data0/consul/conf_with_acl:/consul/configcontainer_name: node3command: agent -server -retry-join=node1 -node=node3 -bind=0.0.0.0 -client=0.0.0.0 -config-dir=/consul/configdepends_on:- consul1networks:- byfnconsul4:image: consulcontainer_name: node4volumes:- /data0/consul/conf_with_acl:/consul/configcommand: agent -retry-join=node1 -node=ndoe4 -bind=0.0.0.0 -client=0.0.0.0 -ui -config-dir=/consul/configports:- 8501:8500depends_on:- consul2- consul3networks:- byfnconsul5:image: consulcontainer_name: node5volumes:- /data0/consul/conf_without_acl:/consul/configcommand: agent -retry-join=node1 -node=ndoe5 -bind=0.0.0.0 -client=0.0.0.0 -ui -config-dir=/consul/configports:- 8502:8500depends_on:- consul2- consul3networks:- byfn
EOF
  • docker-compose启动consul服务
cd /data0/consul/
docker-compose up -d
  • 浏览器访问consul webui

六、使用接口注册服务

# 注册服务
curl -X PUT -d '{"id": "redis","name": "redis","address": "182.92.219.202","port": 9121,"tags": ["service"],"checks": [{"http": "http://182.92.219.202:9121/","interval": "5s"}]}' http://182.92.219.202:8502/v1/agent/service/register# 查询指定节点以及指定的服务信息
[root@iZ2zejaz33icbod2k4cvy6Z ~]# curl http://182.92.219.202:8500/v1/catalog/service/redis
[{"ID":"9d76becb-c557-e605-de13-a906ef32497c","Node":"ndoe5","Address":"172.20.0.6","Datacenter":"dc1","TaggedAddresses":{"lan":"172.20.0.6","lan_ipv4":"172.20.0.6","wan":"172.20.0.6","wan_ipv4":"172.20.0.6"},"NodeMeta":{"consul-network-segment":""},"ServiceKind":"","ServiceID":"redis","ServiceName":"redis","ServiceTags":["service"],"ServiceAddress":"182.92.219.202","ServiceTaggedAddresses":{"lan_ipv4":{"Address":"182.92.219.202","Port":9121},"wan_ipv4":{"Address":"182.92.219.202","Port":9121}},"ServiceWeights":{"Passing":1,"Warning":1},"ServiceMeta":{},"ServicePort":9121,"ServiceEnableTagOverride":false,"ServiceProxy":{"MeshGateway":{},"Expose":{}},"ServiceConnect":{},"CreateIndex":458,"ModifyIndex":458}][root@iZ2zejaz33icbod2k4cvy6Z ~]# #删除指定服务 redis为要删除服务的id
curl -X PUT  http://182.92.219.202:8502/v1/agent/service/deregister/redis

七、修改 prometheus 使用 consul 服务发现

  • prometheus添加consul监控
vi prometheus.yml
-----------------------------------------------------------------------------------------------------#新增如下配置- job_name: 'consul-prometheus'consul_sd_configs:- server: '182.92.219.202:8502'services: []
--------------------------------------------------------------------------------------------------------------
  • 重启prometheus服务
#重启prometheusnohup /usr/local/Prometheus/prometheus --config.file=/usr/local/Prometheus/prometheus.yml &

八、验证

  • 查看prometheus监控targets
  • 查看grafana对应redis监控图表

prometheus+consul 服务自动发现监控相关推荐

  1. Zabbix通过自动发现监控端口

    安装环境 Zabbix server和agent通过编译方式安装在服务器192.168.25.106上.Zabbix server/agent的安装目录为:/usr/local/zabbix. 创建脚 ...

  2. Linux Zabbix——zabbix可视化、监控模板配置、自定义监控参数、自动发现监控下设备、数据库监控、企业proxy分布式监控搭建配置...

    Zabbix可视化.监控模板配置.自定义监控参数.自动发现监控下设备.数据库监控.proxy分布式监控搭建配置- 文章篇幅较长,可以选择目录查看感兴趣的模块. 1.Zabbix可视化 1. 简介 企业 ...

  3. mysql 从库状态_大神教你自动发现监控mysql从库状态

    导读 zabbix从库如果复制有问题,在主库机器有问题的时候,切为主就会导致数据的丢失.或者主从分离的时候,如果从库出现延时状态的话,会导致前端页面展示的数据不是为最新的数据.因此,监控mysql从库 ...

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

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

  5. 利用zabbix自动发现监控mongo数据库

    但如果公司使用mongo的端口如果不一致的话,那建议使用zabbix的自动发现的功能,自动发现mongo监听的端口,并对它进行相关数据的收集. 先看一下效果图, 教你如何利用zabbix自动发现监控m ...

  6. 使用lld自动发现监控多实例redis

    zabbix 可以通过常见的手段监控到各种服务,通过编写脚本来获取返回值并将获取到的值通过图形来展现出来,包括(系统.服务.业务)层面.可是有些时候在一些不固定的场合监控一些不固定的服务就比较麻烦.例 ...

  7. .NET Core 使用 Consul 服务注册发现

    Consul是一个用来实现分布式系统服务发现与配置的开源工具.它内置了服务注册与发现框架.分布一致性协议实现.健康检查.Key/Value存储.多数据中心方案,不再需要依赖其他工具,使用起来也较为简单 ...

  8. Prometheus之kubernetes-sd自动发现

    kubernetes_sd_config 从Kubernetes的REST API上,Kubernets SD配置检索和获取目标,并且始终保持与集群状态同步.下面是role类型中的任何一个都能在发现目 ...

  9. zabbix自动发现监控磁盘(iops和读写量)

    2019独角兽企业重金招聘Python工程师标准>>> 对于磁盘有个iops的概念比较奇怪,想监控起来看下,利用zabbix的自动发现把每个磁盘的iops监控起来,思路:自动发现所有 ...

最新文章

  1. eas报错日记_金蝶EAS抓取性能日志说明
  2. 你写的 Python 代码可以更“瘦”
  3. UVa 10258 - Contest Scoreboard
  4. 成为单片机高手必知的三个重要步骤(干货分享)
  5. java基准测试_微基准测试进入Java 9
  6. C# Repeater绑定显示数组
  7. opencv threshold_OpenCV-Python 立体图像的深度图 | 五十二
  8. Android9.0删除高通ADsp固件(二十六)
  9. 阿里云云计算 34 RDS的概念
  10. 代码保护软件 VMProtect 用户手册: 什么是VMProtect?
  11. 如何使用ABBYY软件编辑PDF文本
  12. 【产品】固定成本、可变成本、沉没成本和机会成本
  13. Android NDK jint和jstring转换 以及jstring转换成jint的详解
  14. 【云原生之k8s】k8s安全机制
  15. python爬虫小说爬取
  16. SysML精粹学习笔记一
  17. 二叉树 html模板,用 DOM 与 CSS 展示二叉树
  18. HTTP请求/响应报文头部结构
  19. Win11 预览体验计划空白无显示的一种解决方案
  20. 大屏幕和笔记本适应 html,大屏幕 才够劲!超大屏幕笔记本推荐

热门文章

  1. execute immediate动态执行sql
  2. Windows下的Matlab与Java的混合编程,Java调用matlab编译的jar包(linux下请看我另外版本!)
  3. Chrome主页被恶意篡改锁定解决方案
  4. HAL库内部flash及IAP(boot)升级
  5. 《大话数据结构》前言
  6. python程序项目报告_python程序设计实验报告
  7. Java - JFrame 设置背景图片
  8. LCD 的接口类型详解
  9. PL/SQL 设置主键自增长
  10. 【一日一logo_day_48】lota