Linux企业运维——Kubernetes(二十)Prometheus监控

Linux企业运维——Kubernetes(二十)Prometheus监控

一、Prometheus简介

除了资源指标(如CPU、内存)以外,用户或管理员需要了解更多的指标数据,比如Kubernetes指标、容器指标、节点资源指标以及应用程序指标等等。自定义指标API允许请求任意的指标,其指标API的实现要指定相应的后端监视系统。
Prometheus是第一个开发了相应适配器的监控系统。
在这里插入图片描述
Prometheus是一个开源的服务监控系统和时序数据库,其提供了通用的数据模型和快捷数据采集、存储和查询接口。它的核心组件Prometheus服务器定期从静态配置的监控目标或者基于服务发现自动配置的目标中进行拉取数据,新拉取到的数据大于配置的内存缓存区时,数据就会持久化到存储设备当中。

如上图,每个被监控的主机都可以通过专用的exporter程序提供输出监控数据的接口,并等待Prometheus服务器周期性的进行数据抓取。如果存在告警规则,则抓取到数据之后会根据规则进行计算,满足告警条件则会生成告警,并发送到Alertmanager完成告警的汇总和分发。当被监控的目标有主动推送数据的需求时,可以以Pushgateway组件进行接收并临时存储数据,然后等待Prometheus服务器完成数据的采集。

二、k8s部署Prometheus

server2添加apphub仓库源
在这里插入图片描述
查找prometheus-operator并拉取
在这里插入图片描述
在harbor仓库新建一个项目名为kubeapps
在这里插入图片描述
真实主机将prometheus-operator包发送给server1
在这里插入图片描述
server1加载prometheus-operator镜像
在这里插入图片描述
将prometheus-operator镜像上传至仓库
在这里插入图片描述
server2解压prometheus-operator包并进入目录,编辑values.yaml
在这里插入图片描述
把报警、Grafana、Prometheus三个组件的Ingress打开,将所有镜像(8个)都指向私有仓库
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

248       repository: kubeapps/quay-alertmanager
991       repository: kubeapps/ghostunnel
1008         repository: kubeapps/kube-webhook-certgen
1177     repository: kubeapps/quay-prometheus-operator
1184     repository: kubeapps/quay-configmap-reload
1190     repository: kubeapps/quay-prometheus-config-reloader
1204     repository: kubeapps/k8s-gcr-hyperkube
1417       repository: kubeapps/quay-prometheus

编辑完成后去依赖性子目录charts/中,可以看到三个组件:

  • kube-state-metrics:
    Prometheus提供的多项指标数据格式与k8s数据格式不兼容,还需要一个中间组件,kube-state-metrics负责从prometheus的数据格式转换为k8s集群可以识别的格式。
  • prometheus-node-exporter:
    安装在被监控端,负责采集多种数据。Prometheus通常去不同client端拉取数据,但有些应用数据无法拉取,这时候这些应用将数据push到Pushgateway网关,由Pushgateway网关将数据发送给server端。
  • grafana:
    是用来展示指标的图形化管理工具

在这里插入图片描述
进入grafana/目录下,编辑values.yaml配置文件,打开Ingress,配置hosts,将镜像指向私有仓库
在这里插入图片描述

52   repository: kubeapps/grafana
65   image: "kubeapps/bats"
91   repository: kubeapps/curl
209     repository: kubeapps/busybox
432   image: kubeapps/k8s-sidecar:0.1.20

进入kube-state-metrics/目录下,编辑values.yaml配置文件
在这里插入图片描述
将镜像指向私有仓库
在这里插入图片描述
进入prometheus-node-exporter/目录下,编辑values.yaml配置文件
在这里插入图片描述
将镜像指向私有仓库
在这里插入图片描述
创建prometheus-operator命名空间,将prometheus-operator安装在prometheus-operator命名空间下
(注意宿主机和集群虚拟机时间要同步,因为Prometheus是以时间序列方式采集数据)
在这里插入图片描述
查看所有pod
在这里插入图片描述
控制器也就绪
prometheus-operator-kube-state-metrics:兼容数据
在这里插入图片描述
查看prometheus-operator命名空间内的ingress也正常运行
在这里插入图片描述
为测试访问,为真实主机添加域名解析
在这里插入图片描述
通过浏览器访问prometheus.westos.org,进入status菜单栏内的service discovery
在这里插入图片描述
服务正常显示
在这里插入图片描述
访问grafana.westos.org,输入配置文件中设定好的用户名和密码
在这里插入图片描述
在设置中,数据源默认为prometheus
在这里插入图片描述
显示数据源正常工作,点击测试在这里插入图片描述
找到prometheus将其添加到监控面板
在这里插入图片描述
可以看到监控页面正常运行
在这里插入图片描述

三、Prometheus监控nginx访问量

