20230315_使用ConsulManager管理监控系列

时间:2022-11-17 00:58:23

20230315_使用ConsulManager管理监控系列

一、概述

基于consul服务发现,只需要在consul中维护监控组件配置,prometheus就能够动态发现配置了。
prometheus数据源的配置主要分为静态配置和动态发现, 常用的为以下几类:
    1)static_configs: #静态服务发现
    2)file_sd_configs: #文件服务发现
    3)dns_sd_configs: DNS #服务发现
    4)kubernetes_sd_configs: #Kubernetes 服务发现
    5)consul_sd_configs: Consul #服务发现
    ...

本次主要通过Consul服务发现,对prometheus进行配置,以及相关的操作进行讲解。
为了更好的直观consul服务,使用ConsulManager进行操作。
涉及的大体流程如下:
    1)consul服务部署
    2)ConsulManage服务部署及使用,通过使用过程中遇到的问题,反推prometheus配置。
    3)prometheus服务部署及使用
    4)grafana服务部署及使用
    5)node-export服务部署
    6)blackbox-export服务部署
    7)自定义grafana监控视图

相关官网:
    https://github.com/starsliao/ConsulManager
    https://github.com/prometheus/prometheus

二、consul相关

2.1 部署consul服务

官方操作文档: https://github.com/starsliao/ConsulManager/blob/main/docs/Consul%E9%83%A8%E7%BD%B2%E8%AF%B4%E6%98%8E.md
1)# 使用yum部署consul
    # 注意:ConsulManage暂时不兼容consul-1.15.x的版本,已安装1.15.x版本的请先卸载后安装以下版本。
    yum install -y yum-utils
    yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
    yum -y install consul-1.14.5-1

2)# 如果yum下载失败,可以直接下载RPM包安装
    wget https://rpm.releases.hashicorp.com/RHEL/7/x86_64/stable/consul-1.14.5-1.x86_64.rpm
    rpm -ivh ./consul-1.14.5-1.x86_64.rpm

3)# 配置
    vi /etc/consul.d/consul.hcl
内容如下:
---
log_level = "ERROR" #日志级别,日志太多可以只打印error日志,不需要可以去掉这行。
advertise_addr = "192.168.x.x" #填写你的网卡IP,如果启动或运行有报错,可以尝试去掉这行。
data_dir = "/opt/consul"
client_addr = "0.0.0.0"
ui_config{
  enabled = true
}
server = true
bootstrap = true
acl = {
  enabled = true
  default_policy = "deny"
  enable_token_persistence = true
}
---

4)# 启动服务        
    mkdir /opt/consul
    chown -R consul:consul /opt/consul  #注意下数据目录的权限。
    systemctl enable consul.service
    systemctl start consul.service

5)# 安装后首次获取登录Token(记录SecretID,即为Consul登录的Token)
    consul acl bootstrap|grep SecretID

6)# 忘记global-management Token,重新生成    
    # 记录最后的reset index: xx
    consul acl bootstrap
    
    # 进入consul数据目录执行
    echo 13 > acl-bootstrap-reset
    
    # 重新创建一个global-management Token
    consul acl bootstrap    

2.2 部署consul集群

todo

三、consul manager相关

3.1 部署ConsulManage

1)# 编写ConsulManage docker-compose文件
    vim consul-manager.yml
内容如下:
---    
version: "3.2"
services:
  flask-consul:
    image: swr.cn-south-1.myhuaweicloud.com/starsl.cn/flask-consul:latest
    container_name: flask-consul
    hostname: flask-consul
    restart: always
    volumes:
      - /usr/share/zoneinfo/PRC:/etc/localtime
    environment:
      # 获取登录token记录secretid即为consul登录的token
      consul_token: c158f64b-3a7c-d63e-df1e-c10b1dec7884
      # 填写consul服务所在地址
      consul_url: http://192.168.58.10:8500/v1
      # 填写登录界面密码
      admin_passwd: 123456
      log_level: INFO
  nginx-consul:
    image: swr.cn-south-1.myhuaweicloud.com/starsl.cn/nginx-consul:latest
    container_name: nginx-consul
    hostname: nginx-consul
    restart: always
    ports:
      - "1026:1026"
    volumes:
      - /usr/share/zoneinfo/PRC:/etc/localtime
---
 
2)# 启动服务
    docker-compose pull && docker-compose -f consul-manager.yml up -d

3)# 访问web
    http://{IP}:1026,使用配置的变量 admin_passwd 登录    

# 注意: 本文写的时间,consulManage版本为v0.12.4,部分版本之间界面操作会有差异。

3.2 使用ConsulManage

# 注: 更详细操作请查看官方文档,本文只举例部分功能引出prometheus,引出完整的监控流程

3.2.1 添加自建主机

云资源管理 -》 ecs管理 -》 自建主机管理。如下图1
根据提示添加完所需监控主机,部分信息不知的可以随便填,如监控的端口,后续会更改。点击Prometheus配置,选择相应的服务,生成配置信息。如下图2
此时,我们需要将生成的配置信息,添加到Prometheus服务中,接下来我们部署Prometheus服务。

20230315_使用ConsulManager管理监控系列20230315_使用ConsulManager管理监控系列

四、prometheus相关

4.1 部署Prometheus服务

1)# 编写Prometheus服务 docker-compose文件
    cd /data/
    vim monitor.yml
