prometheus监控配置基于Consul的服务发现

环境:

主机名             IP                     系统                                                 说明

ubunt-1    192.168.1.144      ubuntu20.0.4                      docker安装的Prometheus

docker      192.168.1.140      centos7            已完成MySQL mongodb 等基于配置文件的监控

说明:

Consul 是由 HashiCorp 开发的一个支持多数据中心的分布式服务发现和键值对存储服务的开源软件,是一个通用的服务发现和注册中心工具,被大量应用于基于微服务的软件架构当中。

我们通过api将exporter服务注册到 Consul 然后配置 Prometheus 从Consul 中发现实例。

关于Consul 本身使用可以查看官方文档https://learn.hashicorp.com/consul了解更多。

1、安装配置Consul的两种方式(二选一即可)

注意:在Prometheus服务器端安装Consul

1、二进制安装配置Consul:

在页面https://www.consul.io/downloads下载符合自己系统的安装文件,比如我这里是Linux系统使用下面命令下载安装即可:

wget https://releases.hashicorp.com/consul/1.14.5/consul_1.14.5_linux_amd64.zip

yum -y install unzip

unzip consul_1.14.5_linux_amd64.zip

mv consul /usr/local/bin

consul version

启动consul

为了查看更多的日志信息,我们可以在dev模式下运行consul 如下所示:

consul agent -dev -client 0.0.0.0

启动命令后面使用的client 参数指定了客户端绑定的IP地址 默认为127.0.0.1

2、docker安装Consul

docker运行:

docker run -d --name consul -p 8500:8500 consul

检查:

docker ps

2、访问consul的http访问地址

访问你Prometheus服务器的IP加8500端口和/ui/dc1/services后缀

http://192.168.1.144:8500/ui/dc1/services

3、注册到consul的两种方式(二选一即可)

1、使用命令行注册

curl -X PUT -d '{"id": "node1","name": "node_exporter","address": "node_exporter","port": 9100,"tags": ["exporter"],"meta": {"job": "node_exporter","instance": "Prometheus服务器"},"checks": [{"http": "http://192.168.1.144:9100/metrics", "interval": "5s"}]}' http://localhost:8500/v1/agent/service/register

命令解释:

  • -X PUT:使用 PUT 方法发送请求。在这个命令中,PUT 方法用于注册服务到 Consul。
  • -d '{"id": "node1","name": "node_exporter","address": "node_exporter","port": 9100,"tags": ["exporter"],"meta": {"job": "node_exporter","instance": "Prometheus服务器"},"checks": [{"http": "http://192.168.1.144:9100/metrics", "interval": "5s"}]}':指定要发送的数据体,即要注册的服务的信息。这里使用 JSON 格式进行定义。
  • "id": "node1":服务的唯一标识符。
  • "name": "node_exporter":服务的名称。
  • "address": "node_exporter":服务的地址。
  • "port": 9100:服务的端口号。
  • "tags": ["exporter"]:服务的标签,可以是任意字符串数组。
  • "meta": {"job": "node_exporter","instance": "Prometheus服务器"}:附加的元数据信息,可以是任意键值对。
  • "checks": [{"http": "http://192.168.1.144:9100/metrics", "interval": "5s"}]:与服务相关的健康检查配置。这里定义了一个 HTTP 类型的检查,检查地址为 http://192.168.1.144:9100/metrics,每 5 秒执行一次。
  • http://localhost:8500/v1/agent/service/register:Consul Agent 的注册服务 API 端点。

2、将json数据放在文件中使用文件注册

把json数据放在文件中,使用这个json文件注册

mkdir /data/consul

cd /data/consul

vim node_exporter.json

{
  "id": "node2",
  "name": "node_exporter",
  "address": "192.168.1.140",
  "port": 9100,
  "tags": ["exporter"],
  "meta": {
    "job": "node_exporter",
    "instance": "test服务器"
  },
  "checks": [{
    "http": "http://192.168.1.140:9100/metrics",
    "interval": "10s"
  }]
}

使用json文件注册

curl --request PUT --data @node_exporter.json http://localhost:8500/v1/agent/service/register

4、注册完成后在consul页面刷新查看

可以看到多了一个node_exporter实例注册成功

5、配置Prometheus

上面我们通过consul注册了node_exporter服务,接下来我们将配置Prometheus通过consul来自动发现node_porter服务,在Prometheus的配置文件prometheus.yml文件中的scrape_configs 部分添加如下所示的抓取配置。

备份源文件:

cd /data/docker-prometheus

cp -a prometheus/prometheus.yml prometheus/prometheus.yml.bak

ls -l prometheus/prometheus.yml.bak

使用cat去掉之前的配置,使用下面的配置

cat > prometheus/prometheus.yml<<"EOF"

# 全局配置
global:
  scrape_interval: 15s  # 将搜刮间隔设置为每15秒一次。默认是每1分钟一次
  evaluation_interval: 15s  # 每15秒评估一次规则,默认是每1分钟一次

# Alertmanager 配置
alerting:
  alertmanagers:
  - static_configs:
    - targets: ['alertmanager:9093']

# 报警(触发器)配置
rule_files:
  - "alert.yml"
  - "rules/*.yml"

# 搜刮配置
scrape_configs:
  - job_name: 'prometheus'
    # 覆盖全局默认值,每15秒从该作业中刮取一次目标
    scrape_interval: 15s
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'alertmanager'
    # 覆盖全局默认值,每15秒从该作业中刮取一次目标
    scrape_interval: 15s
    static_configs:
      - targets: ['alertmanager:9093']

  - job_name: 'consul_exporter'
    consul_sd_configs:
      - server: '192.168.1.144:8500'
        services: []
    relabel_configs:
      - source_labels: [__meta_consul_tags]
        regex: .*exporter.*
        action: keep
      - regex: __meta_consul_service_metadata_(.+)
        action: labelmap

