目录

什么是Prometheus

部署prometheus

部署nginx监控实例

 监控nginx的HPA自动伸缩


什么是Prometheus

Prometheus是一个开源监控解决方案,用于收集和聚合指标作为时间序列数据。更简单地说,Prometheus 商店中的每个项目都是一个指标事件,并带有它发生的时间戳。

HPA获取自定义指标(Custom Metrics)的底层实现就可以基于Prometheus。

普罗米修斯与其他度量(metrics)和监控系统的区别在于:多维数据模型(由度量名称和键/值维度集定义的时间序列)。

对于云平台prometheus是首选。

prometheus原生的图标功能过于简单,可将prometheus数据接入grafana,由grafana进行统一管理。

部署prometheus

采用helm方式部署,相对于裸金属简单,节点尽量升级到4g内存以上

上传所需镜像到harbor

prometheus 监控redis 告警 prometheus监控哪些指标_容器

解压并进入

修改value文件,涉及很多路径,需仔细修改,安装仓库中的路径

prometheus 监控redis 告警 prometheus监控哪些指标_prometheus_02

[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 .

prometheus 监控redis 告警 prometheus监控哪些指标_数据_03

修改svc访问方式为LoadBalancer,从外网访问

prometheus 监控redis 告警 prometheus监控哪些指标_prometheus_04

访问grafana监控页面

prometheus 监控redis 告警 prometheus监控哪些指标_容器_05

用户名密码可以从以下secret中查找

[root@k8s2 helm]# kubectl -n kube-prometheus-stack get secrets kube-prometheus-stack-grafana

默认用户/密码: admin/prom-operator

导入监控模板:Dashboards | Grafana Labs

 

prometheus 监控redis 告警 prometheus监控哪些指标_nginx_06

选模板

prometheus 监控redis 告警 prometheus监控哪些指标_kubernetes_07

prometheus 监控redis 告警 prometheus监控哪些指标_prometheus_08

 界面展示

prometheus 监控redis 告警 prometheus监控哪些指标_数据_09

部署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文件要加上标签才能别发现

prometheus 监控redis 告警 prometheus监控哪些指标_prometheus_10

放到同一个ns

prometheus 监控redis 告警 prometheus监控哪些指标_prometheus_11

[root@k8s2 helm]# helm install myapp nginx-13.2.24.tgz

prometheus 监控redis 告警 prometheus监控哪些指标_容器_12

通过ingress负载服务

prometheus 监控redis 告警 prometheus监控哪些指标_容器_13

prometheus监控指标

prometheus 监控redis 告警 prometheus监控哪些指标_数据_14

 监控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

prometheus 监控redis 告警 prometheus监控哪些指标_数据_15

[root@k8s2 helm]# helm -n kube-prometheus-stack install prometheus-adapter prometheus-adapter-3.4.0.tgz

prometheus 监控redis 告警 prometheus监控哪些指标_prometheus_16

创建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监控指标,逐渐上升

prometheus 监控redis 告警 prometheus监控哪些指标_容器_17

观察hpa动态弹缩

prometheus 监控redis 告警 prometheus监控哪些指标_容器_18