Prometheus介绍

        Prometheus是一款开源的系统和服务监控工具,它主要用于记录和查询系统和应用程序的指标数据,例如CPU使用率、内存使用率、网络流量和磁盘IO等。它通过HTTP协议从被监控的目标服务器上拉取数据,并将其存储在时间序列数据库中,用户可以使用PromQL查询语言来查询和分析这些度量数据,并根据结果生成警报和图表供用户展示。

Prometheus架构图


这张图是从官网提供架构图,其中有包含组成Prometheus的一些组件,包括:

  1. Prometheus server:它是整个监控系统的核心组件,它负责收集、存储和查询监控数据。它通过HTTP协议暴露API,允许其他组件和应用程序查询和获取监控数据。
  2. exporters:exporters用于从不同的系统和服务中收集监控数据的组件。Prometheus支持多种exporter,包括Node Exporter(用于收集主机级别的数据)、Blackbox Exporter(用于监控网络服务)等。
  3. Pushgateway:Pushgateway是一个用于临时存储metrics数据的组件,可以让非常短暂的作业(比如批处理任务)向Prometheus推送metrics数据。Pushgateway将推送的metrics数据存储在内存中,Prometheus server则定期从Pushgateway中拉取数据。
  4. Alertmanager:Alertmanager是一个用于管理和发送警报的组件。它可以根据定义的规则和模板生成警报,并将其发送到不同的通知渠道,如电子邮件、短信等。
  5. Grafana:Grafana是一个可视化监控工具,可以将Prometheus的metrics数据展示为图表、仪表盘等形式。Grafana可以通过Prometheus提供的API接口获取metrics数据。
  6. Targets:它是Prometheus监控的对象,比如服务器、容器、应用等。Prometheus通过定期拉取Targets的metrics数据来进行监控。

Prometheus的下载安装

使用容器安装

  1. 用容器安装简单方便,如下所示:
docker run -d -p 9090:9090 --name shengxia-prom1 prom/prometheus
  1. 浏览器访问

使用源码安装

  1. 进入官网下载源码安装包下载
  2. 将源码安装包解压
