部署Prometheus+grafana详解

news/2024/5/19 1:32:39 标签: prometheus, grafana

目录

prometheus%20%E4%BB%8B%E7%BB%8D-toc" style="margin-left:40px;">一、prometheus 介绍

prometheus%20%E5%AF%B9%E6%AF%94%20zabbix-toc" style="margin-left:40px;">二、prometheus 对比 zabbix

prometheus%20%E7%9B%91%E6%8E%A7%E6%8F%92%E4%BB%B6-toc" style="margin-left:40px;">三、prometheus 监控插件

四、部署

1、下载所需的包

prometheus%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6-toc" style="margin-left:80px;"> 2.编辑prometheus的配置文件

3、编辑alertmanager 的配置文件

4、tmpl 模板(将此文件创建在/opt/alertmanager/tmpl/)

5.启动(注意所在目录)

6浏览器访问


prometheus%20%E4%BB%8B%E7%BB%8D">一、prometheus 介绍

Prometheus 是一个开源的系统监控和警报工具,广泛用于监视和度量应用程序、服务和基础设施的性能和可用性。它最初由SoundCloud开发并开源,现在是一个独立的开源项目,由Cloud Native Computing Foundation(CNCF)托管。以下是关于 Prometheus 的一些主要特点和功能:

  1. 多维数据模型:Prometheus 使用多维数据模型来存储和查询监控数据。每个数据样本都包括时间戳和一组标签(labels),这允许用户对数据进行高度维度化的查询和分析。

  2. PromQL 查询语言:Prometheus 提供了强大的查询语言,称为 PromQL,用于执行各种复杂的数据查询、聚合和变换操作。PromQL 支持范围查询、集合运算、数学运算和聚合等功能。

  3. 灵活的数据收集:Prometheus 支持多种数据收集方式,包括主动拉取(pull)和被动推送(push)模式。它可以通过各种数据源(如HTTP、Exposition格式的端点、JMX、Node Exporter等)获取监控数据。

  4. 动态发现和自动注册:Prometheus 支持服务发现,可以自动发现和注册新的监控目标,特别适合在容器化环境中动态添加和移除应用程序和服务。

  5. 警报和通知:Prometheus 具有内置的警报管理系统,允许用户定义和配置警报规则。当警报触发时,它可以通过各种渠道发送通知,如电子邮件、Slack、PagerDuty等。

  6. 可扩展性:Prometheus 可以通过联邦(Federation)和远程写入功能轻松扩展,以支持多个 Prometheus 实例的集成和数据汇总。

  7. 内置 Web UI:Prometheus 提供一个内置的Web界面,允许用户查询和可视化监控数据,查看警报规则以及检查目标的状态。

  8. 生态系统和插件:Prometheus 生态系统非常丰富,包括各种导出器、Grafana仪表板、Alertmanager、Pushgateway 等工具,可以扩展和增强 Prometheus 的功能。

  9. 云原生支持:Prometheus 适合在云原生环境中运行,特别是在Kubernetes集群中。它能够轻松地与云原生工具和平台集成。

Prometheus 被广泛用于监控微服务架构、容器化应用、云基础设施和传统的物理服务器。它是一个功能强大、灵活且可扩展的监控工具,广受社区欢迎,用于监视生产环境中的各种应用程序和服务。

prometheus%20%E5%AF%B9%E6%AF%94%20zabbix">二、prometheus 对比 zabbix

Prometheus 的优势:

  1. 云原生和容器友好:Prometheus 被设计为云原生和容器化环境的监控解决方案。它支持动态发现和监控Kubernetes和Docker等容器化环境中的应用程序和服务。

  2. 强大的多维数据模型:Prometheus 使用标签(labels)来对监控数据进行多维度的分类和查询,这使得数据分析和告警配置更加灵活和强大。

  3. 强大的查询语言:Prometheus Query Language(PromQL)非常适合对时间序列数据进行查询和分析,可以执行复杂的数据分析操作。

  4. 开源和活跃的社区:Prometheus 是一个开源项目,拥有庞大的社区支持和活跃的开发。这意味着有大量的插件、导出器和仪表板可供使用。

  5. 性能和扩展性:Prometheus 的性能非常出色,能够高效地处理大量的时间序列数据。它还支持联邦(Federation)和远程写入等功能,以支持多个 Prometheus 实例的集成和扩展。

