前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >普罗米修斯

普罗米修斯

作者头像
六个核弹
发布2022-12-23 21:25:43
2.3K0
发布2022-12-23 21:25:43
举报

普罗米修斯介绍

Prometheus(普罗米修斯)是一套开源的监控系统,其基本原理是通过 HTTP 协议周期性抓取被监控组件的状态,不需要任何 SDK 或者其他的集成过程,其架构如图:

Prometheus 主要由以下部分组成:

  • prometheus server: 是 Prometheus 组件中的核心部分,负责实现对监控数据的获取,存储以及查询;
  • exporter: 采集端,通过 http 服务的形式保留一个 url 地址,prometheus server 通过访问该 exporter 提供的 endpoint 端点,即可获取到需要采集的监控数据。
  • AlertManager: 在 prometheus 中,支持基于 PromQL 创建告警规则,如果满足定义的规则,则会产生一条告警信息,进入 AlertManager 进行处理。可以集成邮件,微信或者通过 webhook 自定义报警。
  • Pushgateway: 由于 Prometheus 数据采集采用 pull 方式进行设置的, 内置必须保证 prometheus server 和对应的 exporter 必须通信,当网络情况无法直接满足时,可以使用 pushgateway 来进行中转,可以通过 pushgateway 将内部网络数据主动 push 到 gateway 里面去,而 prometheus 采用 pull方式拉取 pushgateway 中数据

普罗米修斯的数据存储采用的是时间序列数据(TimeSeries Data),它是按照时间顺序记录系统、设备状态变化的数据。

默认情况下 Prometheus 会将采集的数据存储到本机的 /usr/local/prometheus/data 目录,存储数据的大小受限和扩展不便;如果只作为测试自然不需要担心这个问题,如果用于生产的话需要安装配置时序数据库influxdb

普罗米修斯使用初体验

在 kubesphere 的安装中,普罗米修斯是配套安装的,前文介绍过kubesphere的安装教程。这里我直接使用现成的Prometheus系统。有安装需求的小伙伴建议使用k8s+helm进行安装。

KubeSphere 通过 NodePort 访问内置的 Prometheus 服务,服务类型更改为 NodePort,同时修改外部访问端口:

代码语言:javascript
复制
kubectl edit svc -n kubesphere-monitoring-system prometheus-k8s

访问普罗米修斯ip:port

我们可以通过这个操作页面进行一些指令操作,在指令栏输入KEY,它会有联想输入提前弹出你想要的KEY,然后点击执行按钮就能获得对应的监控数据:

metrics:

在普罗米修斯监控中,称采集存储的数据为metrics,在普罗米修斯中它是以 key/value的形式保存的。其主要类型分为以下几种:

  • Gauges: 某个监控指标的瞬时值,如内存使用量,队列的等待任务数等。
  • Counters: 计数器类型,属于累计值,如开机时常等。
  • Histogram:比例型数值,例如请求响应时间占比分布等。

每个key-value 数据还会带上标签进行归类,标签可使用正则表达式进行匹配。

关于普罗米修斯采集到的 key-value 数据 可以访问 http://ip:port/metrics url 进行查看:

# 号开头的部分是对采集数值的一个说明,如:

代码语言:javascript
复制
# HELP go_gc_cycles_automatic_gc_cycles_total Count of completed GC cycles generated by the Go runtime.
# TYPE go_gc_cycles_automatic_gc_cycles_total counter
go_gc_cycles_automatic_gc_cycles_total 77

HELP 是对这个采集数据的注释,TYPE 表示它的metrics类型为 counter。统计数据是 exporter 提供的,想要采集不同指标的数据 比如mysql 或者kafka 就要使用不同 expoerter 去收集,官方提供了不少exporter:

PQL

对于普罗米修斯的数据,我们不仅限于查看,还能进行一些函数运算:

代码语言:javascript
复制
## 查询最近2min
prometheus_http_requests_total{job="prometheus"}[2m]
## 乘法运算
prometheus_http_requests_total{job="prometheus"} offset 1m *1024
## 统计
count(node_cpu_seconds_total)

这些语句称为pql,PQL使用"#"对语法进行注释,其常用内置函数有:

  • abs: 绝对值
  • absent: 判断标签是否存在
  • ceil:取整
  • sum:求和
  • min:最小值
  • count:统计
  • avg:平均值
  • topk:排序

当然我们观察机器的一些数据指标肯定不能通过手写PQL去查看,这样就太累人了。通常我们会结合grafana进行可视化的监控。

grafana 的简介及使用:

grafana 是数据统计和展示工具,它展示数据,但不提供数据。目前Grafana 支持的数据源有:Graphite, InfluxDB, OpenTSDB, Prometheus, Elasticsearch, CloudWatch,Zabbix等。

grafana 相关概念:

  • Data Source: 数据源
  • DashBoard:仪表盘,数据展示的窗口。
  • Row:DashBoard 的基本组成单元,可以理解为数据行
  • Panel:面板,实际上就是row展示信息的方式,支持表格(table),列表(alert list),热图(Heatmap)等多种方式。
  • Query Editor:查询语句编辑器,用于编写PQL

grafana 部署我这里是采用 KubeSphere 的应用模板进行部署的,傻瓜式的安装,这里就不做太多介绍了,安装完成后界面如下:

然后导入prometheus数据源,Configuration → Data Sources → Prometheus → Select:

查看仪表盘:

当然grafana,还支持自定义仪表盘和查询统计语句,这种高定制化的需求需要对pql和 grafana 都有较深的理解。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-11-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 六个核弹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 普罗米修斯介绍
  • 普罗米修斯使用初体验
  • metrics:
  • PQL
  • grafana 的简介及使用:
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档