《OpenShift 4.x HOL教程汇总》
说明:本文已经在OpenShift 4.8环境中验证

文章目录

  • 配置Prometheus环境
  • 部署被监控应用
  • 创建收集指标的角色,并为用户赋予该角色
  • 设置应用监控指标
  • 设置告警规则
  • 赋予任意指定用户查看监控指标
  • 查看Prometheus监控到的应用定制指标

配置Prometheus环境

  1. 创建内容如下的config.yaml文件,它将在openshift-monitoring项目中创建一个ConfigMap对象,打开“enableUserWorkload”功能。
apiVersion: v1
kind: ConfigMap
metadata:name: cluster-monitoring-confignamespace: openshift-monitoring
data:config.yaml: |enableUserWorkload: true
  1. 执行命令创建ConfigMap对象。
$ oc apply -f config.yaml
  1. 查看openshift-user-workload-monitoring项目中增加的Pod,这3个Pod就是OpenShift用来对项目级的应用进行监控的Prometheus环境。
$ oc get pod -n openshift-user-workload-monitoring
NAME                                  READY   STATUS    RESTARTS   AGE
prometheus-operator-f787c4fd7-54wmd   2/2     Running   0          11m
prometheus-user-workload-0            4/4     Running   1          11m
prometheus-user-workload-1            4/4     Running   1          11m
thanos-ruler-user-workload-0          3/3     Running   0          11m
thanos-ruler-user-workload-1          3/3     Running   0          11m

部署被监控应用

  1. 创建内容如下的prometheus-example-app.yaml文件,它会在名为monitored-app的项目中创建被监控应用的资源。其中应用级定制的是名为version的监控指标。
apiVersion: v1
kind: Namespace
metadata:name: monitored-app
---
apiVersion: apps/v1
kind: Deployment
metadata:labels:app: prometheus-example-appname: prometheus-example-appnamespace: monitored-app
spec:replicas: 1selector:matchLabels:app: prometheus-example-apptemplate:metadata:labels:app: prometheus-example-appspec:containers:- image: quay.io/brancz/prometheus-example-app:v0.2.0imagePullPolicy: IfNotPresentname: prometheus-example-app
---
apiVersion: v1
kind: Service
metadata:labels:app: prometheus-example-appname: prometheus-example-appnamespace: monitored-app
spec:ports:- port: 8080protocol: TCPtargetPort: 8080name: webselector:app: prometheus-example-apptype: ClusterIP
  1. 执行命令创建应用资源,然后确认应用Pod运行情况。
$ oc apply -f prometheus-example-app.yaml
$ oc get pod -n monitored-app
NAME                                      READY     STATUS    RESTARTS   AGE
prometheus-example-app-7857545cb7-sbgwq   1/1       Running   0          81m
  1. 创建Route,然后查看应用的监控指标,确认只有“version”一个指标。
$ oc expose svc/prometheus-example-app -n monitored-app
$ curl http://$(oc get route prometheus-example-app -n monitored-app | awk 'NR==2 {print $2}')/metrics
# HELP version Version information about this binary
# TYPE version gauge
version{version="v0.1.0"} 1

创建收集指标的角色,并为用户赋予该角色

  1. 创建内容如下的custom-metrics-role.yaml文件。
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: monitor-crd-edit
rules:
- apiGroups: ["monitoring.coreos.com"]resources: ["prometheusrules", "servicemonitors", "podmonitors"]verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
  1. 创建这个ClusterRole。
$ oc apply -f custom-metrics-role.yaml
  1. 进入OpenShift 控制台的“管理员”视图,进入“用户管理” → “角色绑定”菜单。在确认当前是“所有项目”后点击“创建绑定”按钮。
  2. 在“创建 RoleBinding”页面中先将“绑定类型”设为“命名空间角色绑定(RoleBinding)”。然后为RoleBinding提供“名称”(例如my-role-binding-monitor);再为“命名空间”选择刚刚部署应用的“monitored-app”项目。随后为“角色名称”选择“monitor-crd-edit”;为“主题”(Subject)选择“用户”类型,最后为“主题名称”(Subject Name)提供一个已有的OpenShift用户名(这里使用的是集群管理员)。随后点击“创建”按钮创建项目级RoleBinding对象。
  3. 进入OpenShift的“管理员”视图的monitored-app项目,然后切换到“角色绑定”页面。使用“过滤器”选出“Namespace Role Bindings”类型,此时可以看到名为my-role-binding-monitor的RoleBinding对象。

设置应用监控指标

  1. 创建内容如下的example-app-service-monitor.yaml文件。它定义了一个ServiceMonitor对象,其中包括监控应用、监控时间间隔等配置。
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:labels:k8s-app: prometheus-example-monitorname: prometheus-example-monitornamespace: monitored-app
spec:endpoints:- interval: 30sport: webscheme: httpselector:matchLabels:app: prometheus-example-app
  1. 执行命令创建ServiceMonitor对象,然后查看它的状态。
$ oc apply -f example-app-service-monitor.yaml
$ oc get servicemonitor -n monitored-app
NAME                         AGE
prometheus-example-monitor   81m

设置告警规则

  1. 创建内容如下的example-app-alerting-rule.yaml的文件。它创建了一个PrometheusRule对象,该PrometheusRule会在prometheus-example-app应用的version为0的时候发出告警。
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:name: example-alertnamespace: monitored-app
spec:groups:- name: examplerules:- alert: VersionAlertexpr: version{job="prometheus-example-app"} == 0
  1. 执行命令,创建PrometheusRule对象。
$ oc apply -f example-app-alerting-rule.yaml

赋予任意指定用户查看监控指标

  1. 缺省情况下,监控的应用指标数据只能是OpenShift集群管理员身份的用户查看到。执行以下命令,让“ANY_USERNAME”用户能查看到monitored-app项目的资源。
