摘要

本文通过Prometheus-operator框架一键化安装prometheus、alertmanage、granfana,并配置企业微信api以及告警推送,搭建 prometheus 的前提环境是已有 k8s 环境并可用。

Prometheus Operator是什么

Prometheus Operator是运行在Kubernetes之上的监控和告警工具。部署时不用创建和修改prometheus的配置文件,所有的操作通过创建prometheus自己的资源对象来实现。对于监控配置的修改可以做到实时生效。

Prometheus Operator的自定义资源(CustomResourceDefinitions CRD)

  • Prometheus: 定义Prometheus监控系统的部署。
  • ServiceMonitor:监控一组service。该service需要暴露监控数据,供prometheus收集。
  • PodMonitor:监控一组pod。
  • PrometheusRule:Prometheus的规则文件。包含告警规则。
  • AlertManager:定义告警管理器的部署。

下载yaml配置文件

mkdir -p /home/prometheus
cd /home/prometheus
wget https://github.com/prometheus-operator/kube-prometheus/archive/refs/tags/v0.8.0.tar.gz
tar xf v0.8.0.tar.gz

prometheus

1. 修改配置

  • 为prometheus配置pvc
 root@K8s-master:~/test/prometheus# vim prometheus-prometheus.yaml
...serviceMonitorSelector: {}version: 2.26.0storage:volumeClaimTemplate:spec:storageClassName: managed-nfs-storage   #注意修改为对应的scresources:requests:storage: 5Gi    #适当扩大
  • 配置grafana持久化存储
 root@K8s-master:~/test/prometheus# vim grafana-deployment.yaml
...- name: grafana-storagepersistentVolumeClaim:claimName: grafana-data     # storyclass 注意替换
...
  • 添加grafana的pvc
root@K8s-master:~/test/prometheus# vim grafana-pvc.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:name: grafana-datanamespace: monitoring
spec:accessModes:- ReadWriteManyresources:requests:storage: 5Gi    # 扩大容量storageClassName: aws-gps   # 对应sc
  • 配置prometheus的svc为外部可访问
root@K8s-master:~/test/prometheus# vim prometheus-service.yaml
...
spec:type: LoadBalancerexternalIPs:- 0.0.0.0     #prometheus访问的IP地址自行指定ports:- name: webport: 9090targetPort: webnodePort: 9090selector:app: prometheusapp.kubernetes.io/component: prometheusapp.kubernetes.io/name: prometheusapp.kubernetes.io/part-of: kube-prometheusprometheus: k8ssessionAffinity: None
  • 配置grafana的svc为外部可访问
root@K8s-master:~/test/prometheus# vim grafana-service.yaml
...
spec:type: LoadBalancerexternalIPs:- 0.0.0.0       # 外网访问地址ports:- name: httpport: 3000targetPort: httpnodePort: 3000selector:app.kubernetes.io/component: grafanaapp.kubernetes.io/name: grafanaapp.kubernetes.io/part-of: kube-prometheu

2. 一键化部署:

  • 进入setup目录,并执行 kubectl apply -f .
  • 回到setup的上级目录下,执行 kubectl apply -f .

至此prometheus、granfana、alertmanagey已经完成安装并可访问,接下来进行服务自动发现配置

3. 服务发现

  • 创建prometheus-additional.yaml
 - job_name: 'kubernetes-service-endpoints'kubernetes_sd_configs:- role: endpointsrelabel_configs:- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]action: keepregex: true- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]action: replacetarget_label: __scheme__regex: (https?)- source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]action: replacetarget_label: __metrics_path__regex: (.+)- source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]action: replacetarget_label: __address__regex: ([^:]+)(?::\d+)?;(\d+)replacement: $1:$2- action: labelmapregex: __meta_kubernetes_service_label_(.+)- source_labels: [__meta_kubernetes_namespace]action: replacetarget_label: kubernetes_namespace- source_labels: [__meta_kubernetes_service_name]action: replacetarget_label: kubernetes_name
  • 创建secret对象
kubectl create secret generic additional-configs --from-file=prometheus-additional.yaml -n monitoring
  • 修改 prometheus-prometheus.yaml 添加两行
