没啥别没钱,有啥别有病 |
我们人 体检,目的就是希望身体健康 会不会检测出对身体不好的疾病,如果有给予治疗。但是往往我们的一些突发疾病是最致命的,平时体检呢也可能会检测不出来。
机器也是如此,所以呢机器就需要一个 能够实时监控自身的仪器 – 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)
经典架构图
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)