EOF

重新加载配置

curl -X POST http://localhost:9090/-/reload

6、访问Prometheus端的IP加9090端口选择Status在选择Targets查看

http://192.168.1.144:9090/

7、创建添加脚本(在Prometheus端操作)

添加一个脚本

mkdir /data/consul

cd /data/consul

vim api.sh

#nginx
curl -X PUT -d '{
  "id": "nginx1",
  "name": "nginx_exporter",
  "address": "192.168.1.139",
  "port": 9113,
  "tags": ["exporter"],
  "meta": {
    "job": "nginx_exporter",
    "instance": "harbor服务器",
    "env": "test"
  },
  "checks": [{
    "http": "http://192.168.1.139:9113/metrics",
    "interval": "5s"
  }]
}' http://localhost:8500/v1/agent/service/register

#rabbitmq
curl -X PUT -d '{
  "id": "rabbitmq1",
  "name": "rabbitmq_exporter",
  "address": "192.168.1.139",
  "port": 9419,
  "tags": ["exporter"],
  "meta": {
    "job": "rabbitmq_exporter",
    "instance": "harbor服务器",
    "env": "test"
  },
  "checks": [{
    "http": "http://192.168.1.139:9419/metrics",
    "interval": "5s"
  }]
}' http://localhost:8500/v1/agent/service/register
 

#redis
curl -X PUT -d '{
  "id": "redis1",
  "name": "redis_exporter",
  "address": "192.168.1.139",
  "port": 9121,
  "tags": ["exporter"],
  "meta": {
    "job": "redis_exporter",
    "instance": "harbor服务器",
    "env": "test"
  },
  "checks": [{
    "http": "http://192.168.1.139:9121/metrics",
    "interval": "5s"
  }]
}' http://localhost:8500/v1/agent/service/register

#mongodb
curl -X PUT -d '{
  "id": "mongodb1",
  "name": "mongodb_exporter",
  "address": "192.168.1.140",
  "port": 9216,
  "tags": ["exporter"],
  "meta": {
    "job": "mongodb_exporter",
    "instance": "docker服务器",
    "env": "test"
  },
  "checks": [{
    "http": "http://192.168.1.140:9216/metrics",
    "interval": "5s"
  }]
}' http://localhost:8500/v1/agent/service/register

#mysql
curl -X PUT -d '{
  "id": "mysql1",
  "name": "mysqld_exporter",
  "address": "192.168.1.140",
  "port": 9104,
  "tags": ["exporter"],
  "meta": {
    "job": "mysqld_exporter",
    "instance": "docker服务器",
    "env": "test"
  },
  "checks": [{
    "http": "http://192.168.1.140:9104/metrics",
    "interval": "5s"
  }]
}' http://localhost:8500/v1/agent/service/register
 

#cadvisor
curl -X PUT -d '{
  "id": "cadvisor1",
  "name": "cadvisor",
  "address": "192.168.1.144",
  "port": 8080,
  "tags": ["exporter"],
  "meta": {
    "job": "cadvisor",
    "instance": "Prometheus服务器",
    "env": "test"
  },
  "checks": [{
    "http": "http://192.168.1.144:8080/metrics",
    "interval": "5s"
  }]
}' http://localhost:8500/v1/agent/service/register

curl -X PUT -d '{
  "id": "cadvisor2",
  "name": "cadvisor",
  "address": "192.168.1.140",
  "port": 8080,
  "tags": ["exporter"],
  "meta": {
    "job": "cadvisor",
    "instance": "docker服务器",
    "env": "test"
  },
  "checks": [{
    "http": "http://192.168.1.140:8080/metrics",
    "interval": "5s"
  }]
}' http://localhost:8500/v1/agent/service/register
 

#process_exporter
curl -X PUT -d '{
  "id": "process1",
  "name": "process_exporter",
  "address": "192.168.1.140",
  "port": 9256,
  "tags": ["exporter"],
  "meta": {
    "job": "process_exporter",
    "instance": "docker服务器",
    "env": "test"
  },
  "checks": [{
    "http": "http://192.168.1.140:9256/metrics",
    "interval": "5s"
  }]
}' http://localhost:8500/v1/agent/service/register

#domin
curl -X PUT -d '{
  "id": "domain1",
  "name": "domain_exporter",
  "address": "baidu.com",
  "tags": ["domain"],
  "checks": [{
    "http": "http://192.168.1.140:9222",
    "interval": "5s"
  }]
}' http://localhost:8500/v1/agent/service/register

执行脚本:

sh api.sh

8、脚本执行完成后在Consul 页面刷新查看

注:如果页面报错稍等一会再次刷新一下查看,

9、再次访问Prometheus端的IP加9090端口选择Status在选择Targets查看

http://192.168.1.144:9090/


10、安装consul manager

注:consul manager 需要依赖 consul 请先完成 consul 的部署。

使用docker-compose来部署consul manager

下载(在Prometheus端操作):

wget https://starsl.cn/static/img/docker-compose.yml

编辑:

vim docker-compose.yml 

11、启动docker-compose

docker-compose up -d          #启动

docker  ps                             #查看

12、访问consul manager的web页面

注:我consul manager是安装在Prometheus端的所以输入Prometheus端的IP加1026端口访问

http://192.168.1.144:1026/

注:密码我们在前面(第 10 )都已经写入了 我的密码是sy123456

可以在上面更简单化的进行新增 删除

  • 19
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值