VictoriaMetrics

概念

介绍

VictoriaMetrics,是一个快速高效、经济并且可扩展的监控解决方案和时序数据库

本文均用VM简称VictoriaMetric

作用

用于作为prometheus的长期储存方案,代替prometheus存储监控采集的数据

优点
  • 远程存储:可作为单一或多个Prometheus的远程存储
  • 安装简单:单节点架构一条命令就可以部署完毕
  • Grafana兼容:VM可替换Grafana的Prometheus数据源(Grafana:一款用于prometheus的图形界面)
  • 低内存:更低的内存占用
  • 高压缩比:提供存储数据高压缩
  • 高性能:查询性能比Prometheus更快
缺点
  • 图形界面简陋,功能少
  • 告警功能需要单独配置vmalert,而且vmalert只有api管理和查看,暂时没用图形界面
  • 没有类似Prometheus的WAL日志,突然故障可能会丢失部分数据
分类

分为单机版和集群版

  • 单节点版:直接运行二进制文件即可启动,简单容易维护,但不支持告警
  • 集群版:支持数据水平拆分,把功能拆分为vmstorage、 vminsert、vmselect,如果要替换Prometheus,还需要vmagent、vmalert
官网

https://victoriametrics.com 

术语

在时间序列(time-series)中的每一个点称为一个样本(sample),样本(sample)由以下三部分

  • 指标(metric):指标名和一组描述当前样本特征的labelsets唯一标识
  • 时间戳(timestamp):一个精确的时间戳,一般由采集时间决定(VM为秒,Prometheus为毫秒)
  • 样本值(value):当前样本的值

关于target:

每一个监控目标称为一个target,如:单个node-exporter、mysqld-exporter等等。

VM单节点版本

本文着重使用单节点方式

结构

服务名称        IPPORT
node- exporter        172.16.12.145        9100        
prometheus        172.16.12.1449090
VM8428        
Grafana3000

 

VM单节点版本有两种使用方式,一种是作为prometheus的监控数据数据库,另一种是直接代替prometheus自己工作 

prometheus部署

配置prometheus和node- exporter节点

配置node- exporter服务器
#将压缩包文件传入到/usr路径下
tar -xvf node_exporter-1.8.0.linux-arm64.tar -C /usr
#更改文件夹名
mv node_exporter-1.8.0.linux-arm64 node_exporter
#进入文件夹
cd node_exporter
#启动服务并输入到日志文件中
nohup ./node_exporter &  #开头nohup为往日志文件nohup中输入
配置prometheus服务器

为什么要部署prometheus

先部署好prometheus和监控节点后,才能安装VM使其为prometheus工作或者代替

1.解压安装包
tar -xvf prometheus-2.51.2.linux-arm64.tar -C /usr
 2.更改文件夹名
mv prometheus-2.51.2.linux-arm64 prometheus
3.进入文件夹
cd prometheus
4.修改配置文件
vim prometheus.xml

修改为以下内容

global:
  scrape_interval:     15s
scrape_configs:
  - job_name: 'linux'
    static_configs:
    - targets: ['192.168.1.100:9100']
    - targets: ['192.168.1.101:9100']
    # 通过relabeling替换从__address__中提取IP信息,主要是为了后面验证VM是否兼容relabeling
    relabel_configs: 
    - source_labels:  ['__address__']
      regex: '(.*):(.*)'
      action: replace
      target_label: 'ip'
      replacement: '\${1}'
5.检查配置文件格式
#必须在prometheus文件夹下运行
./promtool check config prometheus.yml
6.启动prometheus服务并存入日志文件
nohup ./prometheus --config.file="prometheus.yml" --storage.tsdb.retention=30d --web.enable-lifecycle &
7.进入浏览器查看prometheus运行情况

http://172.16.12.144:9090/targets

Garfana部署
1.下载安装

官网下载地址

https://grafana.com/grafana/download/9.2.3?edition=oss&pg=graf&platform=linux&plcm
t=deploy-box-1

ARM64 for Centos7 

sudo yum install -y https://dl.grafana.com/oss/release/grafana-9.2.3-1.armhfp.rpm
2.启动服务
systemctl start grafana-server
3.浏览器访问

http://172.16.12.144:3000

账号密码默认:admin/admin

4.添加界面

添加数据并填入http://172.16.12.144:9090

VM单节点作为远程部署 

配置VM服务器

安装在prometheus所在的服务器上

1.解压安装包
tar -xvf victoria-metrics-linux-arm64-v1.101.0.tar -C /usr
 2.更改文件夹名
mv victoria-metrics-linux-arm64-v1.101.0 victoria-metrics
3.进入文件夹
cd victoria-metrics
4.启动服务
nohup ./victoria-metrics-prod -retentionPeriod=30d -storageDataPath=data &
5.修改prometheus的配置文件
global:
  scrape_interval:     15s
