运维实操——kubernetes(十九)k8s中部署Prometheus、监控nginx、HPA自动伸缩
k8s中部署Prometheus、监控nginx、HPA自动伸缩
- 1、什么是Prometheus?
- 2、k8s中部署Prometheus监控
- 3、prometheus监控nginx
- 4、基于prometheus监控nginx的HPA自动伸缩
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/v1kind: Deploymentname: nginxmetrics:- type: Podspods: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
运维实操——kubernetes(十九)k8s中部署Prometheus、监控nginx、HPA自动伸缩相关推荐
- 运维实操——kubernetes(九)存储之Secret配置管理Service Account、Opaque、dockerconfigjson
存储之Secret配置管理Service Account.Opaque.dockerconfigjson 1.什么是Secret? 2.Service Account 3.Opaque (1)从文件中 ...
- k8s中部署prometheus监控告警系统-prometheus系列文章第一篇
前言 本篇文章主要介绍k8s集群中部署prometheus,并且配置prometheus的动态.静态服务发现,实现监控容器.物理节点.service.pod等资源指标,配置prometheus的web ...
- 运维实操——kubernetes(十一)调度nodeName、nodeSelector、亲和性、污点、容忍、删除节点
调度nodeName.nodeSelector.亲和性.污点.容忍.删除节点 1.什么是调度? 2.nodeName 3.nodeSelector (1)节点亲和性 (2)pod亲和与反亲和 4.Ta ...
- caas k8s主控节点如何查询_k8s中部署prometheus监控告警系统prometheus系列文章第一篇...
前言 本篇文章主要介绍k8s集群中部署prometheus,并且配置prometheus的动态.静态服务发现,实现监控容器.物理节点.service.pod等资源指标,配置prometheus的web ...
- 在 k8s 中部署 Prometheus 和 Grafana
部署 Prometheus 和 Grafana 到 k8s Intro 上次我们主要分享了 asp.net core 集成 prometheus,以及简单的 prometheus 使用,在实际在 k8 ...
- 数据库运维实操优质文章分享(含Oracle、MySQL等) | 2023年3月刊
本文为大家整理了墨天轮数据社区2023年3月发布的优质技术文章,主题涵盖Oracle.MySQL.PostgreSQL等数据库的基础安装配置操作.故障处理.性能优化等日常实践操作,以及概念梳理.常用脚 ...
- 数据库运维实操优质文章分享(含Oracle、MySQL等) | 2023年5月刊
本文为大家整理了墨天轮数据社区2023年5月发布的优质技术文章,主题涵盖Oracle.MySQL.PostgreSQL等数据库的安装配置.故障处理.性能优化等日常实践操作,以及常用脚本.注意事项等总结 ...
- 运维实操——日志分析系统ELK(中)之logstash采集数据、伪装rsyslog、多行过滤、grok切片
日志分析系统ELK(中)之logstash 1.什么是logstash? 2.Logstash安装 3.logstash简单命令行测试 4.logstash文件测试 (1)命令行输入,输出到文件 (2 ...
- 运维实操——zabbix监控结合睿象云报警平台及API调用
zabbix监控结合睿象云报警平台及API调用 1.zabbix监控结合睿象云报警平台 2.API调用 1.zabbix监控结合睿象云报警平台 由于我们不能时时刻刻盯着zabbix监控,所以呢,我们想 ...
最新文章
- 比较不错的一个ios找茬游戏源码
- 上海五校赛 丢史蒂芬妮
- JAVA面试题(part2)--位运算符
- 60个数据窗口技巧(转)
- 前端学习(1372):构建模块化路由
- linux系统管理之单机系统管理 - 超级用户和进程管理
- 不能因技术后天的死 而迷茫了今天的“学” 生
- php 数据类型 map,ResultMap和ResultType的区别
- 复旦大学《高等代数学(第三版)》教材习题答案
- 超效率dea matlab,求高人帮忙关于超效率DEA模型编程
- xml--json代码大全
- 京东商城发现了一枚Bug
- Mysql分表,分区的区别和联系
- SQL中的comment语法
- 如何判断一个点在三角形内部
- 提交模式窗口后,刷新父窗口数据+获取frameset中各模块中数据
- Word文档段落的前后间距单位磅改为行,行改为磅方法演示
- TensorFlow已死,TensorFlow万岁!
- 秦储数字藏品平台正式上线公测 | 实名注册用户首日突破2万!
- windows10+python3.5+CUDA10.0 安装pytorch教程