Prometheus 的劣势:

  1. 长期存储:Prometheus 的默认存储系统不适合长期存储,因此通常需要与其他长期存储方案集成,如 Thanos 或 Cortex。

  2. 复杂性:Prometheus 配置可能需要更多的手动设置,尤其是在大型环境中,这可能会导致一些复杂性。

Zabbix 的优势:

  1. 综合性:Zabbix 提供了全面的监控功能,包括主机性能监控、网络监控、应用程序监控、日志监控等。它是一个综合性的监控解决方案。

  2. 可视化和仪表板:Zabbix 提供了丰富的仪表板和可视化工具,帮助用户更容易地分析监控数据。

  3. 通知和告警:Zabbix 具有强大的通知和告警功能,可以通过多种渠道(如电子邮件、SMS、Slack等)通知管理员和运维人员。

  4. 长期存储:Zabbix 具有内置的数据库用于长期存储监控数据,因此可以长期保留历史数据。

Zabbix 的劣势:

  1. 配置复杂性:Zabbix 的配置可能较为复杂,特别是在大型环境中,需要耗费较多的时间和精力来进行配置和维护。

  2. 不太适合云原生环境:Zabbix 通常需要较多的手动配置来适应云原生和容器化环境,与容器编排平台(如Kubernetes)的集成可能需要额外的工作。

总的来说,Prometheus 更适合云原生、容器化环境,具有强大的多维数据模型和灵活的查询语言。Zabbix 则更适合那些需要全面监控功能、可视化和长期存储的传统监控需求。选择哪个系统通常会取决于您的具体需求、环境和技术栈。您也可以考虑将它们结合使用,以满足不同方面的监控需求。

prometheus%20%E7%9B%91%E6%8E%A7%E6%8F%92%E4%BB%B6">三、prometheus 监控插件

还包括一些其他的插件未列出

官网插件列表

  1. Node Exporter:

    • Node Exporter 用于监控主机级别的系统性能和资源利用情况,包括 CPU、内存、磁盘、网络、负载等。

  2. Blackbox Exporter:

    • Blackbox Exporter 用于执行网络探测,监控网络服务的可用性和性能。它可以执行HTTP、TCP、ICMP等类型的探测。

  3. JMX Exporter:

    • JMX Exporter 用于监控Java应用程序,通过JMX接口暴露Java应用程序内部的性能数据。

  4. cAdvisor (Container Advisor):

    • cAdvisor 用于监控容器的性能和资源利用情况,包括Docker容器和Kubernetes容器。

  5. PostgreSQL Exporter:

    • PostgreSQL Exporter 用于监控PostgreSQL数据库的性能和查询统计信息。

  6. MySQL Exporter:

    • MySQL Exporter 用于监控MySQL数据库的性能和查询统计信息。

  7. Redis Exporter:

    • Redis Exporter 用于监控Redis数据库的性能和统计信息。

  8. Nginx Exporter:

    • Nginx Exporter 用于监控Nginx Web服务器的性能和请求统计信息。

  9. Apache Exporter:

    • Apache Exporter 用于监控Apache HTTP服务器的性能和请求统计信息。

  10. Prometheus MySQL Exporter:

  • 这个Exporter用于监控Prometheus自身的性能和状态,包括Prometheus的TSDB状态和查询性能。

四、部署

1、下载所需的包

包以上传,自行下载

解压后如图,redis、mysql 用于测试

prometheus%E7%9A%84%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6"> 2.编辑prometheus的配置文件

vim prometheus-2.45.0.linux-amd64/prometheus.yml 

