如何将 Windows Event Logs 推送到 Grafana Loki

上一篇已经教大家如何在 Ubuntu 22.04 安装 Loki,今天就来谈谈如何透过 Promtail 日誌收集器将Windows Event Logs 推送到 Loki 并于 Grafana 进行可视化的展现吧。

我们可以把 Promtail 视为一种代理程式,负责传送本地端的日誌到私有的 Loki 或者是 Grafana Cloud,并安装在想要监控的应用程式的机器中。

主要负责的工作:

发现目标,即日誌来源或者档案将标籤附加到日誌串流将它们推送到 Loki 实例

安装 Promtail

从 Loki 存储库下载最新的发行版本
https://github.com/grafana/loki/releases

https://github.com/grafana/loki/releases/download/v2.7.1/promtail-windows-amd64.exe.zip

将其解压缩后放到想要的位置,我们以 C:\promtail 作为範例

在 C:\promtail 目录底下新增 promtail-local-config.yaml 文件

我们透过 windows_events 区块告诉 Promtail 如何抓取 Windows Event Logs 并将传送它们到 Loki。

https://github.com/grafana/loki/blob/main/docs/sources/clients/promtail/scraping.md

server:  http_listen_port: 9080  grpc_listen_port: 0positions:  filename: "./positions.yaml"clients:  - url: http://your_loki_ip:3100/loki/api/v1/push    scrape_configs:- job_name: windows  windows_events:    use_incoming_timestamp: false    bookmark_path: "./bookmark.xml"    eventlog_name: "Application"    xpath_query: '*'    labels:      job: windows  relabel_configs:    - source_labels: ['computer']      target_label: 'host'

书籤路径 bookmark_path 负责记录最后处理的事件,当 Promtail 重新启动时需要它,以允许它从中断的地方继续读取日誌。

<BookmarkList>  <Bookmark Channel='Application' RecordId='23520' IsCurrent='true'/></BookmarkList> 

启动服务

以系统管理员权限开启命令提示字元,输入下列指令启动 Promtail。

cd C:\promtail.\promtail-windows-amd64.exe --config.file=promtail-local-config.yaml

这样便成功启动 Promtail 并开始传送 Application 事件纪录到 Loki

此时回到 Grfana 使用 Loki 做为资料来源,透过 Explore 便可以看到推送过来的纪录了。

点选 channel 与 job 标籤的属性当作查询条件,点选 Show Logs。

如果需要,您可以通过 Relabeling 重新标记预设的标籤。

如上面的範例我们将预设的 computer 标籤重新标记成 host

当 Promtail 接收到一个事件时,它将附加 channel 和 computer 标籤,并将事件序列化成 JSON 格式。

注册服务

接下来要将刚刚的指令注册成服务,让它每次开机自动执行。

我们透过 nssm 安装并启动 Windows 服务

https://blog.miniasp.com/post/2021/09/15/Useful-tools-the-Non-Sucking-Service-Manager

Windows 内建的注册 Windows 服务的工具 sc.exe 跟 New-Service 注册服务后都无法正常运行。

下载并将 nssm.exe 解压缩到 C:\promtail 底下

https://nssm.cc/release/nssm-2.24.zip

开启命令提示字元,输入下列指令

cd C:\promtailnssm install "Promtail Agent"

Application Path 选择 C:\promtail\promtail-windows-amd64.exe
Application Arguments 输入 --config.file=promtail-local-config.yaml

最后按下 Install Servcie 即可注册成 Windows 服务

需要注意的是可执行档所在路径为 C:\promtail\nssm.exe,如果 nssm.exe 被移动到其他位置服务将无法启动。

或者请将 nssm.exe 摆在一个确定不会异动或删除的路径

Promtail Pipeline 日誌处理

各位看官应该有注意到使用官方提供的 Scrape Configs 实在太过阳春,所以接下来我们要介绍 Promtail Pipeline 日誌处理,Pipeline 用于转换单行日誌、标籤与时间戳。

Pipeline 至少由一个 Stages 阶段组成,而阶段有 4 种类型:

解析阶段:解析当前日誌行并从中提取数据,然后提取的数据可供其他阶段使用。转换阶段:换从先前阶段提取的数据动作阶段:从前面的阶段提取数据并用它们做一些事情,例如添加现有标籤或修改到日誌行。过滤阶段:可以根据某些条件选择性地删除资料

修改 promtail-local-config.yaml 文件,内容如下。

server:  http_listen_port: 9080  grpc_listen_port: 0positions:  filename: "./positions.yaml"clients:  - url: http://your_loki_ip:3100/loki/api/v1/push    scrape_configs:- job_name: windows  windows_events:    eventlog_name: "Application"    use_incoming_timestamp: true    xpath_query: '*'    bookmark_path: "./bookmark-application.xml"    exclude_event_data: true    exclude_user_data: true    labels:      logsource: windows-eventlog  pipeline_stages:  - json:      expressions:        source: source        eventID: event_id        level: levelText  - labels:      source:      eventID:      level:- job_name: windows  windows_events:    eventlog_name: "System"    use_incoming_timestamp: true    xpath_query: '*'    bookmark_path: "./bookmark-system.xml"    exclude_event_data: true    exclude_user_data: true    labels:      logsource: windows-eventlog  pipeline_stages:  - json:      expressions:        source: source        eventID: event_id        level: levelText  - labels:      source:      eventID:      level:

这边我们多新增一个 Job 来推送系统日誌并使用了两个阶段来处理日誌

转换阶段:使用 JOSN 剖析 Source、Event ID 与 Level 栏位动作阶段:将剖析到的栏位分别贴上对应的标籤

再回到 Grfana 的 Explore 可以看到推送过来的日誌多了许多标籤可以让我们进行过滤条件。

虽然 Explore 非常适合系统管理人员快速进行操作,但对于初次使用的用户或在半夜收到告警的人来说,它也可能有点令人生畏。

下一篇我们将教大家如何拥有自己的仪表板,除了实作 Explore 的现有的功能,还可以简单地透过预先设置的标籤进行搜索,以帮助一些团队在故障排除时快速找到他们正在寻找的东西。

参考文件

https://grafana.com/docs/loki/latest/clients/promtail/https://grafana.com/docs/loki/latest/clients/promtail/configuration/https://jishuin.proginn.com/p/763bfbd5863bhttps://mp.weixin.qq.com/s?biz=MzU4MjQ0MTU4Ng==&mid=2247492163&idx=1&sn=56b26aa387ccacdf0203d8897ba58eb6https://mp.weixin.qq.com/s?biz=MzU4MjQ0MTU4Ng==&mid=2247492144&idx=1&sn=a1cc13a6423fe50173856bfc898e8d77https://grafana.com/docs/loki/latest/clients/promtail/pipelines/https://grafana.com/docs/loki/latest/clients/promtail/stages/

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章