K8s-监控篇之Prometheus

1. 什么是Prometheus

Pronetheus官网
官方中文文档
开源的系统监控和报警框架、其本上也是一个时序列数据库(TSDB),它的设计灵感来源于Goole的Borgmon,就像k8s是基于Borg系统开源的。
Prometherus与2016年加入云原生计算基金会(CNCF),成为了受欢迎程度仅此于Kubernetes的开源项目。
被称为下一代的监控系统

2. Prometheus特性

  • 支持多种图形和仪表板,与Grafana堪称绝配
  • 应用程序暴露Metrics接口、Prometheus通过HTTP的Pull模型采集数据,同时也可以使用Push
  • 不依赖额外的数据存储、它本身就是一个时间序列的数据库
  • 支持动态发现和静态配置发现目标机器

3. 系统架构

在这里插入图片描述
Prometheus是一个架构,可以选择性的安装,用不上可以不装
如果只要采集数据可以只安装Prometheus server,可以看到,普罗米修斯是基于pull-push即拉取和推送模型
组件解析
Short-lived jobs: 短期作业,瞬时任务的场景比如自定义监控脚本 这种无法通过pull拉取的 需使用push方式、与Pushgateway搭配使用
Pushgateway: 应对push场景的可选组件 ,数据先push到gateway,prometheus server在通过http的方式获取
Jobs/Exporters: 数据采集组件 ,收集目标对象的相关数据,sever通过http方式获取
tsdb: 时序数据库,监控数据最近的是存在内存的,存量的监控数据会持久化到硬盘中。
Alertmanager: 报警管理
PromQL: Prometheus内置的强大数据查询语言
Granfana: 可视化工具

4. Prometheus如何抓取到数据的?

4.1 云原生应用 /metrics

云原生12要素中已经内置了一些策略 暴露了metrics接口

在这里插入图片描述

4.2 非云原生应用使用 Exporter

目前比较常用的Exporter工具如下:

在这里插入图片描述

4.3 机器的指标采集

Node Exporter 就是用来采集 宿主机的监控数据的 采用Daemonset的方式部署、并且监听9100端口
在这里插入图片描述
Prometheus server会定期的pull node export采集的数据
在这里插入图片描述

5. 什么是Servicemonitor?

传统部署prometheus时 会有一个prometheus.yml的配置文件、里面内容较多、不易维护
servicemonitor是一个自定义的资源、创建servicemonitor之后、prometheus的operation会将其解析成配置加载到prometheus中。
servicemonitor 中定义了监控的目标
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Servicemonitor 通过标签匹配 符合的service、service上又有endpoint 就找到了后端业务机器

Servicemonitor

6. 监控流程

在这里插入图片描述

6.1 云原生ETCD的监控

  • 按照上述监控流程配置etcd云原生组件的监控
6.1.1 验证云原生组件metrics接口
  1. 查看etcd的证书
grep -E "key-file|cert-file" /etc/etcd/etcd.config.yml
cert-file: '/etc/kubernetes/pki/etcd/etcd.pem'
key-file: '/etc/kubernetes/pki/etcd/etcd-key.pem'
cert-file: '/etc/kubernetes/pki/etcd/etcd.pem'
key-file: '/etc/kubernetes/pki/etcd/etcd-key.pem'

# 或者查看服务状态 查找配置文件路径
systemctl status etcd
  1. 使用证书测试访问metrics接口(云原生组件自带metrics接口,不指定证书直接curl报错)
[root@k8s-master01 ~]# curl -s --cert /etc/kubernetes/pki/etcd/etcd.pem --key /etc/kubernetes/pki/etcd/etcd-key.pem https://192.168.19.128:2379/metrics -k | tail -3
promhttp_metric_handler_requests_total{
   code="200"} 1
promhttp_metric_handler_requests_total{
   code="500"} 0
promhttp_metric_handler_requests_total{
   code="503"} 0
6.1.2 创建应用SVC

创建应用的service (主要作用:svc有endpoint 用来暴露采集哪些pod)

[root@k8s-master01 etcd_metrics]
  • 15
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值