VictoriaMetrics

VictoriaMetrics 是一款快速、经济高效且可扩展的监控解决方案和时间序列数据库。

VictoriaMetrics提供了二进制发布、Docker镜像、Snap包以及源代码的形式供用户使用。

VictoriaMetrics的集群版本可以在此处找到。

了解更多关于VictoriaMetrics的关键概念,并按照快速入门指南获得更好的体验。

此外,还有一个用于日志的用户友好型数据库 - VictoriaLogs。

如果您对VictoriaMetrics有任何疑问,请随时在VictoriaMetrics社区的Slack聊天中提问。

如果您需要针对VictoriaMetrics的企业支持,请与我们联系。查看企业套餐中提供的功能。企业版的二进制文件可以从发布页面免费下载和评估。您还可以申请免费试用许可证。

VictoriaMetrics正在以快速的速度进行开发,因此建议定期查看CHANGELOG并进行定期升级。

VictoriaMetrics已经获得了关于数据库软件开发和基于软件的监控服务的安全认证。

在我们的一切工作中,我们采取了严格的安全措施。有关更多详细信息,请参阅我们的安全页面。

## 显著特点

VictoriaMetrics具有以下显著特点:

案例研究和演讲

案例研究:

另请参阅关于VictoriaMetrics的用户文章和演示文稿

操作

安装

要快速尝试VictoriaMetrics,只需下载VictoriaMetrics可执行文件Docker镜像,并使用所需的命令行标志启动它。详细信息请参见快速入门指南

VictoriaMetrics也可以通过以下安装方法安装:

如何启动VictoriaMetrics

以下命令行标志最常用:

  • -storageDataPath - VictoriaMetrics将所有数据存储在此目录中。默认路径为当前工作目录中的victoria-metrics-data
  • -retentionPeriod - 存储数据的保留期。较旧的数据将自动删除。默认保留期为1个月(31天)。最小保留期为24小时或1天。有关详细信息,请参见这些文档

其他标志具有足够好的默认值,因此只有在确实需要时才设置它们。传递-help以查看所有可用标志及其描述和默认值

在初始设置VictoriaMetrics期间,以下文档可能会有帮助:

VictoriaMetrics默认在端口8428上接受Prometheus查询API请求

建议为VictoriaMetrics设置监控

环境变量

所有的VictoriaMetrics组件都允许在yaml配置文件(如-promscrape.config)中引用环境变量, 以及通过%{ENV_VAR}语法在命令行标志中引用环境变量。 例如,如果在VictoriaMetrics启动时存在METRICS_AUTH_KEY=top-secret环境变量, 则-metricsAuthKey=%{METRICS_AUTH_KEY}会自动扩展为-metricsAuthKey=top-secret。这个扩展是由VictoriaMetrics自己执行的。

VictoriaMetrics在启动时递归扩展环境变量中的%{ENV_VAR}引用。 例如,如果BAR=a%{BAZ}BAZ=bc,则FOO=%{BAR}环境变量在启动时扩展为FOO=abc

此外,所有的VictoriaMetrics组件都允许根据以下规则通过环境变量设置标志值:

  • 必须设置-envflag.enable标志。
  • 标志名称中的每个.字符都必须替换为_(例如,-insert.maxQueueDuration <duration>将转换为insert_maxQueueDuration=<duration>)。
  • 对于重复的标志,可以使用将不同值使用,字符连接起来的替代语法作为分隔符(例如,-storageNode <nodeA> -storageNode <nodeB>将转换为storageNode=<nodeA>,<nodeB>)。
  • 可以通过-envflag.prefix标志设置环境变量前缀。例如,如果-envflag.prefix=VM_,那么环境变量必须以VM_开头。

使用Snap包进行配置

VictoriaMetrics的Snap包可在此处获取。

可以使用以下命令设置Snap包的命令行标志:

echo 'FLAGS="-selfScrapeInterval=10s -search.logSlowQueryDuration=20s"' > $SNAP_DATA/var/snap/victor

iametrics/current/extra_flags
snap restart victoriametrics

请勿更改-storageDataPath标志的值,因为Snap包对主机文件系统的访问受到限制。

可以使用文本编辑器更改抓取配置:

