Prometheus Operator开始
文章目录
- Prometheus Operator
- Operator模式
- Prometheus CRD
- 部署Prometheus Operator
- 1. 下载Prometheus Operator
- 2. images
- 3. 创建被监控应用
- 4. prometheus pod RBAC
- 5. Prometheus 对象
- 6. 观察Target
- 卸载prometheus operator
来自 Prometheus Operator Get Started实验记录
Prometheus Operator
- https://prometheus-operator.dev/docs/prologue/quick-start/
Operator模式
Operator模式是用户声明一个状态,一个控制器循环检测,直到目标达到状态。在kubernetes原生生态里,控制器
只能控制Deployment,Service etc 原生资源对象,而Core OS公司通过扩展kubernetes使得用户可以自定义控制器来控制kubernetes CRD(自定义资源对象)的状态。
Prometheus Operator的能够根据CRD对象自动生成Prometheus的scrape配置。
因此不需要每次修改prometheus.yaml
中的配置,杀死Pod,进行重启使得配置生效。只需要像原来修改deployment.yaml
,重新apply一下,控制器不断循环操作使得配置生效。
Prometheus CRD
通过在原生Service
对象上添加Label,CRD ServiceMonitor
会通过Label选择Service
. Operator会根据 ServiceMonitor
配置生成Prometheus的prometheus.yaml
配置。
CRD ServiceMonitor
对象也会有label,划分不同的监控组,Prometheus
对象通过Label选择ServiceMonitor
对象。
部署Prometheus Operator
1. 下载Prometheus Operator
git clone https://github.com/prometheus-operator/kube-prometheus.git
然后使用预编译好的yaml文件。
Operator使用jsonnet,一种json模板框架来渲染生成yaml文件,生成的文件在manifest文件夹
# Create the namespace and CRDs, and then wait for them to be availble before creating the remaining resources
kubectl create -f manifests/setup
until kubectl get servicemonitors --all-namespaces ; do date; sleep 1; echo ""; done
kubectl create -f manifests/
2. images
部分镜像被墙
- image list
docker pull bitnami/kube-state-metrics:2.3.0
docker pull selina5288/prometheus-adapter:v0.9.1
- tag list
docker tag bitnami/kube-state-metrics:2.3.0 k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.3.0
docker tag selina5288/prometheus-adapter:v0.9.1 k8s.gcr.io/prometheus-adapter/prometheus-adapter:v0.9.1
3. 创建被监控应用
apiVersion: apps/v1
kind: Deployment
metadata:name: example-app
spec:replicas: 3selector:matchLabels:app: example-apptemplate:metadata:labels:app: example-appspec:containers:- name: example-appimage: fabxc/instrumented_appports:- name: webcontainerPort: 8080
---
kind: Service
apiVersion: v1
metadata:name: example-applabels:app: example-app
spec:selector:app: example-appports:- name: webport: 8080
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:name: example-applabels:team: frontend
spec:selector:matchLabels:app: example-appendpoints:- port: web
4. prometheus pod RBAC
为了可以访问到default 命名空间的权限。
apiVersion: v1
kind: ServiceAccount
metadata:name: prometheus
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: prometheus
rules:
- apiGroups: [""]resources:- nodes- nodes/metrics- services- endpoints- podsverbs: ["get", "list", "watch"]
- apiGroups: [""]resources:- configmapsverbs: ["get"]
- apiGroups:- networking.k8s.ioresources:- ingressesverbs: ["get", "list", "watch"]
- nonResourceURLs: ["/metrics"]verbs: ["get"]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: prometheus
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: prometheus
subjects:
- kind: ServiceAccountname: prometheusnamespace: default
5. Prometheus 对象
一个Prometheus
对象通过serviceMonitorSelector
定义包含哪个ServiceMonitors
。
上面的ServiceMonitors
指定了标签team: frontend
,所以在Prometheus
对象中选择这个标签。
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:name: prometheuslabels:prometheus: prometheus
spec:replicas: 2serviceAccountName: prometheusserviceMonitorSelector:matchLabels:team: frontend # 在Prometheus对象中选择 team: frontend 标签alerting:alertmanagers:- namespace: defaultname: alertmanagerport: web
6. 观察Target
为了确定prometheus收集到了example应用的指标,查看prometheus的target列表:
使用grafana观察效果:
# example app每秒CPU分片占比
rate(process_cpu_seconds_total{namespace="default",job="example-app"}[1m])*100
卸载prometheus operator
kubectl delete --ignore-not-found=true -f manifests/ -f manifests/setup
Prometheus Operator开始相关推荐
- 在Kubernetes上使用Prometheus Operator监视应用程序
您可以使Prometheus配置了解您的应用程序在其中运行的Kubernetes环境.在先前的博客文章中 ,我已经描述了如何手动执行该操作. Prometheus Operator是Kubernete ...
- Hands-on Lab (15) - 使用Prometheus Operator监控应用
<OpenShift 4.x HOL教程汇总> 说明:本文已经在OpenShift 4.8环境中验证 文章目录 监控OpenShift集群 监控应用 部署被监控的应用 通过Operator ...
- Prometheus Operator + blackbox_exporter 监控Web页面
背景 目前生产环境使用Zabbix自带的web监控模块对所有子优鸟页面进行监控,由于目前Zabbix服务器为单节点,经常出现取不到web监控数据的情况.现将web监控迁移到Prometheus上. 但 ...
- Kubernetes更优雅的监控工具Prometheus Operator
Kubernetes更优雅的监控工具Prometheus Operator [TOC] 1. Kubernetes Operator 介绍 在 Kubernetes 的支持下,管理和伸缩 Web 应用 ...
- Prometheus Operator 配置PrometheusRule告警规则
PrometheusRule 用于配置 Prometheus 的 Rule 规则文件,包括 recording rules 和 alerting,可以自动被 Prometheus 加载. 配置 Pro ...
- Prometheus Operator 部署
安装 为了使用 Prometheus-Operator,这里我们直接使用 kube-prometheus 这个项目来进行安装(提供了很多的内置规则,可以直接拿来使用),该项目和 Prometheus- ...
- Prometheus Operator概述
在前面,我们单纯手工管理Prometheus还是复杂一些,因为它有很多东西需要我们去维护,特别是当有很多指标的时候需要我们去手工抓取和配置. 前面我们用自定义的方式来对 Kubernetes 集群进行 ...
- k8s部署Kube Prometheus(Prometheus Operator)
摘要 本文通过Prometheus-operator框架一键化安装prometheus.alertmanage.granfana,并配置企业微信api以及告警推送,搭建 prometheus 的前提环 ...
- Prometheus Operator(五) 修改数据存储时间
Prometheus Operator(五) 修改数据存储时间 前面说了prometheus operator持久化的问题,但是还有一个问题很多人都忽略了,那就是prometheus operator ...
- Prometheus Operator 通过additional 添加target
前言 Proms Operator 添加自定义监控可以通过如下两种方式实现,本文是 additional 方式. additional 方式 serviceMonitor方式 官网 安装参考这个专栏里 ...
最新文章
- 在CentOS 6.8上安装Nginx
- C++实现读取指定文件夹下的所有文件
- 混合密度网络(MDN)进行多元回归详解和代码示例
- Webpack中的sourcemap
- Java实现算法导论中Pollard的rho启发式方法
- IT 巡检内容、方法大全
- 基于计算机网络的可持续发展信息共享情况调查
- [视频教程] ubuntu系统下安装最新版PHP7.3.X环境
- 让执行程序引用特定目录下的Dll
- 技术分享 | 基于EOS的Dapp开发
- IQ数据简介:I/Q Data
- Spring Cloud学习(一)
- 使用 bibexcel 把.out 文件转换成 .net 文件
- Python源码学习笔记:Python万物皆对象
- 新浪UC,這些人你咋就不管?
- html 的smap标签,SMap.Label
- nginx-GET /favicon.ico HTTP/1.1
- java综合知识点总结-必背
- Linux隔离网络,linux – 隔离网络上的单个NTP服务器
- 移动端测试=== 两个概念 内存泄漏 和 内存溢出 【转】
热门文章
- matlab 窄带通,MATLAB 窄带随机过程
- kears编写CNN网络,实现对mnist的识别
- 泛函分析 01.03 距离空间-开集和连续映射
- matlab-俄罗斯方块小游戏
- VBA 把电信的电话费用表转换成部门电话费用明细表(图文)
- c语言启动程序句柄无效,win7系统玩英雄联盟突然弹出“句柄无效”窗口的解决方法...
- vue-router
- 暗黑模式?安卓适配一波
- android短视频列表自动播放,手把手教你实现视频列表滚动自动播放-短视频列表滚动播放实战...
- vue 挑战最强大脑 记忆力5分 观察力5分 推理力4分