是时候扔掉Prometheus了,VictoriaMetrics全家桶入门与K8S部署

news/2025/1/8 19:17:02/文章来源:https://www.cnblogs.com/starsliao/p/18522794

架构

在这里插入图片描述

部署文件

项目仓库:https://github.com/starsliao/VictoriaMetrics

  • 本次将会部署以下组件:
  • cd monit/master && kubectl apply -f .
 master├── 0.vm-single.yaml├── 1.kube-state-metrics_v2.12.0.yaml├── 1.node-exporter.yaml├── 1.vmagent.yaml├── 2.vmalert.yaml├── 3.alertmanager.yaml├── 4.alert-webhook.yaml└── 5.grafana.yaml
  1. vmagent是采集组件,负责采集指标;采集后远程写入VictoriaMetrics时序数据库。
  2. vmalert读取告警规则后,从VM查询数据进行评估,后发送给alertmanager进行告警;记录规则也会远程写入VM。
  3. vmagent + vmalert + VictoriaMetrics 组成了完整的Prometheus功能 + 远程存储。
  4. kube-state-metrics和node-exporter分别是采集K8S和主机指标的导出器。
  5. alert-webhook是Flask写的一个推送消息的组件,可以把alertmanager的告警根据路由规则推送给企微、钉钉、飞书。

快速安装(服务端)

git clone https://github.com/starsliao/VictoriaMetrics.git
cd VictoriaMetrics
kubectl apply -f .
  • 部署yaml文件后,以上所有组件将安装到K8S的monit命名空间,并接入各个组件、K8S和节点的监控。
  • 你只需要登陆grafana配置数据源并导入看板接口实现K8S与节点的监控。
  • 安装后以上所有组件默认接入到监控与自动发现,并且根据告警规则进行告警推送。
  • 以下是各yaml文件的详细介绍描述,让您不仅仅是安装好VictoriaMetrics全家桶,还能明明白白的了解每个组件的关联、配置与作用。

部署(服务端)详细说明

VictoriaMetrics

  • 时序数据库,存储所有的指标信息;可水平扩容的本地全量持久化存储方案。

  • 对于低于每秒一百万个数据点的摄取率,官方建议使用单节点版本而不是集群版本。单节点版本可根据 CPU、内存和可用存储空间的数量进行扩展。单节点版本比集群版本更容易配置和操作,所以在使用集群版本之前要三思而后行。

  • kubectl apply -f 0.vm-single.yaml

  • YAML文件注意事项:

    1. -retentionPeriod=30d
      • 数据存储时长
    2. -httpAuth.username=ops
      • 数据库账号设置
    3. -httpAuth.password=wEFHr41Pa
      • 数据库密码设置
    4. resources
      • K8S资源限制
    5. storageClassName: local-path
      • PV,PVC配置(当前使用本地主机存储,使用其它类型外部存储的请根据实际情况调整)
      • 根据实际情况修改使用的storageClassName名称
    6. path: /k3s/data/vm-single
      • 本地主机存储的本地路径,需提前创建目录
    7. nodeSelectorTerms
      • 根据实际情况修改本地主机存储的节点名
    8. storage
      • 存储大小

node-exporter

  • 采集Linux组件的指标。
  • vmagent已经配置JOB自动发现资源。
    kubectl apply -f 1.node-exporter.yaml

kube-state-metrics

  • 采集K8S的指标。
  • vmagent已经配置JOB自动发现资源。
    kubectl apply -f 1.kube-state-metrics_v2.12.0.yaml

vmagent

  • 负责对配置或者自动发现的JOB进行pull方式采集,也支持接收push进来的指标。

  • kubectl apply -f 1.vmagent.yaml

  • YAML文件注意事项:

    1. ConfigMap

      • 兼容Prometheus的配置:采集间隔,JOB的配置(已经配置好了监控K8S和Node的支持自动发现的JOB)
      • external_labels是Prometheus的外部系统标签,用于多个Prometheus接入同一个VictoriaMetrics时,区分不同的Prometheus。每个vmagent都必须配置,key是origin_prometheus,value是该vmagent的名称。
    2. remoteWrite.url

      • 远程写url,注意修改了vm存储的账号密码这里要同步修改。
      • 如果服务端的vmagent和VM部署在同一个K8S下,url使用service地址,无需修改。
    3. resources

      • K8S资源限制

