consul接入PHP,Prometheus 通过consul动态修改Targets接入

Prometheus 通过consul动态修改Targets接入

通常Prometheus 要增加一个target,需要在配置文件中已添加一个job,例如下:

- job_name: 'prometheus'

static_configs:

- targets: ['localhost:9090']

1

2

3

每次修改需要直接修改服务器上的配置文件,非常麻烦。Prometheus 提供了多种动态服务发现的功能,这里使用consul来做一个例子。

1.在Prometheus配置文件中配置consul

- job_name: 'consul-prometheus'

consul_sd_configs:

#consul 地址

- server: 'xx.xx.xx.xx:8500'

services: []

relabel_configs:

- source_labels: [__meta_consul_tags]

regex: .*prometheus-target.*

action: keep

配置这个之后,Prometheus就会动态发现consul的Service。

这里使用了 relabel_configs 用法可以参考https://prometheus.io/docs/prometheus/latest/configuration/configuration/#

我这里的意思是过滤,只有consul的service的tag为prometheus-target 的动态发现。

随后我们只要在consul修改Service即可。

2.consul中注册服务

consul注册注册service 的方式有多种,

如果静态注册.

创建文件夹consul.d

添加如下test.json:

{

"service":{

"id": "node",

"name": "prometheus-node",

"address": "127.0.0.1",

"port": 9100,

"tags": ["prometheus-target"],

"checks": [

{

"http": "http://127.0.0.1:9100/metrics",

"interval": "15s"

}

]

}

}

在consul启动命令中,指定配置路径

-config-dir=consul.d

1

启动后查看Prometheus 和consul 界面,可以看到target是否引入。

也可以使用http Api 的方式

curl -X PUT -d '{"service":{"id":"node","name":"prometheus-node","address":"127.0.0.1","port":9100,"tags":["prometheus-target"],"checks":[{"http":"http://127.0.0.1:9100/metrics","interval":"15s"}]}}' http://127.0.0.1:8500/v1/agent/service/register

1

我这里使用JAVA 版本的

com.orbitz.consul

consul-client

1.0.0

使用如下:

public class ConsulTest {

Consul client;

/**

* 初始化.

*/

@Before

public void init() {

client = Consul.builder().withHostAndPort(HostAndPort.fromParts("xx.xx.xx.xx", 8500)).build();

// catalogClient = client.catalogClient();

}

@Test

public void queryAll() {

Map services = client.agentClient().getServices();

for (Map.Entry entry : services.entrySet()) {

System.out.println("key:" + entry.getKey());

System.out.println("value:" + entry.getValue().toString());

}

}

@Test

public void testDelete() {

client.agentClient().deregister("etcd");

}

@Test

public void testAdd1() {

String serviceName = "prometheus-etcd";

String serviceId = "etcd";

Registration.RegCheck single = Registration.RegCheck.http("http://127.0.0.1:2379/metrics", 20);

Registration reg = ImmutableRegistration.builder()

.check(single)

.addTags("prometheus-target")

.address("127.0.0.1")

.port(2379)

.name(serviceName)

.id(serviceId)

.build();

client.agentClient().register(reg);

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值