通过图形化界面直接安装nginx
在这里插入图片描述
应用名称设置为nginx,使用9.4.1版本,服务类型为LoadBalancer
在这里插入图片描述
副本数量选择1个,打开Prometheus监控选项,Prometheus专门监控nginx的agent插件:nginx-exporter
在这里插入图片描述
修改yaml配置文件,更改镜像仓库地址
在这里插入图片描述
设置镜像仓库和标签
在这里插入图片描述
下图是我们刚指定的镜像
在这里插入图片描述
指定服务部署在prometheus-operator命名空间内
在这里插入图片描述
整体配置如下图所示
在这里插入图片描述
配置完成后等待镜像部署完成
在这里插入图片描述
通过浏览器访问上图nginx应用的URL,可以看到正常访问在这里插入图片描述
在命令行界面查看pod信息,可以看到刚创建的nginx及其服务和外部访问地址
在这里插入图片描述
为nginx添加release=prometheus-operator这个标签
在这里插入图片描述
现在在图形管理界面可以看到nginx服务
在这里插入图片描述
点击Graph,将访问流量统计图添加进统计页
在这里插入图片描述
在这里插入图片描述
可以看到nginx访问流量效果图
在这里插入图片描述

四、Prometheus实现hpa动态伸缩

server2查看pod信息可以看到prometheus-operator-kube-state-metrics
在这里插入图片描述
执行 kubectl api-versions 查看api group ,metrics为v1beta1版本
在这里插入图片描述
查找prometheus-adapter插件,拉取到本地并解压,编辑values.yaml配置文件
在这里插入图片描述
配置镜像地址和prometheus的服务地址
在这里插入图片描述
配置文件中的prometheus的服务地址可以通过下图命令查看
在这里插入图片描述
可以拉起一个新的容器并进入,测试是否能访问到上面prometheus的服务地址
在这里插入图片描述
在prometheus-operator命名空间下安装prometheus-adapter,复制下图指令
在这里插入图片描述
查看prometheus-operator命名空间下的pod信息,都正常运行
在这里插入图片描述
可以查看到刚才复制的指令中的api
在这里插入图片描述
执行刚才复制的指令
在这里插入图片描述
再次执行刚才复制的指令,这次指定命名空间、pod和监控指标
在这里插入图片描述
指定的监控指标名字就是下图红框部分
在这里插入图片描述
也可以编写python脚本运行指令进行参数配置
在这里插入图片描述
编辑hpa-nginx.yaml配置文件并应用

[root@server2 helm]# cat hpa-nginx.yaml 
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: hpa-example
spec:
  maxReplicas: 10        #最多伸缩到10个副本
  minReplicas: 1         #最少伸缩为1个副本
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: nginx
  metrics:
  - type: Pods
    pods:
      metric:
        name: nginx_http_requests          #指定监控nginx访问流量
      target:
        type: AverageValue                 #伸缩依据是均值是否在10
        averageValue: 10

在这里插入图片描述
查看hpa详细信息,HPA可以根据pods的nginx访问流量度量成功计算副本计数
在这里插入图片描述
hey用来进行压力测试,真实主机把hey复制到/usr/local/bin,赋予可执行权限
在这里插入图片描述
命令行输入hey可以看到参数用法
在这里插入图片描述
真实主机运行hey进行访问测试,参数设置总共访问一万次,每秒访问五次,5个线程并发
在这里插入图片描述
kubectl get hpa hpa-example -w查看hpa的动态状态变化,可以随着访问压力的增大hpa开始生效并增加副本数量,逐渐扩容到3个
在这里插入图片描述
可以看到图形化展示
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、prometheus简介 Prometheus是一个开源的系统监控和告警系统,现在已经加入到CNCF基金会,成为继k8s之后第二个在CNCF维护管理的项目,在kubernetes容器管理系统中,通常会搭配prometheus进行监控prometheus支持多种exporter采集数据,还支持通过pushgateway进行数据上报,Prometheus再性能上可支撑上万台规模的集群。 二、prometheus架构图 三、prometheus组件介绍 1.Prometheus Server: 用于收集和存储时间序列数据。 2.Client Library: 客户端库,检测应用程序代码,当Prometheus抓取实例的HTTP端点时,客户端库会将所有跟踪的metrics指标的当前状态发送到prometheus server端。 3.Exporters: prometheus支持多种exporter,通过exporter可以采集metrics数据,然后发送到prometheus server端 4.Alertmanager: 从 Prometheus server 端接收到 alerts 后,会进行去重,分组,并路由到相应的接收方,发出报警,常见的接收方式有:电子邮件,微信,钉钉, slack等。 5.Grafana:监控仪表盘 6.pushgateway: 各个目标主机可上报数据到pushgatewy,然后prometheus server统一从pushgateway拉取数据。 四、课程亮点 五、效果图展示 六、讲师简介 先超(lucky):高级运维工程师、资深DevOps工程师,在互联网上市公司拥有多年一线运维经验,主导过亿级pv项目的架构设计和运维工作 主要研究方向: 1.云计算方向:容器 (kubernetes、docker),虚拟化(kvm、Vmware vSphere),微服务(istio),PaaS(openshift),IaaS(openstack)等2.系统/运维方向:linux系统下的常用组件(nginx,tomcat,elasticsearch,zookeeper,kafka等),DevOps(Jenkins+gitlab+sonarqube+nexus+k8s),CI/CD,监控(zabbix、prometheus、falcon)等 七、课程大纲

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值