vmalert

  • 读取告警规则,并查询VM时序数据库,触发告警则推送到alertmanager。

  • 查询记录规则,并写入VM时序数据库。

  • kubectl apply -f 2.vmalert.yaml

  • YAML文件注意事项:

    1. ConfigMap
      • 兼容Prometheus的rule配置:各类告警规则,记录规则(已经配置好了监控K8S和Node的告警规则)
      • rule规则中:alert是告警的名称,annotations.at是告警时@的人,annotations.description是告警的内容.
    2. -datasource.url
      • 查询的VM时序数据库地址
    3. -notifier.url
      • 通知的alertmanager地址
    4. -remoteWrite.url
      • 写入的VM时序数据库地址
    5. resources
      • K8S资源限制

alertmanager

  • 接收触发的告警,并根据条件路由到不同的通知服务。
  • kubectl apply -f 3.alertmanager.yaml
  • YAML文件注意事项:
    1. ConfigMap
      • 标准的alertmanager配置,注意webhook地址要配置alert-webhook的url。
      • alert-webhook的url的格式:
      • http://alert-webhook.monit/node/ddkey=钉钉群机器人ID
      • http://alert-webhook.monit/node/wckey=企微群机器人ID
    2. resources
      • K8S资源限制

alert-webhook

  • 通知服务,接收alertmanager推送的告警信息,再推送到企微或者钉钉。
  • 推送的内容为告警规则的:alertnamedescription
  • kubectl apply -f 4.alert-webhook.yaml
  • YAML文件注意事项:
    1. ALERTMANAGER_URL
      • alertmanager的外部访问URL,用于收到告警后可以点击进入告警屏蔽操作页面。
    2. DEFAULT_AT
      • 当告警规则没有配置@的人的时候,使用的默认@的人。

grafana

  • 展示告警数据的看板,请配置VM作为数据源,并导入K8S和Node的看板。
  • kubectl apply -f 5.grafana.yaml
  • 看板:https://grafana.com/orgs/starsliao/dashboards
  • YAML文件注意事项:
    1. GF_SECURITY_ADMIN_USER
      • 登录账号设置
    2. GF_SECURITY_ADMIN_PASSWORD
      • 等了密码设置
    3. resources
      • K8S资源限制
    4. storageClassName: local-path
      • PV,PVC配置(当前使用本地主机存储,使用其它类型外部存储的请根据实际情况调整)
      • 根据实际情况修改使用的storageClassName名称
    5. path: /k3s/data/grafana
      • 本地主机存储的本地路径,需提前创建目录
    6. nodeSelectorTerms
      • 根据实际情况修改本地主机存储的节点名
    7. storage
      • 存储大小

部署(客户端)

  • K8S部署
    cd monit/client && kubectl apply -f .
    

部署(客户端)详细说明

vmagent

  • 负责对配置或者自动发现的JOB进行pull方式采集,也支持接收push进来的指标。

  • kubectl apply -f 0.vmagent.yaml

  • YAML文件注意事项:

    1. ConfigMap
      • 兼容Prometheus的配置:采集间隔,JOB配置
      • external_labels是Prometheus的外部系统标签,用于多个Prometheus接入同一个VictoriaMetrics时,区分不同的Prometheus。每个vmagent都必须配置,key是origin_prometheus,value是该vmagent的名称。
    2. remoteWrite.url
      • 远程写url,注意修改了VM存储的账号密码这里要同步修改。
      • 这是客户端连接VM的url,注意网络通讯正常。
    3. resources
      • K8S资源限制

node-exporter

  • 采集Linux组件的指标。
  • vmagent已经配置JOB自动发现资源。
    kubectl apply -f 1.node-exporter.yaml

kube-state-metrics

  • 采集K8S的指标。
  • vmagent已经配置JOB自动发现资源。
    kubectl apply -f 1.kube-state-metrics_v2.12.0.yaml

客户端主动push指标到vmagent

  • 针对vmagent无法请求到客户端的情况,客户端可以通过curl获取自身指标,然后推送到vmagent。

    # URI中传入3个标签:job,instance,origin_prometheus
    # 命令写入到crontab,每分钟执行一次。
    curl -s http://localhost:9100/metrics | curl --data-binary @- http://10.0.0.26:8429/api/v1/import/prometheus/metrics/job/node-exporter/instance/10.0.0.26:9100/origin_prometheus/node-push
    # 调试
    while true; do curl -s http://localhost:9100/metrics | curl --data-binary @- http://10.0.0.26:8429/api/v1/import/prometheus/metrics/job/node-exporter/instance/10.0.0.26:9100/origin_prometheus/node-push; sleep 15; done
    

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/825994.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于 Astro 与 Directus 的新时代 JAMStack 博客实践

