1.Prometheus快速入门
1.1.基本原理
2.Prometheus+node_exporter安装
2.1.环境准备:虚拟出机器
2.2.安装运行prometheus和node_exporter
2.3.启动prometheus(普罗米修斯)和node_exporter
2.3.1.解压文件
2.3.2.后台启动prometheus和node_exporter
2.4.访问界面
2.4.1.访问node_exporter
2.4.2.访问prometheus
2.5.配置Prometheus的监控数据源
2.6.重启Prometheus
2.7.查看监控数据

1.Prometheus快速入门

参考文章

1.1.基本原理

Prometheus的基本架构如下图所示:

Java普罗米修斯配置 普罗米修斯使用教程_docker


从上图可以看到,整个 Prometheus 可以分为四大部分,分别是:

Prometheus服务器

Prometheus Server是Prometheus组件中的核心部分,负责实现对监控数据的获取,存储以及查询。

NodeExporter业务数据源
业务数据源通过 Pull/Push 两种方式推送数据到 Prometheus Server。

AlertManager报警管理器
Prometheus 通过配置报警规则,如果符合报警规则,那么就将报警推送到 AlertManager,由其进行报警处理。

可视化监控界面
Prometheus 收集到数据之后,由 WebUI 界面进行可视化图标展示。目前我们可以通过自定义的 API 客户端进行调用数据展示,也可以直接使用 Grafana 解决方案来展示。

简单地说,Prometheus 的实现架构也并不复杂。其实就是收集数据、处理数据、可视化展示,再进行数据分析进行报警处理。但其珍贵之处在于提供了一整套可行的解决方案,并且形成了一整个生态,能够极大地降低我们的研发成本。

Java普罗米修斯配置 普罗米修斯使用教程_Java普罗米修斯配置_02

2.Prometheus+node_exporter安装

2.1.环境准备:虚拟出机器

前置条件,已经有一个虚拟化好的Centos7.5的镜像。(笔者使用Docker Desktop创建了一个虚拟的docker环境)。

docker run -itd --restart=always --name node1 --hostname node1 -v D:/dockerworkspace/node1/hosts:/etc/hosts -v D:/dockerworkspace/node1/hostname:/etc/hostname -v D:/dockerworkspace/node1/data:/data -v D:/dockerworkspace/node1/profile:/etc/profile -v D:/dockerworkspace/node1/software:/root/software -v D:/dockerworkspace/node1/installed:/root/installed -v D:/dockerworkspace/node1/workspace:/root/workspace -p 10022:22 -p 19090:9090 -p 18080:8080 -p 13000:3000 -p 19091:9091 -p 19093:9093 1694ea743590 /usr/sbin/sshd -D

端口说明:

-p 10022:22           :ssh端口
-p 19090:9090         :Prometheus端口
-p 18080:8080         :node_exporter端口
-p 13000:3000         :grafana端口
-p 19091:9091         :pushgateway
-p 19093:9093         :alertmanager

2.2.安装运行prometheus和node_exporter

Prometheus 服务端负责数据的收集,因此我们应该首先安装并运行 Prometheus Server。

从https://prometheus.io/download/ 找到最新版本的Prometheus软件包:

Java普罗米修斯配置 普罗米修斯使用教程_数据_03


再同一个页面中下载node_exporter

Java普罗米修斯配置 普罗米修斯使用教程_docker_04


将下载的包放到:D:\dockerworkspace\node1\software,即Centos下的:/root/installed下

2.3.启动prometheus(普罗米修斯)和node_exporter

2.3.1.解压文件

分别将Prometheus和node_exporter解压到/root/installed

cd /root/software
tar -zxvf prometheus-2.29.0-rc.1.linux-amd64.tar.gz -C /root/installed/
tar -zxvf node_exporter-1.2.1.linux-amd64.tar.gz -C /root/installed/

查看prometheus内的文件结构

Java普罗米修斯配置 普罗米修斯使用教程_数据源_05


查看node_exporter的文件结构

Java普罗米修斯配置 普罗米修斯使用教程_Java普罗米修斯配置_06

