VGF 构建轻量高性能日志管理平台

发布于:2025-02-19 ⋅ 阅读:(22) ⋅ 点赞:(0)

VFG技术架构概述
VFG 构建了一种高效的日志管理平台,结合了 Filebeat、VictoriaLogs 和 Grafana 以实现日志收集、存储、查询、可视化和告警等功能。以下是该架构的详细设计与优势:

  1. 日志采集与输入:Filebeat
    接收Syslog日志:使用Filebeat接收UDP协议(如Syslog)日志,通过Filebeat配置文件进行输入配置。
    日志分段:Filebeat在接收到日志后,可以进行分段处理,并将日志数据传输到VictoriaLogs进行存储。
  2. 日志存储:VictoriaLogs
    为什么选择VictoriaLogs:
    相比Elasticsearch/Grafana Loki,VictoriaLogs的资源消耗显著低。它能节省数十倍的CPU、内存和存储资源,极大提升硬件资源利用率。
    与ELK的优势:VictoriaLogs不仅支持ELK的Web查询、日志压缩存储、Syslog日志接收,还具有良好的性能。
    部署:
    日志持久化存储:通过Docker运行VictoriaLogs,将日志数据保存在本地目录。
    数据保留策略:支持自定义日志保留期,默认可设置为365天。
    无认证的HTTP访问:默认端口为9428,用于提供HTTP访问,但需要通过其他软件添加认证。
    数据过期时间:数据过期时间是全局设置的,如果需要不同过期时间的日志存储,需部署多个实例。
  3. 日志可视化与查询:Grafana
    Grafana的角色:
    可视化:由于VictoriaLogs自带的Web UI较简陋,使用Grafana进行可视化展示。
    数据查询与告警:Grafana支持通过LogQL语法对日志进行查询,并能设置告警规则,及时通知异常日志。
    数据导出:支持将日志查询结果导出为CSV文件,方便后续处理。
  4. 技术栈与部署
    Docker:所有服务都通过Docker进行部署,使用Docker Compose编排。
    VictoriaLogs:通过docker.io/victoriametrics/victoria-logs镜像运行,设置日志数据保留期并持久化存储。
    Grafana:通过grafana/grafana-enterprise镜像运行,安装并配置victoriametrics-logs-datasource插件,连接VictoriaLogs作为数据源。
    Filebeat:通过docker.elastic.co/beats/filebeat镜像运行,配置Filebeat接收Syslog日志并转发到VictoriaLogs。
  5. Docker Compose配置
    VictoriaLogs服务:

使用victoriametrics/victoria-logs:latest镜像。
配置数据卷挂载、日志保留期、时区等参数。
设置健康检查确保服务的正常运行。
Grafana服务:

使用grafana/grafana-enterprise镜像。
设置默认管理员密码、时区、Grafana的配置文件等。
配置Grafana的健康检查。
Filebeat服务:

使用docker.elastic.co/beats/filebeat:8.17.2镜像。
配置接收Syslog日志的UDP端口,输出到VictoriaLogs。
6. 数据流与测试
数据流:使用Filebeat收集Syslog日志,发送到VictoriaLogs进行存储,Grafana通过配置的VictoriaLogs数据源进行查询和可视化展示。
测试:
通过echo “songxwn.com!” | nc -4u 202.182.109.11 514命令模拟发送Syslog日志。
通过Grafana Web界面访问,使用默认账户admin/Songxwn.com登录,查看和查询日志。
使用Grafana的LogQL语法查询日志,并支持导出查询结果为CSV文件。
7. 告警与可视化
日志告警:在Grafana中设置基于查询结果的告警规则,可以及时发现系统中的异常日志。
仪表盘构建:Grafana支持创建各种可视化仪表盘,帮助团队实时监控日志数据。

Docker Compose 及配置文件说明:VictoriaLogs、Filebeat 和 Grafana 部署
本文将详细说明如何使用 Docker Compose 部署 VictoriaLogs、Filebeat 和 Grafana,构建一个高效的日志管理系统。以下是各个部分的配置和部署步骤。

  1. 创建项目目录
    首先,创建一个工作目录,存放所有相关配置文件。
mkdir /opt/VFG
cd /opt/VFG
  1. VictoriaLogs 配置
    VictoriaLogs 用于存储日志数据。配置文件及相关内容如下:
    victoria-logs-data 目录
    创建本地目录用于存储 VictoriaLogs 数据。
mkdir victoria-logs-data

VictoriaLogs Docker 配置
使用 victoria-logs 镜像创建容器并指定日志存储目录和数据保留策略。创建 docker-compose.yml 配置文件。

