01 特征

普罗米修斯的主要特点是:

  • 一个多维数据模型,其中包含通过度量标准名称和键/值对标识的时间序列数据

  • PromQL,一种灵活的查询语言 ,可利用此维度

  • 不依赖分布式存储;单服务器节点是自治的

  • 时间序列收集通过HTTP上的拉模型进行

  • 通过中间网关支持推送时间序列

  • 通过服务发现或静态配置发现目标

  • 多种图形和仪表板支持模式

02 组件

Prometheus生态系统包含多个组件,其中许多是可选的:

  •  Prometheus主服务器,它会刮取并存储时间序列数据

  •  客户端库,用于检测应用程序代码

  • 一个支持短期工作的 推送网关

  • 诸如HAProxy,StatsD,Graphite等服务的专用 出口商

  • 一个 alertmanager处理警报

  • 各种支持工具

大多数Prometheus组件都是用 Go编写的,因此易于构建和部署为静态二进制文件。

03 架构

下图说明了Prometheus的体系结构及其某些生态系统组件:

图片

Prometheus直接或通过中介推送网关从已检测作业中删除指标,以用于短期作业。它在本地存储所有报废的样本,并对这些数据运行规则,以汇总和记录现有数据中的新时间序列,或生成警报。 Grafana或其他API使用者可以用来可视化收集的数据。

04 安装

前提需要有helm环境:

图片

图片

图片

安装成功,查看pod状态会发现有两个处于pending状态,是因为需要请求pv

图片

这里使用hostPath来创建pv

图片

图片

查看pod状态会发现有个pod会报错,并查看日志是报错是容器名不同

图片

真正的原因是因为使用的hoatPath,pvc请求的权限不够,到worker节点给对应的hostpath加777的权限即可,这是我通过rancher查看到的报错

图片

05 访问web界面

图片

这里还需要修改Prometheus-server的Port类型为NodePort。

图片

06 安装grafana

图片

图片

图片

图片

由于grafana没有使用持久存储,根据需求修改为hostpath持久存储,需要注意的是,宿主机目录也需要777的权限

图片

还需要需改grafana的svc类型为NodePort

图片

访问web界面,用户admin,密码:admin123

图片

07 导入Prometheus

图片

图片

填入Prometheus的地址

图片

则表示验证通过

图片

导入grafana的模板

图片

图片

图片

这里选择Prometheus

图片

即可看到灰常华丽的仪表盘了

图片

这里提供几个模板的编号:

图片

08 配置alertmanager告警

1、关联alertmanager和prometheus

添加alertmanager的服务名称

图片

添加告警规则

图片


rules.yml:|


    groups:


    - name: Host


      rules:


      - alert: HostMemory Usage


        expr: sum(kube_pod_container_resource_requests_memory_bytes) / sum(kube_node_status_allocatable_memory_bytes) * 100 >  80


        for: 1m


        labels:


          name: Memory


          team: wechat


          severity: Warning


        annotations:


          summary: " {{ $labels.appname }} "


          description: "宿主机内存使用率超过80%."


          value: "{{ $value }}"


      - alert: HostCPU Usage


        expr: sum(kube_pod_container_resource_requests_cpu_cores) / sum(kube_node_status_allocatable_cpu_cores) * 100 > 60


        for: 1m


        labels:


          name: CPU


          team: wechat


          severity: Warning


        annotations:


          summary: " {{ $labels.appname }} "


          description: "宿主机CPU使用率超过60%."


          value: "{{ $value }}"


      - alert: HostFilesystem Usage


        expr: (sum(node_filesystem_size_bytes{device!="rootfs"}) - sum(node_filesystem_free_bytes{device!="rootfs"})) / sum(node_filesystem_size_bytes{device!="rootfs"}) >  0.8


        for: 1m


        labels:


          name: Disk


          team: wechat


          severity: Warning


        annotations:


          summary: " {{ $labels.appname }} "


          description: " 宿主机 [ {{ $labels.mountpoint }} ]分区使用超过80%."


          value: "{{ $value }}%"

保存后重新启动Prometheus服务。

2、配置企业微信告警

编写告警模板

图片

修改prometheus-alertmanager的yaml文件,将微信配置挂载进来

图片

登录企业微信,创建机器人

图片

获取api_secret和agent_id

图片

点击我的企业、企业信息,获取corp_id

图片

需要报警的组,获取to_party

图片

修改prometheus-alertmanager的configmap文件

图片

重启alertmanager服务即可,如果需要测试,在告警规则降低阈值即可。

3、配置邮件告警

修改alertmanager的configmap文件

图片​​

最后作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些软件测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

测试文档模板

图片

测试简历模板

图片

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