Grafana+Loki+Loki4j实行日志可视化管理

本文主要介绍用Grafana+Loki的方式实现日志可视化管理,采用Loki4j通过http协议直接将日志发送到Loki,不需要采用Promtail 的形式发送。

1 Loki

1.1 安装
$ curl -O -L "https://github.com/grafana/loki/releases/download/v2.4.2/loki-linux-amd64.zip"
# extract the binary
$ unzip "loki-linux-amd64.zip"
# make sure it is executable
$ chmod a+x "loki-linux-amd64"

# 如果没有crul命令,可以通过下述命令安装
$ yum install curl
$ yum update nss

本文的系统环境是CentO S 7.9,如果需要其他系统环境的,可以去官网找自己需要的版本:Releases · grafana/loki · GitHub

PS:如果指令下载失败,下载压缩包上传解压就可以了

1.2 配置文件
# 获取配置文件
$ wget https://raw.githubusercontent.com/grafana/loki/master/cmd/loki/loki-local-config.yaml

# 没有wget命令可以
$ yum install -y wget
1.3 配置防火墙

温馨提示:如果防火墙安全策略非操作系统服务firewalld管理,请参考自己的防火墙开放对应端口;

# 查看防火墙状态
$ systemctl status firewalld
# 开启防火墙
$ systemctl start firewalld 

# 查看所有打开的端口
$ firewall-cmd --zone=public --list-ports
# 开放端口
$ firewall-cmd --zone=public --add-port=3100/tcp --permanent
# 重载防火墙,并不中断用户连接,即不丢失状态信息
$ firewall-cmd --reload	

–zone #作用域
–add-port=80/tcp #添加端口,格式为:端口/通讯协议
–permanent #永久生效,没有此参数重启后失效
1.4 验证
./loki-linux-amd64 -config.file=loki-local-config.yaml

登录http://localhost:3100/metrics,有信息展示,则安装成功。(localhost请修改成对应的服务器地址)

2 Grafana

2.1 下载
$ wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.4.4-1.x86_64.rpm
$ sudo yum install grafana-enterprise-8.4.4-1.x86_64.rpm

可以去官网下载对应系统所需的版本Download Grafana | Grafana Labs

2.2 配置防火墙
# 查看所有打开的端口
$ firewall-cmd --zone=public --list-ports	
# 开放端口
$ firewall-cmd --zone=public --add-port=3000/tcp --permanent	
# 重载防火墙
$ firewall-cmd --reload	
# 查看所有打开的端口
$ firewall-cmd --zone=public --list-ports	
2.3 启动
# 重新加载配置文件
$ systemctl daemon-reload
# 查看状态
$ systemctl status grafana-server
# 启动
$ systemctl start grafana-server

打开http://localhost:3000/login 默认账号密码是:amdin admin

2.4 配置loki数据库

如下图所示,添加loki数据库,然后进入设置界面,设置界面只需要修改url就可以了,一般是http://localhost:3100, 然后点击save&test看看是否成功。

在这里插入图片描述

3 Loki4j

3.1 使用Loki4j

引入依赖pom.xml文件

<dependency>
    <groupId>com.github.loki4j</groupId>
    <artifactId>loki-logback-appender-jdk8</artifactId>
    <version>1.3.2</version>
</dependency>
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.13</version>
</dependency>

在logback的xml配置中追加

<appender name="LOKI" class="com.github.loki4j.logback.Loki4jAppender">
    <http class="com.github.loki4j.logback.ApacheHttpSender">
        <url>http://localhost:3100/loki/api/v1/push</url>
    </http>
    <format>
        <label>
            <pattern>app=my-app,host=${HOSTNAME},level=%level</pattern>
        </label>
        <message>
            <pattern>l=%level h=${HOSTNAME} c=%logger{20} t=%thread | %msg %ex</pattern>
        </message>
        <sortByTime>true</sortByTime>
    </format>
</appender>

<root level="DEBUG">
    <appender-ref ref="LOKI" />
</root>
3.2 配置参数

3.2.1 通用配置

参数默认描述
batchMaxItems1000单次传输最大事件数
batchMaxBytes4194304单次最大字节数(由 Loki 计算)。此值不应大于server.grpc_server_max_recv_msg_sizeLoki 配置中的值
batchTimeoutMs60000发送时间最长间隔
sendQueueMaxBytes41943040发送队列的最大字节数
useDirectBufferstrue使用堆外内存存储中间数据
drainOnStoptruetrue, appender关闭时发送所有剩余时间, false, 丢弃未发送的数据
metricsEnabledfalsetrue, appender 将使用 Micrometer 报告其指标
verbosefalsetrue, appender 会将自己的调试日志打印到 stderr

3.2.2 HTTP设置

参数默认描述
http.url必填. 发送loki的端点
http.connectionTimeoutMs30000Loki链接的响应时间(毫秒)
http.requestTimeoutMs5000请求的响应时间(毫秒)
http.auth.username用户名
http.auth.password密码
http.tenantId租户标识符。仅在将日志直接发送到在多租户模式下运行的 Loki 时才需要。否则此设置无效

3.2.3 格式设置

参数默认描述
format.label.pattern必填. 用于日志记录标签的 Logback 模式
format.label.pairSeparator,用作标签之间分隔符的字符
format.label.keyValueSeparator=用作标签名称与其值之间分隔符的字符
format.label.nopextruetrue, 异常信息不会添加到标签中, false, 注意正确的格式
format.message.pattern必填. 用于日志记录消息的 Logback 模式
format.staticLabelsfalse如果您对所有日志记录仅使用一个标签,则可以将此标志设置为 true 并在按标签分组记录时节省一些 CPU 时间
format.sortByTimefalse如果为 true,则批处理中的日志记录按时间戳排序。如果为 false,记录将按到达顺序发送给 Loki。如果您从 Loki 看到“输入乱序”错误,请启用此选项

4 使用

4.1 使用界面

启动项目,可以直接创建一个简答的SpringBoot项目,然后将loki4j的引入项目即可,搜索日志。

在这里插入图片描述
结果如下:
在这里插入图片描述

4.2 过滤方式

Loki使用LogQL进行日志筛选, 分为标签过滤和运算符过滤, 标签过滤类似于索引, 能快速过滤想要获得的信息, 运算符过滤类似于全文查找, 对一些不适合建立标签的数据进行进一步刷选, 主要针对信息体进行查找。
4.2.1 标签过滤

  • =: 完全匹配
  • !=: 不匹配
  • =~: 正则表达式匹配
  • !~: 正则表达式不匹配

在grafana中, 标签过滤可以直接通过Log browser下的标签进行选择需要的值

{host="DESKTOP-6M06VIR",logger!="RepositoryConfigurationDelegate"}

4.2.2 运算符过滤

  • |=:日志行包含的字符串
  • !=:日志行不包含的字符串
  • |~:日志行匹配正则表达式
  • !~:日志行与正则表达式不匹配
{host="DESKTOP-6M06VIR",logger!="RepositoryConfigurationDelegate"}|="current ips:(1)"

参考文件:

Download Grafana | Grafana Labs

Releases · grafana/loki · GitHub

Local | Grafana Labs

Loki4j Logback · Pure Java Logback appender for Grafana Loki

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值