分布式日志—Seq(二)

话接上回哈,这一篇是对上一篇没有讲完整的seq功能的补充介绍。

3. docker容器日志集成Seq

3.1. GELF格式

GELF(Graylog 扩展日志格式)是s一种结构化日志事件格式,用于许多编程语言中的日志记录库。Seq可以通过TCP和UDP接收GELF事件,并支持压缩和分块等常见功能。

seq通过GELF格式接收日志信息需要先安装插件,而且windows部署和docker部署的seq在插件的安装上有所不同,docker部署的seq安装GELF插件需要启动一个 datalust/seq-input-gelf docker实例。

docker run \ 
--name seq-input-gelf \ 
-d \ --restart unless-stopped \ 
-p 12201:12201/udp \ 
-e SEQ_ADDRESS=http://<seq ip>:5341 \ 
datalust/seq-input-gelf

3.2. 收集doccker日志

seq可以通过GELF格式收集docker容器产生的日志,任何 Docker 容器的输出都可以通过在启动时配置其日志记录驱动程序来收集:

docker run \
 --rm \ 
-it \ 
--log-driver gelf \ 
--log-opt gelf-address=udp://<seq-input-gelf ip>:12201 \
 hello-world:latest

这样子启动的情况下,–log-driver gelf 命令设置 Docker 使用 GELF 日志记录驱动程序输出日志,–log-opt gelf-address=udp://localhost:12201 命令设置 Docker 通过 UDP 将日志发送到指定的主机/端口。

可以看到,seq-input-gelf实例启动成功,利用hello-world镜像进行测试的时候,该实例打印的信息也传输到了seq服务端上了。
在这里插入图片描述
在这里插入图片描述
这里需要注意的是,无论是seq-input-gelf实例发送日志的地址,还是需要记录日志的容器配置的日志传输地址,都只能用域名或者ip,不能用localhost,因为这些地址都是在容器内部调用的。

4. 日志分析

Seq日志查询分析的方式这里只介绍一些常用的,更加具体的可以查看官网的文档:Search and Analyze Logs (datalust.co)

4.1. 普通查询

以模糊查询的方式直接通过错误信息包含的关键字过滤
在这里插入图片描述

4. 2. @关键字结合运算符过滤

常用的关键字有@Level、@Message、@MessageTemplate、@EventType、@Exception、@Properties
在这里插入图片描述
在这里插入图片描述

4. 3. 属性过滤

通过日志中包含的属性进行过滤,点开日志可以看到其中的属性,这些属性都可以用来过滤,如通过App Key添加的serviceName属性过滤某个应用的日志
在这里插入图片描述
所有可用的属性可以通过右侧的QUERIES中的Available Properties查询。
在这里插入图片描述

4. 4. sql查询

通过stream像数据库一样通过sql脚本进行查询
在这里插入图片描述
聚合:
在这里插入图片描述
聚合结果还能切换成图形
在这里插入图片描述
值得一提的是运算符,seq基本支持sql查询中的各种逻辑运算符,包括 =、<>、 >=、<=、like、in、and、or、not等。

此外,还可以通过工作台查看一些日志的统计报表
在这里插入图片描述

5. 日志管理

我们运行的各个系统、各个服务都会不停的生产日志,不断得完日志收集系统中汇集,如果这些日志一直不删除,将导致日志文件越来越多,不断占用服务器的磁盘空间,直至服务器磁盘爆满。而手动去删除文件太麻烦,所以需要一些自动删除的方式。

5.1 保留策略

Seq提供了保留策略,可以编辑一定的策略,定时根据策略删除相应的日志文件。使用保留策略需要以下几步:

  1. 新增信号
    所谓信号,其实就是日志筛选器。在日志筛选框输入筛选规则,然后点击筛选框最右边的按钮,即可编辑信号。

    需要注意,个人信号将无法在保留策略设置屏幕中进行选择,所以创建保留策略需要用到的信号时应该选择 Shared。同时为防止其他用户无意中修改用于保留策略的信号,可以从信号编辑器的下拉菜单中进行选择Protected。
    在这里插入图片描述
    在这里插入图片描述
    信号创建完成之后,就需要创建保留策略了,点击“setting”,再选择RETENTION菜单,点击“ADD POLICY”按钮。
    在这里插入图片描述
    在这里插入图片描述
    点击保存之后策略生效,不过策略不是立即执行的,所以不能立刻看到效果。

  2. 手动删除
    对于一些情况,我们可能需要立刻删除一些日志,这些需要手动进行操作。

    通过保留策略页面,点击删除事件按钮,页面会跳转到事件查询页面,不过会多出来两个按钮,我们可以通过输入框筛选要删除的日志,然后点击删除按钮进行删除。
    在这里插入图片描述
    在这里插入图片描述
    需要注意的是,手动删除会占用大量资源,应避免在系统负载过重时进行手动删除。

  3. 查看日志存储情况
    在“Data > Ingestion”菜单下,可以看到日志写入的情况,看到各个App Key 的情况。
    在这里插入图片描述
    在“Data > Storage”菜单下,可以查看Seq日志存储情况,可以看到各个时间的日志写入情况,也可以看到保留策略的执行情况。
    在这里插入图片描述

微服务系列文章:
上一篇:分布式日志—Seq(一)
下一篇:容器技术—docker基础

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab中的seq2seq是一种用于序列到序列(sequence-to-sequence)学习的机器学习模型。seq2seq模型通常用于处理具有不同长度的输入和输出序列的任务,例如机器翻译、语音识别和对话生成等。 在Matlab中,可以使用Deep Learning Toolbox来实现seq2seq模型。该工具箱提供了一系列函数和类,用于构建和训练seq2seq模型。 首先,需要定义一个Encoder网络和一个Decoder网络。Encoder网络将输入序列转换为一个固定长度的向量表示,而Decoder网络将该向量表示转换为输出序列。可以使用长短期记忆(LSTM)或门控循环单元(GRU)等循环神经网络作为Encoder和Decoder的基本单元。 接下来,使用sequenceInputLayer函数定义输入层,使用sequenceFoldingLayer函数将输入序列转换为时间序列数据,然后将其传递给Encoder网络。 对于Decoder网络,在输出层之前,可以使用attentionDecoderLayer函数引入注意力机制,以提高模型性能。同时,可以使用sequenceUnfoldingLayer函数将输出时间序列数据恢复为输出序列。 最后,使用trainNetwork函数对定义好的Encoder-Decoder模型进行训练。可以选择不同的优化器、损失函数和训练选项来获得最佳的模型性能。 通过使用Matlab中的seq2seq模型,可以轻松地实现序列到序列学习任务。这个强大的工具允许我们处理各种序列数据,并优化模型以获得最好的性能。无论是进行自然语言处理还是其他类型的序列建模任务,seq2seq模型都是一个值得尝试的工具。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值