Go语言网络监控之路_Consul

前言

监控首先需要解决监控目标发现的问题


一、Prometheus监控目标?

可以去参考Prometheus官网
监控目标
以上为对应的链接地址.说明了Prometheus现在发现监控目标获取方式支持哪些.基本命名规则为*__sd_config

1.file_sd_config

  • 前期我们采用静态文件(file_sd_config)的方式,主要的交互方式,在我们内部有一个类似cmdb的系统,通过http方式提交对应的配置文件到gitlab文件,然后有人从gitlab下载对应的版本提交到Promethues对应配置的静态配置目录中。这样做的目的主要有两个:1 我们需要知道监控目标的生命周期(历史、为啥监控),
    file_sd_config支持json与yaml两种格式,我们采用的json格式
prometheus.yaml文件添加如下内容
scrape_configs:
- job_name: ping_healthcheck_file
    scrape_interval: 20s  # 抓取时间周期
    scrape_timeout: 10s # 超时时间
    metrics_path: /probe
    params:
      module: [icmp] #ping
    file_sd_configs: # 使用本地静态配置
    - refresh_interval: 15s #  文件刷新间隔
      files:
        - "extend/ping/ping_*.json" #对应的文件目录
    relabel_configs:  #重新对应的请求标签
     - source_labels: [__address__]
       regex: (.*)(:80)?
       target_label: __param_target
       replacement: ${1}
     - source_labels: [__param_target]
       regex: (.*)
       target_label: ping
       replacement: ${1}
     - source_labels: []
       regex: .*
       target_label: __address__
       replacement: 127.0.0.1:9115

ping_*.json文件

[

    {
        "targets":["127.0.0.1"], 
        "labels":{
            "team":"network",
            "type":"local",
            "name":"本地测试地址"
        }
    }
]
targets: 需要监控的模板
labels:携带的扩展属性,根据你系统需求来

以上就是基于静态文件做服务发现的

2. Consul

Consul这边主要是用作服务发现 交互方式:通过CMDB提供http方式put数据到Consul 提供的Http 接口上

Consul我们也是单机部署,后续有需要再改进
使用版本为Consul_1.9.3

#!/bin/bash

nohup /data/consuldata/consul agent -server -ui -client 0.0.0.0 -bootstrap-expect=1 -data-dir=/data/consuldata/consul_data -node=consul-01 -advertise=127.0.0.1 -datacenter SH-TMP -bind=0.0.0.0 -client=0.0.0.0 -log-file=/data/consuldata/consul_data/consul.log &

启动之后,访问ConssulWeb地址( http://127.0.0.1:8500/ui) 就可以看到Consul提供的web地址。
下面可以通过http方式注册服务
访问地址: http://127.0.0.1:8500/v1/agent/service/register
请求方式 put
body内容

{"id": "icmp_consul-127.0.0.1","name":"icmp_consul",
   "tags": [
     "icmp:127.0.0.1",
     "prometheus-icmp"
     ],
    "Meta": {
    "app": "icmp1",
    "team": "appgroup",
    "project": "bigdata"
  }
}
id:唯一标识,删除需要使用该属性
name: 服务名
tags:标签可以参考下面Prometheus中使用
Meta:存放扩展属性标签

查询数据:http://127.0.0.1:8500/v1/catalog/service/icmp_consul[服务名]
请求方式:get

删除数据: http://127.0.0.1:8500/v1/agent/service/deregister/icmp_consul-127.0.0.1
请求方式put

下面是Consul与Prometheus相结合的yaml配置.下面配置的

- job_name: 'ping_consul'
    scrape_interval: 20s #抓取时间
     scrape_timeout:  12s # 超时时间
    metrics_path: /probe
    params:
      module: [icmp]
    consul_sd_configs:
      - server: '127.0.0.1:8500' # consul的地址
    relabel_configs:
      - source_labels: [__meta_consul_tags]
        regex: .*,prometheus-icmp,.* # 扫描对应的组的信息
        action: keep
      - source_labels: [__meta_consul_tags]
        regex: .*,icmp:([^,]+),.*
        replacement: '${1}'
        target_label: __param_target
      - source_labels: [__param_target]
        target_label: instance
      - regex: __meta_consul_service_metadata_(.+)
        action: labelmap
      - target_label: __address__
        replacement: 127.0.0.1:9115

以上就是关于Consul与Prometheus的结合.上面我们使用了Prometheus中blackbox_exporter组件我后续会继续分享该组件的应用


总结

以上就是关于监控目标的问题,写的不好,还请多多指点

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值