内容如下:
---
version: "3.7" 

services:
  prometheus:
    restart: always
    image: base.image.docker:5080/prom/prometheus:v2.21.0
    container_name: prometheus
    volumes:
      - /etc/localtime:/etc/localtime
      - v-prometheus:/prometheus
      - ./prometheus:/etc/prometheus
    ports:
      - "7901:9090"
---

2)# 创建配置文件,将3.2.1 添加自建主机操作中生成的job_name配置复制到scrape_configs节点下,完整文件如下,缺省报警模块。
    mkdir prometheus
    cd prometheus
    vim prometheus.yml 
---
global:
  scrape_interval: 30s
  scrape_timeout: 10s
  evaluation_interval: 30s
  external_labels:
    prometheus: test
    env: test

scrape_configs:
        
  - job_name: node_exporter
    scrape_interval: 15s
    scrape_timeout: 5s
    consul_sd_configs:
      - server: '192.168.58.10:8500'
        token: 'c158f64b-3a7c-d63e-df1e-c10b1dec7884'
        refresh_interval: 30s
        services: ['selfnode_exporter']
        tags: ['linux']
    relabel_configs:
      - source_labels: [__meta_consul_tags]
        regex: .*OFF.*
        action: drop
      - source_labels: ['__meta_consul_service']
        target_label: cservice
      - source_labels: ['__meta_consul_service_metadata_vendor']
        target_label: vendor
      - source_labels: ['__meta_consul_service_metadata_region']
        target_label: region
      - source_labels: ['__meta_consul_service_metadata_group']
        target_label: group
      - source_labels: ['__meta_consul_service_metadata_account']
        target_label: account
      - source_labels: ['__meta_consul_service_metadata_name']
        target_label: name
      - source_labels: ['__meta_consul_service_metadata_iid']
        target_label: iid
      - source_labels: ['__meta_consul_service_metadata_exp']
        target_label: exp
      - source_labels: ['__meta_consul_service_metadata_instance']
        target_label: instance
      - source_labels: [instance]
        target_label: __address__
---  

3)# 启动prometheus服务
    docker-compose -f monitor.yml up -d prometheus

4)# 查看服务启动
    docker ps # 服务正常启动即可。    

5)# 登录界面
      http://{IP}:7901,注意7901是compose文件中的自定义映射端口,不是官方默认端口9090

4.2 Prometheus服务使用

登录界面后,点击Status -》Targets即可看到node_export任务。如下图。
因为之前的步骤中没有部署node_export服务,所以显示的服务是down的状态,别着急接下来我们在所需监控的主机上部署node_export服务即可。

20230315_使用ConsulManager管理监控系列

4.3 node_export服务部署

1)# 在所需监控的每台主机上都需要部署node_export服务
    cd /data/
    vim node-export.yml
内容如下:
---
version: "3.7" 

services:
  node-exporter:
    restart: always
    stdin_open: true
    tty: true
    container_name: node-exporter
    image: prom/node-exporter
    cap_add:
      - ALL
    ports:
      - "7100:9100" # 自定义暴露的端口7100
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /:/rootfs:ro
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
---

2)# 启动服务
     docker-compose -f node-export.yml up -d node-exporter

3)# 更新ConsulManage服务中主机信息
    将部署完node_export服务的主机添加到《3.2.1 添加自建主机》操作中的主机列表里。之前未知的端口,即为node_export暴露的端口,我这边是7100 。

4)# 重新打开Prometheus ui界面,执行《4.2 Prometheus服务使用》操作,即可发现node_export 任务中监控的主机状态即为up。如之前4.2图所示。

5)# Prometheus的界面查看不友好,所以这时候使用grafana服务展示监控到的数据,接下来进行grafana相关操作。

五、grafana相关

5.1 grafana服务部署

1)# 编写grafana服务compose文件,打开之前的Prometheus服务的compose文件monitor.yml 在此文件中继续添加服务。
    cd /data
    vim monitor.yml
添加内容如下:
---
  grafana:
    restart: always
    image: grafana/grafana:9.4.3
    container_name: grafana
    volumes:
      - /etc/localtime:/etc/localtime
      - v-grafana:/var/lib/grafana
    ports:
      - "7903:3000"
---

2)# 启动服务
     docker-compose -f monitor.yml up -d grafana

3)# 登录web界面 http://{IP}:7903/
    首次登录账号密码为admin/admin

5.2 grafana服务使用

1)# 打开设置,添加数据源。如下图1所示。
2)# 添加新的数据源,选择Prometheus,将之前部署的Prometheus服务信息添加上去。如下图2。
3)# 点击dashboard —》 import 导入ConsulManage里面ecs管理的grafana看板id,8919 。如下图3,根据提示导入完成即可。
4)# 添加完成后,重新在dashborad中选择刚刚导入的模板,就可以使用grafana查看监控到的主机信息。效果如下图4.

20230315_使用ConsulManager管理监控系列20230315_使用ConsulManager管理监控系列20230315_使用ConsulManager管理监控系列20230315_使用ConsulManager管理监控系列

注意: 以上的流程完成了使用ConsulManage对自建主机监控的完成流程,包括部署prometheus服务以及node_export,后续会添加blackbox站点的监控文档,已经自定义监控视图部分。
时间: 2023年3月17日17点25分

六、自定义grafana监控视图

七、附录

7.1 prometheus 配置讲解