标签: consul

如何在Prometheus查询中"加入"两个指标?

我使用领事出口商将我的服务的健康状况和状态摄入普罗米修斯.我想在Consul中的服务和节点状态很关键时发出警报,然后在路由这些警报时使用从Consul中提取的标签.

我从这个讨论中了解到,服务标签可能会作为单独的指标导出,但我不确定如何将一个系列与另一个系列连接起来,因此我可以利用具有健康状态的标签.

例如,以下查询:

max(consul_health_service_status{status="critical"}) by (service_name, status,node) == 1
Run Code Online (Sandbox Code Playgroud)

可以回来:

{node="app-server-02",service_name="app-server",status="critical"} 1
Run Code Online (Sandbox Code Playgroud)

但是我也喜欢这个系列中的'env':

consul_service_tags{node="app-server-02",service_name="app-server",env="prod"} 1
Run Code Online (Sandbox Code Playgroud)

沿节点和service_name连接以将以下内容作为单个系列传递给Alertmanager:

{node="app-server-02",service_name="app-server",status="critical",env="prod"} 1
Run Code Online (Sandbox Code Playgroud)

然后我可以在我的路由中匹配'env'.

有没有办法做到这一点?它并不像我任何操作或功能那样让我能够像这样分组或加入.据我所知,标签已经需要是consul_health_service_status指标上的标签.

monitoring consul prometheus

26
推荐指数
2
解决办法
2万
查看次数

领事使用的不同端口

领事使用的不同端口有哪些?每个港口的目的是什么?有没有办法配置consul使用不同的端口运行?

ports consul

24
推荐指数
1
解决办法
2万
查看次数

如何从外部访问consul UI

如何从外部访问consul UI?

我想访问consul UI写作

<ANY_MASTER_OR_SLAVE_NODE_IP>:8500

我尝试使用ssh隧道进行访问:ssh -N -f -L 8500:localhost:8500 root@172.16.8.194

然后如果我访问http:// localhost:8500 它可以工作,但它不是我想要的.我需要外部访问,没有ssh隧道.

我的config.json文件是下一个:

{
"bind_addr":"172.16.8.216",
"server": false,
"datacenter": "nyc2",
"data_dir": "/var/consul",
"ui_dir": "/home/ikerlan/dist",
"log_level": "INFO",
"enable_syslog": true,
"start_join": ["172.16.8.211","172.16.8.212","172.16.8.213"]
}
Run Code Online (Sandbox Code Playgroud)

有帮助吗?谢谢

consul

20
推荐指数
2
解决办法
1万
查看次数

当面向消息的中间件完成工作时,为什么还要烦恼服务?

我得到的问题是etcd/consul/$试图解决的问题.服务消费者需要与服务提供商交谈,一个庞大流动的分布式系统需要一种机制来嫁给两者.

然而,"服务消费者在哪里满足他们的要求?"的问题.是旧的,IMO已经解决了MOM - 面向消息的中间件.

在MOM中,我们的想法是服务消费者并不关心服务提供商所在的位置.他们只是发送消息并让消息传递总线负责将消息路由到适当的消费者.可以有多个提供者都做同样的事情(基于队列的循环)或版本化的提供者(/ v1 /请求转到一个,/ v2 /请求转到另一个).

这是一个简单,强大的集成模式,它完全将服务接口与其实现分离.

然而,我看到了对发现服务提供商的这种奇怪的痴迷,这似乎在消费者和提供者之间创造了紧密的耦合(除了一些其他反模式之外).

那么,我在这里错过了什么?TIA.

service service-discovery mom etcd consul

18
推荐指数
1
解决办法
985
查看次数

Consul是否坚持Key Value商店?

我正在评估一些分布式键值存储,而etcdConsul看起来非常有前途.我对服务发现,健康监控和配置服务感兴趣.

我喜欢Consul提供的额外功能,但是当服务出现故障时,我无法确定它是否仍然存在Key-Value存储区?似乎etcd提供了持久性.有什么建议?

persistence key-value consul

16
推荐指数
2
解决办法
7846
查看次数

Consul Service Discovery的自动代理服务

我正试图从Eureka转到Consul进行服务发现并遇到问题 - 我的网关服务注册和我的客户服务注册,但网关服务不会自动将请求路由到客户服务.我在网关控制器中专门定义的路由,使用Feign客户端来正常工作,但之前(使用Eureka)我可以向任何路径发出请求,例如"/ customer-service/blah"(其中customer-service是注册名称)并且网关只是将请求转发到下游微服务.

这是我的网关bootstrap.yml(它在bootstrap而不是应用程序,因为我也使用consul for config)

    spring:
  application:
    name: gateway-api
  cloud:
    consul:
      config:
        watch:
          wait-time: 30
      discovery:
        prefer-ip-address: true
        instanceId: ${spring.application.name}:${spring.application.instance_id:${random.value}}
Run Code Online (Sandbox Code Playgroud)

java service-discovery spring-boot consul netflix-zuul

15
推荐指数
1
解决办法
826
查看次数

