Prometheus应用监控

1.主流机器与应用Prometheus,skywalking监控体系分享介绍

应用监控介绍

  1. 目前市面上开源应用的APM系统主要有CAT、Zipkin、Pinpoint、SkyWalking。
  2. 目前市面上机器监控软件有zabbix,Prometheus(也能监控应用,及其他中间件产品)。
  • Zipkin是Twitter开源的调用链路分析工具,目前基于Spingcloud sleuth得到了广泛的应用,特点是轻量,部署简单。

Pinpoint一个韩国团队开源的产品,运用了字节码增强技术,只需要在启动时添加启动参数即可,对代码无侵入,目前支持Java和PHP语言,底层采用HBase来存储数据,探针收集的数据粒度非常细,但性能损耗大,因其出现的时间较长,完成度也很高,应用的公司较多

  • Skywalking是本土开源的基于字节码注入的调用链路分析以及应用监控分析工具,特点是支持多种插件,UI功能较强,接入端无代码侵入。

CAT是由国内美团点评开源的,基于Java语言开发,目前提供Java、C/C++、Node.js、Python、Go等语言的客户端,监控数据会全量统计,国内很多公司在用,例如美团点评、携程、拼多多等,CAT跟下边要介绍的Zipkin都需要在应用程序中埋点,对代码侵入性强。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7LyoSSzs-1668243114386)(images/监控对比.png)]在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

机器及中间件监控介绍

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kPtIAVYD-1668243114388)(images/zabbix-promet.png)]

  1. Prometheus开始成为主导及容器监控方面的标配,并且在未来可见的时间内被广泛应用。如果是刚刚要上监控系统的话,不用犹豫了,Prometheus 准没错。
  2. Zabbix 使用外部数据库来存储数据。Zabbix 数据库必须在安装期间创建。当前支持以下数据库:MySQL、PostgreSQL、Oracle、IBM DB2 和 SQLite
  3. Prometheus 将数据存储在自己的时间序列数据库 (TSDB)中。Prometheus 拥有自己的 TSDB,可以接收和处理比许多其他监控系统更多的指标。Prometheus
    甚至可以使用毫秒分辨率时间戳写入数据。Prometheus 本身最多只能存储 14 天的数据,如需更长的数据存储时间,您可以配置远程存储。
  4. Prometheus社区生态,及对常用中间件监控组件比较多。

2.Prometheus监控

2.1架构及组件介绍

在这里插入图片描述

  1. Prometheus server组件介绍,它是prometheus的主程序,本身也是一个时序数据库,它来负责整个监控集群的数据拉取、处理、计算和存储。和zabbix采取push监控数据的方式不同,
  • 1、prometheus的设计是使用pull方式由服务端主动拉取监控数据。关于push和pull两种方式的优缺点争论一直存在,这里不再过多赘述,只需知道即可。
    当prometheus拉取到数据之后首先进行的操作是数据的处理:根据配置的数据格式或者标签转换/删除等操作。
  • 2、数据处理完成后是根据rule中配置的规则进行计算:比如CPU使用率达到80%是一条告警规则,则prometheus会对数据进行计算看是否命中规则,命中则发送消息给alertmanager组件,否则不做操作。
  • 3、完成上面的一些操作之后,prometheus会根据配置时间周期保存数据到本地或者是第三方存储中。
  1. Alertmanager 组件介绍,它是prometheus的告警组件,负责整个集群的告警发送、分组、调度、警告抑制等功能。
  • 需要知道的是alertmanager本身是不做告警规则计算的,简单来说就是,alertmanager不去计算当前的监控取值是否达到我设定的阈值,上面已经提过该部分规则计算是prometheus server来计算的,
  • alertmanager监听prometheus
    server发来的消息,然后在结合自己的配置,比如等待周期,重复发送告警时间,路由匹配等配置项,然后把接收到的消息发送到指定的接收者。同时他还支持多种告警接收方式,常见的如邮件、企业微信、钉钉等。
  1. Pushgateway
    组件介绍,它是prometheus的一个中间网管组件,类似于zabbix的zabbix-proxy。它主要解决的问题是一些不支持pull方式获取数据的场景,比如:自定义shell脚本来监控服务的健康状态,这个就没办法直接让prometheus来拉数据,这时就可以借助pushgateway,它是支持推送数据的,我们可以把对应的数据按照prometheus的格式推送到pushgateway,然后配置prometheus
    server拉取pushgateway即可。
  2. 数据展示组件介绍
    上图右下角的几个组件,grafana、prometheus-ui是用来图形化展示数据的组件,其中prometheus-ui是prometheus项目原生的ui界面,但是在数据展示方面不太好用,因此推荐grafana来展示你的数据,grafana支持prometheus的PromQL语法,能够和prometheus数据库交互,加上grafana强大的ui功能,我们可以很轻松的获取到很多好看的界面,同时也有很多做好的模版可以使用。
  3. 服务发现组件介绍
    对一个监控系统来说,自动发现肯定是一个最基础的功能,试想如果没有自动发现,添加10000台主机到监控系统该是中什么体验?还好,prometheus是有该组件的,而且还很多,支持多种自动发现机制,比如基于文件、DNS、consul、zookeeper、etcd、kuberbetes等服务自动发现的方式,这些服务发现方式后面都会写到。
  4. exporter 简单说是采集端,通过http服务的形式保留一个 url 地址,prometheus server 通过访问该 exporter
    提供的endpoint端点url,即可获取到需要采集的监控数据。该终端有mysql-exporter,linux-exporter,redis-exporter。

