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