vi $SNAP_DATA/var/snap/victoriametrics/current/etc/victoriametrics-scrape-config.yaml

更改后,使用命令curl 127.0.0.1:8428/-/reload触发配置重新读取。

作为Windows服务运行

要将VictoriaMetrics作为Windows服务运行,需要为WinSW创建服务配置,然后根据以下指南安装服务:

  1. 创建服务配置:

     <service>
       <id>VictoriaMetrics</id>
       <name>VictoriaMetrics</name>
       <description>VictoriaMetrics</description>
       <executable>%BASE%\victoria-metrics-windows-amd64-prod.exe"</executable>
    
       <onfailure action="restart" delay="10 sec"/>
       <onfailure action="restart" delay="20 sec"/>
    
       <resetfailure>1 hour</resetfailure>
    
       <arguments>-envflag.enable</arguments>
    
       <priority>Normal</priority>
    
       <stoptimeout>15 sec</stoptimeout>
    
       <stopparentprocessfirst>true</stopparentprocessfirst>
         <startmode>Automatic</startmode>
         <waithint>15 sec</waithint>
         <sleeptime>1 sec</sleeptime>
    
       <logpath>%BASE%\logs</logpath>
       <log mode="roll">
         <sizeThreshold>10240</sizeThreshold>
         <keepFiles>8</keepFiles>
       </log>
    
       <env name="loggerFormat" value="json" />
       <env name="loggerOutput" value="stderr" />
       <env name="promscrape_config" value="C:\Program Files\victoria-metrics\promscrape.yml" />
    
     </service>
    
  2. 按照以下PowerShell中的指南以从提升的PowerShell中运行来安装WinSW:

     winsw install VictoriaMetrics.xml
     Get-Service VictoriaMetrics | Start-Service
    

有关更多详细信息,请参见此问题

TODO

其他内容比较多,参考:

https://github.com/VictoriaMetrics/VictoriaMetrics

chat

详细介绍一下 VictoriaMetrics

截至我知识截止日期(2022年1月),VictoriaMetrics是一个用于处理和存储时间序列数据的开源软件。

它专注于高性能、低资源消耗和易于扩展,特别适用于处理大规模的监控数据。

以下是关于VictoriaMetrics的一些详细介绍:

  1. 时间序列数据库:VictoriaMetrics是一个时间序列数据库,设计用于存储按时间顺序排列的数据,通常用于监控和度量方面的数据。这种数据库类型对于快速、高效地处理大量时间序列数据非常重要。

  2. 高性能和低资源消耗:VictoriaMetrics被设计为高性能、低资源消耗的解决方案。它在处理大量数据时表现出色,并具有较低的硬件和网络资源要求。

  3. 支持Prometheus生态系统:VictoriaMetrics是在Prometheus开源监控系统的基础上发展而来的,并提供对Prometheus的兼容性。这意味着可以无缝地将Prometheus中的数据迁移到VictoriaMetrics中,并利用VictoriaMetrics的性能和扩展性。

  4. 易于部署和扩展:VictoriaMetrics提供了简单的部署方式,可以很容易地与现有的基础架构集成。它支持水平扩展,可以通过添加更多的节点来增加系统的容量和性能。

  5. 支持多种查询语言:VictoriaMetrics支持PromQL(Prometheus查询语言),这是一个用于查询和分析Prometheus数据的功能强大的语言。这使得已经熟悉Prometheus的用户能够无缝过渡到VictoriaMetrics。

  6. 持久性存储:VictoriaMetrics通过使用高效的时间序列数据库技术,将时间序列数据持久地存储在磁盘上,以确保数据在系统重启或故障时不会丢失。

  7. 云原生支持:VictoriaMetrics可以轻松地集成到云原生环境中,例如Kubernetes。这使得它适用于现代化的容器化和微服务架构。

请注意,软件工具的更新和变化可能导致一些信息在我知识截止日期之后已经过时。因此,如果您对VictoriaMetrics的最新信息感兴趣,建议查阅官方文档或项目的最新资料。

VictoriaMetrics 有哪些优缺点?

VictoriaMetrics作为一个时间序列数据库,具有一些优点和缺点,这些可能会根据具体的使用场景和需求而有所不同。

以下是一些常见的优缺点:

