基于prometheus监控k8s集群
来源:互联网 发布:教师资格考试软件下载 编辑:程序博客网 时间:2024/05/29 18:01
本文建立在你已经会安装prometheus服务的基础之上,如果你还不会安装,请参考:prometheus多维度监控容器
如果你还没有安装库k8s集群,情参考: 从零开始搭建基于calico的kubenetes
前言
kubernetes显然已成为各大公司亲睐的容器编排工具,各种私有云公有云平台基于它构建,那么,我们怎么监控集群中的所有容器呢?目前有三套方案:
heapster+influxDB
heapster为k8s而生,它从apiserver获取节点信息,每个节点kubelet内含了cAdvisor的功能,暴露出api,heapster通过访问这些端点得到容器监控数据。它支持多种储存方式,大家常用的的就是influxDB。这套方案的缺点是缺乏报警等功能,influxDB的单点问题。因此本方案适合需求是只要实时监控展示。
heapster+hawkular
本方案解决了上面方案的问题,并且大大提升了监控的高可用性和高性能。比较重量级,适合大型集群的监控。目前hawkular开源不久。功能完善。有兴趣可以研究。本文不做详细介绍。
prometheus
本方案下文详细叙述。
k8s支持prometheus
prometheus作为一个时间序列数据收集,处理,存储的服务,能够监控的对象必须直接或间接提供prometheus认可的数据模型,通过http api的形式暴露出来。我们知道cAdvisor支持prometheus,同样,包含了cAdivisor的kubelet也支持prometheus。每个节点都暴露了供prometheus调用的api。
prometheus支持k8s
prometheus获取监控端点的方式有很多,其中就包括k8s,prometheu会通过调用master的apiserver获取到节点信息,然后去调取每个节点的数据。
配置方式
以下为一个简单的配置例子
global: scrape_interval: 20s scrape_timeout: 10s evaluation_interval: 20sscrape_configs:- job_name: 'kubernetes-nodes-cadvisor' kubernetes_sd_configs: - api_server: 'http://<YOUR MASTER IP>:8080' role: node relabel_configs: - action: labelmap regex: __meta_kubernetes_node_label_(.+) - source_labels: [__meta_kubernetes_role] action: replace target_label: kubernetes_role #将默认10250端口改成10255端口 - source_labels: [__address__] regex: '(.*):10250' replacement: '${1}:10255' target_label: __address__#以下是监控每个宿主机,需要安装node-exporter - job_name: 'kubernetes_node' kubernetes_sd_configs: - role: node api_server: 'http://172.16.100.101:8080' relabel_configs: - source_labels: [__address__] regex: '(.*):10250' replacement: '${1}:9100' target_label: __address__
以上为prometheus的配置,如上配置会监控每个节点的容器信息和节点监控信息。需要在k8s中部署node-exporter pod,yaml文件如下:
apiVersion: v1kind: Servicemetadata: annotations: prometheus.io/scrape: 'true' labels: app: node-exporter name: node-exporter name: node-exporterspec: clusterIP: None ports: - name: scrape port: 9100 protocol: TCP selector: app: node-exporter type: ClusterIPapiVersion: extensions/v1beta1kind: DaemonSetmetadata: name: node-exporterspec: template: metadata: labels: app: node-exporter name: node-exporter spec: containers: - image: prom/node-exporter name: node-exporter ports: - containerPort: 9100 hostPort: 9100 name: scrape hostNetwork: true hostPID: true
node-exporter启动成功后,启动prometheus即可监控到集群的宿主机和容器状态信息。监控端点如下图:
进阶
不仅监控容器状态,经过k8s,prometheus可以获取到部署到集群中的所有服务。如果是一个exporter服务,依然可以被prometheus收集。prometheus配置文件中
- role: node
role支持:node
,pod
,service
,endpoints
具体的效果你自己去尝试吧。。
本文来自:一云博客:基于prometheus监控k8s集群
- 基于prometheus监控k8s集群
- 利用prometheus结合grafana监控ceph集群
- 用 Prometheus 来监控你的 Kubernetes 集群
- 基于Kubernetes(k8s)的RabbitMQ 集群
- 基于Prometheus做多维度的容器监控
- k8s监控
- open-falcon实现对k8s集群的监控
- Prometheus 系统监控方案
- Prometheus 监控Rabbitmq
- kubernetes监控--Prometheus
- Prometheus 系统监控方案
- 监控利器之 Prometheus
- prometheus监控方案
- Springboot使用 prometheus监控
- 工作日志——基于k8s搭建spark集群
- Prometheus监控 - Alertmanager报警模块
- Prometheus监控 - 查询表达式篇
- Prometheus监控工具初使用
- js第五章引用类型
- C语言几种常见数据类型的范围
- std::string 转 byte[]
- Linux 档案属性与目录配置
- "xxx"framework not found "xxx"
- 基于prometheus监控k8s集群
- jquery 取得table中文本框值 each方法取值
- 自定义ViewGroup之Topbar----布局代码的缩减,实现app风格的高度一致
- 数据结构与算法学习-堆排序
- 图论
- 封装
- Hibernate使用入门 及遇到的错误汇总
- SparkSQL编程指导
- 仿京东商品搜索选项卡弹窗