最近投入了大量摸鱼时间重构博客。现在大概告一段落了,向大家介绍一下整体的技术选型和具体实现的简要思路。 TLDR:JAMStack 实践,使用最新最潮的前端元框架 Astro,魔改 Astro Paper 主题,搭配 Headless CMS Directus,直通对接思源笔记内容同步,自建 SeaweedFS 分布式文…

【CodeForces训练记录】Codeforces Round 984 (Div. 3)

训练情况赛后反思 A题最简单的题愣神了,浪费了几分钟,其他方面正常表现 A题 相邻的两个差绝对值不能出现除了 \(5\) 和 \(7\) 以外的,直接模拟即可。 #include <bits/stdc++.h> #define int long longusing namespace std;void solve(){int n; cin>>n;vector<…

高级语言程序设计第五次作业

没清楚题目的要求改了好几次只是单纯的把原来的程序改了一下,应该是没错,毕竟输出好几个都是对的用了条件选择才写出来,不知道有没有其他的办法打了好久的代码,感觉有点繁琐这题没啥太大问题这题也没啥问题 ![](https://img2024.cnblogs.com/blog/3525374/202411/3525374-2…

Ubuntu插入移动硬盘后提示Wrong fs type,bad option,bad superblock on /dev

没有被成功挂载导致的,打开 工具——磁盘500G是我的移动硬盘,点击设置——编辑挂载选项,关闭[用户会话默认值]后,确定即可。重新拔插移动硬盘即可。

解决zabbix图形化中文乱码问题

1. windows控制中心选择要替换的ttf的字体复制到单独目录。2. dnf install lrzsz #安装rz命令,方便快速上传字体文件 3. cd /usr/share/fonts/dejavu-sans-fonts/ #进入字体文件所在目录 4. rz -E #上传Windows上找到的ttf字体文件5. cp DejaVuSans.ttf DejaVuSans.ttf.back …

原教旨冯诺依曼到存算的距离

冯诺伊曼架构和存算不是对立的概念 从智能角度证明存算架构力度远远不够存算针对的是存储和计算关系,冯诺依曼架构针对的是程序和数据都要存储,二者重心不一样因此不是对立的概念。 如果按原教旨主义理解冯诺依曼架构,就要追溯到 《First Draft of a Report on the EDVAC[1]…

[MRCTF2020]你传你呢

题目链接:https://buuoj.cn/challenges#[MRCTF2020]你传你🐎呢 打开环境后如下所示。可以看到,这是一道文件上传题,直接对可上传的文件类型进行 fuzzing。通过 fuzzing 发现,可以上传 .jpg、.html、.htaccess 文件,PHP 相关的文件均无法上传。 因此,可以选择上传 .htac…

Deswing :图形化Java反序列化利用工具

原创 GSDK安全团队免责声明 工具仅供安全研究与学习之用,若将工具做其他用途,由使用者承担全部法律及连带责任,作者及发布者不承担任何法律及连带责任。信息及工具收集于互联网,真实性及安全性自测!!!项目地址 https://github.com/0ofo/Deswing项目介绍 这是一个Java反序…

【Linux安全】Shellcoding

原创 haidragon 安全狗的自我修养“面向安全专业人员的 Linux Shellcoding” 今天我们将学习 Linux Shellcoding 并学习实践知识。 shell代码 编写 shellcode 是了解有关汇编语言以及程序如何与操作系统交互的更多信息的好方法。 为什么红队成员和渗透测试人员编写 shellcode?…

[极客大挑战 2019]Http

题目链接:https://buuoj.cn/challenges#[极客大挑战 2019]Http。 访问环境如下。该页面的响应包如下。 HTTP/1.1 200 OK Date: Wed, 23 Oct 2024 16:21:45 GMT Server: Apache/2.2.15 (CentOS) X-Powered-By: PHP/5.3.3 Content-Length: 4065 Connection: close Content-Type:…

Matlab 2024下载与安装(包含授权激活)

1、安装包Matlab 2024 B: 链接:https://pan.quark.cn/s/f56eda425e79 提取码:daQZ Matlab 2023B: 链接:https://pan.quark.cn/s/6b597a439f49 提取码:c3XR Matlab R2022 a: 链接:https://pan.quark.cn/s/4a8cf5260d20 提取码:QyKG 2、安装教程 1) 解压压缩包文件…