部署Prometheus+grafana详解

目录

一、prometheus 介绍

二、prometheus 对比 zabbix

三、prometheus 监控插件

四、部署

1、下载所需的包

 2.编辑prometheus的配置文件

3、编辑alertmanager 的配置文件

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

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

6浏览器访问


一、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 对比 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 监控插件

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

官网插件列表

  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 用于测试

 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: 5msmtp_from: 'xxxxx' # 发件⼈smtp_smarthost: 'smtp.163.com:465' # 邮箱服务器的POP3/SMTP 主机配置 smtp.qq.com smtp_auth_username: 'xxxxxxxxx' # ⽤⼾名 smtp_auth_password: 'xxxxxxxxxx' # 授权码smtp_require_tls: falsetemplates:- /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.rhkb.cn/news/285114.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使能 Linux 内核自带的 FlexCAN 驱动

一. 简介 前面一篇文章学习了 ALPHA开发板修改CAN的设备树节点信息&#xff0c;并加载测试过设备树文件&#xff0c;文件如下&#xff1a; ALPHA开发板修改CAN的设备树节点信息-CSDN博客 本文是学习使能 IMX6ULL的 CAN驱动&#xff0c;也就是通过内核配置来实现。 二. 使能…

Git的原理和使用(四)

目录 远程操作 理解分布式版本控制系统 远程仓库 新建远程仓库 克隆远程仓库 向远程仓库推送 拉取远程仓库 配置Git 忽略特殊文件 为命令配置别名 标签管理 理解标签 创建标签 操作标签 远程操作 理解分布式版本控制系统 1、每个人的电脑上都是一个完整的版本库…

qt Qt Remote Object(QtRO)实现进程间通信

简介 Qt Remote Object简称QtRO&#xff0c;这是Qt5.9以后官方推出来的新模块&#xff0c;专门用于进程间通信&#xff08;IPC&#xff09;。是基于Socket来封装的&#xff0c;兼容LPC和RPC。LPC即Local Process Communication&#xff0c;而RPC是指Remote Process Communicat…

电子电器架构 —— 诊断数据DTC具体故障篇

