【prometheus】k8s集群部署prometheus server(文末送书)

news2024/12/28 3:33:36

目录

一、概述

1.1 prometheus简介

1.2 prometheus架构图

1.3测试环境

二、k8s集群中部署prometheus server

2.1创建sa账号和数据目录

2.2安装prometheus

2.2.1创建configmap存储卷存放prometheus配置信息

2.2.2 通过deployment部署prometheus

2.2.3prometheus pod创建service

三、prometheus可视化

3.1 Graph页面

3.2 Status页面


一、概述


1.1 prometheus简介


Prometheus是一个开源的系统监控和报警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF托管的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,同时也支持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群。

文档地址:

prometheus官网文档地址:Overview | Prometheus

prometheus中文文档地址:第1节:Prometheus 简介 | Prometheus 中文文档

1.2 prometheus架构图


从上图可发现,Prometheus整个生态圈组成主要包括prometheus server,Exporter,pushgateway,alertmanager,grafana,Web ui界面,Prometheus server由三个部分组成,Retrieval,Storage,PromQL。

1.3测试环境


IP

主机名

192.168.40.130

k8s-master1

192.168.40.131

k8s-node1

192.168.40.132

k8s-node2

prometheus部署版本:v2.2.1


二、k8s集群中部署prometheus server


2.1创建sa账号和数据目录


创建sa账号在k8s集群的master节点操作

kubectl create serviceaccount monitor -n monitor-sa  

把sa账号monitor通过clusterrolebing绑定到clusterrole上

kubectl create clusterrolebinding monitor-clusterrolebinding -n monitor-sa --clusterrole=cluster-admin  --serviceaccount=monitor-sa:monitor

在k8s集群的任何一个node节点操作创建数据目录,我在node1上操作如下命令:

mkdir /data
chmod 777 /data/

2.2安装prometheus


安装prometheus,以下步骤均在在k8s集群的master1节点操作。

2.2.1创建configmap存储卷存放prometheus配置信息


  • 获取node节点数据
  • 监控apiserver

prometheus-cfg.yaml内容如下:

---
kind: ConfigMap
apiVersion: v1
metadata:
  labels:
    app: prometheus
  name: prometheus-config
  namespace: monitor-sa
data:
  prometheus.yml: |
    global:
      scrape_interval: 15s      # 数据采集时间间隔
      scrape_timeout: 10s       # 数据采集超时时间
      evaluation_interval: 1m
    scrape_configs:             # scrape_configs:配置数据源,称为target,每个target用job_name命名。又分为静态配置和服务发现
    - job_name: 'kubernetes-node'
      kubernetes_sd_configs:    # 使用k8s的服务发现
      - role: node              # 使用node角色,它使用默认的kubelet提供的http端口来发现集群中每个node节点。
      relabel_configs:          # 重新标记
      - source_labels: [__address__] # 配置的原始标签,匹配地址
        regex: '(.*):10250'          # 匹配带有10250端口的ip:10250
        replacement: '${1}:9100'     # 匹配到的ip:10250的ip保留替换成${1}
        target_label: __address__    # 新生成的地址
        action: replace
      - action: labelmap             # 匹配到下面正则表达式的标签会被保留
        regex: __meta_kubernetes_node_label_(.+)
    - job_name: 'kubernetes-node-cadvisor' 
      kubernetes_sd_configs:         # 抓取cAdvisor数据,是获取kubelet上/metrics/cadvisor接口数据来获取容器的资源使用情况
      - role:  node
      scheme: https
      tls_config:
        ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
      bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
      relabel_configs:
      - action: labelmap
        regex: __meta_kubernetes_node_label_(.+)
      - target_label: __address__
        replacement: kubernetes.default.svc:443
      - source_labels: [__meta_kubernetes_node_name]
        regex: (.+)
        target_label: __metrics_path__
        replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor
    - job_name: 'kubernetes-apiserver'   # apiserver 监控
      kubernetes_sd_configs:
      - role: endpoints
      scheme: https
      tls_config:
        ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
      bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
      relabel_configs:
      - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]
        action: keep
        regex: default;kubernetes;https  # 正则匹配到的默认空间下的service名字是kubernetes,协议是https的endpoint类型保留下来
    - job_name: 'kubernetes-service-endpoints'
      kubernetes_sd_configs:
      - role: endpoints
      relabel_configs:
      - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scrape]
        action: keep
        regex: true
      - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_scheme]
        action: replace
        target_label: __scheme__
        regex: (https?)
      - source_labels: [__meta_kubernetes_service_annotation_prometheus_io_path]
        action: replace
        target_label: __metrics_path__
        regex: (.+)
      - source_labels: [__address__, __meta_kubernetes_service_annotation_prometheus_io_port]
        action: replace
        target_label: __address__
        regex: ([^:]+)(?::\d+)?;(\d+)
        replacement: $1:$2
      - action: labelmap
        regex: __meta_kubernetes_service_label_(.+)
      - source_labels: [__meta_kubernetes_namespace]
        action: replace
        target_label: kubernetes_namespace
      - source_labels: [__meta_kubernetes_service_name]
        action: replace
        target_label: kubernetes_name 
