VictoriaMetrics是快速,經(jīng)濟(jì)高效且可擴(kuò)展的時間序列數(shù)據(jù)庫。它可以用作Prometheus的長期遠(yuǎn)程存儲(==不支持遠(yuǎn)端讀,但支持通過grafana讀取==),使用go 語言編寫香嗓÷宀ǎ可以可以通過二進(jìn)制文件一次編譯,到處部署
優(yōu)點(diǎn):
- 支持Prometheus查詢API塞蹭,因此可以在Grafana中用作Prometheus的替代產(chǎn)品匹表。VictoriaMetrics實(shí)現(xiàn)了受PromQL啟發(fā)的MetricsQL查詢語言门坷。
- 插入和查詢的高性能和良好的可伸縮性。優(yōu)于InfluxDB和TimescaleDB 20倍袍镀。
- 在處理數(shù)百萬個唯一的時間序列(又稱高基數(shù))時默蚌,使用的內(nèi)存比InfluxDB少10倍。
- 高度的數(shù)據(jù)壓縮苇羡,因此與TimescaleDB相比敏簿,有限的存儲空間中最多可以塞滿70倍的數(shù)據(jù)點(diǎn)。
- 針對高延遲IO和低IOPS(AWS宣虾,Google Cloud,Microsoft Azure等中的HDD和網(wǎng)絡(luò)存儲)的存儲進(jìn)行了優(yōu)化温数。
- 運(yùn)維優(yōu)勢:
- VictoriaMetrics由一個沒有外部依賴性的小型可執(zhí)行文件組成绣硝。
- 所有配置都是通過帶有合理默認(rèn)值的顯式命令行標(biāo)志完成的
- 所有數(shù)據(jù)都存儲在-storageDataPath標(biāo)志指向的單個目錄中。
- 使用vmbackup / vmrestore從即時快照輕松快速地備份到S3或GCS撑刺。
- 支持多種協(xié)議的數(shù)據(jù)抓取
- prometheus exporter
- prometheus 遠(yuǎn)端寫api
- 基于HTTP鹉胖,TCP和UDP的InfluxDB協(xié)議。
- Graphite plaintext protocol
- OpenTSDB put message
- HTTP OpenTSDB /api/put requests
- /api/v1/import.
- 任意CSV數(shù)據(jù)。
- 開源的集群版本
部署集群版本:
整體結(jié)構(gòu)圖:
可以看到在整體的結(jié)構(gòu)中甫菠。vmselect 和vminsert 均為無狀態(tài)服務(wù)挠铲。storage 是存儲服務(wù)。 可以部署在虛擬機(jī)中
部署方式:
使用helm 一鍵部署
鏡像準(zhǔn)備:
- 下載vmcluser 三個組件的二進(jìn)制包
[root@k8s-master01 ~]# wget "https://github-production-release-asset-2e65be.s3.amazonaws.com/150954997/1e708100-7750-11ea-9da2-4460f46fa7be?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20200408%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200408T063357Z&X-Amz-Expires=300&X-Amz-Signature=839c0ab1a40df2e7eb512cd599c9edf03b7b241399d8eb8e7661d714b99ce158&X-Amz-SignedHeaders=host&actor_id=21969438&response-content-disposition=attachment%3B%20filename%3Dvictoria-metrics-v1.34.7-cluster.tar.gz&response-content-type=application%2Foctet-stream -o victoria-metrics-v1.34.7-cluster.tar.gz"
[root@k8s-master01 ~]# tar zxvf victoria-metrics-v1.34.7-cluster.tar.gz
- 構(gòu)建images
vmselect 和vminsert 相同寂诱。修改二進(jìn)制文件即可
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節(jié)點(diǎn)安裝git拂苹,helm
- 下載vm-cluster相關(guān)charts
[root@k8s-master01 ~]# git clone https://github.com/VictoriaMetrics/helm-charts.git
- 修改相關(guān)配置
- 修改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 實(shí)例中遠(yuǎn)程寫配置(prometheus-prometheus.yaml)
remoteWrite:
- url: http://vm-cluster-vminsert.monitoring.svc:8480/insert/0/prometheus/
在虛擬機(jī)中部署storage 節(jié)點(diǎn)痰洒,二進(jìn)制文件瓢棒, 使用supervisor管理即可
修改grafana 中讀取配置
因?yàn)榫€上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 的配置實(shí)例“http://vm.rong360.com/insert/0/prometheus/”