Grafana和Loki抓取聚合日志
- 适用范围
- 配置
- 常见问题
- 参考文章
适用范围
- Grafana是日志看板
- Loki是Grafana的一个插件用于收集日志
- promtail是Loki配套的抓取工具,放在目标服务器抓取日志
配置
- 日志服务器安装Grafana,傻瓜式下一步
- 日志服务器启动Loki(loki-windows-amd64.exe)
控制台CMD输入启动语句:
.\loki-windows-amd64.exe --config.file=loki-local-config.yaml
- loki-local-config.yaml配置文件:
auth_enabled: false
server:
http_listen_port: 3100
ingester:
lifecycler:
address: 127.0.0.1
ring:
kvstore:
store: inmemory
replication_factor: 1
final_sleep: 0s
chunk_idle_period: 5m
chunk_retain_period: 30s
max_transfer_retries: 0
schema_config:
configs:
- from: 2022-02-15
store: boltdb
object_store: filesystem
schema: v11
index:
prefix: index_
period: 168h
storage_config:
boltdb:
directory: /tmp/loki/index
filesystem:
directory: /tmp/loki/chunks
limits_config:
enforce_metric_name: false
reject_old_samples: true
reject_old_samples_max_age: 168h
chunk_store_config:
max_look_back_period: 0s
table_manager:
retention_deletes_enabled: false
retention_period: 0s
说明:http_listen_port: 3100
:Loki端口3100,意思就是抓取软件把日志发送到Loki,Loki其实是一个服务端程序,Loki可以接受多个抓取端(promtail-windows-amd64.exe)的发送
- 配置Loki
- 在Grafana中配置Loki
- 浏览器打开 127.0.0.1:3000
左右菜单->Connections->Data sources->Add new connection->找到Loki->配置Loki服务地址127.0.0.1:3100
点击最下面save &text,如果出现提示,意思是抓取软件未配置,现在保存,之后配置抓取即可
- 开放服务器端口
Grafana端口是3000,Loki端口是3100,分别打开防火墙开发给外网。 - 目标服务器配置抓取软件promtail
CMD启动:
.\promtail-windows-amd64.exe --config.file=promtail-local-config.yaml
- promtail-local-config.yaml
server:
http_listen_port: 9080
grpc_listen_port: 0
positions:
filename: /tmp/positions.yaml
clients:
- url: http://127.0.0.1:3100/loki/api/v1/push
scrape_configs:
#第1个监控日志目录
- job_name: job1
static_configs:
- targets:
- 127.0.0.1
labels:
job: the_job1
__path__: C:\Users\*.log
#第2个监控日志目录
- job_name: job2
static_configs:
- targets:
- 127.0.0.1
labels:
job: the_job2
__path__: C:\ABC\*.log
说明:url: http://127.0.0.1:3100/loki/api/v1/push
:修改成Loki所在日志服务器地址
可以配置多个抓取地址,分别命名即可
6. Grafana中查看日志
菜单->探索->选择抓取上设置的job名称,配置过滤字段(可以不填)->点击run query
常见问题
- 抓取软件promtail打开异常:看看日志服务器防火墙有没有放出端口
- Grafana显示的是全英文:配置中选择中文语言
- RUN后什么都没有:看看job名字有没有正确,路径是否正确
- 一条日志分多行显示:配置log4j2日志格式,不要换行
//使用replace替换换行符\r\n
//原默认配置:(大概第六行)
<property name="log.layout">[%d{HH:mm:ss:SSS}] [%p] %c{1} - %t%n</property>
//修改后配置:
<property name="log.layout">[%d{HH:mm:ss:SSS}] [%p] %c{1} - %replace{%m}{[\r\n]+}{~~}%n</property>
- 日志出现中文乱码:配置log4j2使用utf-8输出日志
//在log4j2中PatternLayout后添加:charset="UTF-8"
<RollingFile name="artery-info" fileName="${logbasedir}/artery-info.log" filePattern="${logbasedir}/%d{yyyy-MM-dd}/artery-info-%i.log">
<Filters>
<ThresholdFilter level="INFO" />
<ThresholdFilter level="WARN" onMatch="DENY" onMismatch="NEUTRAL" />
</Filters>
<PatternLayout charset="UTF-8" pattern="${log.layout}" />
<Policies>
<TimeBasedTriggeringPolicy />
<SizeBasedTriggeringPolicy size="100 MB" />
</Policies>
</RollingFile>
参考文章
- https://blog.csdn.net/q1564/article/details/82986983
- https://www.saoniuhuo.com/question/detail-2167512.html
- https://blog.csdn.net/cainiaosl/article/details/122514287
- https://blog.csdn.net/JineD/article/details/127092849
- https://blog.csdn.net/yucaifu1989/article/details/125018248