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

目录

一、概述

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: prometheusname: prometheus-confignamespace: monitor-sa
data:prometheus.yml: |global:scrape_interval: 15s      # 数据采集时间间隔scrape_timeout: 10s       # 数据采集超时时间evaluation_interval: 1mscrape_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:10250replacement: '${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:  nodescheme: httpstls_config:ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crtbearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/tokenrelabel_configs:- action: labelmapregex: __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: endpointsscheme: httpstls_config:ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crtbearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/tokenrelabel_configs:- source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name]action: keepregex: default;kubernetes;https  # 正则匹配到的默认空间下的service名字是kubernetes,协议是https的endpoint类型保留下来- 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 
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-servernamespace: monitor-salabels:app: prometheus
spec:replicas: 1selector:matchLabels:app: prometheuscomponent: server#matchExpressions:#- {key: app, operator: In, values: [prometheus]}#- {key: component, operator: In, values: [server]}template:metadata:labels:app: prometheuscomponent: serverannotations:prometheus.io/scrape: 'false'spec:nodeName: node1serviceAccountName: monitorcontainers:- name: prometheusimage: prom/prometheus:v2.2.1imagePullPolicy: IfNotPresentcommand:- prometheus- --config.file=/etc/prometheus/prometheus.yml- --storage.tsdb.path=/prometheus- --storage.tsdb.retention=720h- --web.enable-lifecycleports:- containerPort: 9090protocol: TCPvolumeMounts:- mountPath: /etc/prometheus/prometheus.ymlname: prometheus-configsubPath: prometheus.yml- mountPath: /prometheus/name: prometheus-storage-volumevolumes:- name: prometheus-configconfigMap:name: prometheus-configitems:- key: prometheus.ymlpath: prometheus.ymlmode: 0644- name: prometheus-storage-volumehostPath:path: /datatype: 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: prometheusnamespace: monitor-salabels:app: prometheus
spec:type: NodePortports:- port: 9090targetPort: 9090protocol: TCPselector:app: prometheuscomponent: 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.mzph.cn/news/752393.shtml

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

相关文章

ConsiStory:Training-Free的主体一致性生成

Overview 一、总览二、PPT详解 ConsiStory 一、总览 题目: Training-Free Consistent Text-to-Image Generation 机构:NVIDIA, Tel-Aviv University 论文:https://arxiv.org/pdf/2402.03286.pdf 代码:https://consistory-paper.g…

zookeeper快速入门三:zookeeper的基本操作

在zookeeper的bin目录下,输入./zkServer.sh start和./zkCli.sh启动服务端和客户端,然后我们就可以进行zookeeper的基本操作了。如果是windows,请参考前面章节zookeeper快速入门一:zookeeper安装与启动 目录 一、节点的增删改查 …

【Java基础知识总结 | 第三篇】深入理解分析ArrayList源码

文章目录 3.深入理解分析ArrayList源码3.1ArrayList简介3.2ArrayLisy和Vector的区别?3.3ArrayList核心源码解读3.3.1ArrayList存储机制(1)构造函数(2)add()方法(3)新增元素大体流程 3.3.2ArrayL…

react03

react03 修改脚手架创建的打包命令 根据scripts中的命令,执行npm run eject ,输入y, 如果对原始的脚手架文件有过改动需要进行将修改后的文件提交到git 历史区 ,防止暴露后的代码覆盖我们自己的文件 git 提交: git add . git commit -m ‘…

java----网络编程(一)

一.什么是网络编程 用户在浏览器中,打开在线视频网站,如优酷看视频,实质是通过网络,获取到网络上的一个视频资源。 与本地打开视频文件类似,只是视频文件这个资源的来源是网络。所谓网络资源就是网络中获取数据。而所…

LabVIEW提升舱救援通讯监测系统

LabVIEW提升舱救援通讯监测系统 随着科技的进步,煤矿救援工作面临着许多新的挑战。为了提高救援效率和安全性,设计并实现了一套基于LabVIEW的提升舱救援通讯监测系统。该系统能够实时监控提升舱内的环境参数和视频图像,确保救援人员和被困人…