kubectl apply -f prometheus-cfg.yaml
kubectl get ConfigMap  -n  monitor-sa

2.2.2 通过deployment部署prometheus


prometheus-deploy.yaml

---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: prometheus-server
  namespace: monitor-sa
  labels:
    app: prometheus
spec:
  replicas: 1
  selector:
    matchLabels:
      app: prometheus
      component: server
    #matchExpressions:
    #- {key: app, operator: In, values: [prometheus]}
    #- {key: component, operator: In, values: [server]}
  template:
    metadata:
      labels:
        app: prometheus
        component: server
      annotations:
        prometheus.io/scrape: 'false'
    spec:
      nodeName: node1
      serviceAccountName: monitor
      containers:
      - name: prometheus
        image: prom/prometheus:v2.2.1
        imagePullPolicy: IfNotPresent
        command:
          - prometheus
          - --config.file=/etc/prometheus/prometheus.yml
          - --storage.tsdb.path=/prometheus
          - --storage.tsdb.retention=720h
          - --web.enable-lifecycle
        ports:
        - containerPort: 9090
          protocol: TCP
        volumeMounts:
        - mountPath: /etc/prometheus/prometheus.yml
          name: prometheus-config
          subPath: prometheus.yml
        - mountPath: /prometheus/
          name: prometheus-storage-volume
      volumes:
        - name: prometheus-config
          configMap:
            name: prometheus-config
            items:
              - key: prometheus.yml
                path: prometheus.yml
                mode: 0644
        - name: prometheus-storage-volume
          hostPath:
           path: /data
           type: Directory

执行部署 

kubectl apply -f prometheus-deploy.yaml
kubectl get pods  -n  monitor-sa

2.2.3prometheus pod创建service


prometheus-svc.yaml

apiVersion: v1
kind: Service
metadata:
  name: prometheus
  namespace: monitor-sa
  labels:
    app: prometheus
spec:
  type: NodePort
  ports:
    - port: 9090
      targetPort: 9090
      protocol: TCP
  selector:
    app: prometheus
    component: server

kubectl apply -f prometheus-svc.yaml
kubectl get svc  -n  monitor-sa


三、prometheus可视化


启动 Prometheus服务后我们可访问Prometheus 自带的Web UI 界面。Web控制页面包含4个子页面:

  • Alerts页面

告警规则和告警信息。可查看告警规则和正在进行的不用状态的告警信息。

  • Graph页面

指标查询和图形化页面展示页面。可查询PromeQL表达式值,以图形或者折线图的方式进行可视化展示。

  • Status页面

状态页面。可查看Prometheus运行和构建信息、命令行标志、系统配置、规则、Targets和Service Discovery等。

  • Help页面

可直接打开官方文档。

测试环境WEB http://192.168.2.139:30546/graph

3.1 Graph页面


  • PromQL表达式输入框

PromQL表达式输入框输入任意的PromQL表达式,点击”Execute“按钮可查询表达式的结果

  • 表格或图形化展示区域

对PromQL表达式的结果按表格或图形化的方式进行展示

控制台展示

图形展示

3.2 Status页面

状态页面。可查看Prometheus运行和构建信息、命令行标志、系统配置、规则、Targets和Service Discovery等。

(1)Runtime & BuildInformation

(2)Command-Line Flags

可查看系统的所有命令行标志参数值。

查看所有的命令标志的帮助命令:进入容器的“./bin"执行"./prometheus -h”。帮助信息中可以看到所有命令行参数及参数描述。

所有命令行标志参数都有一个默认值,我们可以在启动Prometheus服务的时候修改某些标志参数值,如下:

#启动prometheus服务
./bin/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/prometheus

(3)Configuration

可查看所有已生效的配置信息,配置信息来源为如下文件 prometheus.yml中定义。

(4)Rules

可查看系统中已配置的所有规则信息。

(5)Targets

可查看当前prometheus服务监控的各个Target的信息,如:Endpoint、状态、标签、上次pull抓取数据时间、抓取数据耗时、抓取时间时异常信息等。

(6)Service Discovery

可查看Prometheus服务发现的所有job,和每个job的targets信息。


四、Kubernetes书籍介绍


4.1作者介绍


