没啥别没钱,有啥别有病

我们人 体检,目的就是希望身体健康 会不会检测出对身体不好的疾病,如果有给予治疗。但是往往我们的一些突发疾病是最致命的,平时体检呢也可能会检测不出来。

机器也是如此,所以呢机器就需要一个 能够实时监控自身的仪器 – Prometheus

为什么要监控?
  • 对系统不间断实时监控
  • 实时反馈系统当前状态
  • 保证业务持续性运行
监控什么?

大概是这些的一个维度

硬件系统

温度,硬件故障

系统监控

CPU,内存,磁盘,网卡流量,TCP状态,进程数

应用监控

Nginx,Tomcat,PHP,MySQL,Redis 等

日志监控

系统日志,服务日志,访问日志,错误日志

安全监控

WAF,敏感文件监控

API监控

可用性,接口请求,响应时间

业务监控

例如电商网站,每分钟产生多少订单,注册多少用户,多少活跃用户,推广活动效果

流量分析

根据流量获取用户相关信息,例如用户地理位置,某页面访问状况,页面停留时间等


Prometheus?

Prometheus由Go语言编写而成,采用Pull方式获取监控信息,并提供了多维度的数据模型和灵活的查询接口。
Prometheus不仅可以通过静态文件配置监控对象,还支持自动发现机制,能通过Kubernetes、Consl、DNS等多种方式动态获取监控对象。
在数据采集方面,借助Go语音的高并发特性,单机Prometheus可以采取数百个节点的监控数据;在数据存储方面,随着本地时序数据库的不断优化,单机Prometheus每秒可以采集一千万个指标,如果需要存储大量的历史监控数据,则还支持远程存储。

  • 历史:

Prometheus(普罗米修斯)是一个最初在SoundCloud上构建的系统监控。自2012年成为社区开源项目,拥有非常活跃的开发人员和用户社区。为强调开源及独立维护,Prometheus于 2016年加入云原生云计算基金会(CNCF),成为继 Kubernetes之后的第二个托管项目。

  • 介绍:

我们知道 zabbix在监控界占有不可撼动的地位,功能强大。但是对容器监控显得力不从心。为解决监控容器的问题,引入了prometheus技术。 prometheus号称是下一代监控。接下来的文章打算围绕prometheus做一个系列的介绍,顺便帮自己理清知识点。

prometheus是由谷歌研发的一款开源的监控软件,目前已经被云计算本地基金会托管,是继k8s托管的第二个项目。

Prometheus 特点
  • 多维数据模型:由度量名称和键值对标识的时间序列数据
  • PromSQL:一种灵活的查询语言,可以利用多维数据完成复杂的查询
  • 不依赖分布式存储,单个服务器节点可直接工作
  • 基于 HTTP的 pull方式采集时间序列数据
  • 推送时间序列数据通过 PushGateway组件支持
  • 通过服务发现或静态配置发现目标
  • 多种图形模式及仪表盘支持(grafana)


经典架构图

java对接普罗米修斯 普罗米修斯 监测_java对接普罗米修斯

title

content

Prometheus Server

收集指标和存储时间序列数据,并提供查询接口

ClientLibrary

客户端库

Short-lived jobs

短任务暂存

Push Gateway

短期存储指标数据。主要用于临时性的任务

Jobs / exporters

长任务(如:nginx,mysql),采集已有的第三方服务监控指标暴露 metrics

Service discovery

服务发现,自动的将机器进行监控。它的存在避免了 我们自行拉入监控和写脚本

Alertmanager

出问题的及时警告

Web UI

简单的Web控制台

Prometheus 将所有数据存储为时间序列:具有相同度量名称以及标签属于同一个指标。
每个时间序列都有 度量标准名称和一组键值对(也成为标签)唯一标识。

时间序列格式:

<metric name>{<label name>=<label value>,...}

示例:api_http_requests_total{method="POST",handler="/messages"}

指标类型:

  • Counter:递增的计数器
  • Gauge:可以任意变化的数值
  • Histogram:对一段时间范围内数据进行采样,并对所有数值求和与统计数量
  • Summary:与Histogram类似

普罗米修斯的常用语

  • 实例:
    可以抓取的目标称为实例(Instances)
  • 作业:
    具有相同目标的实例集合称为作业(Job)