version: "3"
services:
  victoria-logs:
    image: victoriametrics/victoria-logs:latest
    container_name: syslog-victoria-logs
    volumes:
      - ./victoria-logs-data:/victoria-logs-data
    restart: always
    command:
      - "--retentionPeriod=365d"
    environment:
      - TZ=Asia/Shanghai
    healthcheck:
      test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:9428/health"]
      interval: 1m30s
      timeout: 10s
      retries: 3

这个配置确保了:
VictoriaLogs 容器使用本地存储目录 victoria-logs-data 进行持久化存储。
日志数据保留365天。
定期健康检查容器是否正常运行。
3. Grafana 配置
Grafana 用于可视化日志数据。以下是 Grafana 配置的步骤:
Grafana 数据存储目录
创建一个本地目录来存储 Grafana 数据:

mkdir grafana-data

Grafana 数据源配置
在 Grafana 中,我们需要配置连接到 VictoriaLogs 的数据源。创建目录和配置文件。

mkdir -p ./provisioning/datasources
vim ./provisioning/datasources/vm.yml

内容如下:

apiVersion: 1
datasources:
  - name: VictoriaLogs-songxwn.com
    type: victoriametrics-logs-datasource
    access: proxy
    url: http://syslog-victoria-logs:9428
    isDefault: true

Grafana 服务配置
在 docker-compose.yml 中加入 Grafana 服务配置:

  grafana:
    image: grafana/grafana-enterprise
    container_name: syslog-grafana
    ports:
      - "3000:3000"
    environment:
      - GF_INSTALL_PLUGINS=victoriametrics-logs-datasource
      - GF_SECURITY_ADMIN_PASSWORD=Songxwn.com
      - TZ=Asia/Shanghai
    volumes:
      - ./grafana-data:/var/lib/grafana
      - ./provisioning:/etc/grafana/provisioning
    restart: always
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3000/api/health"]
      interval: 1m30s
      timeout: 10s
      retries: 3

GF_INSTALL_PLUGINS:安装 victoriametrics-logs-datasource 插件,以便与 VictoriaLogs 配合使用。
GF_SECURITY_ADMIN_PASSWORD:设置管理员密码。
健康检查:定期检查 Grafana 是否健康。
4. Filebeat 配置
Filebeat 用于收集日志并将其发送到 VictoriaLogs。首先,配置 Filebeat 以接收 Syslog 日志。

Filebeat 配置文件
创建一个 filebeat.docker.yml 配置文件:

filebeat.inputs:
  - type: udp
    enabled: true
    max_message_size: 10KiB
    host: "0.0.0.0:514"
    fields:
      type: udp

output.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

Filebeat 服务配置
在 docker-compose.yml 中加入 Filebeat 配置:

  filebeat:
    image: docker.elastic.co/beats/filebeat:8.17.2
    container_name: syslog-filebeat
    ports:
      - "514:514/udp"
    volumes:
      - ./filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro
    restart: always
    environment:
      - TZ=Asia/Shanghai
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:5066"]
      interval: 60s
      timeout: 10s
      retries: 3

Filebeat 将监听 UDP 514 端口,接收 Syslog 日志,并将其传送到 VictoriaLogs。

  1. 启动 Docker Compose
    确保所有配置文件已经完成后,通过以下命令启动服务:
docker compose up -d

这将启动 VictoriaLogs、Grafana 和 Filebeat 服务,并将它们在后台运行。

VictoriaLogs:存储日志数据。
Grafana:可视化日志数据并提供查询功能。
Filebeat:接收 Syslog 日志并转发到 VictoriaLogs。
6. 验证与使用
发送测试日志: 使用以下命令发送测试日志到 UDP 514 端口:

echo "songxwn.com!" | nc -4u 202.182.109.11 514

访问 Grafana: 在浏览器中访问 http://<服务器IP>:3000,使用管理员账号 admin/Songxwn.com 登录。

查询日志: 在 Grafana 中,选择数据源 VictoriaLogs-songxwn.com,使用 LogQL 语法查询日志数据。

导出日志: 在 Grafana 中,您可以导出查询结果为 CSV 文件。

设置告警: 使用 Grafana 设置基于日志内容的告警规则,确保及时处理异常日志。

Docker 国内安装https://mirror.nju.edu.cn/mirrorz-help/docker-ce/?mirror=NJU

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
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

1、9428/tcp 对外HTTP访问端口
2、数据保留365天
3、victoria-logs-data 为存储目录部署Grafana

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

网站公告

今日签到

点亮在社区的每一天
去签到