降本增效 - VGF 構建輕量高性能日志管理平臺

VFG 技術架構

Filebeat 接收Syslog ,并進行日志分段,VictoriaLogs 持久化存儲日志 ,Grafana 可視化、數據查詢、告警、數據導出。

為什么要用VictoriaLogs ?

  • 與Elasticsearch /Grafana Loki相比幾十倍的CPU/內存/存儲資源占用的差距,能極大的節省硬件資源。

  • VGF可以實現ELK的Web查詢、日志壓縮存儲、syslog 日志接收。

簡介

  • VictoriaLogs 兼容支持多種數據輸入軟件,Filebeat 也支持多種數據輸入。

  • VictoriaLogs 的Web UI很簡陋,所以要用Grafana。

  • VictoriaLogs 是HTTP訪問是無認證的,需要套其他軟件來實現。(默認端口9428)

  • VictoriaLogs 的數據過期時間是全局的,所以如果有需求,只能部署多個實例。

  • Filebeat 相對Logstash 性能更好,也比VictoriaLogs 自帶的Syslog輸入功能更多。

Docker 國內安裝

https://mirror.nju.edu.cn/mirrorz-help/docker-ce/?mirror=NJU

Docker Hub國內加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

部署VictoriaLogs

?

創建 victoria-logs-data 文件夾

?

docker run -d --restart always \-p 9428:9428 \-v ./victoria-logs-data:/victoria-logs-data \--name victoria-logs-syslog-songxwn.com \docker.io/victoriametrics/victoria-logs:latest \--retentionPeriod=365d# by songxwn.com

?

  • 9428/tcp 對外HTTP訪問

  • 數據保留365天

  • ./victoria-logs-data 為存儲目錄

部署Grafana

docker run -d --name=grafana -p 3000:3000 \-e GF_INSTALL_PLUGINS=victoriametrics-logs-datasource \--name Grafana \grafana/grafana-enterprise

Grafana 接入VictoriaLogs 數據源

插件已默認安裝,添加對應數據源即可,目標為 http://192.168.1.1:9428

Filebeat 部署 - 接收Syslog,輸出到VL

vim filebeat.docker.yml

filebeat.inputs:- type: udpenabled: truemax_message_size: 10KiBhost: "0.0.0.0:514"fields:type: udpoutput.elasticsearch:hosts: ["http://127.0.0.1:9428/insert/elasticsearch/"]parameters:_msg_field: "message"_time_field: "@timestamp"_stream_fields: "host.hostname"allow_older_versions: true

PS:注意 127.0.0.1 替換為宿主機IP.

運行

docker run -d  \--name Filebeat \--user=root \--volume="$(pwd)/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro" \-p 514:514/udp \docker.elastic.co/beats/filebeat:8.17.2

Docker compose 一把梭

創建并進入 /opt/VFG文件夾

mkdir /opt/VFGcd /opt/VFG

filebeat配置文件 - vim filebeat.docker.yml

http:enabled: truehost: "http://0.0.0.0:5066"filebeat.inputs:- type: udpenabled: truemax_message_size: 10KiBhost: "0.0.0.0:514"fields:type: udpoutput.elasticsearch:hosts: ["http://syslog-victoria-logs:9428/insert/elasticsearch/"]parameters:_msg_field: "message"_time_field: "@timestamp"_stream_fields: "host.hostname"allow_older_versions: true

PS:如果需要字段分割,可以參考如下。增加到輸入輸出中間即可。

processors:- dissect:tokenizer: "<%{syslog_pri}>%{timestamp} %{hostname} %%{log_level}/%{log_code}/%{log_action}(l):IPVer=%{ipver},Protocol=%{protocol},SourceIP=%{source_ip},DestinationIP=%{destination_ip},SourcePort=%{source_port},DestinationPort=%{destination_port},SourceNatIP=%{source_nat_ip},SourceNatPort=%{source_nat_port},BeginTime=%{begin_time},EndTime=%{end_time},S>field: "message"target_prefix: "parsed"

