Skip to content

1.概述

1.1 简介

prometheus是由谷歌研发的一款开源的监控软件,它通过安装在远程机器上的exporter,通过HTTP协议从远程的机器收集数据并存储在本地的时序数据库上 同时Prometheus后端用 golang语言开发,前端是 Grafana。

1.2 服务规划

  1. 规划如下
IP地址端口服务描述
1.1.1.19100被监控服务器1,安装 Prometheus Exporter (客户端)
1.1.1.29110被监控服务器2,安装 Prometheus Exporter (客户端)
1.1.1.39090Prometheus Server (服务器端)
1.1.1.43001Grafana 用于展示图表
  1. 概览图 alt text

2.安装

为了方便同学们实验,这里我们的 prometheus-exporter、prometheus-server、grafana 服务可以都安装在1台节点上面, 其中地址是实际内网ip地址,例:192.168.10.49

2.1 目录初始化

# /opt/prometheus/data目录,准备用来挂载放置prometheus的数据
# /opt/prometheus/config目录,准备用来放置prometheus的配置文件
# /opt/prometheus/rules目录,准备用来挂载放置prometheus的规则文件
mkdir -p /opt/prometheus/{data,config,rules}

# 授权相关文件夹权限
chmod -R 777 /opt/prometheus/

2.2 安装 prometheus-exporter

  1. 确保本地 网络代理就绪

  2. 部署 & 启动

# 拉取镜像
% docker pull prom/node-exporter 

# 启动服务
% docker run --name=node-exporter -p 9100:9100 -itd prom/node-exporter

# 查看服务
% docker ps

CONTAINER ID   IMAGE                COMMAND                CREATED         STATUS         PORTS                    NAMES
7d0ac963sss0   prom/node-exporter   "/bin/node_exporter"   2 seconds ago   Up 2 seconds   0.0.0.0:9100->9100/tcp   node-exporter
  1. 访问 http://localhost:9100/ 或者 http://192.168.10.49:9100/,出现以下界面表示成功,点击 Metrics 查看上报指标 alt text

  2. 上报指标如下,后续 prometheus-exporter 会将这些指标上报到 prometheus-server alt text

2.3 安装 prometheus-server

  1. 添加: /opt/prometheus/ 为共享目录,进入docker下的file setting配置下,添加共享 -》 保存并重启 alt text

  2. 添加:prometheus.yml 文件,添加1.1.1.3_prometheus、1.1.1.1_exporter 实例

# 编辑,确保填写真实内网ip地址:192.168.10.49
vim /opt/prometheus/config/prometheus.yml

# 添加以下内容
global:
  scrape_interval: 60s
  evaluation_interval: 60s

scrape_configs:
  - job_name: '1.1.1.3_prometheus'
    static_configs:
      - targets: ['192.168.10.49:9090']
        labels:
          instance: '1.1.1.3_prometheus'

  - job_name: '1.1.1.1_exporter'
    static_configs:
      - targets: ['192.168.10.49:9100']
        labels:
          instance: '1.1.1.1_exporter'
  1. 检查启动是否成功, 这里发现是yaml 格式有问题 alt text

  2. 检验 prometheus.yml 是否符合格式,修改成符合格式 访问:https://www.bejson.com/validators/yaml_editor/#google_vignettealt text

直到修改正确 alt text

  1. 部署 & 启动
# 拉取
docker pull prom/prometheus

# 启动
docker run --name prometheus -p 9090:9090 --restart=always \
-v /opt/prometheus/config/prometheus.yml:/etc/prometheus/prometheus.yml \
-v /opt/prometheus/rules/rules.yml:/etc/prometheus/rules.yml \
-itd prom/prometheus --config.file=/etc/prometheus/prometheus.yml --web.enable-lifecycle

# 查看服务
docker ps -a

CONTAINER ID   IMAGE                       COMMAND                  CREATED             STATUS                     PORTS                                                                    NAMES
7b362bfcss9   prom/prometheus             "/bin/prometheus --c…"   40 minutes ago      Up 2 minutes               0.0.0.0:9090->9090/tcp                                                   prometheus
7d0ac963ssc0   prom/node-exporter          "/bin/node_exporter"     About an hour ago   Up About an hour           0.0.0.0:9100->9100/tcp                                                   node-exporter
  1. 查看服务,浏览器访问 http://localhost:9090/queryhttp://192.168.10.49:9090/query,看到以下界面表示成功alt text

2.4 安装 grafana

  1. 拉取镜像
docker pull grafana/grafana
  1. 创建grafana 目录
mkdir -p /opt/prometheus/grafana/
chmod -R 777 /opt/prometheus/grafana/
  1. 临时启容器拷贝grafana.ini
# 先临时启动一个容器
docker run --name grafana-tmp -d -p 3001:3001 -itd grafana/grafana

# 将容器中默认的配置文件拷贝到宿主机上
docker cp grafana-tmp:/etc/grafana/grafana.ini /opt/prometheus/grafana/grafana.ini

# 移除临时容器
docker stop grafana-tmp
docker rm grafana-tmp
  1. 启动镜像
# 以root启动,这里将外部3001端口映射成内部3000端口提供grafana服务(因为:外部3000端口已经被ruoyi-vue-pro app端程序应用)
docker run -d -p 3001:3000 --name grafana --restart=always \
-v /opt/prometheus/grafana/grafana.ini:/etc/grafana/grafana.ini \
-v /opt/prometheus/grafana/data:/var/lib/grafana \
-e "GF_SECURITY_ADMIN_PASSWORD=admin" \
--user root \
grafana/grafana
  1. 访问 http://localhost:3001/loginhttp://192.168.10.49:3001/login,输入 admin/admin 进行登录 alt text

  2. 会提示是否更换密码,这里选 skip alt text

  3. 登录成功页面 alt text