name: additional-configskey: prometheus-additional.yaml
添加之后:
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:labels:prometheus: k8sname: k8snamespace: monitoring
spec:alerting:alertmanagers:- name: alertmanager-mainnamespace: monitoringport: webbaseImage: quay.io/prometheus/prometheusnodeSelector:beta.kubernetes.io/os: linuxreplicas: 2secrets:- etcd-certsresources:requests:memory: 400MiruleSelector:matchLabels:prometheus: k8srole: alert-rulessecurityContext:fsGroup: 2000runAsNonRoot: truerunAsUser: 1000additionalScrapeConfigs:name: additional-configskey: prometheus-additional.yamlserviceAccountName: prometheus-k8sserviceMonitorNamespaceSelector: {}serviceMonitorSelector: {}version: v2.5.0
  • 执行 kubectl apply -f prometheus-prometheus.yaml
  • 修改 prometheus-clusterRole.yaml 文件,添加权限
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:name: prometheus-k8s
rules:- apiGroups:- ""resources:- nodes- services- endpoints- pods- nodes/proxyverbs:- get- list- watch- apiGroups:- ""resources:- configmaps- nodes/metricsverbs:- get- nonResourceURLs:- /metricsverbs:- get
  • 执行 kubectl apply -f prometheus-clusterRole.yaml
    以上配置完成服务自动发现,如需添加 target ,只需在相关service添加:
annotations:prometheus.io/scrape: "true"

告警阈值 rule_file.yaml 模板

直接复制以下模板,修改一些关键字即可使用

apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:labels:app.kubernetes.io/component: alert-routerapp.kubernetes.io/name: alertmanagerapp.kubernetes.io/part-of: kube-prometheusapp.kubernetes.io/version: 0.21.0prometheus: k8srole: alert-rulesname: <规则名称>namespace: monitorin
spec:groups:- name: <组名>rules:- alert: <监控的项目名称>expr: <promql语句>  # 例如 total_error > 0for: <第一次匹配到规则后的持续时间,到达持续时间之后又匹配到规则则触发告警>  # 例如 5mlabels:severity: pageannotations:summary: <主题>description: <描述>

alertmanage 集成企业微信配置

配置 alertmanager-secret.yaml 文件

apiVersion: v1
kind: Secret
metadata:labels:alertmanager: mainapp.kubernetes.io/component: alert-routerapp.kubernetes.io/name: alertmanagerapp.kubernetes.io/part-of: kube-prometheusapp.kubernetes.io/version: 0.21.0name: alertmanager-mainnamespace: monitoring
stringData:alertmanager.yaml: |-"global":"resolve_timeout": "5m""wechat_api_url": "https://qyapi.weixin.qq.com/cgi-bin/"    #直接使用"wechat_api_secret": ""   #凭证"wechat_api_corp_id": ""  #企业id"receivers":- "name": "wechat""wechat_configs":- "send_resolved": true"to_party": ""    #接收消息的群id"agent_id": """corp_id": """route":"group_by": ["alertname"]"group_interval": "30m""repeat_interval": "30m""group_wait": "3s""receiver": "wechat""repeat_interval": "1m"type: Opaque

官方地址

Kube Prometheus项目地址
https://github.com/coreos/kube-prometheus

项目的Helm安装包地址
https://github.com/helm/charts/blob/master/stable/prometheus-operator

Prometheus官网地址
https://prometheus.io/

Prometheus Operator项目地址
https://github.com/coreos/prometheus-operator/