victoria-logs 數據目錄

mkdir victoria-logs-datachown -R 472:472 victoria-logs-data

Grafana 數據目錄和配置文件

mkdir grafana-datachown -R 472:472 grafana-data

數據源配置文件

mkdir -p ./provisioning/datasourcesvim ./provisioning/datasources/vm.ymlapiVersion: 1
datasources:# <string, required> Name of the VictoriaLogs datasource# displayed in Grafana panels and queries.- name: VictoriaLogs-songxwn.com# <string, required> Sets the data source type.type: victoriametrics-logs-datasource# <string, required> Sets the access mode, either# proxy or direct (Server or Browser in the UI).access: proxy# <string> Sets URL for sending queries to VictoriaLogs server.# see https://docs.victoriametrics.com/victorialogs/querying/url: http://syslog-victoria-logs:9428# <string> Sets the pre-selected datasource for new panels.# You can set only one default data source per organization.isDefault: true

vim docker-compose.yml 文件

services:victoria-logs:image: victoriametrics/victoria-logs:latestcontainer_name: syslog-victoria-logsvolumes:- ./victoria-logs-data:/victoria-logs-datarestart: alwayscommand: ["--retentionPeriod=365d"]environment:- TZ=Asia/Shanghaihealthcheck:test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:9428/health"]interval: 1m30stimeout: 10sretries: 3grafana:image: grafana/grafana-enterprisecontainer_name: syslog-grafanaports:- "3000:3000"environment:- GF_INSTALL_PLUGINS=victoriametrics-logs-datasource- GF_SECURITY_ADMIN_PASSWORD=Songxwn.com- TZ=Asia/Shanghaivolumes:- ./grafana-data:/var/lib/grafana- ./provisioning:/etc/grafana/provisioningrestart: alwayshealthcheck:test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"]interval: 1m30stimeout: 10sretries: 3filebeat:image: docker.elastic.co/beats/filebeat:8.17.2container_name: syslog-filebeatports:- "514:514/udp"volumes:- ./filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:rorestart: alwaysenvironment:- TZ=Asia/Shanghaihealthcheck:test: ["CMD", "curl", "-f", "http://localhost:5066"]interval: 60stimeout: 10sretries: 3

compose 啟動命令 (需要Docker Engine 19.03.0以上版本)


docker compose up -d

停止、升級


docker compose downdcker compose pulldocker compose up -d

compose文件說明

1. Victoria-Logs 服務
  • 服務名稱: victoria-logs
  • 鏡像: 使用 victoriametrics/victoria-logs:latest 鏡像。
  • 容器名稱: syslog-victoria-logs
  • 數據卷: 掛載本地目錄 ./victoria-logs-data 到容器內的 /victoria-logs-data,用于持久化存儲。
  • 重啟策略: 設置為 always,確保容器在運行失敗后自動重啟。
  • 啟動命令: 指定命令參數 --retentionPeriod=365d,表示日志保留期為365天。
  • 環境變量: 設置時區為 Asia/Shanghai
  • 健康檢查:
    • 執行 wget -q --spider http://127.0.0.1:9428/health 檢查服務的健康狀態。
    • 1分30秒 執行一次檢查。
    • 如果檢測不到健康狀態,等待 10秒 后超時。
    • 重試 3次 失敗后標記為非健康。