$ oc policy add-role-to-user view <ANY_USERNAME> -n monitored-app
  1. 以上命令也可通过进入OpenShift“开发者”视图的“项目”菜单,进入“monitored-app”项目,在“项目访问”页面里完成。点击“添加访问”链接,然后指定“名称”和“角色”即可。例如下图赋予集群管理员“opentlc-mgr”以“View”角色。

查看Prometheus监控到的应用定制指标

  1. 在OpenShift的“开发者”视图中进入“监控”菜单,然后切换到“指标”栏目。在“选择查询”下拉框中使用“自定义查询”查询应用指标,然后在“表达式”框中输入“version”,最后回车即可。此时就可以在界面中看到应用定制的监控指标“version”的数值。

OpenShift 4 - 用内置的Prometheus监控应用相关推荐

  1. KubeSphere 内置的 Prometheus 通过 remote write 至 Thanos 存更长期数据

    KubeSphere 内置的 Prometheus 通过 remote write 至 Thanos 存长期数据 1.方案介绍 2.场景 3.架构设计 4.实践验证 4.1 环境准备 4.2 实验环境 ...

  2. OpenShift 之 Quarkus(4)用集成的Prometheus监控Quarkus应用

    <OpenShift 4.x HOL教程汇总> 在OpenShift 4.3中不但集成了Prometheus功能,还集成了Prometheus的查询和报警界面.在Administrator ...

  3. 基于SpringBoot监控Java项目,暴漏springboot内置端点

    基于SpringBoot监控Java项目的指标 文章目录 基于SpringBoot监控Java项目的指标 监控java项目有哪些方案 springboot内置端口 prometheus 如何使用 sp ...

  4. 使用开源软件Prometheus监控企业内部应用

    使用开源软件Prometheus监控企业内部资源 1. 写在前面 ​ 在公司行政管理大区内,因为业务体量小,业务变化相对少,之前公司采用的监控技术栈较为落后,只有简单的北塔网络监控,基本没有任何的监控 ...

  5. Prometheus 监控

    Prometheus 企业监控 一.介绍 本文介绍Prometheus 监控及在k8s集群中使用node-exporter.prometheus.grafana对集群进行监控.实现原理类似ELK.EF ...

  6. 【阿里聚安全·安全周刊】共享充电宝安全吗 | 惠普笔记本内置键盘记录器

    [阿里聚安全·安全周刊]共享充电宝安全吗 | 惠普笔记本内置键盘记录器 共享充电宝安全吗? 在共享充电宝面世之前,大家在车站机场看到的都是手机充电站.在今年315大会上,手机充电站被证实具有严重的安全 ...

  7. OpenShift 4 之AMQ Streams(4) - 用Prometheus监控Kafka

    <OpenShift 4.x HOL教程汇总> 文章目录 配置Kafka和测试应用 配置Prometheus和Grafana 配置Kafka和测试应用 首先删除上一个实验使用的Kafka集 ...

  8. Vue.js@2.6.10更新内置错误处机制,Fundebug同步支持相应错误监控

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: Fundebug 的 JavaScript 错误监控插件同步支持 Vue.js 异步错误监控. Vue.js 从诞生至 ...

  9. Druid 配置及内置监控,Web页面查看监控内容 【我改】

    转: Druid 配置及内置监控,Web页面查看监控内容 1.配置Druid的内置监控 首先在Maven项目的pom.xml中引入包 1 2 3 4 5 <dependency>      ...

最新文章

  1. webpack中loader加载器(打包非js模块)
  2. 5月16 JSON的一些知识点及AJAX的应用
  3. 树莓派设置NTP同步
  4. 编辑器source insight,sublime,编码 utf-8和 GB2312
  5. 使用C语言进行面向对象的开发--GObject入门[5]
  6. php字符串转换mysql_在PHP中将字符串转换为MySQL时间戳格式
  7. 10月Web服务器调查:Apache下降 Ngnix攀升
  8. Linux内存page,Linux虚拟内存管理 - Page Table的作用
  9. Linux中文档去掉windows文本的多余的回车符(^M)
  10. Linux系统编程---5(共享存储映射,存储映射I/O,mmap函数,父子进程间通信,匿名映射)
  11. iphone8plus屏幕尺寸_百思买在苹果发布会前列出了一款“iPhone SE Plus”屏幕保护保护膜...
  12. 如何知道电脑服务器操作系统,电脑如何查看服务器操作系统
  13. 二叉排序树的查找、插入
  14. IOS经常使用的性能优化策略
  15. Ansible批量修改root密码
  16. 价值200万的小米LOGO给UI设计师带来了什么?
  17. 【原创】源智工作流-Silverlight流程设计器
  18. 编译调试Apache HTTP Server
  19. 计算机截图工具无法运行,win7运行截图工具提示截图工具未运行解决方法
  20. Java - @OneToMany注解的mappedBy属性有什么作用?

热门文章

  1. java控制台输入汉字_给我一个JAVA控制台输入中文的实例
  2. 间接寻址级别不同_单片机指令系统与寻址方式
  3. python绘制折线图先对数据进行处理_python气象数据分析并绘制折线图-女性时尚流行美容健康娱乐mv-ida网...
  4. java中runnable_Java中Runnable和Thread的区别
  5. 干干净净用java_十四步 干干净净卸载Oracle
  6. 收集灵感必备|文字这样组合排版那才叫设计
  7. 如何做漂亮实用的UI界面?UI/UX设计模板,帮你入手!
  8. fastnest怎么一键排版_FastNEST数控编程组合排版与技巧探讨
  9. docker wsl2启动不了_在window上安装docker的方法
  10. 系统描述符类型,段描述符类型和段描述符表