k8s进阶:monitor

Promethues

众所周知,Prometheus+AlertManager+Grafna是当前最流行的云原生监控方案,关于这个方案的实践在本博客已经有记录,本文主要记录一些漏缺的知识以及在kubernetes上如何部署和接入

数据类型

数据形式: metric: {k-v}

value的数据类型: long类型的整形值

  • Counter: 记录累计值,只增加不减少,比如异常发生次数,请求次数
  • Gauge: 常规数组,可以变大可以变小
  • Histogram: 类似一个直方图,比如按请求的延迟范围进行分组,记录每个区间的个数
  • Summary: 样本排序后,第几个的值是多少

数据采集

节点基础指标

容器指标

kubelet内置一个cAdvisor服务,负责采集容器内部的各种指标(cpu/mem/etc…),同时也会像exporter一样提供一个http服务供prometheus采集

k8s组件

只需要让prometheus定期通过这些api获取数据即可

部署方式

  1. 手动

  2. Helm

  3. Prometheus Operator

    一个源码安装的参考教程: https://www.qikqiak.com/k8s-book/docs/58.Prometheus%20Operator.html

    另外这个网站本身就是一个完整的教程

  4. Helm + Prometheus Operator: 非常优雅

Helm + Prometheus Operator 部署

https://artifacthub.io/packages/helm/arldka/prometheus-operator

以下步骤可能已经过时,没有验证过,仅供参考

1
2
3
4
5
6
7
8
9
10
11
12
# 安装
helm install [RELEASE_NAME] arldka/prometheus-operator
# 查看创建的自定义资源
kubectl get crd | grep xxx
# 删除,默认会放"回收站", --purge表示永久删除
helm delete immoc-prom --purge
# crd需要手动清理
kubectl delete crd $(kubectl get crd | grep xxx | awk '{print $1}')
# 修改过配置后更新配置, 当然也可以delete再install
helm upgrade [RELEASE_NAME] ./prometheus-operator -f values.yaml
# 查看helm部署的东西
helm ls

一般来说都需要把chart包下载到本地,然后通过修改配置,做个性化配置

  • 节点基础指标: 默认已经配置好
  • k8s组件:
    • 需要确定各个服务的监听ip和端口(/etc/systemctl/systemd/etcd.service) (systemctl daemon -reload) (systemctl kube-scheduler restart)
    • 修改chart包内的配置文件,配置对应的配置,一般是values.yaml
    • 证书: /etc/kubernetes/pki/ 导入到对应命名空间的secret,然后再配置使用
  • 容器指标: 配置好kubelet即可
  • rules
    • default: values.yaml –> templates/prometheus/rules/ 本质上也是一个CRD
    • custom: 参考它重新定义新的CRD (自己手动添加的不受helm控制)

k8s进阶:monitor
http://example.com/2023/03/20/k8s-monitor/
作者
Peter Pan
发布于
2023年3月20日
许可协议