2. Grafana 服務
  • 鏡像: 使用 grafana/grafana-enterprise 鏡像。
  • 容器名稱: syslog-grafana
  • 端口映射: 將主機的 3000 端口映射到容器的 3000 端口,供外部訪問 Grafana。
  • 環境變量:
    • 安裝插件 victoriametrics-logs-datasource
    • 設置初始管理員密碼為 Songxwn.com
    • 設置時區為 Asia/Shanghai
  • 數據卷:
    • 掛載本地目錄 ./grafana-data 到容器中的 /var/lib/grafana,用于持久化 Grafana 的數據。
    • 掛載本地目錄 ./provisioning/etc/grafana/provisioning,用于配置預置的數據源和儀表盤。
  • 重啟策略: 設置為 always
  • 健康檢查:
    • 執行 curl -f http://localhost:3000/api/health 檢查服務的健康狀態。
    • 1分30秒 執行一次檢查。
    • 如果檢測不到健康狀態,等待 10秒 后超時。
    • 重試 3次 失敗后標記為非健康。
3. Filebeat 服務
  • 鏡像: 使用 docker.elastic.co/beats/filebeat:8.17.2 鏡像。
  • 容器名稱: syslog-filebeat
  • 端口映射: 將主機的 514/udp 端口映射到容器的 514/udp 端口,用于接收 Syslog。
  • 數據卷: 將本地的 filebeat.docker.yml 配置文件掛載到容器內的 /usr/share/filebeat/filebeat.yml,且為只讀。
  • 重啟策略: 設置為 always
  • 環境變量: 設置時區為 Asia/Shanghai
  • 健康檢查:
    • 執行 curl -f http://localhost:5066 檢查服務的健康狀態。
    • 60秒 執行一次檢查。
    • 如果檢測不到健康狀態,等待 10秒 后超時。
    • 重試 3次 失敗后標記為非健康。

這些配置用來部署和管理 Victoria-Logs、Grafana 和 Filebeat 服務,確保它們處于良好運行狀態,且在故障發生時可以自動恢復。各自的健康檢查提供了針對服務運行狀態的簡易確認方式,進一步提高系統的穩定性和可靠性。

VFG Compose 部署使用

  • 發送日志到udp/514 端口,即可存儲到數據庫。 echo "songxwn.com\!" | nc -4u 202.182.109.11 514 命令用來測試發送

  • 訪問到Grafana Web 3000端口,使用admin/Songxwn.com 登錄。

  • 可以通過已經預先創建的數據源VictoriaLogs-songxwn.com,通過Explore 查詢日志(LogsQL語法,* 匹配所有 )和導出為CSV文件。

  • Grafana 也可以進行日志告警和構建可視化儀表盤。

Grafana 示例

在這里插入圖片描述

資源占用 - 有較高日志輸入的情況下

?

CONTAINER ID   NAME                   CPU %     MEM USAGE / LIMIT     MEM %     NET I/O           BLOCK I/O        PIDS
1c7fe73fc896   syslog-filebeat        0.52%     63.14MiB / 3.822GiB   1.61%     14.1MB / 5.38MB   0B / 8.19kB      15
4a6ee8b19475   syslog-grafana         0.61%     147.3MiB / 3.822GiB   3.76%     9.85MB / 12.8MB   299kB / 305MB    33
a80d91af294c   syslog-victoria-logs   0.04%     195.7MiB / 3.822GiB   5.00%     5.4MB / 604kB     520kB / 6.86MB   14

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/895488.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/895488.shtml
英文地址,請注明出處:http://en.pswp.cn/news/895488.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

初識camel智能體(一)

同目錄下配置環境變量.env&#xff0c;內容如下&#xff0c; apikey從魔搭社區獲取 QWEN_API_KEY4ff3ac8f-aebc******** 先上干貨代碼&#xff0c;主代碼如下&#xff1a; from colorama import Forefrom camel.societies import RolePlaying from camel.utils import prin…

介紹 Liquibase、Flyway、Talend 和 Apache NiFi:選擇適合的工具

在現代軟件開發中&#xff0c;尤其是在數據庫管理和數據集成方面&#xff0c;選擇合適的工具至關重要。本文將介紹四個流行的工具&#xff1a;Liquibase、Flyway、Talend 和 Apache NiFi&#xff0c;分析它們的應用、依賴以及如何選擇適合的工具。 1. Liquibase 簡介&#xff…

