zoukankan      html  css  js  c++  java
  • 基于consul服务发现监控prometheus数据采集

    业务服务使用micrometer + prometheus + grafana模式进行监控,如果服务机器列表发生变化,需要改动prometheus.yml机器域名或者IP,如果发生机器迁移或者扩缩容则容易遗忘,因此,我们可以通过prometheus与consul集成来实现动态监测机器列表变动来获取对应的监控服务机器信息。

    1、业务服务目前基本是基于consul做的服务发现,可以直接在promethus.yml里配置,注意通过drop过滤非业务服务,并进行标签的重命名;

     - job_name: 'consul-prometheus'
        metrics_path: /actuator/prometheus
        scheme: http
        consul_sd_configs:
        -  server: 'consul_ip:8500'
           services: [] 
        relabel_configs:
           - source_labels:
               -  __meta_consul_service
             regex: 'consul|nginx|comment'
             action: drop
           - source_labels:
               -  __meta_consul_service
             target_label: group

    2、将nginx服务注册到consul上,在promethus.yml里配置,注意通过nginx服务,并进行标签的重命名;

    - job_name: 'nginx-consul-prometheus'
      metrics_path: /metrics
      consul_sd_configs:
      - server: 'consul_ip:8500'
        services: 
        - nginx 
     relabel_configs:
      - source_labels: ["__meta_consul_service"]
        target_label: "group"

    nginx服务机器上需安装consul客户端,模板文件nginx.json,启动consul客户端时记得要额外加载该配置文件

    {
      "service":{
      "id": "nginx",
      "name": "nginx",
      "address": "{{hostIp['stdout']}}",
      "port": 9145,
      "meta": {
        "sogou_host": "{{hostIp['stdout']}}"
      },
      "tags": ["nginx"],
      "checks": [
      {
       "http": "http://{{hostIp['stdout']}}:9145/metrics",
       "interval": "30s"
      }
      ]
     }
    }

     3、ansible脚本如下,将nginx服务注册consul:

    - name: register hostIp
      shell: /sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:" |head -n 1
      register: hostIp
      ignore_errors: True
      tags:
        - consul
    
    - name: register nginx_metrics
      shell: netstat -ntlp | grep 9145
      register: nginx_metrics
      ignore_errors: True
      failed_when: nginx_metrics.rc != 1 and nginx_metrics.rc != 0
    
    - name: Copy consul.json
      template: src=consul.hcl.j2 dest=/search/odin/consul/conf/consul.hcl
    
    - name: Copy nginx.json
      template: src=nginx.json.j2 dest=/search/odin/consul/conf/nginx.json
      when: nginx_metrics.rc == 0
      tags:
        - consul
    
    - name: Copy systemd script
      template: src=consul-promethus.service dest=/etc/systemd/system/consul-promethus.service
      tags:
        - consul
    
    - name: chown /search/odin
      file:
        path: /search/odin/consul
        owner: odin
        group: odin
        mode: 0755
        recurse: yes
      tags:
        - consul
    
    - name: Service consul started
      systemd:
        daemon_reload: yes
        enabled: yes
        name: consul-promethus
        state: restarted
      tags:
        - consul

    4、安装consul太麻烦,可以直接使用api将服务注册到consul server,可以忽略上面的了

    curl http://consulip:8500/v1/agent/service/register -X PUT -i -H "Content-Type:application/json" -d '{
     "ID": "id",  
     "Name": "name",
     "Tags": [
       "nginx"
     ],
     "Address": "ip",
     "Port": 9145,
     "Check": {
       "DeregisterCriticalServiceAfter": "30s",
       "HTTP": "http://ip:9145/metrics",
       "Interval": "30s"
     }
    }'

    。。。

  • 相关阅读:
    小知识点
    异常关机后idea的注入不能使用
    day42_mysql 数据库操作 数据库的约束
    day41_mysql安装与卸载 mysql配置 SQL语句 DDL:操作数据库,表 DML:增删改表中的记录 DQL:查询表中的记录 DCL:管理用户与授权
    day39_ECMAScript BOM DOM
    day38_JS
    day35_HTML inpot标签 form表单
    day33_Stream(JDK1.8后的接口,本身不是函数式接口)
    day32_ 优化文件上传及接收 函数式接口 自定义函数接口 函数式编程 常用函数式接口 Stream流
    day31_网络通信三要素 TCP Socket关键字 ServerSocket
  • 原文地址:https://www.cnblogs.com/tilamisu007/p/12218158.html
Copyright © 2011-2022 走看看