2.2物理机安装及演示

  1. node_exporter 安装
# 可以去官网下载最新版:https://prometheus.io/download/
tar -zxvf node_exporter-0.16.0.linux-amd64.tar.gz
# 后台运行node_exporter
./node_exporter &
  1. 在浏览器输入监控端ip及端口进行访问,进入页面如下
    http://182.43.165.162:9100/metrics

  2. prometheus 服务端安装

# 可以去官网下载最新版:https://prometheus.io/download/  解压
tar -zxf prometheus-2.3.2.linux-amd64.tar.gz## 启动
./prometheus --config.file=./prometheus.yml &## 控制页面访问
http://182.43.165.162:9090/targets
  1. 演示界面
  2. 演示sql 查询
- rate(jvm_buffer_memory_used_bytes {instance="182.43.165.162:18087"}[5m])[10m:1m]rate(jvm_buffer_memory_used_bytes {job="my-cpn-test"}[5m])[10m:1m]       

./prometheus.yml配置

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
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: ["182.43.165.162:9090"]- job_name: 'my-server'  #新增的配置static_configs:- targets: ['182.43.165.162:9100']- job_name: 'pushgateway'  # 配置pushgatewaystatic_configs:- targets: ['182.43.165.162:9091']# labels:#  instance:pushgateway- job_name: 'my-cpn-test'  # 配置metrics_path: "/bmp-cpn-service/actuator/prometheus"static_configs:- targets: ['gateway.test.vevor.net']- job_name: 'my-test-local'  #metrics_path: "/actuator/prometheus"static_configs:- targets: ['182.43.165.162:18087'] 

sql简单查询

jvm_memory_used_bytes{application="learn_app_test",area="heap",id="PS Old Gen",}

2.3spring-boot应用监控安装

        <!-- spring boot health健康检查包 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-actuator</artifactId></dependency><!-- prometheus监控 --><dependency><groupId>io.micrometer</groupId><artifactId>micrometer-registry-prometheus</artifactId><version>1.3.16</version></dependency>
  1. 开启actuator配置
management:endpoints:web: #开启web监控端点exposure:include: '*'  #自定义端点的启用和关闭enabled-by-default: trueserver:port: 18087   #自定义端口号。正常是首位为1后面加上服务端口号,具体和运维商量metrics:tags: #对外暴露tagapplication: ${spring.application.name}
  1. 访问地址
    http://182.43.165.162:18087/actuator/prometheus

  2. 在prometheus.yml配置

  3. 指标学习