Docker使用指南與Dockerfile文件詳解:從入門到實戰

Docker使用指南與Dockerfile文件詳解:從入門到實戰 文章目錄 **Docker使用指南與Dockerfile文件詳解:從入門到實戰****引言****第一部分:Docker 核心概念速覽****1. Docker 基礎架構****2. Docker 核心命令****第二部分:Dockerfile 文件深度解析****1. Dockerfile 是什么?…

Qt工作總結03 <qSort按某一屬性進行排序>

1. 代碼樣例 QList<QGraphicsTextItem *> Lst;qSort(Lst.begin(),Lst.end(),[](const QGraphicsTextItem *itemA,const QGraphicsTextItem *itemB) {return itemA->toPlainText().toDouble() < itemB->toPlainText().toDouble(); }); 2. 參考 QList 按結構體…

深度學習|表示學習|Instance Normalization 全面總結|26

如是我聞&#xff1a; 1. Instance Normalization&#xff08;IN&#xff09; Instance Normalization&#xff08;IN&#xff09;最早由 Ulyanov et al.&#xff08;2017&#xff09; 提出&#xff0c;主要用于 風格遷移&#xff08;Style Transfer&#xff09; 任務。它的核…

如何保持 mysql 和 redis 中數據的一致性?PegaDB 給出答案

MySQL 與 Redis 數據保持一致性是一個常見且復雜的問題&#xff0c;一般來說需要結合多種策略來平衡性能與一致性。 傳統的解決策略是先讀緩存&#xff0c;未命中則讀數據庫并回填緩存&#xff0c;但方式這種維護成本較高。 隨著云數據庫技術的發展&#xff0c;目前國內云廠商…

探索ELK 的魅力

在大數據時代&#xff0c;海量日志和數據的收集、存儲、處理與可視化分析變得越來越重要。而 ELK 堆棧&#xff0c;由 Elasticsearch、Logstash、Beats 和 Kibana 組成&#xff0c;正是一個強大的開源解決方案&#xff0c;幫助開發者和運維人員高效管理和分析日志數據。本文將詳…

用vue3寫一個好看的wiki前端頁面

以下是一個使用 Vue 3 Element Plus 實現的 Wiki 風格前端頁面示例&#xff0c;包含現代設計、響應式布局和常用功能&#xff1a; <template><div class"wiki-container"><!-- 頭部導航 --><el-header class"wiki-header"><d…

深度學習實戰基礎案例——卷積神經網絡(CNN)基于DenseNet的眼疾檢測|第4例

文章目錄 前言一、數據準備二、項目實戰2.1 設置GPU2.2 數據加載2.3 數據預處理2.4 數據劃分2.5 搭建網絡模型2.6 構建densenet1212.7 訓練模型2.8 結果可視化 三、UI設計四、結果展示總結 前言 在當今社會&#xff0c;眼科疾病尤其是白內障對人們的視力健康構成了嚴重威脅。白…

DeepSeek的開源核爆:當技術民主化重構AI權力版圖

2025年2月&#xff0c;全球AI產業正經歷著由DeepSeek掀起的鏈式反應——這個首個開源千億參數多模態模型的企業&#xff0c;用開放戰略在技術壁壘森嚴的AI戰場投下"制度性核彈"。其貢獻不在于單純的技術突破&#xff0c;而在于通過開源協議實現了三重維度的大爆炸&am…

代碼隨想錄二叉樹篇(含源碼)

二叉樹與遞歸 前言226.翻轉二叉樹算法思路及代碼solution 1 用分解問題的思路來解決solution 2 用遍歷的思路來解決 101.對稱二叉樹算法思路及代碼solution 104.二叉樹的最大深度算法思路及代碼solution 1 遍歷solution 2 分解問題 111.二叉樹的最小深度算法思路及代碼solution…

MyBatis映射文件 <resultMap> 元素詳解與示例

