运维 - 实践篇(三)- 基础 Prometheus 监控环境搭建

运维 - 实践篇(三)- 基础 Prometheus 监控环境搭建

​ 上一篇《基础 Docker 开发环境搭建》我们已经为Linux服务器搭建了基础的Docker环境,并且我们已经做了自定义网络模式配置,可以为后续的Docker容器配置指定的IP,因为我们接下来要搭建的 Prometheus 监控系统是需要容器固定IP地址的。

修订时间修订内容备注
2022/01/29完成基础 Prometheus 监控环境搭建create

一、搭建基础监控环境前期准备

1. 前期准备工作

​ 请务必确保按照前面的文章进行Docker的安装和相关的网络配置,当然,如果没有配置的话也没有关系,只是后续的操作可能需要对部分可选参数进行调整,以及查询监控容器的实际分配容器IP。

​ 建议先通读全文,再去进行实际操作搭建。因为常理来说,是先搭建监控系统;然后搭建可视化;再搭建相关数据源服务,配置监控,并重启。这里为了全文的流畅性,选择了先配置数据源,在配置数据监控,然后数据可视化。

1.1. 拉取后续所需Docker镜像资源

prometheus:系统监控与报警等

grafana:可视化监控数据服务

node-exporter:监控服务器CPU、内存、磁盘、I/O信息等

cadvisor:监控容器信息等

# 拉取相关 docker 镜像
docker pull prom/prometheus
docker pull grafana/grafana
docker pull prom/node-exporter
docker pull google/cadvisor

二. 配置数据源环境

这里还是提供了固定IP和不固定IP的两种 Docker 容器运行脚本,如果不想指定 IPAddress 的话就去掉相应的可选参数 --network=code-net --ip 172.18.0.*

2.1 node-exporter 服务器监控数据源
2.1.1 启动 node-exporter docker 容器
# 指定IPAddress 
docker run --network=code-net --ip 172.18.0.3 -d --name node-exporter --restart=always -p 9100:9100 -v "/proc:/host/proc:ro" -v "/sys:/host/sys:ro" -v "/:/rootfs:ro" prom/node-exporter
# 非指定 IPAddress
docker run -d --name node-exporter --restart=always -p 9100:9100 -v "/proc:/host/proc:ro" -v "/sys:/host/sys:ro" -v "/:/rootfs:ro" prom/node-exporter
2.1.2 访问测试

测试地址:http://47.111.158.6:9100/metrics

image-20220129202109861

2.2 cadvisor 容器监控数据源
2.2.1 cadvisor docker 容器启动

这里调整了 docker 容器的对外暴漏端口,8080这个端口,不建议被固有服务占用。

需要注意的是,在后面 prometheus 配置IP以及端口的时候,这里要配置8080端口,因为容器通信是走内部机制。而8090是用于 服务器IP:Port端口访问

# 指定IPAddress
docker run --network=code-net --ip 172.18.0.4 -v /:/rootfs:ro -v /var/run:/var/run:rw -v /sys:/sys:ro -v /var/lib/docker/:/var/lib/docker:ro -v /dev/disk/:/dev/disk:ro -p 9080:8080 -d --name=cadvisor --restart=always google/cadvisor:latest
2.2.2 访问测试

访问测试 http://47.111.158.6:9080/metrics

image-20220129204517563

三、配置系统监控

3.1 prometheus 安装配置
# 创建文件夹 存放 prometheus 相关配置文件
mkdir /usr/local/prometheus
# 切换
cd /usr/local/prometheus
# 创建配置文件并编辑
touch prometheu.yml

PS: 配置文件需要获取Docker容器内的IP地址以及数据源端点的端口号

  • 这里我们通过 docker ps -a 获取容器名称
  • 然后通过 docker inspect [容器名]|grep -E "IPAddress|HostPort"获取Docker容器内的IP地址「PS:如果固定IPAddress这里不会受到重启Docker后的影响」
$ docker inspect node-exporter | grep -E "IPAddress|HostPort"
                       "HostPort": "9100"
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "172.18.0.3",
$ docker inspect cadvisor | grep -E "IPAddress|HostPort"
                        "HostPort": "9080"
            "SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "172.18.0.4",

prometheus.yml 配置文件

这里的 prometheus 容器 IP 预设 172.18.0.5

global:
  scrape_interval:     60s
  evaluation_interval: 60s

scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ['172.18.0.5:9090']
        labels:
          instance: prometheus

  - job_name: node-exporter
    static_configs:
      - targets: ['172.18.0.3:9100']
        labels:
          instance: node-exporter

  - job_name: cadvisor
    static_configs:
      - targets: ['172.18.0.4:8080']
        labels:
          instance: cAdvisor
3.2 运行 prometheus 容器
# prometheus 固定IPAddress 
# 这里选择了挂则外部容器卷也就是配置文件,便于后续修改
$ docker run --network=code-net --ip 172.18.0.5 -d --name prometheus --restart=always -p 9090:9090 -v /usr/local/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml prom/prometheus
3.3 访问测试

访问测试: http://47.111.158.6:9090/graph

image-20220129211206128

访问测试: http://47.111.158.6:9090/targets

image-20220129212257091

四、配置 Granfana 监控可视化

4.1 搭建 Granfana 环境

grafana.ini 配置文件无法进入容器内部修改

# 创建存储用户配置的环境
$ mkdir /usr/local/grafana-storage/etc
# 设置权限
$ chmod 777 -R /usr/local/grafana-storage

# 先启动 granfana docker 容器
$ docker run --network=code-net --ip 172.18.0.6 -d --name grafana --restart=always -p 3000:3000 --name=grafana -v /usr/local/grafana-storage:/var/lib/grafana grafana/grafana

# 替换配置 sed 语法 sed -i 's/[old]/[new]/' 特殊字符 \ 转义
$ sed -i 's/\;domain \= localhost/domain \= 47\.111\.158\.6/' /usr/local/grafana-storage/etc/grafana.ini

# 检验修改
$ cat /usr/local/grafana-storage/etc/grafana.ini | grep 'domain'

# 重新运行
$ docker run --network=code-net --ip 172.18.0.6 -d --name grafana --restart=always -p 3000:3000 --name=grafana -v /usr/local/grafana-storage:/var/lib/grafana -v /usr/local/grafana-storage/etc/:/etc/grafana/ grafana/grafana
4.2 访问测试

访问测试:http://47.111.158.6:3000/login

PS:账号 admin 密码 admin

4.3 Granfana 界面操作流程引导

1.点击 Add your first data source 添加数据源

image-20220129220431263

2.选择 prometheus 数据源

image-20220129220721864

3.填写 Prometheus 数据源地址信息

image-20220129221023807

4.点击 save & test 提示成功!

image-20220129221155732

5.点击 + 号,选择 import 导入 Grafana 监控模版

image-20220129221349597

image-20220129221502278

image-20220129221612501

五、可视化监控效果展示

Linux 服务器系统监控展示(8919)

image-20220129221740701

Docker 容器监控展示(179)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Code_fusheng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值