优点:

  1. 高性能: VictoriaMetrics被设计为高性能的时间序列数据库,能够快速处理大规模的监控数据,适用于需要快速响应的实时应用。

  2. 低资源消耗: 相对于一些其他时间序列数据库,VictoriaMetrics在处理相同量级的数据时通常需要较少的硬件资源,这使得它更适合于资源受限的环境。

  3. Prometheus兼容性: 由于其与Prometheus的兼容性,用户可以无缝迁移现有的Prometheus数据到VictoriaMetrics,并继续使用PromQL进行查询,同时受益于VictoriaMetrics的性能和扩展性。

  4. 易于部署和扩展: VictoriaMetrics提供了简单的部署方式,可以轻松集成到各种环境中。它还支持水平扩展,通过添加更多的节点,可以提高系统的容量和性能。

  5. 云原生支持: 支持云原生环境,如Kubernetes,使得它适用于现代化的容器化和微服务架构。

缺点:

  1. 社区规模: 相对于一些较早或较知名的时间序列数据库,VictoriaMetrics 的社区规模可能相对较小。这可能导致相对较少的社区支持和文档资源。

  2. 生态系统: 尽管VictoriaMetrics兼容Prometheus,但一些其他时间序列数据库可能具有更丰富的生态系统和插件支持。

  3. 最新性: 如果您对最新特性和更新的需求较高,可能需要定期检查VictoriaMetrics的更新和发布情况,以确保使用的是最新版本。

  4. 学习曲线: 对于那些不熟悉Prometheus或时间序列数据库概念的用户来说,可能需要一些时间来学习和适应。

总体来说,选择使用VictoriaMetrics还是其他时间序列数据库应该基于具体的需求、环境和优先级考虑。

在做决定之前,最好进行实际的性能测试和评估,以确保它满足您的要求。

VictoriaMetrics VS TDEngine

VictoriaMetrics和TDEngine(TD时序数据库)都是用于处理和存储时间序列数据的数据库系统,但它们在设计、特性和用途上有一些不同。

以下是它们之间的一些比较:

1. 设计理念和用途:

  • VictoriaMetrics: 主要设计为一个高性能、低资源消耗的时间序列数据库,特别适用于大规模监控数据。它是Prometheus的后端存储,兼容Prometheus查询语言(PromQL)。
  • TDEngine: 是一个专注于高性能的时序数据库,适用于金融、物联网(IoT)、大数据分析等领域。它具有较好的数据压缩和查询性能。

2. 兼容性:

  • VictoriaMetrics: 兼容Prometheus,可以无缝集成Prometheus数据,并支持PromQL查询语言。
  • TDEngine: 提供SQL查询接口,支持SQL语言,使得用户可以使用熟悉的SQL语法进行查询。

3. 查询语言:

  • VictoriaMetrics: 使用PromQL,适用于监控和度量领域,支持Prometheus生态系统。
  • TDEngine: 使用SQL,更通用,适用于广泛的应用场景,使得它更容易被熟悉SQL的用户采用。

4. 生态系统和插件:

  • VictoriaMetrics: 兼容Prometheus生态系统,因此可以利用Prometheus的监控工具和插件。
  • TDEngine: 在SQL领域,可以受益于更广泛的SQL工具和生态系统。

5. 部署和扩展:

  • VictoriaMetrics: 提供简单的部署方式,支持水平扩展,可以通过添加更多的节点来提高性能和容量。
  • TDEngine: 也支持分布式部署,可以通过添加节点进行扩展。

6. 社区和文档:

  • VictoriaMetrics: 具有相对较小的社区规模,但有一定数量的文档和支持。
  • TDEngine: 在国内有较大的用户社区支持,提供了相应的文档和社区支持。

7. 应用领域:

  • VictoriaMetrics: 主要用于监控和度量,特别是在云原生环境中。
  • TDEngine: 适用于金融、物联网、大数据分析等领域。

选择使用VictoriaMetrics还是TDEngine应该根据具体的需求、技术栈和使用场景进行权衡。

对于监控和度量领域,以及需要Prometheus兼容性的情况下,VictoriaMetrics可能更合适。

对于需要通用的SQL查询和更广泛应用领域的场景,TDEngine可能是一个更好的选择。

参考资料

https://github.com/VictoriaMetrics/VictoriaMetrics