51CTO学堂K8S教学总监,K8S架构师,为移动、电信等进行过多次K8S技术培训,课程包含大量企业真实项目,提供秒级答疑的售后服务和技术支持,是《Kubernetes从入门到DevOps企业应用实战》畅销书作者,K8S开源社区贡献者,Linux基金会做客嘉宾。始终致力于K8S、DevOps等云原生技术的研究,51CTO学堂K8S精培课程主讲老师,课程更新及时,基于最新版本实时更新,拥有多年一线运维实战经验,主导过的k8S项目多达上万个。51CTO十大杰出讲师,国内早批K8S布道者,具有丰富的在线教育经验,发表过多篇K8S等方面的系列文章,累计阅读量现已突破100万。参加过新一代云计算大会,作为主讲嘉宾分享k8s如何助力企业转型、被北京日报、环球网发文专题报道。为移动、联通、咪咕视讯、任子行、电信、天翼互联等大型企业提供多次企业内训和架构设

4.2图书简介


《Kubernetes从入门到DevOps企业应用实战》以实战为主,内容涵盖容器技术、Kubernetes核心资源以及基于Kubernetes的企业级实践。从容器基础知识开始,由浅入深,阐述Kubernetes各个方面的知识,并提供大量实际项目和应用场景。全书共20章,第1~3章讲解容器技术,这是理解Kubernetes的必要基础,主要介绍容器的定义、创建和管理容器、容器网络和存储等方面的知识。第4章讲解如何使用Kubeadm和二进制文件安装高可用Kubernetes集群。第5~12章讲解Kubernetes的核心资源,包括Pod、Deployment、Service、Ingress等资源的定义、使用和管理方法,以及实际应用场景。第13~20章讲解基于Kubernetes的企业实践,介绍如何使用Kubernetes解决实际问题,包括使用Kubernetes进行应用程序的部署、容器云平台的构建、流量治理、监控、自动化扩缩容和灰度发布等项目与案例。

《Kubernetes从入门到DevOps企业应用实战》基于Kubernetes 1.27新版本编写(本书的内容也适合1.20之后的所有版本),从零基础开始,涵盖理论知识、企业级案例,以及自动化运维DevOps体系和一些大厂架构设计思路,适合云原生领域的从业者、Kubernetest初学者、运维和开发人员使用,也可以作为企业内训、培训机构和大中专院校的教学用书。

4.3 自主购买


  小伙伴也可以访问链接进行自主购买哦~

  直达京东购买链接🔗:

《Kubernetes从入门到DevOps企业应用实战》(韩先超)【摘要 书评 试读】- 京东图书


参考链接:

Prometheus监控实战之node_exporter详解_node-exporter-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1525045.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HBase在表操作--显示中文

