• 无痛入门Prometheus:一个强大的开源监控和告警系统,如何快速安装和使用?


    一、前生今世

    Prometheus 是完全开源的系统监控和告警工具包,它受 Google 内部的 BorgMon 监控系统启发,由前Google 工程师从 2012 年开始在 SoundCloud 以开源软件的形式进行研发,自此以后,许多公司和组织都采用了Prometheus 作为监控告警工具。Prometheus 的开发者和用户社区非常活跃,它现在是一个独立的开源项目,可以独立于任何公司进行维护。

    自2012年推出以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发者和用户社区。它现在是一个独立的开源项目,独立于任何公司进行维护。为了强调这一点,并明确项目的治理结构,Prometheus 于 2016 年加入 云原生计算基金会,成为继Kubernetes之后的第二个托管项目。

    Prometheus的主要特点是:

    • 多维数据模型,其中时间序列数据由指标名称和键/值对标识
    • PromQL,一种 利用此维度的灵活查询语言
    • 不依赖分布式存储;单个服务器节点是自治的
    • 时间序列收集通过 HTTP 上的拉模型进行
    • 通过中间网关支持推送时间序列
    • 通过服务发现或静态配置发现目标
    • 多种图形和仪表板支持模式

    二、架构图

    下图说明了 Prometheus 的架构及其一些生态系统组件:

    三、安装

    开启内核路由转发

    echo -e "net.ipv4.ip_forward = 1\nnet.ipv4.conf.default.rp_filter = 0 \nnet.ipv4.conf.all.rp_filter = 0" >> /etc/sysctl.conf  sysctl -p

    创建配置文件

    vim prometheus.yml
    1. # my global config
    2. global:
    3. scrape_interval: 15s # 采集被监控段指标的一个周期
    4. evaluation_interval: 15s # 告警评估的一个周期
    5. # 告警的配置文件
    6. alerting:
    7. alertmanagers:
    8. - static_configs:
    9. - targets:
    10. # - alertmanager:9093
    11. # 告警规则配置
    12. rule_files:
    13. # - "first_rules.yml"
    14. # 被监控端的配置,目前只有一个节点,就是prometheus本身
    15. scrape_configs:
    16. - job_name: 'prometheus'
    17. static_configs:
    18. - targets: ['localhost:9090']

    启动镜像,将主配置文件挂载到容器内

    1. docker run -d -p 9090:9090 \
    2. --name prometheus \
    3. --restart on-failure \
    4. -v /data/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
    5. prom/prometheus

    执行后需要下载镜像文件,需要等待一会。

    完全启动后可以,访问Prometheus自带的UI:http://xx.xx.xx.xx:9090/

    自带的WEB UI比较简单,后面会说到功能比较全面dashboard grafana。

    四、使用

    cAdvisor 是 Google 开源的容器监控工具,它可以收集容器的资源使用情况、网络流量、文件系统使用情况等指标数据。cAdvisor 可以部署在 Kubernetes 集群中的每个节点上,以收集集群中所有容器的监控数据。

    cAdvisor 部署的目的如下:

    • 监控容器的运行状态:cAdvisor 可以收集容器的资源使用情况、网络流量、文件系统使用情况等指标数据,这些数据可以帮助我们了解容器的运行状态,并及时发现异常情况。
    • 分析容器的性能瓶颈:通过分析 cAdvisor 收集的监控数据,我们可以分析容器的性能瓶颈,并采取措施进行优化。
    • 提高容器的资源利用率:通过监控容器的资源使用情况,我们可以合理分配资源,提高容器的资源利用率。

    cAdvisor 是 Kubernetes 集群中必不可少的监控工具,它可以帮助我们更好地了解和管理容器。

    cAdvisor 的优势

    • 开源:cAdvisor 是完全开源的,可以免费使用。
    • 轻量级:cAdvisor 是一个轻量级的应用程序,不会给集群带来太大的负载。
    • 易用:cAdvisor 的配置和使用都非常简单。

    cAdvisor 的缺点

    • 数据存储能力有限:cAdvisor 默认会将监控数据存储在内存中,如果数据量较大,可能会导致内存溢出。
    • 可视化能力有限:cAdvisor 本身没有提供可视化工具,需要使用第三方工具来可视化监控数据。

    cAdvisor 的部署

    • 使用 Helm 部署:Helm 是一个 Kubernetes 包管理工具,可以使用 Helm 来部署 cAdvisor。
    • 使用 Docker 部署:cAdvisor 可以作为 Docker 容器运行,可以使用 Docker 来部署 cAdvisor。
    • 手动部署:可以下载 cAdvisor 的二进制文件,并手动部署到 Kubernetes 集群中。

    下面介绍docker部署cAdvisor:

    1. docker run -d \
    2. --volume=/:/rootfs:ro \
    3. --volume=/var/run:/var/run:ro \
    4. --volume=/sys:/sys:ro \
    5. --volume=/var/lib/docker/:/var/lib/docker:ro \
    6. --volume=/dev/disk/:/dev/disk:ro \
    7. --publish=8080:8080 \
    8. --detach=true \
    9. --name=cadvisor \
    10. google/cadvisor:latest

    访问该地址,就能看到实时采集到的数据:http://xx.xx.xx.xx:8080/containers/

    http://xx.xx.xx.xx:8080/metrics/ 就是cAdvisor提供的数据接口。

    然后修改prometheus.yml

    vim /data/prometheus/prometheus.yml

    修改prometheus的配置文件,复制一个job文件,job_name 指名称,targets为cAdvisor服务器地址ip和端口

    1. # global config
    2. global:
    3. scrape_interval: 15s # 采集被监控段指标的一个周期
    4. evaluation_interval: 15s # 告警评估的一个周期
    5. # 告警的配置文件
    6. alerting:
    7. alertmanagers:
    8. - static_configs:
    9. - targets:
    10. # 告警规则配置
    11. rule_files:
    12. # - "first_rules.yml"
    13. # 被监控端的配置,目前只有一个节点,就是prometheus本身
    14. scrape_configs:
    15. - job_name: 'prometheus'
    16. static_configs:
    17. - targets: ['localhost:9090']
    18. - job_name: 'prometheus docker'
    19. static_configs:
    20. - targets: ['10.9.2.50:8080']

    修改完成重启prometheus

    docker restart prometheus

    http://xx.xx.xx.xx:9090/targets 可以看到监控指标说明获取数据成功

    五、监控界面

    Grafana 是一个开源的监控和可视化工具,它可以连接到各种数据源,并以图表、仪表盘和报表的形式展示数据。Grafana 可以用于监控任何类型的系统,包括 Kubernetes 集群、Web 应用程序、IoT 设备等。

    Grafana 的功能

    • 连接到各种数据源:Grafana 支持连接到各种数据源,包括 Prometheus、InfluxDB、Elasticsearch、MySQL、PostgreSQL 等。
    • 以图表、仪表盘和报表的形式展示数据:Grafana 提供了丰富的图表类型,可以满足不同的数据展示需求。
    • 支持自定义仪表盘:Grafana 允许用户自定义仪表盘,以满足特定的监控需求。
    • 支持报警:Grafana 可以将报警通知发送到 Slack、邮件等方式。

    Grafana 的优势

    • 开源:Grafana 是完全开源的,可以免费使用。
    • 灵活:Grafana 可以连接到各种数据源,并以各种方式展示数据。
    • 易用:Grafana 的配置和使用都非常简单。

    Grafana 的缺点

    • 数据存储能力有限:Grafana 本身没有提供数据存储功能,需要使用第三方工具来存储数据。
    • 可视化能力有限:Grafana 提供的图表类型有限,可能无法满足复杂的监控需求。

    Grafana 的部署

    • 使用 Docker 部署:Grafana 可以作为 Docker 容器运行,可以使用 Docker 来部署 Grafana。
    • 手动部署:可以下载 Grafana 的二进制文件,并手动部署到服务器上。

    下面是docker方式部署grafana

    docker  run -d --name=grafana  -p 3000:3000  grafana/grafana

    执行后,下载镜像并启动。http://xx.xx.xx.xx:3000,默认用户名/密码:admin/admin

    选择 "Add your first data source"

    进入后选择Prometheus

    填写相关信息

    添加Prometheus模板

    输入id号,193

    下拉,选择Prometheus,然后Import

    成功展示来由Prometheus数据


  • 相关阅读:
    智云通CRM:越是害怕被客户拒绝,你就越会被拒绝?
    uniapp小程序与webview通信
    【SpringBoot整合MQ】-----SpringBoot整合ActiveMQ
    选择排序--java(详解)
    【仿牛客网笔记】Spring Boot实践,开发社区登录模块-会话管理
    flink技术总结待续
    出栈序列的合法性
    如何在WORDPRESS里面添加GLEGoogle Tag Manager广告跟踪代码
    时间复杂度和空间复杂度
    在Thymeleaf中格式化日期
  • 原文地址:https://blog.csdn.net/citywu123/article/details/133695226