分布式日志系统搭建
第一步:安装 LOKI 日志处理引擎
下载程序文件:https://github.com/grafana/loki/releases
这里下载的是:https://github.com/grafana/loki/releases/download/v3.4.5/loki-windows-amd64.exe.zip
解压到 c:\mes-apps\loki-service
在目录新增配置文件 loki-config.yaml:
# This is a complete configuration to deploy Loki backed by the filesystem.
# The index will be shipped to the storage via tsdb-shipper.
auth_enabled: false
server:
http_listen_port: 3100
common:
ring:
instance_addr: 127.0.0.1
kvstore:
store: inmemory
replication_factor: 1
path_prefix: D:\loki-windows\data\
schema_config:
configs:
- from: 2025-11-29
store: tsdb
object_store: filesystem
schema: v13
index:
prefix: index_
period: 24h
storage_config:
filesystem:
directory: D:\loki-windows\data\chunks
table_manager:
retention_deletes_enabled: true
retention_period: 2160h # 日志保留90天
limits_config:
reject_old_samples: true
reject_old_samples_max_age: 168h # 只接受最近7天的日志,超过直接拒绝写入里面的配置信息请参考官方帮助文件可进行调整。
配置完成后,请使用 nssm 对其进行服务化启动。Nssm 命令参数参考如下:
Path= C:\loki-windows\loki-windows-amd64.exe
startupDirectory= C:\loki-windows
arguments= -config.file=loki-config.yaml第二步:安装 Promtail 日志收集服务
下载程序文件:https://github.com/grafana/loki/releases
比如下载这个:https://github.com/grafana/loki/releases/download/v3.4.5/promtail-windows-amd64.exe.zip
注意,Promtail 是日志收集的小工具,哪里产生日志他就安装在那里,也就是说产生的日志的服务器都要安装,而 loki 是中心化的,只需要安装一个;grafana 也是中心化的,只需要安装一个。
将 Promtail 程序文件解压到 c:\mes-apps\loki-service
新增一个配置文件:promtail.yaml
server:
http_listen_port: 3188
grpc_listen_port: 0
positions:
filename: ./promtail_positions.yaml
ignore_invalid_yaml: true # 忽略无效的yaml内容
sync_period: 10s # 更频繁地同步位置文件
clients:
- url: http://10.11.5.59:3100/loki/api/v1/push
scrape_configs:
- job_name: nlog-logs
static_configs:
- targets:
- localhost
labels:
app: RMES-APP-53
__path__: D:\\mes-apps\\logs\\*\\*.log
relabel_configs:
- source_labels: [__path__]
regex: ^.*[/\\]([^/\\]+)$
target_label: filename
replacement: $1
pipeline_stages:
- multiline:
firstline: ^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3}
max_wait_time: 3s
- regex:
expression: ^(?P<timestamp>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\.\d{3})\s+(?P<level>\w+)\s+(?P<message>(?s:.*))$
- timestamp:
source: timestamp
format: "2006-01-02 15:04:05.000"
location: Asia/Shanghai
- output:
source: message里面的配置信息请参考官方帮助文件可进行调整。
配置完成后,请使用 nssm 对其进行服务化启动。Nssm 命令参数参考如下:
Path= C:\loki-windows\promtail-windows-amd64.exe
startupDirectory= C:\loki-windows
arguments= -config.file=promtail.yaml可选:使用 Alloy 替代 Promtail
// 1. 文件发现(支持 * 通配符)
local.file_match "nlog_logs" {
path_targets = [{
__path__ = "D:/mes-apps/logs/*/*.log",
service_name = "RMES-APP-53",
}]
}
// 2. 读取文件 + 读取后立刻提取纯文件名
loki.source.file "nlog_logs" {
targets = local.file_match.nlog_logs.targets
forward_to = [loki.relabel.filename.receiver]
}
// 3. 后置 relabel:把完整路径改成纯文件名
loki.relabel "filename" {
forward_to = [loki.process.nlog_logs.receiver]
rule {
source_labels = ["filename"]
regex = "^.*[/\\\\]([^/\\\\]+)$"
replacement = "$1"
target_label = "filename"
action = "replace"
}
}
// 4. 日志内容处理(多行 + 时间戳 + level 标签)
loki.process "nlog_logs" {
forward_to = [loki.write.default.receiver]
stage.multiline {
firstline = "^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}\\.\\d{3}"
max_wait_time = "3s"
}
stage.regex {
expression = "^(?P<timestamp>\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}\\.\\d{3})\\s+(?P<level>\\w+)\\s+(?P<message>(?s:.*))$"
}
stage.timestamp {
source = "timestamp"
format = "2006-01-02 15:04:05.000"
location = "Asia/Shanghai"
}
stage.labels {
values = {
level = "level",
}
}
stage.output {
source = "message"
}
}
// 5. 推送到 Loki
loki.write "default" {
endpoint {
url = "http://10.11.5.59:3100/loki/api/v1/push"
}
}启动参数:run alloy.river --storage.path=./data --server.http.listen-addr=0.0.0.0:3188
第三步:安装 Grafana 日志查看器
下载程序文件:https://grafana.com/grafana/download
比如直接下载这个版本:https://dl.grafana.com/enterprise/release/grafana-enterprise-12.1.0.windows-amd64.msi
按默认一路 next 安装完成。安装完成后登录 http://localhost:3000
默认的账号密码是 admin/admin,需要完成 grafana 对数据源的配置,就是 loki 的日志对接到 grafana



