1、什么是Prometheus?

普罗米修斯是一个云计算基础基金项目,它是一个系统和服务监控系统。它以给定的时间间隔从配置的目标收集度量,评估规则表达式,显示结果,并在观察到指定条件时触发警报。

普罗米修斯与其他度量(metrics)和监控系统的区别在于:

  • 多维数据模型(由度量名称和键/值维度集定义的时间序列)
  • PromQL是一种强大而灵活的查询语言,可以利用这种维度
  • 不依赖分布式存储;单服务器节点是自治的
  • 用于时间序列采集的HTTP pull模型
  • 通过批处理作业的中间网关支持推送时间序列
  • 通过服务发现或静态配置发现目标
  • 图形和仪表板支持的多种模式
  • 支持分层和水平联合

运行流程如下,prometheus根据配置定时去拉取各个节点的数据,默认使用的拉取方式是pull,也可以使用pushgateway提供的push方式获取各个监控节点的数据。将获取到的数据存入TSDB,一款时序型数据库。此时prometheus已经获取到了监控数据,可以使用内置的PromQL进行查询。它的报警功能使用Alertmanager提供,Alertmanager是prometheus的告警管理和发送报警的一个组件。prometheus原生的图标功能过于简单,可将prometheus数据接入grafana,由grafana进行统一管理。
在这里插入图片描述
Prometheus资源地址:https://github.com/coreos/prometheus-operator/

2、k8s中部署Prometheus监控

首先查找prometheus-oprator并拉取部署文件
在这里插入图片描述
解压prometheus-oprator包
在这里插入图片描述
仓库中创建新项目,kubeapps
在这里插入图片描述
提前下载相关镜像并上传到仓库
在这里插入图片描述
进入解压得到的目录,可以看到有三个组件,

  • kube-state-metrics:直接采集的数据集群无法使用,kube-state-metrics负责从prometheus的数据格式转换为k8s集群可以识别的格式。
  • prometheus-node-exporter安装在被监控端,负责采集多种数据
  • grafana可以产生图像化监控

在这里插入图片描述
修改主配置value.yaml文件
在这里插入图片描述
打开三个ingress,设定域名和路径
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
并修改八个镜像路径到自己的仓库路径,
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

添加登陆密码
在这里插入图片描述
接下来分别修改子配置文件的value.yaml文件
进入grafana子目录,修改value.yaml文件
在这里插入图片描述
修改五个镜像路径到自己的仓库路径
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

并打开ingress服务,设置域名
在这里插入图片描述

进入kube-state-metrics子目录,修改value.yaml文件
在这里插入图片描述

修改一个镜像路径到自己的仓库路径
在这里插入图片描述

进入prometheus-node-exporter子目录,修改value.yaml文件,发现不用修改
在这里插入图片描述

创建命名空间
在这里插入图片描述
指定ns安装prometheus-operator
在这里插入图片描述
查看pod和svc全部正常启动
在这里插入图片描述
控制器也正常
在这里插入图片描述
查看ingress也正常开启
在这里插入图片描述
给真机添加解析
在这里插入图片描述
网页输入prometheus.westos.org访问,进入
在这里插入图片描述
grafana.westos.org也可以访问,输入密码
在这里插入图片描述
grafana的图形化展示比原本的Prometheus做的好,配置默认的Prometheus
在这里插入图片描述
测试
在这里插入图片描述
添加Prometheus
在这里插入图片描述
看到了图形界面
在这里插入图片描述

3、prometheus监控nginx

使用helm图形化界面安装nginx
在这里插入图片描述
进入nginx,使用9.4.1版本
在这里插入图片描述
打开Prometheus监控
在这里插入图片描述
修改YAML文件,添加仓库信息
在这里插入图片描述
指定ns
在这里插入图片描述
最后可以看到修改的地方
在这里插入图片描述
部署成功
在这里插入图片描述
网页访问上面展示的url,成功访问
在这里插入图片描述
查看开放了9113端口监控
在这里插入图片描述
设备发现没有nginx,原因是未添加对应的标签release=prometheus-operator
在这里插入图片描述
查看nginx没有标签release=prometheus-operator,其他有
在这里插入图片描述
给nginx添加标签
在这里插入图片描述
现在服务发现就有nginx了
在这里插入图片描述
点击graph,选择访问流量指标,添加图
在这里插入图片描述

如图
在这里插入图片描述

4、基于prometheus监控nginx的HPA自动伸缩

之前学习了根据核心指标(cpu和mem),hpa控制副本的数量。如果想根据其他指标(比如nginx的访问量)控制的话,需要要用到自定义指标的HPA,需要提供社区标准的Custom Metric API,一般用户使用Prometheus-Adapter来提供Custom Metric API,其主要功能是将接受到custom metric api转换成普罗的请求,从普罗中查询数据返回给API Server。简单说,prometheus-adapter负责转换数据
搜索并拉取prometheus-adapter插件
在这里插入图片描述
解压tar包,进入
在这里插入图片描述
编辑 values.yaml文件,修改镜像路径,修改服务的url
在这里插入图片描述
上面url的编写可以查看指定ns下的svc
在这里插入图片描述
保险起见,进入一个容器,看url能否正确解析
在这里插入图片描述
创建ns,指定ns安装
在这里插入图片描述
安装完成后,使用提示语句,可以看到有变量出现
在这里插入图片描述
再详细指定ns,指定pod,指定监控指标,可以成功看到
在这里插入图片描述
使用python语句更清晰明了
在这里插入图片描述
编写hpa-nginx.yaml 文件

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: hpa-example
spec:
  maxReplicas: 10			%最少1个副本
  minReplicas: 1			%最多10个副本
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: nginx
  metrics:
  - type: Pods
    pods:
      metric:
        name: nginx_http_requests		%监控类型为nginx的访问流量
      target:
        type: AverageValue				%hpa变化的依据是平均值是否在10附近
        averageValue: 10				

在这里插入图片描述
应用hpa-nginx.yaml文件
在这里插入图片描述
查看hpa
在这里插入图片描述
在这里插入图片描述
接下来使用hey压力测试,把hey放到/usr/local/bin可执行
在这里插入图片描述
运行压力测试

chmod +x hey		%赋予可执行权限
hey -n 10000 -c 5 -q 5 http://172.25.11.12/index.html	%总运行次数一万次,每秒五次访问,同时并发五个,即每秒25次访问

-w动态查看hpa,可以看到集群根据压力大小进行动态添加副本,副本数从1到2,从2到3
在这里插入图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