文章目录
- 一、prometheus
- 1.简介
- 2.prometheus特点
- 二、部署prometheus
- 三、部署nginx监控实例
- 四、部署prometheus-adapter
prometheus_9">一、prometheus
Prometheus是古希腊神话里泰坦族的一名神明,名字的意思是"先见之明",素有Prometheus被宙斯惩罚,饱受肝脏日食夜长之苦的传说…
1.简介
Prometheus是一个开源的系统监控和报警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF托管的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控,同时也支持多种exporter采集数据,还支持pushgateway进行数据上报,Prometheus性能足够支撑上万台规模的集群。
prometheus_15">2.prometheus特点
1)多维度数据模型
2)灵活的查询语言(PromQL):可以对采集的metrics指标进行加法,乘法,连接等操作;
3)可以直接在本地部署,不依赖其他分布式存储;
4)通过基于HTTP的pull方式采集时序数据;
5)可以通过中间网关pushgateway的方式把时间序列数据推送到prometheus server端;
6)可通过服务发现或者静态配置来发现目标服务对象(targets)。
7)有多种可视化图像界面,如Grafana等。
8)高效的存储,每个采样数据占3.5 bytes左右,300万的时间序列,30s间隔,保留60天,消耗磁盘大概200G。
9)做高可用,可以对数据做异地备份,联邦集群,部署多套prometheus,pushgateway上报数据
prometheus_27">二、部署prometheus
在harbor创建项目仓库,并自行上传对应镜像(所需镜像根据文件需要得来);本实验涉及镜像如下:
[root@k8s2 helm]# tar zxf kube-prometheus-stack-39.11.0.tgz
[root@k8s2 helm]# cd kube-prometheus-stack/
[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:
[root@k8s2 kube-prometheus-stack]# kubectl -n kube-prometheus-stack edit svc kube-prometheus-stack-grafana
[root@k8s2 kube-prometheus-stack]# kubectl -n kube-prometheus-stack edit svc kube-prometheus-stack-prometheus
修改svc访问方式见下图
访问prometheus监控页面 http://192.168.56.103:9090/
访问grafana监控页面 http://192.168.56.102/
默认用户/密码: admin/prom-operator
最终效果见下图:
三、部署nginx监控实例
上传所需镜像
[root@k8s1 ~]# docker pull bitnami/nginx-exporter:0.11.0-debian-11-r58
[root@k8s1 ~]# docker push reg.westos.org/bitnami/nginx-exporter:0.11.0-debian-11-r58
[root@k8s2 nginx]# vim values.yaml
部署应用
[root@k8s2 nginx]# helm install myapp .
测试
prometheus监控指标
prometheusadapter_67">四、部署prometheus-adapter
[root@k8s2 helm]# helm -n kube-prometheus-stack install prometheus-adapter prometheus-adapter-3.4.0.tgz
删除原有hpa
[root@k8s2 helm]# kubectl delete hpa --all
新建并运行hpa:
[root@k8s2 helm]# vim nginx-hpa.yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: myapp-nginx
namespace: default
spec:
minReplicas: 1
maxReplicas: 10
metrics:
- type: Pods
pods:
metric:
name: nginx_http_requests
target:
type: AverageValue
averageValue: 10
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: myapp-nginx
[root@k8s2 helm]# kubectl apply -f nginx-hpa.yaml
压力测试
[root@k8s1 ~]# mv hey /usr/local/bin/
[root@k8s1 ~]# chmod +x /usr/local/bin/hey
[root@k8s1 ~]# hey -n 10000 -c 5 -q 10 http://myapp.westos.org/index.html
观察hpa动态弹缩
prometheus监控指标