普罗米修斯&grafana监控k8s集群

640?wx_fmt=png

文/高哥/第 329 篇

运维自动化监控中基本上常用的有两大监控利器。一个是 zabbix,一个是普罗米修斯,又称Prometheus。Prometheus(普罗米修斯)是一个名字非常酷的开源监控系统。它支持多维度的指标数据模型,服务端通过HTTP协议定时拉取数据后,通过灵活的查询语言,实现监控的目的。客户端记录相关指标数据,对外提供查询接口。Prometheus服务端通过服务器发现机制找到客户端,并定时抓取存储为时间序列数据。最后通过Grafana等图表工具集成展示。


最近一直在学习,顺便搞了一下普罗米修斯&grafana监控k8s的方案。其实现原理有点类似 ELK 组合。node-exporter组件负责收集节点上的metrics监控数据,并将数据推送给prometheus, prometheus负责存储这些数据,grafana将这些数据通过网页以图形的形式展现给用户。


本次grafana+普罗米修斯全部集成在k8s中,用 pod 和 svc 的 NodePort 方式去暴露服务和端口以及登陆web界面。


pod显示如图:

640?wx_fmt=png

svc向外部暴露如下:

640?wx_fmt=png


根据 svc 的暴露端口,可以看出普罗米修斯的端口由9090 暴露为 30003,grafana 的端口由 3000 暴露为 31000。其中 192.168.43.35 这个 ip 地址是 k8s 集群的 master 节点,也就是主节点。


普罗米修斯登陆界面:http://192.168.43.35:30003

grafana登陆界面:http://192.168.43.35:31000


登陆普罗米修斯,界面如图:


需要采用如下查询语句,如果能够查询到数据,并且界面显示出来数据,则代表node-exporter向普罗米写入数据正常。


 
 

sum by (pod_name)( rate(container_cpu_usage_seconds_total{image!="", pod_name!=""}[1m] ) )

 
 

sum by (pod_name)( rate(container_cpu_usage_seconds_total{image!="", pod_name!=""}[1m] ) )

640?wx_fmt=png


grafana数据源配置如下:


640?wx_fmt=png


配置好数据源后,便可以定制监控指标来监控数据了。最终展示效果如图:


640?wx_fmt=png

640?wx_fmt=png


感觉这个监控界面还是比较炫酷的,我也尝试着装了一下 k8s 的默认 dashboard 界面,感觉还是比较单一。


640?wx_fmt=png


相比较而言,还是普罗米修斯&grafana的监控展示比较友好一些。这个用来装逼炫酷完全是一个不错的选择,这样领导就不会再说运维是吃闲饭的了。。。

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
普罗米修斯Grafana 是一对常用的开源监控工具,可以用来监控 Kubernetes 集群中的容器。下面是一个基本的监控流程: 1. 在 Kubernetes 集群中部署普罗米修斯(Prometheus)和 Grafana。 2. 在 Kubernetes 集群中创建一个 ServiceMonitor,用来指定需要监控的应用程序或服务。 3. 在应用程序或服务中添加 Prometheus 客户端库,用来将指标数据推送到 Prometheus。 4. 在 Grafana 中配置数据源为 Prometheus,并创建仪表盘(Dashboard)来展示监控数据。 具体操作可参考以下步骤: 1. 部署 Prometheus 和 Grafana 可以使用 Helm 工具来部署 Prometheus 和 Grafana。首先,需要添加 Prometheus 和 Grafana 的 Helm 仓库: ``` helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo add grafana https://grafana.github.io/helm-charts ``` 接着,使用 Helm 安装 Prometheus 和 Grafana: ``` helm install prometheus prometheus-community/kube-prometheus-stack helm install grafana grafana/grafana ``` 2. 创建 ServiceMonitor 在 Kubernetes 集群中创建一个 ServiceMonitor,用来指定需要监控的应用程序或服务。以下是一个示例: ``` apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: my-app-monitor namespace: default spec: selector: matchLabels: app: my-app endpoints: - port: http ``` 其中,selector 指定需要监控的应用程序或服务的标签,endpoints 指定需要监控的端口。 3. 添加 Prometheus 客户端库 在应用程序或服务中添加 Prometheus 客户端库,用来将指标数据推送到 Prometheus。例如,在 Node.js 应用程序中,可以使用 prom-client 库: ``` const express = require('express') const promBundle = require('express-prom-bundle') const metricsMiddleware = promBundle({includeMethod: true}) const app = express() app.use(metricsMiddleware) app.get('/', (req, res) => { res.send('Hello World!') }) app.listen(3000, () => { console.log('Example app listening on port 3000!') }) ``` 这样就可以在应用程序中添加 Prometheus 指标,例如: ``` const promClient = require('prom-client') const counter = new promClient.Counter({ name: 'my_counter', help: 'This is my counter' }) setInterval(() => { counter.inc() }, 1000) ``` 这个 Counter 每秒钟会加 1。 4. 配置 GrafanaGrafana 中配置数据源为 Prometheus,并创建仪表盘来展示监控数据。 首先,需要在 Grafana 中配置 Prometheus 数据源。进入 Grafana 界面,点击左侧菜单栏的“Configuration”,选择“Data Sources”,点击“Add data source”,选择“Prometheus”,输入 Prometheus 的地址,保存。 接着,可以创建一个仪表盘,用来展示监控数据。点击左侧菜单栏的“+”,选择“Dashboard”,然后选择“Add new panel”,选择需要展示的指标,保存。 以上是一个基本的监控流程,可以根据实际情况进行调整和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值