2.3.2.后台启动prometheus和node_exporter

启动命令如下:

# 启动普罗米修斯
cd /root/installed/prometheus
nohup ./prometheus --config.file=prometheus.yml > prometheus.file 2>&1 &

# 启动node_exporter
cd /root/installed/node_exporter
nohup ./node_exporter --web.listen-address 172.17.0.2:8080 > nodeout.file 2>&1 &

2.4.访问界面

2.4.1.访问node_exporter

http://localhost:18080 (使用映射端口18080进行访问)

Java普罗米修斯配置 普罗米修斯使用教程_Java普罗米修斯配置_07


其中 HELP 用于解释当前指标的含义,TYPE 则说明当前指标的数据类型。

数据格式类似:

node_scrape_collector_success{collector="arp"} 1
node_scrape_collector_success{collector="bcache"} 1
node_scrape_collector_success{collector="bonding"} 0
node_scrape_collector_success{collector="btrfs"} 1
node_scrape_collector_success{collector="conntrack"} 1

2.4.2.访问prometheus

http://localhost:19090 (使用映射端口19090进行访问)

Java普罗米修斯配置 普罗米修斯使用教程_docker_08

2.5.配置Prometheus的监控数据源

现在我们运行了 Prometheus 服务器,也运行了业务数据源 NodeExporter。但此时 Prometheus 还获取不到任何数据,我们还需要配置下 prometheus.yml 文件,让其去拉取 Node Exporter 的数据。

我们配置一下 Prometheus 的配置文件,让 Prometheus 服务器定时去业务数据源拉取数据。编辑prometheus.yml 并在 scrape_configs 节点下添加以下内容:

vim /root/installed/prometheus/prometheus.yml 编辑的内容如下:

scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["localhost:9090"]
  # 采集node exporter监控数据
  - job_name: 'node'
    static_configs:
      - targets: ['172.17.0.2:8080']    # 172.17.0.2为node_exporter所在机器的ip

上面配置文件配置了两个任务。一个是名为prometheus的任务,其从[“localhost:9090”]地址读取数据。另一个是名为node的任务,其从[‘172.17.0.2:8080’]地址读取数据。

配置完成后,我们重新启动 Prometheus。

2.6.重启Prometheus

# 启动普罗米修斯
cd /root/installed/prometheus
nohup ./prometheus --config.file=prometheus.yml > prometheus.file 2>&1 &

2.7.查看监控数据

配置完 Prometheus 读取的数据源之后,Prometheus 便可以从 Node Exporter 获取到数据了。那么接下来我们如何查看到这些数据呢?
答案是:Prometheus UI! (通过访问浏览器的方式访问)

Prometheus UI 是 Prometheus 内置的一个可视化管理界面,我们通过 http://localhost:19090 就可以访问到该页面。

通过 Prometheus UI 可以查询 Prometheus 收集到的数据,而 Prometheus 定义了 PromQL 语言来作为查询监控数据的语言,其余 SQL 类似。

接下来我们访问 http://localhost:19090,进入到 Prometheus Server。如果输入「up」并且点击执行按钮以后,可以看到如下结果:

Java普罗米修斯配置 普罗米修斯使用教程_Java普罗米修斯配置_09


然后点击输入框后面的Execute按钮,可以看到:

Java普罗米修斯配置 普罗米修斯使用教程_数据_10


处有几条记录,其中 instance 值为 localhost:8080 的记录,value 是 1,这代表对应应用是存活状态。

例如查看我们所运行 NodeExporter 节点所在机器的内存使用情况,可以输入:node_memory_Active_bytes/(102410241024) 查看。

Java普罗米修斯配置 普罗米修斯使用教程_数据源_11

查看 NodeExporter 节点所在机器 CPU 1 分钟的负载情况,可以输入 node_load1 即可查看。

Java普罗米修斯配置 普罗米修斯使用教程_Java普罗米修斯配置_12


到这里,我们基本上为完成了数据的收集过程,即数据从业务侧收集到 Prometheus 侧,并且还学会了如何使用 Prometheus 自带的控制台。