引言 <resultMap> 是 MyBatis 中最核心的映射配置元素&#xff0c;用于解決數據庫字段與 Java 對象屬性之間的復雜映射問題&#xff0c;尤其是字段名不一致、嵌套對象關聯、集合映射等場景。ResultMap 的設計思想是&#xff0c;對簡單的語句做到零配置&#xff0c;對于復…

【xdoj離散數學上機】T283

遞歸函數易錯&#xff1a; 防止出現遞歸死循環&#xff01; 題目 題目&#xff1a;求誘導出的等價關系的關系矩陣 問題描述 給定有限集合上二元關系的關系矩陣&#xff0c;求由其誘導出的等價關系的關系矩陣。 輸入格式 第一行輸入n&#xff0c;表示矩陣為n階方陣&#xff0c…

WIN11上使用GraalVM打包springboot3項目為本地可執行文件exe

耐心肝才能成功 概念步驟概要詳細步驟一. GraalVM 17二. 安裝Visual Studio 2022三. 創建springboot四. IDEA最新版或者eclipse2025調試項目五. 打包exe 概念 springboot3生成的jar編譯成windows本地C文件&#xff0c;不再依賴JVM運行 WINDOW編譯較為復雜&#xff0c;限制條件…

【git-hub項目:YOLOs-CPP】本地實現01:項目構建

目錄 寫在前面 項目介紹 最新發布說明 Segmentation示例 功能特點 依賴項 安裝 克隆代碼倉庫 配置 構建項目 寫在前面 前面剛剛實現的系列文章: 【Windows/C++/yolo開發部署01】 【Windows/C++/yolo開發部署02】 【Windows/C++/yolo開發部署03】 【Windows/C++/yolo…

超越 DeepSeek V3 -->【Qwen2.5-Max】

&#x1f525; 先說明&#xff0c;不是廣子&#xff0c;不是廣子&#xff01;&#xff01;&#xff01;單純分享這個工具給大家&#xff0c;畢竟最近使用 DeepSeek 太容易崩了&#xff0c;每天深度思考一次之后就開始轉圈圈用不了&#xff0c;然后就找到了這個工具使用 一、前言…

python自動化測試之Pytest框架之YAML詳解以及Parametrize數據驅動!

一、YAML詳解 YAML是一種數據類型&#xff0c;它能夠和JSON數據相互轉化&#xff0c;它本身也是有很多數據類型可以滿足我們接口 的參數類型&#xff0c;擴展名可以是.yml或.yaml 作用&#xff1a; 1.全局配置文件 基礎路徑&#xff0c;數據庫信息&#xff0c;賬號信息&…

CentOS 7操作系統部署KVM軟件和創建虛擬機

CentOS 7.9操作系統部署KVM軟件和配置指南&#xff0c;包括如何創建一個虛擬機。 步驟 1: 檢查硬件支持 首先&#xff0c;確認您的CPU支持虛擬化技術&#xff0c;并且已在BIOS中啟用&#xff1a; egrep -c (vmx|svm) /proc/cpuinfo 如果輸出大于0&#xff0c;則表示支持虛擬…

日本 萬葉假名

萬葉假名&#xff08;まんようがな&#xff0c;Manyōgana&#xff09;是一種早期的日語書寫系統&#xff0c;主要用于《萬葉集》等古代文獻中。它的特點是完全使用漢字來表示日語的音&#xff0c;不考慮漢字的原意。可以將其視為平假名和片假名的前身。 記住是唐代的發音不是…

【鴻蒙HarmonyOS Next實戰開發】實現組件動態創建和卸載-優化性能

一、簡介 為了解決頁面和組件加載緩慢的問題&#xff0c;ArkUI框架引入了動態操作功能&#xff0c;支持組件的預創建&#xff0c;并允許應用在運行時根據實際需求動態加載和渲染組件。 這些動態操作包括動態創建組件&#xff08;即動態添加組件&#xff09;和動態卸載組件&am…