目录
什么是Prometheus
部署prometheus
部署nginx监控实例
监控nginx的HPA自动伸缩
什么是Prometheus
Prometheus是一个开源监控解决方案,用于收集和聚合指标作为时间序列数据。更简单地说,Prometheus 商店中的每个项目都是一个指标事件,并带有它发生的时间戳。
HPA获取自定义指标(Custom Metrics)的底层实现就可以基于Prometheus。
普罗米修斯与其他度量(metrics)和监控系统的区别在于:多维数据模型(由度量名称和键/值维度集定义的时间序列)。
对于云平台prometheus是首选。
prometheus原生的图标功能过于简单,可将prometheus数据接入grafana,由grafana进行统一管理。
部署prometheus
采用helm方式部署,相对于裸金属简单,节点尽量升级到4g内存以上
上传所需镜像到harbor
解压并进入
修改value文件,涉及很多路径,需仔细修改,安装仓库中的路径
[root@k8s2 helm]# tar zxf kube-prometheus-stack-39.11.0.tgz
[root@k8s2 helm]# cd kube-prometheus-stack/
为其创建ns
[root@k8s2 kube-prometheus-stack]# kubectl create ns kube-prometheus-stack
安装
[root@k8s2 kube-prometheus-stack]# helm -n kube-prometheus-stack install kube-prometheus-stack .
修改svc访问方式为LoadBalancer,从外网访问
访问grafana监控页面
用户名密码可以从以下secret中查找
[root@k8s2 helm]# kubectl -n kube-prometheus-stack get secrets kube-prometheus-stack-grafana
默认用户/密码: admin/prom-operator
导入监控模板:Dashboards | Grafana Labs
选模板
界面展示
部署nginx监控实例
上传所需镜像
[root@k8s1 ~]# docker pull bitnami/nginx-exporter:0.11.0-debian-11-r44
[root@k8s1 ~]# docker push reg.westos.org/bitnami/nginx-exporter:0.11.0-debian-11-r44
value文件要加上标签才能别发现
放到同一个ns
[root@k8s2 helm]# helm install myapp nginx-13.2.24.tgz
通过ingress负载服务
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插件,helm安装,value文件修改路径,修改服务的url
[root@k8s2 helm]# helm -n kube-prometheus-stack install prometheus-adapter prometheus-adapter-3.4.0.tgz
创建hpa
[root@k8s2 nginx]# vim hpa.yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: hpa-myapp
spec:
maxReplicas: 10
minReplicas: 1
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: myapp-nginx
metrics:
- type: Pods
pods:
metric:
name: nginx_http_requests #监控类型为nginx的访问流量
target:
type: AverageValue
averageValue: 10
压力测试,把hey放到/usr/local/bin可执行
[root@k8s1 ~]# mv hey /usr/local/bin/
[root@k8s1 ~]# chmod +x /usr/local/bin/hey
完成10000个请求,并发5个,每个并发执行5个
[root@k8s1 ~]# hey -n 10000 -c 5 -q 10 http://myapp.westos.org/index.html
prometheus监控指标,逐渐上升
观察hpa动态弹缩