电子电器架构 —— 诊断数据DTC起始篇 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师 (Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意别人怎么看自己。江湖一碗茶,喝完再挣扎…

【Postman】工具使用介绍

一、postman工具介绍 1.什么是postman postman是谷歌开发的一款网页调试和接口测试工具&#xff0c;能够发送任何请求类型的http请求&#xff0c;支持GET/POST/PUT/DELETE等方法。postman简单易用&#xff0c;可以直接填写URL&#xff0c;header&#xff0c;body就可以发送一…

二次开发Flink-coGroup算子支持迟到数据通过测输出流提取

1.背景 coGroup算子开窗到时间关闭之后&#xff0c;迟到数据无法通过测输出流提取&#xff0c;intervalJoin算子提供了api&#xff0c;因为join算子底层就是coGroup算子&#xff0c;所以Join算子也不行。 flink版本 v1.17.1 2.coGroup算子源码分析 2.1完成的coGroup算子调用流…

SpringCloud中网关实现笔记

SpringCloud中网关实现笔记 SpringCloudGateway&#xff1a;基于Spring的WebFlux技术&#xff0c;完全支持响应式编程&#xff0c;吞吐能力更强 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目&#xff0c;用于构建基于 Spring 框架的 API 网关服务。它基于 Spring 5&a…

Python爬虫-批量爬取星巴克全国门店

前言 本文是该专栏的第22篇,后面会持续分享python爬虫干货知识,记得关注。 本文笔者以星巴克为例,通过Python实现批量爬取目标城市的门店数据以及全国的门店数据。 具体的详细思路以及代码实现逻辑,跟着笔者直接往下看正文详细内容。(附带完整代码) 正文 地址:aHR0cHM…

基于SpringBoot和Vue的课程作业管理系统的设计与实现

今天要和大家聊的是一款基于SpringBoot和Vue的课程作业管理系统的设计与实现。 &#xff01;&#xff01;&#xff01; 有需要的小伙伴可以通过文章末尾名片咨询我哦&#xff01;&#xff01;&#xff01; &#x1f495;&#x1f495;作者&#xff1a;李同学 &#x1f495;&am…

福昕阅读器 PDF 文档基本操作

福昕阅读器 PDF 文档基本操作 References 转至 PDF 顶部 快捷键&#xff1a;Home. 转至 PDF 顶部 快捷键&#xff1a;End. 打开超链接 文本选择工具 -> 手形工具 (Hand Tool) -> 点击超链接 福昕阅读器 同时在多个窗口中打开多个文件 文件 -> 偏好设置 -> 文…

开源博客项目Blog .NET Core源码学习(10:App.Framwork项目结构分析)

开源博客项目Blog的解决方案总共包括4个项目&#xff0c;其中App.Hosting项目包括所有的页面及控制器类&#xff0c;其它项目主要提供数据库访问、基础类型定义等。这四个项目的依赖关系如下图所示&#xff0c;本文主要分析App.Framwork项目的主要结构及主要文件的用途。   …

老胡的周刊(第134期)

老胡的信息周刊[1]&#xff0c;记录这周我看到的有价值的信息&#xff0c;主要针对计算机领域&#xff0c;内容主题极大程度被我个人喜好主导。这个项目核心目的在于记录让自己有印象的信息做一个留存以及共享。 &#x1f3af; 项目 Llama-Chinese[2] 专注于 Llama 模型在中文方…

nodejs+vue高校社团管理小程序的设计与实现python-flask-django-php

相比于以前的传统手工管理方式&#xff0c;智能化的管理方式可以大幅降低学校的运营人员成本&#xff0c;实现了高校社团管理的标准化、制度化、程序化的管理&#xff0c;有效地防止了高校社团管理的随意管理&#xff0c;提高了信息的处理速度和精确度&#xff0c;能够及时、准…

sentinel中StatisticSlot数据采集的原理

StatisticSlot数据采集的原理 时间窗口 固定窗口 在固定的时间窗口内&#xff0c;可以允许固定数量的请求进入&#xff1b;超过数量就拒绝或者排队&#xff0c;等下一个时间段进入, 如下图 时间窗长度划分为1秒 单个时间窗的请求阈值为3 上述存在一个问题, 假如9:18:04:…

8个常见的数据可视化错误以及如何避免它们

在当今以数据驱动为主导的世界里&#xff0c;清晰且具有洞察力的数据可视化至关重要。然而&#xff0c;在创建数据可视化时很容易犯错误&#xff0c;这可能导致对数据的错误解读。本文将探讨一些常见的糟糕数据可视化示例&#xff0c;并提供如何避免这些错误的建议。 本文总结了…

前端学习之用css和html做一个仿淘宝的导航栏

代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>仿淘宝界面案例</title><style>/* 最外层盒子 */.container{width: 270px;height: 385px;border: 1px solid rgb(255, 208, 0);bord…

服务消费微服务

文章目录 1.示意图2.环境搭建1.创建会员消费微服务模块2.删除不必要的两个文件3.检查父子模块的pom.xml文件1.子模块2.父模块 4.pom.xml 添加依赖&#xff08;刷新&#xff09;5.application.yml 配置监听端口和服务名6.com/sun/springcloud/MemberConsumerApplication.java 创…

LeetCode每日一题——移除链表元素

移除链表元素OJ链接&#xff1a;203. 移除链表元素 - 力扣&#xff08;LeetCode&#xff09; 题目&#xff1a; 思路&#xff1a; 这与之前的移除元素的题目很相似&#xff0c;那么我们同样可以用类似的做法&#xff08;双指针&#xff09;进行解题。但是这是一个链表删除&a…

代码随想录算法训练营Day56 ||leetCode 583. 两个字符串的删除操作 || 72. 编辑距离

647. 回文子串 dp[i][j]表示第i位开始&#xff0c;第j位结束的字符串是否为回文串 class Solution { public:int countSubstrings(string s) {vector<vector<bool>> dp(s.size(), vector<bool>(s.size(), false));int result 0;for (int i s.size() - 1…

大白话扩散模型(无公式版)

背景 传统的图像生成模型有GAN&#xff0c;VAE等&#xff0c;但是存在模式坍缩&#xff0c;即生成图片缺乏多样性&#xff0c;这是因为模型本身结构导致的。而扩散模型拥有训练稳定&#xff0c;保持图像多样性等特点&#xff0c;逐渐成为现在AIGC领域的主流。 扩散模型 正如…