3、编辑alertmanager 的配置文件

vim alertmanager-0.26.0.linux-amd64/alertmanager.yml 

 将以前的全部删除

# 定义邮件通知模板的路径,可以是模板文件的目录,支持通配符 *.tmpl
global:
  resolve_timeout: 5m
  smtp_from: 'xxxxx' # 发件⼈
  smtp_smarthost: 'smtp.163.com:465' # 邮箱服务器的POP3/SMTP 主机配置 smtp.qq.com 
  smtp_auth_username: 'xxxxxxxxx' # ⽤⼾名 
  smtp_auth_password: 'xxxxxxxxxx' # 授权码
  smtp_require_tls: false

templates:
  - /opt/alertmanager/tmpl/*.tmpl    #邮件模板的路径

# 设置路由规则,指定如何分组和发送警报
route:
  group_by: ['alertname']      # 根据警报名称进行分组,确保同一类型的警报被归为一组
  group_wait: 30s             # 当一个警报组内的警报发生后,等待 30 秒,以便将它们一起发送
  group_interval: 5m          # 每 5 分钟发送一次警报组
  repeat_interval: 1h         # 如果警报仍然处于活动状态,每小时重复发送一次
  receiver: 'email-notifications'  # 默认使用 'email-notifications' 接收者来发送警报通知

# 定义接收者配置,包括电子邮件通知设置
receivers:
  - name: 'email-notifications'  # 接收者名称,用于路由规则中的指定
    email_configs:
      - to: 'xxxxxx@163.com'   # 收件人的电子邮件地址
        from: 'xxxxxxxx@163.com' # 发件人的电子邮件地址
        smarthost: 'smtp.163.com:25'  # SMTP 服务器地址和端口
        auth_username: 'xxxxxxxx@163.com'  # SMTP 服务器的用户名
        auth_password: 'xxxxxxx'    # SMTP 服务器的密码
        html: '{{ template "email.html" . }}'  # 使用指定的邮件模板

# 定义抑制规则,用于控制警报的触发和抑制
inhibit_rules:
 - source_match:
     severity: 'critical'  # 匹配来自严重性为 'critical' 的警报
   target_match:
     severity: 'warning'  # 匹配目标严重性为 'warning' 的警报
   equal: ['alertname', 'dev', 'instance']  # 仅当警报名称、标签 'dev' 和 'instance' 均匹配时抑制

4、tmpl 模板(将此文件创建在/opt/alertmanager/tmpl/)

{{ define "email.html" }}
<!DOCTYPE html>
<html>
<head>
    <style>
        table {
            border-collapse: collapse;
            width: 80%;
            margin: 20px auto;
        }

        th, td {
            border: 1px solid #ddd;
            padding: 8px;
            text-align: left;
        }

        th {
            background-color: #f2f2f2;
        }

        h1 {
            text-align: center;
        }

        .alert-details {
            margin-top: 20px;
        }

        .alert-item {
            border: 1px solid #ddd;
            padding: 10px;
            margin-bottom: 10px;
            background-color: #f9f9f9;
        }
    </style>
</head>
<body>
    <h1>监控报警通知</h1>
    <table>
        <tr>
            <th>告警状态</th>
            <th>告警级别</th>
            <th>告警类型</th>
            <th>告警应用</th>
            <th>告警主机</th>
            <th>告警详情</th>
            <th>触发阀值</th>
            <th>告警时间</th>
        </tr>
        {{ range $i, $alert := .Alerts }}
        <tr>
            <td>{{ .Status }}</td>
            <td>{{ $alert.Labels.severity }}</td>
            <td>{{ $alert.Labels.alertname }}</td>
            <td>{{ $alert.Annotations.summary }}</td>
            <td>{{ $alert.Labels.instance }}</td>
            <td>{{ $alert.Annotations.description }}</td>
            <td>{{ $alert.Annotations.value }}</td>
            <td>{{ $alert.StartsAt.Format "2006-01-02 15:04:05" }}</td>
        </tr>
        {{ end }}
    </table>
</body>
</html>
{{ end }}

5.启动(注意所在目录)

启动prometheus


[root@localhost prometheus-2.45.0.linux-amd64]# ./prometheus

启动altermanager

[root@localhost alertmanager-0.26.0.linux-amd64]# ./alertmanager 

启动node_exporter 

[root@localhost node_exporter-1.6.1.linux-amd64]# ./node_exporter 

6浏览器访问

prometheus  IP:9090

altermanager IP:

 grafana IP:3000

设置中文

 与Prometheus关联

 监控模板的导入

 

 


http://www.niftyadmin.cn/n/5450766.html

相关文章

电源模块 YULIN俞霖科技DC/DC电源模块 直流升压 高压稳压

Features 最低工作电压&#xff1a;0.7V电压隔离&#xff1a;1000VDC /3000VDC 平均无故障时间&#xff1a; > 800,000 小时短路与电弧保护无最低负载要求&#xff1a;可空载工作输入电压&#xff1a;5、12、15、24VDCOutput 100,200、300、400、500 、600、800、 1000、1…

大学教材《C语言程序设计》(浙大版)课后习题解析 | 第三、四章

概述 本文主要提供《C语言程序设计》(浙大版) 第三、四章的课后习题解析&#xff0c;以方便同学们完成题目后作为参考对照。后续将更新第五、六章节课后习题解析&#xff0c;如想了解更多&#xff0c;请持续关注该专栏。 专栏直达链接&#xff1a;《C语言程序设计》(浙大版)_孟…

[数据结构]二叉树的层序遍历

一、二叉树的层序遍历 设二叉树的根节点所在层数为1&#xff0c;层序遍历就是从所在二叉树的根节点出发&#xff0c;首先访问第一层的树根节点&#xff0c;然后从左到右访问第2层上的节点&#xff0c;接着是第三层的节点&#xff0c;以此类推&#xff0c;自上而下&#xff0c;自…

【Canvas与艺术】淡蓝辉光汽车速度仪表盘

【关键点】 内圈处渐变色的采用。 【效果图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>淡蓝辉光汽车速度仪表盘</t…

golang 使用protobuf

1.下载protobuf的编译器&#xff0c;安装到系统设置环境变量 地址&#xff1a;https://github.com/protocolbuffers/protobuf/releases 下载对应的编译器 2.安装库文件 二选一 go get github.com/golang/protobuf/proto go get github.com/gogo/protobuf/proto 安装go语言插件 …

如何将 Parallels虚拟机 安装或者迁移到 移动硬盘 or U盘?

本文讨论主题 如何安装 Parallels 虚拟机到移动硬盘和U盘? 已经安装到了mac上的虚拟机如何迁移到移动硬盘活着U盘上? 关于Parallels Deskshop 19 虚拟机 安装激活,文末关注公众号AIshape,回复:PD 进行获取通过将虚拟机安装在外置的移动硬盘U盘上,可以节省mac本身SSD的容…

许可型DeFi 项目NEOPIN:在合规的框架下推动DeFi的创新

合规化已成 DeFi 的主流方向 过去的几年里&#xff0c;全球金融市场见证了 DeFi 的快速增长。DeFi 通过提供无需中介的交易和借款等金融服务&#xff0c;为用户带来前所未有的便利。然而&#xff0c;其匿名性和去中心化的特性也为监管和安全带来挑战 —— DeFi项目的透明度不足…

道可云元宇宙每日资讯|国家能源局:探索推广虚拟电厂等新技术

道可云元宇宙每日简报&#xff08;2024年3月25日&#xff09;讯&#xff0c;今日元宇宙新鲜事有&#xff1a; 国家能源局&#xff1a;探索推广虚拟电厂等新技术 国家能源局印发《2024年能源工作指导意见》&#xff0c;其中提出&#xff0c;促进能源新技术应用示范。组织开展能…