类型描述例如
Countercounter 是一个累积计数的指标,仅支持增加或者重置为0(只增不减 )。例如:可以用来统计服务请求的数量,任务完成数量,或者出错的数量。
Gaugegauge是一个纯数值型的能够经常进行增加或者减少的指标。例如用来做温度的计数,内存的使用,同样也可以用来使用计算服务请求数量。
Histogramhistogram 在一段时间内进行采样,并能够对指定区间以及总数进行统计.
Summarysummary与histogram类似,用于表示一段时间内的采样数据,但它直接存储了分位数,而不是通过区间来计算。

在这里插入图片描述

1.  实际演示机器的几个指标
1. node_load1
2. node_memory_memFree_bytes
3. node_filesystem_free_bytes 

2.4 UI-Grafana

在这里插入图片描述
在这里插入图片描述

  • 演示

2.5 扩展支持

  1. Pushgateway 是一种中介服务,它允许您从无法抓取的作业中推送指标。有关详细信息。【演示】
  2. 第三方mysql的支持,mysqld_exporter服务配置数据库的账号来采集mysql自带各种指标。
  3. redis监控redis_exporter
  4. Third-party exporters
    https://prometheus.io/docs/instrumenting/exporters/

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1381905.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

系统与应用监控的思路和方法

0、前言 在实际的性能分析中&#xff0c;一个很常见的现象是&#xff0c;明明发生了性能瓶颈&#xff0c;但当你登录到服务器中想要排查的时候&#xff0c;却发现瓶颈已经消失了。或者说&#xff0c;性能问题总是时不时地发生&#xff0c;但却很难找出发生规律&#xff0c;也很…

应用程序服务器监控

什么是应用程序服务器监视 为了确保业务应用程序的最佳性能&#xff0c;必须使用应用程序服务器监视工具&#xff0c;以深入了解应用程序的运行状况和正常运行时间。应用程序服务器监视可帮助您识别性能不足的服务器组件以及性能问题的根本原因&#xff0c;修复它们并确保应用…

应用监控

简介 Spring Boot提供了运行时的应用监控和管理的功能。我们可以通过http、JMX、SSH协议来进行操作。审计、健康及指标信息将会自动得到。 Endpoints 列举一些主要的endpoints &#xff1a; 敏感信息访问限制 根据上面表格&#xff0c;鉴权为false的&#xff0c;表示不敏…

应用监控以及告警实现

前言 一个Java应用 可以不优秀&#xff0c;但是一定不能没有监控方案。否则极大影响排查线上问题的效 以及系统故障的及时告警 。试想 核心应用挂了一个 但是没有配置告警 理想情况几个小时 被自己人发现了 但是万一自己人也没看到或者没关注 那难道让服务一直挂下去么 &#…

十四、应用监控(1)

本章概要 监控端点配置&#xff08;开启端点&#xff0c;暴露端点&#xff0c;端点保护&#xff0c;端点响应缓存&#xff0c;路径映射&#xff0c;CORS支持&#xff0c;健康信息&#xff0c;应用信息&#xff09; 当一个Spring Boot 项目运行时&#xff0c;开发者需要对 Spr…

一篇文章讲透线上应用监控

“线上服务停了&#xff0c;要重启一下”&#xff1f;久经职场做研发的程序员&#xff0c;视线会逐渐转移到线上应用的运行状态。设想一下&#xff0c;如果你在半夜两点正在酣眠美梦时&#xff0c;微信群里突然炸开锅&#xff1a;“服务停了&#xff0c;先重启。。。”&#xf…

如何设置时间倒计时

开发工具与关键技术&#xff1a;Visual Studio 2015、SQL Server 2014 作者&#xff1a;黄世豪 撰写时间&#xff1a;2019年01月31号相信很多小伙伴在做项目时会遇到过要用到时间倒计时的效果&#xff0c;下面我们来实现一下如何将自己设置的时间来让其进行时间倒计。 jsp调用…

js倒计时读秒