在consul healthcheck运行后,状态为"Dead"的Docker容器

我正在使用consul的healthcheck功能,并且我不断获取这些"死"容器:

CONTAINER ID  IMAGE                   COMMAND              CREATED         STATUS              PORTS                                                                                                                                                                    NAMES
20fd397ba638  progrium/consul:latest  "\"/bin/bash -c 'cur 15 minutes ago  Dead
Run Code Online (Sandbox Code Playgroud)

什么是"死"容器?停止的容器何时变为"死"?

为了记录,我运行progrium/consul + gliderlabs/registrator图像+ SERVICE_XXXX_CHECK env变量来进行健康检查.它运行一个运行一个图像的健康检查脚本,每隔X秒,就像这样docker run --rm my/img healthcheck.sh

我对一般"死"意味着什么以及如何防止它发生感兴趣.另一个特殊的事情是我的死容器没有名字.

这是集装箱检查的一些信息:

  "State": {
        "Dead": true,
        "Error": "",
        "ExitCode": 1,
        "FinishedAt": "2015-05-30T19:00:01.814291614Z",
        "OOMKilled": false,
        "Paused": false,
        "Pid": 0,
        "Restarting": false,
        "Running": false,
        "StartedAt": "2015-05-30T18:59:51.739464262Z"
    },
Run Code Online (Sandbox Code Playgroud)

奇怪的是,只有每一个容器都会变得死亡并且不会被移除.

谢谢

编辑:查看日志,我发现了什么使容器停止失败:

  Handler for DELETE /containers/{name:.*} returned error: Cannot destroy container 003876e41429013e46187ebcf6acce1486bc5011435c610bd163b159ba550fbc: 
Driver aufs failed to remove root filesystem 003876e41429013e46187ebcf6acce1486bc5011435c610bd163b159ba550fbc: 
rename /var/lib/docker/aufs/diff/003876e41429013e46187ebcf6acce1486bc5011435c610bd163b159ba550fbc 
/var/lib/docker/aufs/ diff/003876e41429013e46187ebcf6acce1486bc5011435c610bd163b159ba550fbc-removing: 
device …
Run Code Online (Sandbox Code Playgroud)

docker consul

14
推荐指数
1
解决办法
1万
查看次数

检查节点运行状况的服务发现工具和负载均衡器之间的概念差异是什么?

最近几种服务发现工具已经变得流行/"主流",我想知道在哪些主要用例中应该使用它们而不是传统的负载平衡器.

使用LB,您可以在平衡器后面聚集一堆节点,然后客户端向平衡器发出请求,然后平衡器(通常)将这些请求循环到集群中的所有节点.

通过服务发现(Consul,ZK等),您可以让集中的"共识"服务确定特定服务的哪些节点是健康的,并且您的应用程序连接到服务认为健康的节点.因此,虽然服务发现和负载平衡是两个独立的概念,但服务发现可为您提供负载平衡作为方便的副作用.

但是,如果负载均衡器(比如HAProxynginx)内置了监控和运行状况检查,那么您几乎可以将服务发现作为负载均衡的副作用!这意味着,如果我的LB知道不将请求转发到其集群中的不健康节点,那么这在功能上等同于共识服务器,告诉我的应用程序不要连接到不可靠的节点.

所以对我来说,服务发现工具感觉就像"6合1,其他半打"相当于负载均衡器.我在这里错过了什么吗?如果有人的应用程序架构完全基于负载平衡微服务,那么切换到基于服务发现的模型有什么好处?

load-balancing distributed-computing service-discovery consul microservices

11
推荐指数
1
解决办法
850
查看次数

如何使用Consul服务发现处理Symfony2的运行时配置

我们的团队目前正在使用Consul探索Symfony2应用程序的服务发现概念.处于相对边界,讨论的方式很少.到目前为止,我们已经发现:

目前的想法是探索利用Consul观察者重新触发缓存构建以及外部参数.也就是说,如果服务半频繁地改变,那么对这种操作的开销存在一些担忧.

基于上述内容以及Consul/Symfony内部的知识,这是一种可行的方法吗?如果没有,为什么,有什么替代品?

service-discovery symfony 12factor consul runtime-configuration

11
推荐指数
1
解决办法
1138
查看次数

ASP.NET Core 2.1在Startup.cs中获取当前的Web主机名和端口

我想将我的WebAPI注册到Consul服务发现中,为此,我应该提供我的WebAPI的URL(例如:http ://service1.com )和运行状况检查端点(http://service1.com/health/check)。如何获得该URL?

我找到了这段代码:

var features = app.Properties["server.Features"] as FeatureCollection;
var addresses = features.Get<IServerAddressesFeature>();
var address = addresses.Addresses.First();               
var uri = new Uri(address);
Run Code Online (Sandbox Code Playgroud)

它返回127.0.0.1:16478而不是localhost:5600。我认为第一个由dotnet.exe使用,第二个是IIS,它将5600转发到16478。如何在Startup.cs中获得localhost:5600?

c# consul asp.net-core-2.1

11
推荐指数
2
解决办法
1519
查看次数