2026/4/17 21:34:28
网站建设
项目流程
网站模板受法律版权保护吗,怎么提高百度权重,盘州市城乡建设局网站,品牌推广策略与方式导读
VictoriaLogs 是一款高性能、低成本的时序数据库#xff0c;广泛应用于监控和日志存储场景。Vector 是一个开源的日志和指标收集工具#xff0c;支持多种数据源和目标。本文将介绍如何使用 Vector 采集夜莺#xff08;Nightingale#xff09;日志并推送给 VictoriaLog…导读VictoriaLogs 是一款高性能、低成本的时序数据库广泛应用于监控和日志存储场景。Vector 是一个开源的日志和指标收集工具支持多种数据源和目标。本文将介绍如何使用 Vector 采集夜莺Nightingale日志并推送给 VictoriaLogs实现高效的日志管理和分析。为了方便演示所有模块均采用容器化部署。本文大纲如下本文兼顾新手如果你是经验丰富的用户也可以直接跳到相关章节组件Vector、VictoriaLogs、Nightingale简介环境准备配置并启动 Nightingale配置并启动 VictoriaLogs配置并启动 Vector验证日志采集效果Vector 简介Vector 是高性能的可观测数据采集与处理组件支持多种输入文件、容器日志、syslog 等、转换VRL/Remap以及多种输出HTTP、Kafka、Elasticsearch 等。本文选择 Vector 作为日志采集器因为 Vector 是 Rust 编写相对比较轻量且性能优异。当然你也可以选择 Fluent Bit、Filebeat 等其他采集工具在我的演示场景下无关紧要。VictoriaLogs 简介VictoriaMetrics 的指标存储查询能力有目共睹该公司推出的 VictoriaLogs 则是专门针对日志存储和查询设计前段时间也推出了集群版本本文就尝个鲜用 VictoriaLogs 来存储和查询日志。Nightingale 简介Nightingale夜莺是一个开源的监控系统侧重点是做统一的告警引擎以及告警事件的 Pipeline 处理。夜莺可以对接多种数据源根据用户配置的告警规则进行告警最新版本也支持了 VictoriaLogs 作为数据源既可以对 VictoriaLogs 中的日志进行告警。我们要演示日志采集自然需要有个源端产生日志夜莺本身就会产生日志那就用它来做日志源吧。环境准备我是在 Mac 上面启动了一个 Ubuntu 虚拟机ARM64 架构安装了 Docker 和 Docker Compose其他 Linux 发行版也类似。/* by yours.tools - online tools website : yours.tools/zh/jsonlrview.html */ rootubuntu:~# uname -a Linux ubuntu 6.17.8-orbstack-00308-g8f9c941121b1 #1 SMP PREEMPT Thu Nov 20 09:34:02 UTC 2025 aarch64 aarch64 aarch64 GNU/Linux rootubuntu:~# docker --version Docker version 29.1.3, build f52814d配置并启动 NightingaleNightingale 提供了 Docker compose我们直接下载发布包https://github.com/ccfos/nightingale/releases这里我采用最新版本 v8.5.0。下载 tar.gz 并解压缩进入docker/compose-bridge目录里边可以看到 docker-compose.yml 文件。不过先不要启动为了测试方便我要修改一下 Nightingale 的配置文件把日志输出到某个特定目录不和 stdout 内容混在一起。1、修改etc-nightingale/config.toml修改[Log]部分指定日志文件路径/* by yours.tools - online tools website : yours.tools/zh/jsonlrview.html */ [Log] # log write dir Dir logs # log level: DEBUG INFO WARNING ERROR Level INFO # stdout, stderr, file Output file # # rotate by time KeepHours 4 # # rotate by size # RotateNum 3 # # unit: MB # RotateSize 256Output 改为 file表示把日志输出到文件Dir 改为 logs表示日志文件存放在logs目录实际是容器里的/app/logs目录KeepHours 改为 4表示日志文件保留 4 小时测试环境不想保留太多日志2、修改docker-compose.yml把nightingale服务的volumes部分挂载logs目录到宿主机nightingale: image: flashcatcloud/nightingale:latest container_name: nightingale hostname: nightingale restart: always environment: GIN_MODE: release TZ: Asia/Shanghai WAIT_HOSTS: mysql:3306, redis:6379 volumes: - ./etc-nightingale:/app/etc - ./n9elogs:/app/logs networks: - nightingale ports: - 17000:17000 - 20090:20090 depends_on: - mysql - redis - victoriametrics command: - /app/n9e这样容器内的/app/logs目录就映射到宿主机的n9elogs目录方便我们后续用 Vector 采集日志。3、启动 Nightingaledocker-compose up -d4、验证 Nightingale 是否启动成功访问http://你的服务器IP:17000可以看到 Nightingale 的登录界面说明启动成功。默认的用户名和密码是root/root.2020登录后建议修改密码。为了让 Nightingale 产生日志我们做两个配置4.1、添加数据源进入集成中心-数据源添加一个数据源数据源类型使用 Prometheus名称随意URL 填写http://victoriametrics:8428保存。http://victoriametrics:8428是 Nightingale 容器内访问 VictoriaMetrics 的地址刚才的 docker-compose.yml 里已经定义了victoriametrics服务。4.2、创建一个告警规则在告警-规则管理-告警规则页面创建一个新的告警规则我的告警规则配置如下之后Nightingale 会根据这个规则中的查询语句查询 VictoriaMetrics产生告警事件。这个过程会产生日志方便我们后续采集。4.3、验证日志产出进入宿主机的n9elogs目录可以看到有日志文件产生rootubuntu:~/qinxiaohui/n9e-v8.5.0/docker/compose-bridge/n9elogs# tail -f INFO.log 2026-01-07 09:46:09.013141 INFO eval/eval.go:152 rule_eval:alert-1-1 finished, duration:9.436121ms可以看到这个日志格式分成 4 部分时间戳2026-01-07 09:46:09.013141没有打印时区信息Vector 采集的时候需要指定时区日志级别INFO位置eval/eval.go:152消息rule_eval:alert-1-1 finished, duration:9.436121ms回头我们在 Vector 里配置解析规则的时候需要使用正则提取这些字段。配置并启动 VictoriaLogsVictoriaLogs 也可以用容器直接启动docker run --name vmlogs -d -it -p 9428:9428 -v ./victoria-logs-data:/victoria-logs-data \ docker.io/victoriametrics/victoria-logs:v1.43.1 -storageDataPathvictoria-logs-data -retentionPeriod3d这里我把数据目录挂载到宿主机的victoria-logs-data目录日志保留 3 天。默认监听端口是 9428。启动后可以访问http://你的服务器IP:9428看到 VictoriaLogs 的 Web UI 界面进入 vmui之后可以在 vmui 查询日志。配置并启动 VectorVector 也使用容器启动为了让 Vector 能够访问 Nightingale 产生日志的目录我们需要把宿主机的n9elogs目录挂载到 Vector 容器内。同时准备相关的解析规则。现在宿主机创建 vector-n9e.yaml 配置文件data_dir: /datadir api: enabled: true address: 0.0.0.0:8686 sources: app_logs: type: file include: - /n9elogs/*.log transforms: parse_log: type: remap inputs: - app_logs source: | . | parse_regex!(.message, r(?Ptimestamp\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{6}) (?Plevel\w) (?Psource_location[^ ]) (?Pmessage.)) .timestamp parse_timestamp(.timestamp, format: %Y-%m-%d %H:%M:%S.%6f, timezone: 08:00) ?? now() sinks: vlogs: inputs: - parse_log type: elasticsearch endpoints: - http://192.168.139.242:9428/insert/elasticsearch/ api_version: v8 compression: gzip healthcheck: enabled: false query: _msg_field: message _time_field: timestamp _stream_fields: hostsources.app_logs指定采集/n9elogs/*.log目录下的日志文件之后启动 Vector 的时候把宿主机的n9elogs目录挂载到容器的/n9elogs目录transforms.parse_log使用 VRL 脚本解析日志内容提取时间戳、日志级别、位置和消息四个字段并把时间戳做了 parse指定了时区为 08:00sinks.vlogs指定输出到 VictoriaLogs使用 Elasticsearch 协议endpoints填写 VictoriaLogs 的地址。VictoriaLogs 支持 Elasticsearch 协议可以直接兼容 Vector 的 Elasticsearch 输出。_msg_field、_time_field、_stream_fields指定消息字段、时间字段和流字段这些是 VictoriaLogs 识别日志的重要字段。极为关键。启动 Vector 容器docker run \ -d \ -v $PWD/vector-n9e.yaml:/etc/vector/vector.yaml:ro \ -v $PWD/datadir:/datadir \ -v /root/qinxiaohui/n9e-v8.5.0/docker/compose-bridge/n9elogs:/n9elogs \ -p 8686:8686 \ --name vector \ timberio/vector:0.52.0-debian这里把配置文件挂载到容器的/etc/vector/vector.yaml数据目录挂载到/datadir以及把宿主机的n9elogs目录挂载到容器的/n9elogs目录。最终所有容器都启动完成rootubuntu:~/links/vector# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 13a4d10232cf victoriametrics/victoria-logs:v1.43.1 /victoria-logs-prod… 13 hours ago Up 13 hours 0.0.0.0:9428-9428/tcp, [::]:9428-9428/tcp vmlogs 4b697ad2de0d timberio/vector:0.52.0-debian /usr/bin/vector 21 hours ago Up 21 hours 0.0.0.0:8686-8686/tcp, [::]:8686-8686/tcp vector f75999aeda62 flashcatcloud/categraf:latest /entrypoint.sh 23 hours ago Up 23 hours categraf ccf2ee7e9af9 flashcatcloud/nightingale:latest /app/n9e 23 hours ago Up 23 hours 0.0.0.0:17000-17000/tcp, [::]:17000-17000/tcp, 0.0.0.0:20090-20090/tcp, [::]:20090-20090/tcp nightingale b9ac63d0a71a redis:6.2 docker-entrypoint.s… 23 hours ago Up 23 hours 0.0.0.0:6379-6379/tcp, [::]:6379-6379/tcp redis de58098082f1 mysql:8 docker-entrypoint.s… 23 hours ago Up 23 hours 0.0.0.0:3306-3306/tcp, [::]:3306-3306/tcp, 33060/tcp mysql 5a6c10ff23e5 victoriametrics/victoria-metrics:v1.79.12 /victoria-metrics-p… 23 hours ago Up 23 hours 0.0.0.0:8428-8428/tcp, [::]:8428-8428/tcp victoriametrics如果你遇到异常可以查看容器的日志。交给 AI 咨询AI 会帮你分析日志并给出解决方案有了大模型我感觉现在自己强的可怕...。验证日志采集效果访问 VictoriaLogs 的 Web UI进入 vmui执行查询语句大功告成