scrape_configs:
  - job_name: 'linux'
    static_configs:
    - targets: ['192.168.1.100:9100']
    - targets: ['192.168.1.101:9100']
    relabel_configs:   # 通过relabeling替换从__address__中提取IP信息
    - source_labels:  ['__address__']
      regex: '(.*):(.*)'
      action: replace
      target_label: 'ip'
      replacement: '\${1}'
remote_write:    # 存储到远程VM存储(这里只是示例,所以Prometheus和VM在一台机子上)
  - url: http://127.0.0.1:8428/api/v1/write
    queue_config:    # 如果Prometheus抓取指标很大,可以加调整queue,但是会提高内存占用
      max_samples_per_send: 10000
      capacity: 20000
      max_shards: 30  
6.重启prometheus服务
kill -HUP `pidof prometheus`
7.修改Grafana数据源

将http://172.16.12.144:9090端口修改为8428

正常显示

 VM直接代替prometheus
1.将prometheus的配置文件复制到VM文件夹下
 cp /usr/prometheus/prometheus.yml /usr/victoria-metrics/
2.编辑配置文件
vim /usr/victoria-metrics/prometheus.xml

可以直接使用prometheus的文件,有的版本可能需要注释掉部分内容

# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
scrape_configs:
  - job_name: 'linux'
    static_configs:
    - targets: ['172.16.12.145:9100']
    - targets: ['172.16.12.146:9100']
    relabel_configs:
    - source_labels: ['__address__']
      regex: '(.*):(.*)'
      action: replace
      target_label: 'ip'
      replacement: '\${1}'
#以下内容有的版本需要注释
#remote_write:
#  - url: http://172.16.12.144:8428/api/v1/write
#    queue_config:
#      max_samples_per_send: 10000
#      capacity: 20000
#      max_shards: 30
 3.关闭prometheus
kill `pidof victoria-metrics-prod`
4.启动VM服务
nohup ./victoria-metrics-prod -retentionPeriod=30d -storageDataPath=data -promscrape.config=prometheus.yml

此时查看VM日志文件nohup 

已经运行并显示有两个监控节点

进入Gragana界面正常运行,此时VM已经彻底代替prometheus 

VM存储目录

图形界面

VM单节点版自带一个web的图形界面,叫vmui,目前还是Beta版本,功能比较简单,只能针

对当前节点执行样本数据查询

vmui已经集成在VM单节点版的二进制文件里,直接访问即可

http://172.16.12.144:8428

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

matlab使用1-基础

matlab使用1-基础 文章目录 matlab使用1-基础1. 界面介绍2. matlab变量3. matlab数据类型4. matlab矩阵操作5. matlab程序结构5.1 顺序结构5.2 循环结构5.3 分支结构 1. 界面介绍 命令行窗口输入:clc 可清除命令行窗口command window的内容 clc命令行窗口输入&…

C++ 多态性

一 多态性的分类 编译时的多态 函数重载 运算符重载 运行时的多态 虚函数 1 运算符重载的引入 使用C编写程序时,我们不仅要使用基本数据类型,还要设计新的数据类型-------类类型。 一般情况下,基本数据类型的运算都是运算符来表达&#x…

10G UDP协议栈 IP层设计-(6)IP TX模块

一、模块功能 1、上层数据封装IP报文头部 2、计算首部校验和 二、首部校验和计算方法 在发送方,先把IP数据报首部划分为许多16位字的序列,并把检验和字段置零。用反码算术运算把所有16位字相加后,将得到的和的反码写入检验和字段。接收方收…

Docker安装Redis,并在 Visual Studio Code 中使用它

Docker安装Redis 查找Redis docker search Redis完整结果 PS C:\Users\cheng> docker search Redis NAME DESCRIPTION STARS OFFICIAL redis Redis is an open …

【强化学习-Mode-Free DRL】深度强化学习如何选择合适的算法?DQN、DDPG、A3C等经典算法Mode-Free DRL算法的四个核心改进方向

【强化学习-DRL】深度强化学习如何选择合适的算法? 引言:本文第一节先对DRL的脉络进行简要介绍,引出Mode-Free DRL。第二节对Mode-Free DRL的两种分类进行简要介绍,并对三种经典的DQL算法给出其交叉分类情况;第三节对…

Excel如何设置密码保护【图文详情】

文章目录 前言一、Excel如何设置密码保护?二、Excel如何取消密码保护?总结 前言 在软件项目开发过程中,会输出很多技术文档,其中也包括保密级别很高的服务器账号Excel文档。为了确保服务器账号相关的Excel文档的安全性&#xff0…

超级简单的地图操作工具开发可疑应急,地图画点,画线,画区域,获取地图经纬度等

