• Prometheus 云原生 - 微服务监控报警系统 (Promethus、Grafana、Node_Exporter)部署、简单使用


    目录

    开始

    Prometheus 介绍

    基本原理

    组件介绍

    下文部署组件的工作方式

    Prometheus 生态安装(Mac)

    安装 prometheus

    安装 grafana

    安装 node_exporter

    Prometheus 生态安装(Docker)

    安装 prometheus

     安装 Grafana

    安装 node_exporter

    Grafana 实现可视化

    导入 Prometheus 数据源

    引入仪表盘


    开始


    Prometheus 介绍

    基本原理

    prometheus 是一个开源的系统监控和报警系统,本身是机遇 Go 开发的一套开源的系统监控报警框架和时序列数据库(TSDB)

    基本原理:通过 HTTP 协议周期性的抓取被监控组件的状态,任意组件只要提供对应的 HTTP 接口就可以接入监控,不需要任何的 SDK 或者其他集成过程.   这样非常适合做虚拟化环境监控,例如 VM、Docker、Hubernetes 等,被监控组件信息的 HTTP 接口叫做 exporter.  

    组件介绍

    • Prometheus server:是 Prometheus 架构中的核心组件,基于 go 语言编写,可以独立部署在服务器上、云主机、Docker 容器中. 主要用于收集目标数据,并将采集到的数据按照时间序列存储在本地磁盘的时序数据库中,对外可提供数据查询支持、自定义 PromeQL 语言(对数据进行查询分析)、告警规则配置管理.
    • Client Library:用于监测应用程序代码的客户端库.  在监控服务前,需要向客户端代码添加监测实现 Prometheus 中的 metric 的类型.
    • Exporter:数据采集者,用于输出被监控组件信息的 HTTP 接口.
    • Pushgateway:用于支持短期临时 或 批量计划任务工作的汇聚节点.  主要用于短期 job,此类存在的 job 时间较短,可能 Prometheus 在 pull 之前就自动消失了.  所以针对这种 job,就设计成可直接向 Pushgateway 推送 metric,这样 Prometheus 就可以定时去 Pushgateway 中拉去 metric.         总的来讲,Pushgateway 是一个组件,prometheus server 默认通过 exporter 主动 pull 获取数据,pushgateway 则是通过被动方式推动数据到 prometheus server.  用户可以写一写自定义的监控脚本把需要监控的数据发送给 pushgateway,然后 pushgateway 把数据发送给 prometheus server.
    • Alertmanager:用于处理 Prometheus 服务器发送的 alerts 信息,对其去重数据、分组 最后路由到正确的接受方式(邮箱、钉钉...),发出告警,支持丰富的告警方式.
    • Service Discovery:动态发现 待监控的 target,从而完成监控配置的重要组件.   Promethus 每隔几秒就会去各个 target 采集一次 metric,因此需要手工制定监测节点,当节点增多,更改配置文件就会很麻烦,这时候就需要通过服务发现,例如 service discovery,sd 机制去解决.

    下文部署组件的工作方式

    • Promethus:Prometheus 并不直接监控特定的目标,而是依赖于 Exporter 来提供监控数据。 Exporter 可以是独立运行的程序,也可以是内置在监控目标中的服务,只要能够向 Prometheus 提供标准格式的监控样本数据即可。
    • Node_Exporter:通过 HTTP 接口(通常是/metrics)暴露收集到的监控数据,Prometheus 服务器定期从这个接口拉取数据。
    • Grafana:
      • 用户首先需要在 Grafana 中添加 Prometheus 作为数据源,并配置相应的查询语句来获取所需的监控数据。
      • 然后,用户可以在 Grafana 中创建仪表盘,并添加各种图表来展示这些数据。 Grafana 会根据用户设置的查询语句从 Prometheus 中查询数据,并进行处理(如计算平均值、最大值等),最后将数据可视化显示在图表中。

    总的来讲:

    -> Node_Exporter 负责从被监控的服务器上采集数据.

    -> Prometheus 主要任务是对 Node_Exporter 采集到的数据进行收集、存储和对外提供数据查询支持.

    -> Grafana 再将 Prometheus 中整理的数据进行展示.

    Prometheus 生态安装(Mac)

    安装 prometheus

    a)安装命令:

    brew install prometheus

    通过 which prometheus 可以找到安装位置.

    这里实际上只是一个快捷方式,真正安装目录在

    • bin目录:/opt/homebrew/Cellar/prometheus/2.53.0/bin
    • 配置文件:/opt/homebrew/etc/prometheus.yml

    b)启动 prometheus

    进入到 /opt/homebrew/Cellar/prometheus/2.53.0/bin 目录下,输入如下命令后台启动:

    nohup ./prometheus --config.file=/opt/homebrew/etc/prometheus.yml &

    通过 cat nohup 类似如下说明启动成功:

    c)进入界面

    在浏览器中输入: localhost:9090

    如下界面

    安装 grafana

    a)安装命令

    brew install grafana

    b)安装目录

    bin 目录:/opt/homebrew/Cellar/grafana/11.1.0/bin

    c)启动并配置

    输入命令生成对应的配置文件

    grafana-server --config=/opt/homebrew/etc/grafana/grafana.ini --homepath /opt/homebrew/share/grafana --packaging=brew cfg:default.paths.logs=/opt/homebrew/var/log/grafana cfg:default.paths.data=/opt/homebrew/var/lib/grafana cfg:default.paths.plugins=/opt/homebrew/var/lib/grafana/plugins

    输入地址:localhost:3000

    页面如下:

    下图是登陆后的页面,默认用户名和密码都是 admin,第一次登陆后必须更改密码.

    安装 node_exporter

    a)第一种安装方式

    https://prometheus.io/download/icon-default.png?t=N7T8https://prometheus.io/download/

    b)第二种安装方式:

    使用 mac 也可以通过 brew 安装,如下

    brew install node_exporter

    c)启动:

    brew services start node_exporter

    或者直接

    node_exporter

    c)访问 localhost:9100 

    显示如下内容

    d)配置 prometheus.yml 

    vim /opt/homebrew/etc/prometheus.yml
    1. scrape_configs:
    2. - job_name: "prometheus"
    3. static_configs:
    4. - targets: ["localhost:9090"]
    5. - job_name: "node_exporter"
    6. static_configs:
    7. - targets: ["localhost:9100"]

    e)重载配置

    查看 prometheus 端口号 ps aux | grep prometheus

    kill 删除 prometheus 进程,然后重启.

    prometheus --config.file=/opt/homebrew/etc/prometheus.yml

    f)浏览器中查看:

    Prometheus 生态安装(Docker)

    安装 prometheus

    a)命令如下

    docker pull prom/prometheus

    b)创建挂载目录及配置文件

    mkdir -p ~/env/prometheus

    在 ~/env/prometheus 目录下创建配置文件 prometheus.yml

    1. global:
    2. scrape_interval: 15s # 指定了 Prometheus 从每个被监控的目标 (target) 拉取数据的频率。
    3. evaluation_interval: 15s # 指定了 Prometheus 评估其定义的规则 (rules) 的频率。这些规则包括记录规则 (recording rules) 和警报规则 (alerting rules)。
    4. scrape_configs:
    5. - job_name: prometheus
    6. static_configs:
    7. - targets: ['env-base:9090']
    8. - job_name: grafana
    9. static_configs:
    10. - targets: ['env-base:3000']
    11. - job_name: node_exporter
    12. static_configs:
    13. - targets: ['env-base:9100']

    c)运行镜像

    1. docker run -d \
    2. --name=prometheus \
    3. --restart=always \
    4. -p 9090:9090 \
    5. -v ~/env/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
    6. prom/prometheus

     d)浏览器中输入 enb-base:9000 ,如下说明启动成功:

     安装 Grafana

    a)命令如下

    使用 docker run 命令之前,还需要给  ~/env/grafana 文件赋予 写操作 的权利,否则会启动失败

    chmod a+w ~/env/grafana
    1. docker run -d \
    2. --name=grafana \
    3. --restart=always \
    4. -p 3000:3000 \
    5. -v ~/env/grafana:/var/lib/grafana \
    6. grafana/grafana

    b)浏览器中输入 env-base:3000 ,如下界面:

    第一次登录账号和密码都是 admin.

    并且第一次登录成功后会强制你进行修改密码(当然你也可以继续修改为 admin),如下:

    成功登录如下:

    c)由于之前在 prometheus.yml 配置文件中也配置了 grafana 的地址,因此,这里可以打开 prometheus ,点击导航栏中 status 下的 targets ,就可以看到被监控的状态

    Ps:prometheus 会每隔一段时间就会自动拉去你 prometheus.yml 中配置的 scrape_configs 路由,默认会去  /metrics 拉去对应的配置

    安装 node_exporter

    a)拉取镜像

    docker pull prom/node-exporter

     b)运行

    node_exporter 挂载的都是系统文件.

    1. docker run -d -p 9100:9100 \
    2. --name=node_exporter \
    3. --restart=always \
    4. -v "/proc:/host/proc:ro" \
    5. -v "/sys:/host/sys:ro" \
    6. -v "/:/rootfs:ro" \
    7. --net="host" \
    8. prom/node-exporter

    c)浏览器中输入 env-base:9100 ,如下表示访问成功

    d

    d)由于之前在 prometheus.yml 配置文件中也配置了 node_exporter 的地址,因此,这里可以打开 prometheus ,点击导航栏中 status 下的 targets ,就可以看到被监控的状态

    Ps:prometheus 会每隔一段时间就会自动拉去你 prometheus.yml 中配置的 scrape_configs 路由,默认会去  /metrics 拉去对应的配置

    Grafana 实现可视化

    导入 Prometheus 数据源

    引入仪表盘

    Grafana dashboards | Grafana LabsBrowse a library of official and community-built dashboards.icon-default.png?t=N7T8https://grafana.com/grafana/dashboards/在上述地址中找到一个喜欢的仪表盘,然后复制 ID

    Ps:上述仪表盘能采集到 Prometheus 数据的前提是,Promethus 的 prometheus.yml 配置了 node_exporter 采集数据的 url.

  • 相关阅读:
    刷题记录:牛客NC23501小A的回文串
    Linux—vmstat命令详解
    C# MES通信从入门到精通(1)——串口传输文件
    OneFlow-ONNX v0.6.0正式发布
    链表经典面试题(六)
    互联网时代下服务器该如何进行主机加固
    卷积神经网络(Convolutional Neural Networks,CNN)
    ICML 2019 | SGC:简单图卷积网络
    史上最全Java面试题,Java面试必备
    Java 并发编程解析 | 如何正确理解Java领域中的并发锁,我们应该具体掌握到什么程度?
  • 原文地址:https://blog.csdn.net/CYK_byte/article/details/140344405