启动HBase后,Master和RegionServer两个服务器,分别对应进程为HMaster和HRegionServe。(可通过jps查看) 1.进入表操作 hbase shell 2.查看当前库中存在的表 list 3.查看表中数据(注:学习期间可用&#…

Python小白笔记

输入 # 一行输入多个数字,空格隔开,存入列表a中 a list(map(int, input().split())) print(a) >>>21 22 34 54 67 >>>[21, 22, 34, 54, 67] 输出 数据: print(%d%10.3f%(x,y)) y的精度为3,宽度为10 %0 …

【Java】十大排序

目录 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 计数排序 桶排序 基数排序 冒泡排序 冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的序列,依次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历…

oracle 19c打补丁到19.14

oracle 19c打补丁到19.14 oracle 19.3打补丁到19.14 查看oracle的版本: SQL> column product format A30 SQL> column version format A15 SQL> column version_full format A20 SQL> column status format A15 SQL> select * from product_compo…

【对顶队列】【中位数贪心】【前缀和】100227. 拾起 K 个 1 需要的最少行动次数

本文涉及知识点 C算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 对顶队列(栈) 分类讨论 LeetCode100227. 拾起 K 个 1 需要的最少行动次数 给你一个下标从 0 开始的二进制数组 nums,其长度为 n &#x…

【LabVIEW FPGA入门】浮点数类型支持

如今,使用浮点运算来设计嵌入式系统的需求变得越来越普遍。随着 FPGA 因其固有的大规模并行性而在浮点性能方面继续超越微处理器,这种情况正在加剧。线性代数和数字信号处理 (DSP) 等高级算法可以受益于浮点数据类型的高动态范围精度。LabVIEW FPGA 通过…

Vue项目的搭建

Node.js 下载 Node.js — Download (nodejs.org)https://nodejs.org/en/download/ 安装 测试 winR->cmd执行 node -v配置 在安装目录下创建两个子文件夹node_cache和node_global,我的就是 D:\nodejs\node_cache D:\nodejs\node_global 在node_global文件下再创建一个…

视频基础知识(一) 视频编码 | H.26X 系列 | MPEG 系列 | H.265

文章目录 一、视频编码二、 H.26X 系列1、H.2612、H.2633、H.2643.1 I帧3.2 P帧3.3 B帧 4、H.265 三、 MPEG 系列1、MPEG-12、MPEG-23、MPEG-44、MPEG-7 🚀 个人简介:CSDN「博客新星」TOP 10 , C/C 领域新星创作者💟 作 者&…

【HTML】HTML表单8.2(表单标签2)

目录 接上期,大致实现效果 文章简要 注释:这一次介绍的很多效果需要后期与服务器配合,但我们这里先只介绍效果 ①提交按钮 ②获取验证码 ③上传文件 ④还原所有表单内容 ⑤下拉表单 ⑥文字域 接上期,大致实现效果 文章简要 注…

OpenCV-Java 开发简介

返回目录:OpenCV系列文章目录(持续更新中......) 上一篇:如何在“Microsoft Visual Studio”中使用OpenCV编译应用程序 下一篇:如何将OpenCV Java 与Eclipse结合使用 警告: 本教程可能包含过时的信息。 …

伺服电机编码器的分辨率指得是什么?

伺服电机编码器的分辨率是伺服电机编码器的重要参数。 一般来说,具体的伺服电机编码器型号可以找到对应的分辨率值。 伺服电机编码器的分辨率和精度不同,但也有一定的关系。 伺服电机编码器的分辨率是多少? 1、伺服编码器(同步伺…

【JS】html字符转义

需求 将html转为字符串将html字符串转义&#xff0c;比如<div>转为<div> 码 /*** html标签字符转义* param {Stirng} str 要转换的html字符* returns String 返回转义的html字符串*/ const elToStr str > str.replaceAll(<, <).replaceAll(>, >)…

Github: Github actions自动化工作原理与多workflow创建和部署

Github actions 1 &#xff09;概述 Github Actions 是Github官方推出的 CI/CD 解决方案 https://docs.githu.com/en/actions 优点 自动发布流程可减少发布过程中手动操作成本&#xff0c;大幅提升ci/cd效率&#xff0c;快速实现项目发布上线 缺点 存在较高的技术门槛需要利用…

论文阅读:Face Deblurring using Dual Camera Fusion on Mobile Phones

今天介绍一篇发表在 ACM SIGGRAPH 上的文章&#xff0c;是用手机的双摄系统来做人脸去模糊的工作。这也是谷歌计算摄影研究组的工作。 快速运动物体的运动模糊在摄影中是一个一直以来的难题&#xff0c;在手机摄影中也是非常常见的问题&#xff0c;尤其在光照不足&#xff0c;…

【FPGA/IC】什么是模块化设计?

什么是模块化设计 FPGA/IC设计中根据模块层次的不同有两种基本的设计方法&#xff1a; 自下而上方法对设计进行逐次划分的过程是从基本单元出发的&#xff0c;设计树最末枝上的单元是已经设计好的基本单元&#xff0c;或者其他项目开发好的单元或者IP。该方法先对底层的功能块…

8-图像缩放

其实&#xff0c;就是开辟一个zoomwidth&#xff0c;zoomheight的内存&#xff0c;再分别赋值即可。 void CDib::Scale(float xZoom, float yZoom) { //指向原图像指针 LPBYTE p_data GetData(); //指向原像素的指针 LPBYTE lpSrc; //指向缩放图像对应像素的指针 LPBYTE lpDs…

RTC协议与算法基础 - RTP/RTCP

首先&#xff0c;需要说明下&#xff0c;webrtc的核心音视频传输是通过RTP/RTCP协议实现的&#xff0c;源码位于src/modules/rtp_rtcp目录下&#xff1a; 下面让我们对相关的内容基础进行简要分析与说明&#xff1a; 一、TCP与UDP协议 1.1、TCP协议 TCP为了实现数据传输的可…

基于grafana+elk等开源组件的 云服务监控大屏架构

本套大屏,在某云服务大规模测试环境,良好运行3年. 本文主要展示这套监控大屏的逻辑架构.不做具体操作与配置的解释. 监控主要分为三部分: 数据展示部分数据存储数据采集 1. 数据展示 数据展示方面主要使用grafana 2. 数据存储 根据数据种类和特性和用途的不同,本套监控采用…

专业120+总400+北京理工大学826信号处理导论考研经验北理工电子信息与通信工程,真题,大纲,参考书。

**今年专业课826信号处理导论&#xff08;信号系统和数字信号处理&#xff09;120&#xff0c;总分400&#xff0c;应群里同学需要&#xff0c;自己总结一下去年的复习经历&#xff0c;希望对大家复习有帮助。**专业课&#xff1a; 北京理工大学专业826是两门合一&#xff0c;…

应用开发平台集成表单设计器系列之4——表单构造器深度了解

背景 平台需要实现自定义表单功能&#xff0c;作为低代码开发的一部分&#xff0c;通过技术预研和技术选型&#xff0c;选择form-create和form-create-designer这两个组件进行集成作为实现方案。通过深入了解和技术验证&#xff0c;确认了组件的功能能满足需求&#xff0c;具备…