consul

1、tcp_connect

1.1、格式1
  • 配置prometheus.yml
  - job_name: 'blackbox_consul_tcp'
    params:
      #module: [http_2xx]
      module:
      - tcp_connect
    scrape_interval: 2s
    scrape_timeout: 2s
    metrics_path: /probe
    consul_sd_configs:
    - server: 10.0.4.2:8500
      tag_separator: ','
      services:
      - blackbox_export_tcp
    relabel_configs:
        # 传递 10.0.4.2:8013/probe?module=tcp_connect

      - source_labels: ['__address__'] # 获取10.0.4.2:8013
        target_label: __param_target
        # 赋值给__param_target: 10.0.4.2:8013/probe?targer=10.0.4.2:8013&module=tcp_connect
      - source_labels: ['__param_target'] 
        # 从consul配置中获取address地址:10.0.4.2:8013
        target_label: instance # 添加标签:instance=10.0.4.2:8013
      - target_label: __address__
        replacement: 10.0.4.2:9115

  • consul配置
    {
        "id":"tcp_10.0.4.2_40022",
        "name": "blackbox_export_tcp",
        "address":"10.0.4.2",
        "port": 40022,
        "tags": [
            "http_2xx"
     ],
        "check":{
            "http":"http://10.0.4.2:9115",
            "interval":"10s"
        }
    }
relabel_configs:
官方文档:https://prometheus.io/docs/prometheus/latest/configuration/configuration/#relabel_config
job --> job_name
__address__ --> hosts:port,重新标记后,如果在重新标记期间未设置标签,则默认instance设置为 的值
keep: 正则表达式不匹配时,删除source_labels
drop: 正则表达式匹配时,删除source_labels
### Consul Distributed Service Mesh and Key-Value Store Consul 是一种分布式服务网格和服务发现工具,同时也提供了一个强一致性的键值存储功能。以下是关于 Consul 的安装、配置、使用及其工作原理的详细介绍。 #### 安装与部署 Consul 可以通过二进制文件或者 Docker 镜像进行安装。官方推荐的方式是从 HashiCorp 提供的下载页面获取最新版本的二进制包并解压运行[^3]。 启动 Consul 节点可以通过简单的命令完成: ```bash consul agent -dev ``` 此命令会以开发模式启动一个单节点的 Consul 实例,适用于测试环境。生产环境中则需要配置多个服务器节点形成高可用集群,并启用客户端节点用于健康检查和其他本地操作。 #### 原理概述 Consul 使用了一种不同于传统中心化架构的设计思路来进行健康检测。它不仅依赖于服务器节点,还让每个集群中的成员都作为客户端参与进来。这些客户端构成了一个基于ossip协议的信息交换网络,该协议能够高效地探测失败情况并且不会使特定的一组服务器过载。这种设计使得即使是在大规模集群下也能保持良好的性能表现。 另外,在健康监测方面,相比ZooKeeper仅能简单判断进程存活状态而言,Consul允许执行更为复杂的自定义脚本来评估应用程序的实际状况,比如验证Web服务器返回的状态码是否正常等。这极大地增强了系统的可观测性和可靠性。 #### 配置示例 为了更好地理解如何利用Consul实现某些具体需求,下面给出一段代码片段展示怎样向其内部嵌入式的key-value store写入数据以及读取它们: ```python import requests def write_to_consul(key, value): url = f"http://localhost:8500/v1/kv/{key}" response = requests.put(url, data=value) return response.status_code == 200 def read_from_consul(key): url = f"http://localhost:8500/v1/kv/{key}" response = requests.get(url) if response.ok: result = response.json() if result: return result[0]['Value'].decode('base64') return None if __name__ == "__main__": success = write_to_consul("example_key", "example_value") print(f"Write successful: {success}") retrieved_value = read_from_consul("example_key") print(f"Retrieved Value: {retrieved_value}") ``` 这段Python程序展示了基本的操作方法:首先是将字符串形式的数据存放到指定路径下的某个键中;接着再尝试从中提取相同的内容出来加以显示。 #### 关联概念对比 值得注意的是,虽然 etcd 和 Consul 同样具备分布式的特性并且支持一致性算法保障数据安全可靠传输给各个副本节点之间同步更新信息等功能特点相似之处不少,但是两者侧重点有所不同——前者更专注于成为基础组件服务于其他更高层次的应用场景之中(如 Kubernetes),而后者的应用场景更加广泛涵盖了从服务注册发现到配置管理等多个领域[^2][^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值