k8s部署Kube Prometheus(Prometheus Operator)相关推荐

  1. k8s部署prometheus + grafana

    k8s以Deployment方式部署prometheus + grafana: 主机说明: 系统 ip 角色 cpu 内存 hostname CentOS 7.8 192.168.30.128 mas ...

  2. K8S 部署Prometheus

    1.配置文件ConfigMap 1)因为Prometheus的9090端口也是metrics 指标接口,所以自然它可以抓取并监控其自身的运行状况,下面就用收集自身的数据为例进行配置 2)为了能够方便管 ...

  3. 进阶之路:从零到一在k8s上部署高可用prometheus —— thanos receive、thanos query

    目录 导航 前言 相关yaml文件 thanos receive 配置相关 thanos-objectstorage.yaml thanos-receiver-hashring.yaml 服务相关 t ...

  4. k8s部署Prometheus+Grafana

    1.在master可以进行安装部署 安装git,并下载相关yaml文件 git clone https://github.com/redhatxl/k8s-prometheus-grafana.git ...

  5. K8S部署蓝鲸开源bk-cmdb v3.10.17

    文章目录 1 组件安装(Linux) 1.1 Go 1.2 Nodejs 2 代码编译打包 2.1 代码编译 3 K8s部署cmdb 3.1 Redis 3.2 Zookeeper 3.3 Mongo ...

  6. 【Flink】flink on k8s 部署方案

    1. HDFS部署 (k8s) hdfs的作用是用户保存flink的检查点与保持点 但是大数据集群目前还是建议单独使用CDH或者HDP部署 目前文中的这种hdfs on k8s方式做高可用不太方便 1 ...

  7. 从运维角度看微服务 k8s部署微服务【偏理论】【AL】

    从运维角度看微服务 & 部署微服务[偏理论] 1.微服务的特点 服务组件化: 每个服务独立开发.部署,有效避免一个服务的修改引起整个系统重新部署. 技术栈灵活: 约定通信方式,使得服务本身功能 ...

  8. K8S——关于K8S控制台的yaml文件编写(基于上一章多节点K8S部署)

    K8S--关于K8S控制台的yaml文件编写(基于上一章多节点K8S部署) 一.yaml文件编写流程 二.证书自签 一.yaml文件编写流程 rbac.yaml---->secret.yaml- ...

  9. 记一次阿里云k8s部署-测试存储

    记一次阿里云k8s部署 阿里云资源准备 服务器 ip 角色 资源 192.168.1.160 master1 2核4G 192.168.1.161 master2 2核4G 192.168.1.162 ...

最新文章

  1. Java类加载器详解
  2. 对于后端来说,一个项目究竟应该怎么做
  3. oracle数据库源数据路径,oracle中用什么命令查找数据文件所在路径呢?
  4. U-Boot启动过程--详细版的完全分析
  5. 别眨眼!AI 通过自学秒解魔方,比人类纪录快两倍
  6. python 横坐标旋转,python 横坐标旋转
  7. Android官方开发文档Training系列课程中文版:动画视图之创建自定义转场动画
  8. 2 WM配置-企业结构-分配-给工厂和库存地点分配仓库号
  9. 南京农业大学计算机组成原理,2017年南京农业大学信息科学技术学院853计算机专业基础综合之计算机组成原理考研强化模拟题...
  10. [转载] 跟着吴恩达学机器学习(Machine Learning) on Coursera 第一天
  11. python3小游戏源代码_Python入门塔防小游戏,开发步骤和源码,带你轻松学python...
  12. python+selenium自动化测试环境搭建
  13. nmap扫描常用命令
  14. win10怎样取消电脑自动锁屏
  15. 周博通 | 阿里开源首个 DL 框架、4000台服务器真实数据集;明年1月开源Blink
  16. echarts:柱状图去掉网格线
  17. 微信小程序webview内嵌h5页面
  18. java ppt 绘图,PPT图片别再直接插入,这样处理一下,让你的PPT秒变高逼格
  19. 整数的上下取整和浮点数的上下取整 java
  20. Js如何实现收藏功能

热门文章

  1. 本题要求实现一个函数,将非负整数n转换为二进制后输出。
  2. echart中国地图,多地图案例
  3. Octaisobutyl POSS八异丁基笼状聚倍半硅氧烷/CAS号:221326-46-1/分子量:873.59/白色粉末状
  4. [ubuntu20]动态ip在路由器上mac地址绑定ip(虚拟机不能用Mac地址绑定IP)
  5. 程序员的职业素养 读书笔记 - 第6章 练习
  6. 微信小程序之简介(一)
  7. 15、Python的元组类型
  8. 运维小白和网站安全扫描的那点事儿
  9. 基于k8s实现动态弹性伸缩 动态的回滚和滚动更新
  10. [GDKOI2016]不稳定的传送门