prometheus 远端写存储VictoriaMetrics体验
VictoriaMetrics是快速,经济高效且可扩展的时间序列数据库。它可以用作Prometheus的长期远程存储(==不支持远端读,但支持通过grafana读取==),使用go 语言编写。可以可以通过二进制文件一次编译,到处部署
github地址(https://github.com/VictoriaMetrics/VictoriaMetrics)
优点:
支持Prometheus查询API,因此可以在Grafana中用作Prometheus的替代产品。VictoriaMetrics实现了受PromQL启发的MetricsQL查询语言。
插入和查询的高性能和良好的可伸缩性。优于InfluxDB和TimescaleDB 20倍。
在处理数百万个的时间序列(又称高基数)时,使用的内存比InfluxDB少10倍。
高度的数据压缩,因此与TimescaleDB相比,有限的存储空间中多可以塞满70倍的数据点。
针对高延迟IO和低IOPS(AWS,Google Cloud,Microsoft Azure等中的HDD和网络存储)的存储进行了优化。
运维优势:
- VictoriaMetrics由一个没有外部依赖性的小型可执行文件组成。
- 所有配置都是通过带有合理默认值的显式命令行标志完成的
- 所有数据都存储在-storageDataPath标志指向的单个目录中。
- 使用vmbackup / vmrestore从即时快照轻松快速地备份到S3或GCS。
支持多种协议的数据抓取
- prometheus exporter
- prometheus 远端写api
- 基于HTTP,TCP和UDP的InfluxDB协议。
- Graphite plaintext protocol
- OpenTSDB put message
- HTTP OpenTSDB /api/put requests
- /api/v1/import.
- 任意CSV数据。
开源的集群版本
部署集群版本:整体结构图:
可以看到在整体的结构中。vmselect 和vminsert 均为无状态服务。storage 是存储服务。可以部署在虚拟机中
部署方式:
使用helm 一键部署
镜像准备:
下载vmcluser 三个组件的二进制包
[root@k8s-master01 ~]# tar zxvf victoria-metrics-v1.34.7-cluster.tar.gz
构建images
vmselect 和vminsert 相同。修改二进制文件即可
FROM alpine:3
RUN echo "http://mirrors.aliyun.com/alpine/v3.8/main" > /etc/apk/repositories \
&& apk update \
&& apk add --no-cache tzdata \
&& apk add --no-cache curl \
&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo "Asia/Shanghai" > /etc/timezone \
&& apk del tzdata \
&& rm -rf /var/cache/apk/* \
&& rm -rf /root/.cache \
&& rm -rf /tmp/*
WORKDIR /
COPY vmselect /bin/
ENTRYPOINT ["/bin/vmselect"]
推送到harbor私服
docker build . -t vmselect
docker tag vmselect registry.rong360.com/base/vmselect:v1.34.7
docker push registry.rong360.com/base/vmselect:v1.34.7
部署步骤:
master节点安装git,helm
下载vm-cluster相关charts
[root@k8s-master01 ~]# git clone https://github.com/VictoriaMetrics/helm-charts.git
3.修改相关配置 修改helm-charts/charts/victoria-metrics-cluster/values.yaml 中 vmstorage.enable 为false 修改vmselect,vminsert 中image.repository 和image.tag 为harbor 私服的地址和tag
安装vm-cluster到集群中,修改select 和 insert 的svc 类型为headless (非必须)
[root@k8s-master01 victoria-metrics-cluster]# helm install prod -n monitoring .
修改prometheus 实例中远程写配置(prometheus-prometheus.yaml)
remoteWrite:
- url: http://vm-cluster-vminsert.monitoring.svc:8480/insert/0/prometheus/
在虚拟机中部署storage 节点,二进制文件, 使用supervisor管理即可
修改vmselect和vminsert节点的storeage配置, 指向虚拟机的storage节点
修改grafana 中读取配置
因为线上grafana 位于集群外部。需要使用nginx 接入代理vmselect 和insert。参考例子
server {
listen 80;
server_name vm.rong360.com;
location ^~/select/ {
proxy_pass http://vm-select;
}
location ^~/insert/ {
proxy_pass http://vm-insert;
}
location ^~/snapshot/ {
proxy_pass http://vm-storage;
}
}
grafana 的配置实例“http://vm.rong360.com/insert/0/prometheus/”
来源 https://mp.weixin.qq.com/s?__biz=MzI5NTU5MDgzOQ==&mid=2247483669&idx=1&sn=67fa08b4663f6f07a553f8d471d3df2b&chksm=ec500fcddb2786db351154ed64f488adef3f32e25bd58f6822dcf35af75ff265987f341c18e8&mpshare=1&scene=1&srcid=0324j4NpZPW9HwIvUequeWJd&sharer_sharetime=1648104335060&sharer_shareid=b37f669367a61860107a8412c2f3cc74#rd
相关文章