使用echars的地图画点,画线,画区域,获取地图经纬度等 解压密码:10086007 地图也是用临时的bmap.js和china.js纯离线二选一 一共就这么多文件 画点,画线,画区域 点击地图获取经纬度-打印到控制台,这样就能渲染航迹,多变形,结合其他算法算圆等等操作 下载资源:https://download…

C# OpenCvSharp DNN 黑白老照片上色

C# OpenCvSharp DNN 黑白老照片上色 目录 效果 项目 代码 下载 参考 效果 项目 代码 using OpenCvSharp; using OpenCvSharp.Extensions; using System; using System.Diagnostics; using System.Drawing; using System.Drawing.Imaging; using System.Runtime.InteropS…

CVPR2022人脸识别Partial FC论文及代码学习笔记

论文链接:https://openaccess.thecvf.com/content/CVPR2022/papers/An_Killing_Two_Birds_With_One_Stone_Efficient_and_Robust_Training_CVPR_2022_paper.pdf 代码链接:insightface/recognition/arcface_torch at master deepinsight/insightface G…

leetcode——链表的中间节点

876. 链表的中间结点 - 力扣(LeetCode) 链表的中间节点是一个简单的链表OJ。我们要返回中间节点有两种情况:节点数为奇数和节点数是偶数。如果是奇数则直接返回中间节点,如果是偶数则返回第二个中间节点。 这道题的解题思路是&a…

【JS面试题】this

this取什么值,是在函数执行的时候确定的,不是在函数定义的时候确定的! this的6种使用场景: ① 在普通函数中使用:返回window对象 ② 使用call apply bind 调用:绑定的是哪个对象就返回哪个对象 ③ 在对象…

LeetCode2390从字符串中移除星号

题目描述 给你一个包含若干星号 * 的字符串 s 。在一步操作中,你可以:选中 s 中的一个星号。移除星号 左侧 最近的那个 非星号 字符,并移除该星号自身。返回移除 所有 星号之后的字符串。注意:生成的输入保证总是可以执行题面中描…

电子邮箱是什么?怎么申请一个电子邮箱?

电子邮箱是我们沟通的工具,细分为免费版电子邮箱和付费版电子邮箱。怎么申请一个属于自己的电子邮箱?今天小编就分享一下电子邮箱注册教程,手把手教您注册一个电子邮箱。 一、电子邮箱的定义 电子邮箱,简称邮箱,是一…

【Java基础】权限修饰符

一个java文件中只能有一个被public修饰的类,且该类名与java文件的名字一样 同一个类同一个包不同包有继承不同包无继承private✔❌❌❌默认✔✔❌❌protected✔✔✔❌public✔✔✔✔

景源畅信数字:抖音热门赛道有哪些?

抖音,作为当下流行的短视频平台,吸引了无数用户和创作者。热门赛道,即平台上受关注度高、活跃用户多的内容领域,是许多内容创作者关注的焦点。这些赛道不仅反映了用户的兴趣偏好,也指引着创作的方向。 一、美食制作与分…

产品新说:应急定界 | 如何在运维/技术支持领域中应对突发故障?

一、简介 应急定界的方案旨在帮助运维人员以业务故障驱动为起点,第一时间的快速恢复业务。该场景的条件基础是通过构建一体化监控告警平台,纳管应用与基础组件,提供业务系统监测、及时告警、排查分析能。通过告警、指标、日志、链路等重要运…

C语言中数组与指针的区别

一. 简介 本文学习了 C语言中数组与指针的区别。这样的话,可以在编写C代码时规避掉出错的问题。 二. C语言中数组与指针的区别 1. 数组 定义字符串数组时,必须让编译器知道需要多少空间。 一种方法是用足够空间的数组存储字符串。例如如下&#xf…

多表查询练习题

1、创建好数据库 create database text use text --学生表 (students) CREATE TABLE students ( student_id INT PRIMARY KEY, name VARCHAR(50), age INT, major VARCHAR(50) );--课程表 (courses) CREATE TABLE courses ( course_id INT PRIMARY KEY, course_name V…

Linux基础之进程-进程状态

目录 一、进程状态 1.1 什么是进程状态 1.2 运行状态 1.2 阻塞状态 1.3 挂起状态 二、Linux操作系统上具体的进程状态 2.1 状态 2.2 R 和 S 状态的查看 2.3 后台进程和前台进程 2.4 休眠状态和深度休眠状态 一、进程状态 1.1 什么是进程状态 首先我们知道我们的操作系…

Java学习47-Java 流(Stream)、文件(File)和IO - 其他流的使用

1.标准输入流System.in/标准输出流System.out System.in : 标准的输入流,默认从键盘输入 System.out: 标准的输出流,默认从显示器输出(理解为控制台输出) System.setOut()方法和 System.setIn()方法(结合下面介绍的打印流举例) …