el-input设置max、min无效的解决方案

目录 一、方式1:type“number” 二、方式2:oninput(推荐) 三、计算属性 如下表所示,下面为官方关于max,min的介绍: el-input: max原生属性,设置最大值min原生属性&a…

06.共享内存

1.内存映射(mmap) 我们在单片机中首先接触到了映射的概念 将一个寄存器的地址映射到了另外的一个存储空间中 内存映射: 内存映射(Memory Mapping)是一种在计算机科学中使用的技术,它允许将文件或其他设备的内容映射…

idea warning:java源值已过时将在未来所有发行版中删除

在idea中运行maven项目 如果出现idea warning:java源值已过时将在未来所有发行版中删除,详见如下截图所示: 注意:jdk8 要解决这个警告需要设置3个地方 首先打开File->Project Structure中的Project,将SDK和language level都设…

五、保持长期高效的七个法则(二)Rules for Staying Productive Long-Term(1)

For instance - lets say youre a writer.You have a bunch of tasks on your plate for the day, but all of a sudden you get a really good idea for an essay. You should probably start writing now or youll lose your train of thought.What should you do? 举例来说…

分布式搜索引擎(3)

1.数据聚合 **[聚合(](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html)[aggregations](https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations.html)[)](https://www.ela…

机器学习(26)回顾gan+文献阅读

文章目录 摘要Abstract一、李宏毅机器学习——GAN1. Introduce1.1 Network as Generator1.2 Why distribution 2. Generative Adversarial Network2.1 Unconditional generation2.2 Basic idea of GAN 二、文献阅读1. 题目2. abstract3. 网络架构3.1 Theoretical Results 4. 文…

Oracle P6 Professional 配置连接数据库总结

前言 P6 Professional作为Oracle P6计划管理系统的重要套件之一,其操作出色,体检佳,是非常多的计划工程师跟踪项目进度计划的辅助工具。自20年前,Professional一直在不断的演变更新,以适应当前的新技术,从…

【MySQL】MySQL事务

文章目录 一、CURD不加控制,会有什么问题?二、事务的概念三、事务出现的原因四、事务的版本支持五、事务提交方式六、事务常见操作方式七、事务隔离级别1.理解隔离性12.隔离级别3.查看与设置隔离性4.读未提交【Read Uncommitted】5.读提交【Read Committ…

【Numpy】练习题100道(76-100题完结)

🌻个人主页:相洋同学 🥇学习在于行动、总结和坚持,共勉! #学习笔记# Git-hub链接 题目列表(题解往下翻) 76.考虑一个一维数组Z,构建一个二维数组,其第一行为(Z[0],Z[…

【鸿蒙HarmonyOS开发笔记】组件编程技巧之使用@Builder装饰器实现UI结构复用

概述 当页面有多个相同的UI结构时,若每个都单独声明,同样会有大量重复的代码。为避免重复代码,可以将相同的UI结构提炼为一个自定义组件,完成UI结构的复用。 除此之外,ArkTS还提供了一种更轻量的UI结构复用机制Build…

小白DB补全计划Day1-LeetCode:SQL基本操作select

前言:找工作(主人)的任务罢了 链接:1757. 可回收且低脂的产品 - 力扣(LeetCode) 584. 寻找用户推荐人 - 力扣(LeetCode) 来源:LeetCode 对DB篇的SQL章不太知道怎么写…

数学建模-估计出租车的总数

文章目录 1、随机抽取的号码在总体的排序 1、随机抽取的号码在总体的排序 10个号码从小到大重新排列 [ x 0 , x ] [x_0, x] [x0​,x] 区间内全部整数值 ~ 总体 x 1 , x 2 , … , x 10 总体的一个样本 x_1, x_2, … , x_{10} ~ 总体的一个样本 x1​,x2​,…,x10​ 总体的一个样…

mysql与redis数据测试

题目要求 1.新建一张user表,在表内插入10000条数据。 2.①通过jdbc查询这10000条数据,记录查询时间。 ②通过redis查询这10000条数据,记录查询时间。 3.再次查询这一万条数据,要求根据年龄进行排序,mysql和redis各实现…

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

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