环境,软件准备
本次演示环境,我是在虚拟机上安装 Linux 系统来执行操作,以下是安装的软件及版本:
- System: CentOS Linux release 7.6
- Docker: 24.0.5
- Prometheus: v2.37.6
- Consul: 1.6.1
注意:这里为了方便启动 Prometheus、Consul服务,我使用 Docker 方式启动,所以本机需要安装好 Docker 环境,这里忽略 Docker 的安装过程。其中 Prometheus 安装配置,可以参照之前文章 Prometheus 监控报警系统 AlertManager 之邮件告警,这里着重介绍一下如何启动并配置 Consul 并配置 Prometheus 基于 Consul 实现自动服务发现。
Consul 安装配置
Docker 安装
使用 Docker 启动 Consul 单节点服务,直接获取最新版官方镜像 consul:latest
命令如下:
$ docker run --name consul -d -p 8500:8500 consul
启动完毕后,同上方法验证是否启动成功,这里为了方便演示,我采用 Docker 方式启动 Consul,这里的访问地址为:http://192.168.75.42:8500
API 注册服务到 Consul
接下来,我们要注册服务到 Consul 中,可以通过其提供的 API 标准接口来添加。那么先注册一个测试服务,该测试数据为本机 node-exporter
服务信息,服务地址及端口为 node-exporter
默认提供指标数据的地址,执行如下命令:
$curl -X PUT -d '{"id": "node-exporter","name": "node-exporter-192.168.75.42","address": "192.168.75.42","port": 9100,"tags": ["test"],"checks": [{"http": "http://192.168.75.42:9100/metrics", "interval": "5s"}]}' http://192.168.75.41:8500/v1/agent/service/register
#或者使用配置文件的形式将文件内容注册到consul
[root@node1-prome /zpf/k8s/prometheus/docker-prometheus/prometheus/test]$cat consul1.json
{
"ID": "node-exporter-75.41",
"Name": "node-exporter",
"Tags": [
"node-exporter"
],
"Address": "192.168.75.41",
"Port": 9100,
"Meta": {
"app": "spring-boot",
"team": "appgroup",
"project": "bigdata"
},
"EnableTagOverride": false,
"Check": {
"HTTP": "http://192.168.75.41:9100/metrics",
"Interval": "10s"
},
"Weights": {
"Passing": 10,
"Warning": 1
}
}
$curl --request PUT --data @consul1.json http://192.168.75.41:8500/v1/agent/service/register?replace-existing-checks=1
提一下,如果要注销掉某个服务,可以通过如下 API 命令操作,例如注销上边添加的 node-exporter
服务.这里的node-exporter事这个注册服务的ID