[root@xia prometheus]# tar xzvf prometheus-2.43.0.linux-amd64.tar.gz
[root@xia prometheus]# ls
prometheus  prometheus-2.43.0.linux-amd64.tar.gz
  1. 进入prometheus目录,修改PATH环境变量(prometheus的目录为你自己所在的安装目录
[root@xia prometheus]# PATH=$PATH:/usr/local/bin:/lianxi/prometheus/prometheus/
# 让PATH变量开机生效,将上面那一条命令加在/root/.bashrc文件末尾
[root@xia prometheus]# source /root/.bashrc
  1. 修改prometheus.yml配置文件,将获取指标数据的地址改为本机地址
[root@xia prometheus]# ls
console_libraries  data     NOTICE      prometheus.yml
consoles           LICENSE  prometheus  promtool
[root@xia prometheus]# vim 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: ["192.168.40.137:9090"]
  1. 在当前目录启动
[root@xia prometheus]# ./prometheus --config.file=prometheus.yml
  1. 为了方便,将prometheus注册为服务
[root@xia system]# pwd
/usr/lib/systemd/system
[root@xia system]# cat prometheus.service 
[Unit]
Description=prometheus
[Service]
ExecStart=/lianxi/prometheus/prometheus/prometheus --config.file=/lianxi/prometheus/prometheus/prometheus.yml
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
[Install]
WantedBy=multi-user.target

使用Prometheus监控其它主机的数据

        在使用Prometheus获取其它主机的指标数据时,需要在该主机安装node exporter这个软件包下载

  1. 解压文件
[root@nfs exporter]# node_exporter-1.5.0.linux-amd64.tar.gz
[root@nfs exporter]# ls
node_exporter-1.5.0.linux-amd64  node_exporter-1.5.0.linux-amd64.tar.gz
  1. 复制node_exporter下的文件到指定的目录
[root@nfs exporter]# cp node_exporter-1.5.0.linux-amd64/* /node_exporter
  1. /root/.bashrc文件下修改PATH环境变量
[root@nfs exporter]# PATH=/node_exporter/:$PATH
[root@nfs exporter]# source /root/.bashrc
  1. 在该主机下开启一个终端启动node_exporter
[root@nfs node_exporter]# ./node_exporter --web.listen-address 192.168.40.138:8899
  1. 启动访问(如果访问不了,可能是防火墙的原因,需要关闭防火墙service firewalld stop
    在这里插入图片描述
  2. 在装有Prometheus的主机上添加node服务器节点,抓取指标数据存储到时序数据库里。
# 修改prometheus.yml文件,添加node节点
[root@xia prometheus]# vim 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: ["192.168.40.137:9090"]
  - job_name: node

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

    static_configs:
      - targets: ["192.168.40.138:8899"]

  1. 在当前目录重新启动,就可以查看另一个node服务器的指标数据了。
[root@xia prometheus]# ./prometheus --config.file=prometheus.yml

使用Grafana将指标数据进行可视化出图展示

概述

        Grafana是一个开源的数据可视化和监控平台,可以将各种数据源(如Prometheus、InfluxDB、Elasticsearch等)的数据进行可视化展示和监控。

安装步骤

  1. 安装Grafana:从Grafana官网下载Grafana软件包,并按照官方文档进行安装。下载
[root@xia grafana]#  yum install -y https://dl.grafana.com/enterprise/release/grafana-enterprise-9.5.1-1.x86_64.rpm
  1. 启动Grafana,默认端口号是3000,用户名和密码都是admin
[root@xia grafana]# service grafana-server restart
Restarting grafana-server (via systemctl):                 [  确定  ]

3.浏览器访问

使用

  1. 配置数据源,以便从数据源中获取数据。Grafana支持多种数据源,如Prometheus、InfluxDB、Elasticsearch等,输入IP地址,保存就可以连接数据源成功。

  2. 创建仪表板:在Grafana中,创建多个仪表板,每个仪表板可以包含多个面板,同时也可以使用官方提供的grafana模板,只要知道该模板的ID即可。

    比如输入ID为1860的grafana模板,点击Load就可以加载它的JSON文件,如下图所示,选择数据源,导入,就可以查看节点服务器的数据指标了。
  3. 设置警报:除了监控和可视化数据外,Grafana还支持警报功能。可以设置警报规则,当某些指标达到特定阈值时,Grafana将发送警报通知。
  4. 共享和导出仪表板:在Grafana中,可以共享和导出仪表板。可以将仪表板共享给其他用户,或将仪表板导出为JSON格式,以便在其他Grafana实例中导入和使用。
    在这里插入图片描述

使用Prometheus监控容器数据

cAdivisor

        cAdvisor是一个容器监控工具,全称为Container Advisor,它可以监控容器的资源使用情况,包括CPU、内存、磁盘、网络等,是一个非常方便的容器监控工具,可以帮助用户实时监控容器的资源使用情况,及时发现问题并进行优化
安装使用

[root@xia grafana]# docker run -d -p 1111:8080 --name my-cAdvisor google/cadvisor 

浏览器访问

Prometheus监控

  1. 新建prometheus.yml文件从cAdvisor中抓取指标数据,添加如下配置
[root@xia prom_docker]# vim prometheus.yml 
scrape_configs:
- job_name: cadvisor
  scrape_interval: 5s
  static_configs:
  - targets:
    - cadvisor:8080
  1. 在该目录下新建docker-compose.yml,该配置指定哪些容器是我们安装的一部分,以及每个容器公开哪些端口、使用哪些卷等。
[root@xia prom_docker]# vim docker-compose.yml 
version: '3.2'
services:
  prometheus:
    image: prom/prometheus:latest
    container_name: prometheus
    ports:
    - 9090:9090
    command:
    - --config.file=/etc/prometheus/prometheus.yml
    volumes:
    - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
    depends_on:
    - cadvisor
  cadvisor:
    image: google/cadvisor:latest
    container_name: cadvisor
    ports:
    - 8080:8080
    volumes:
    - /:/rootfs:ro
    - /var/run:/var/run:rw
    - /sys:/sys:ro
    - /var/lib/docker/:/var/lib/docker:ro
    depends_on:
    - redis
  redis:
    image: redis:latest
    container_name: redis
    ports:
    - 6379:6379
  1. 启动容器
[root@xia prom_docker]# docker compose up -d
[+] Running 3/3
 ✔ Container redis       Running                                                                                       0.0s 
 ✔ Container cadvisor    Running                                                                                       0.0s 
 ✔ Container prometheus  Started  
  1. 查看运行的容器,也可以在浏览器查看
[root@xia prom_docker]# docker ps 
CONTAINER ID   IMAGE                    COMMAND                   CREATED          STATUS          PORTS                                       NAMES
b87cb1f01bff   prom/prometheus:latest   "/bin/prometheus --c…"   7 days ago       Up 38 seconds   0.0.0.0:9090->9090/tcp, :::9090->9090/tcp   prometheus
777e8ff83ca8   google/cadvisor:latest   "/usr/bin/cadvisor -…"   7 days ago       Up 5 minutes    0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   cadvisor
e7db1396ec71   redis:latest             "docker-entrypoint.s…"   7 days ago       Up 5 minutes    0.0.0.0:6379->6379/tcp, :::6379->6379/tcp   redis

  1. 使用Grafana显示所有容器指标数据,采用ID为10566的模板,可以显示所有容器,如下所示


Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