1.需求及分析 最近,接到一个接收手机验证码的功能&#xff0c;大体就是设置一个定时器&#xff0c;在每次执行的时候将秒数&#xff0c;逐个减去1&#xff0c;小于0的时候&#xff0c;清除定时器&#xff0c;然后完善一下功能&#xff0c;例如&#xff0c;加上一下状态的变化&…

C#实现倒计时的功能

软件界面&#xff1a; 软代码&#xff1a; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;na…

android studio高考倒计时,高考倒计时app排行榜

编辑推荐 时间管理倒计时 v1.3.0 大小&#xff1a;13.7MB 更新时间&#xff1a;21-04-14 下载 时间管理倒计时&#xff0c;一款专为小伙伴打造的手机时间规划工具&#xff0c;为小伙伴提供更强大的规划服务&#xff0c;在这里小伙伴可以自由规划自己的时间&#xff0c;为小伙伴…

VS2015+C#实现倒计时小程序

最近疫情严重&#xff0c;在家呆着也是呆着&#xff0c;于是就想学一下上位机的编写&#xff0c;权衡利弊之后&#xff0c;选择了C#语言&#xff0c;原因是据说它写出来的上位机比较小&#xff0c;不占内存。开发环境就用VS吧&#xff0c;用的人挺多的。好了&#xff0c;进入正…

C#之一个倒计时小应用程序的实现

只能开始计时&#xff0c;不能停止计时 代码&#xff1a; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.W…

易语言编写倒计时小程序

本人为编程爱好者&#xff0c;非专业人员。 最近工作中需要用到编写倒计时软件&#xff0c;故有此篇。 软件功能&#xff1a; 1.时间倒计时 2.倒计时会有一个透明放大的标签显示时间 3.各窗口可隐藏 以下为软件运行界面&#xff1a; 代码&#xff1a; .版本 2 .支持库 she…

DIY蓝牙小音响

PRE 我个人是比较喜欢手工做一些小东西&#xff0c;但是由于知识限制&#xff0c;我无法去制作一些复杂的东西&#xff0c;如果是一些简单的小玩具&#xff0c;如果我有能力做&#xff0c;我还是很乐意去做的。前段时间正好在看音响&#xff0c;我最后入手了一个便宜的EDIFIER…

树莓派系列二(语音识别)

树莓派的基本概念和安装系统在系列文章一中介绍了.这篇准备介绍一下语音识别. 一直想研究一下语音识别,用来做家庭物联网的控制入口,未来也许就是这样,讯飞的叮咚音响可以连接京东的物联平台,苹果的homekit平台,华为的平台暂时落后的有点多... 国内语音识别领域,我个人比较欣…

毕业设计 基于单片机的智能音响设计与实现 -物联网 嵌入式 stm32

文章目录 0 前言1 简介2 主要器件3 实现效果4 设计原理4.1 PAJ7620U2模块4.2 HC-05蓝牙模块4.3 JQ8900语音模块 5 部分核心代码6 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到…

两台电脑共享一个音响方法

两台电脑共享一个音响方法 由于某种原因&#xff0c;需要两个电脑使用同一个扬声器&#xff0c;现分享一种简单的方案 原理&#xff1a;通过主机的音频输入功能&#xff0c;将另一台电脑的音频接收过来并播放。 连线如下&#xff1a; PC2作为主设备&#xff0c;正常连接音响…

Spring IOC DI - 整合MyBatis

Spring IOC目录 主要内容Spring 框架介绍Spring 框架的优势(对比以前项目的缺点)Spring 框架引入历史发展框架学习三要素Spring 模块介绍 Spring IoC/DI - 引入IoC/DI 概念辨析使用IoC/DI的好处IoC/DI具体应用场景 Spring IoC/DI - 代码实现环境准备Spring 框架环境搭建创建Mav…

Spring框架——IOC、DI

本篇博客主要介绍Java中的IOC和DI&#xff0c;以及在String框架中的应用。首先&#xff0c;我们将对IOC和DI进行概念介绍&#xff0c;然后讲解它们的关系及在String框架中的应用&#xff0c;最后通过一个实例来展示它们的具体用法。 IOC和DI的概念介绍 IOC&#xff08;Invers…