[prometheus]基于consul的服务发现
前言
prometheus默认使用静态配置文件监控服务,每次添加服务都要重载,比较麻烦。好在官方提供多种动态服务发现的方法,常用的一般有基于文件服务发现、基于consul服务发现和基于dns服务发现,本文主要介绍基于consul如何实现动态增加、删除监控节点。
- prometheus版本:2.38.0
- consul版本:1.13.1
- 系统版本:centos 7
安装consul
- 使用二进制包安装
# 先启动试试
./consul agent -dev
- 编辑服务注册文件
{
"service": {
"id": "192.168.0.20",
"name": "node_exporter",
"address": "192.168.0.20",
"tags": [
"exporter"
],
"checks": [
{
"http": "http://192.168.0.20:9100/metrics",
"interval": "5s"
}
],
"port": 9100
}
}
- 脚本启动,内容如下,仅供参考
#!/bin/bash
set -u
script_dir=$(cd $(dirname $0) && pwd)
logfile=${script_dir}/logs/app.log
function prepare(){
[ -d ${script_dir}/logs ] || mkdir -p ${script_dir}/logs
[ -d ${script_dir}/data ] || mkdir -p ${script_dir}/data
}
function startapp(){
nohup ${script_dir}/consul agent -dev --client 0.0.0.0 \
-config-dir=${script_dir}/conf \
-data-dir=${script_dir}/data \
-pid-file=${script_dir}/logs/app.pid \
> ${logfile} 2>&1 &
}
function main(){
prepare
startapp
}
main
- 测试。浏览器访问 IP:8500 看能不能打开web ui界面
配置prometheus
- 安装略过
- prometheus.yml相关配置
scrape_configs:
- job_name: "node_exporter"
metrics_path: /metrics
scheme: http
consul_sd_configs:
- server: 192.168.0.20:8500
services:
- node_exporter
配置node_exporter
- 安装略过
- 启动
nohup /home/apps/node_exporter/node_exporter \
--web.listen-address=":9090" > /dev/null 2>&1 &
其它
- 通过http api注册服务
curl -X PUT -d '{"id": "192.168.0.20","name": "node_exporter","address": "192.168.0.20","port": 9100,"tags": ["linux"],"checks": [{"http": "http://192.168.0.20:9090/metrics", "interval": "5s"}]}' http://192.168.0.20:8500/v1/agent/service/register
- 通过 http api 删除服务
# 删除节点时候指定id
curl -X PUT http://192.168.0.20:8500/v1/agent/service/deregister/192.168.0.20
- 如果要添加其它服务器节点,则替换id、address、checks等即可,name不变,比如192.168.0.21也安装node_exporter, 向consul的api接口发起请求添加服务
curl -X PUT -d '{"id": "192.168.0.21","name": "node_exporter","address": "192.168.0.21","port": 9090,"tags": ["linux"],"checks": [{"http": "http://192.168.0.21:9090/metrics", "interval": "5s"}]}' http://192.168.0.20:8500/v1/agent/service/register
参考
[prometheus]基于consul的服务发现的更多相关文章
- Prometheus 基于文件的服务发现
Prometheus 基于文件的服务发现 官方文档:https://github.com/prometheus/prometheus/tree/master/discovery 服务发现支持: end ...
- Prometheus基于Eureka的服务发现
Prometheus基于Eureka的服务发现 一.背景 二.实现步骤 1.eureka 客户端注册到prometheus中 2.prometheus中的写法 3.实现效果 三.完整代码 四.参考链接 ...
- Prometheus基于文件的服务发现
Prometheus基于文件的服务发现 一.基于文件的服务发现 1.prometheus.yml 配置文件的写法 2.file_sd 目录下的文件 3.配置结果 二.注意事项 三.参考链接 一.基于文 ...
- prometheus — 基于文件的服务发现
基于文件的服务发现方式不需要依赖其他平台与第三方服务,用户只需将要新的target信息以yaml或json文件格式添加到target文件中 ,prometheus会定期从指定文件中读取target信息 ...
- Go | Go 使用 consul 做服务发现
Go 使用 consul 做服务发现 目录 Go 使用 consul 做服务发现 前言 一.目标 二.使用步骤 1. 安装 consul 2. 服务注册 定义接口 具体实现 测试用例 3. 服务发现 ...
- Prometheus基于consul自动发现监控对象 https://www.iloxp.com/archive/11/
Prometheus 监控目标为什么要自动发现 频繁对Prometheus配置文件进行修改,无疑给运维人员带来很大的负担,还有可能直接变成一个“配置小王子”,即使是配置小王子也会存在人为失误的情况 ...
- .NET Core微服务之基于Consul实现服务治理
Tip: 此篇已加入.NET Core微服务基础系列文章索引 一.Consul基础介绍 Consul是HashiCorp公司推出的开源工具,用于实现分布式系统的服务发现与配置.与其他分布式服务注册与发 ...
- prometheus 基于DNS的目标发现
prometheus 基于DNS的目标发现 DNS服务发现依赖于查询A.AAAA或SRV DNS记录. 1.基于 SRV 记录发现 scrape_configs: - job_name: 'webap ...
- 使用Consul做服务发现的若干姿势
从2016年起就开始接触Consul,使用的主要目的就是做服务发现,后来逐步应用于生产环境,并总结了少许使用经验.最开始使用Consul的人不多,为了方便交流创建了一个QQ群,这两年微服务越来越火,使 ...
- Consul做服务发现
使用Consul做服务发现的若干姿势 https://www.cnblogs.com/bossma/p/9756809.html 从2016年起就开始接触Consul,使用的主要目的就是做服务发现,后 ...
随机推荐
- Pwn系列之Protostar靶场 Stack1题解
(gdb) disasse main Dump of assembler code for function main: 0x08048464 <main+0>: push ebp 0x0 ...
- 网站七牛云CDN加速配置
首先进入七牛云管理平台 1.添加域名 2.添加需要加速的域名,比如我添加的是gechuang.net 3.源站配置,这里要用IP地址,访问的目录下面要有能访问测试的文件 4.缓存配置,也就是配置缓存哪 ...
- 2022-08-30:给你一个字符串化学式 formula ,返回 每种原子的数量 。 原子总是以一个大写字母开始,接着跟随 0 个或任意个小写字母,表示原子的名字。 如果数量大于 1,原子后会跟着数
2022-08-30:给你一个字符串化学式 formula ,返回 每种原子的数量 . 原子总是以一个大写字母开始,接着跟随 0 个或任意个小写字母,表示原子的名字. 如果数量大于 1,原子后会跟着数 ...
- 去掉谷歌/新版Edge 浏览器的禁用扩展提示
简介 你打开是谷歌/新版Edge浏览器的时候是不是总发现右上角有个提示?请禁用/停用以开发者模式运行的扩展程序?每次打开都有一个小框框,让人很烦? 接下来让我们使用 dll大法 来解决这个问题! 步骤 ...
- 小程序使用echarts 在一个页面打印多个饼图的坑
一.下载echarts微信版 下载地址:https://github.com/ecomfe/echarts-for-weixin 或者直接云盘下载 https://pan.baidu.com/s/1i ...
- 《Just For Fun》:学习即游戏
<Just For Fun>:学习即游戏 最近读完了 Linus 的自传<Just For Fun>,一直想写点东西,但始终苦于工作繁忙,无暇思考该从何写起.技术上自然不用废话 ...
- Redis系列14:使用List实现消息队列
Redis系列1:深刻理解高性能Redis的本质 Redis系列2:数据持久化提高可用性 Redis系列3:高可用之主从架构 Redis系列4:高可用之Sentinel(哨兵模式) Redis系列5: ...
- 现代 C++ 性能飞跃之:移动语义
*以下内容为本人的学习笔记,如需要转载,请声明原文链接微信公众号「ENG八戒」https://mp.weixin.qq.com/s/Xd_FwT8E8Yx9Vnb64h6C8w 带给现代 C++ 性能 ...
- ResNet模型:在计算机视觉任务中实现深度学习
目录 1. 引言 2. 技术原理及概念 2.1 基本概念解释 2.2 技术原理介绍 3. 实现步骤与流程 3.1 准备工作:环境配置与依赖安装 3.2 核心模块实现 3.3 集成与测试 4. 示例与应 ...
- Go 语言 context 都能做什么?
原文链接: Go 语言 context 都能做什么? 很多 Go 项目的源码,在读的过程中会发现一个很常见的参数 ctx,而且基本都是作为函数的第一个参数. 为什么要这么写呢?这个参数到底有什么用呢? ...