
VictoriaLogs初体验
前面我们介绍了 VictoriaMetrics 发布了其日志解决方案 VictoriaLogs
,只是简单介绍了其特性,但是并没有介绍其使用方法,本文我们就来体验下 VictoriaLogs
。
VictoriaLogs
是一个日志存储和查询的后端,并没有提供直接的日志采集功能,而是兼容其他常见的日志采集工具,比如 fluentbit
、filebeat
、logstash
等,这里我们使用 fluentbit
来采集日志。
日志采集
比如现在我们需要采集 Kubernetes 集群的日志,然后将其存入到 VictoriaLogs
中去,我们这里的环境采用的是 containerd 这种容器运行时,所以在使用的时候需要和 docker 进行区分,这里我们使用 fluentbit
来采集日志,同样这里我们也将其部署到我们的 Kubernetes 集群中,完整的部署文件如下所示:
首先在 ConfigMap 中我们配置了要采集的日志,日志源路径为 /var/log/containers/*.log
,这是默认的容器日志路径,我们可以在节点上去查看,但是需要注意的是该路径下面的日志只是一个软连接,真正的日志路径在 /var/log/pods
下面,所以我们在 fluentbit 的 pod 中需要挂载宿主机的 /var/log
目录,只挂载 /var/log/containers/
目录则无法获取到真正的日志。
此外我们还为日志打上了 kube.*
标签,这是为了方便后续的日志过滤,我们可以根据标签来过滤日志进行相应的处理。
日志经过各种处理后,最重要的就是 OUTPUT
输出源的配置,在调试阶段我们可以先配置一个 stdout
的输出源。
这样我们就可以通过 fluentbit 的 pod 日志来查看日志是否被采集到了。
如果采集到了,那么我们就可以配置其他的输出源了,比如 elasticsearch
、kafka
、redis
等等,当然我们这里是要将日志输出到 VictoriaLogs
中,所以我们需要配置 VictoriaLogs
的输出源,如下所示:
这里我们配置了 VictoriaLogs
的 host
和 port
,其中最重要的是 uri
参数,这个参数是 VictoriaLogs
的插入接口 /insert/jsonline?_stream_fields=stream&_msg_field=message&
,这里我们需要注意的是 uri
参数中的 _stream_fields
、_msg_field
、_time_field
这三个参数,这三个参数是 VictoriaLogs
的插入接口所必须的,其中 _stream_fields
是指定日志流的字段,这里我们指定为 stream
,_msg_field
是指定日志内容的字段,这里我们指定为 message
,_time_field
是指定日志时间的字段,这里我们指定为 time
,具体要取什么字段需要根据我们的日志来决定,这样我们就可以将日志采集到 VictoriaLogs
中了。当然还有两个字段 AccountID
和 ProjectID
,可以用来区分不同的租户,这里我们暂时不用,所以设置为 0
。
直接部署上面的资源清单即可,部署完成后我们可以查看 fluentbit 的 pod 日志,如果日志中没有报错,那么就说明我们的 fluentbit 部署成功了,接下来就可以部署 VictoriaLogs
了。
安装 VictoriaLogs
由于 VictoriaLogs
目前预览版本仅仅是一个单节点的应用,所以我们只需要部署一个 Deployment
即可,如下所示:
这里我们需要注意的是 VictoriaLogs
的存储路径,VictoriaLogs
默认的存储路径是 victoria-logs-data
,可以通过参数 -storageDataPath
进行指定,如果想要持久化日志数据,则需要将该路径进行挂载,比如我们这里就指定了一个 PVC 进行关联。另外由于上面 fluentbit 我们输出到了 VictoriaLogs
的 host 地址为 victorialogs
,所以我们还需要创建名为 victorialogs
的 Service 对象将其暴露出去,并且要和 fluentbit 在同一个命名空间下,此外 VictoriaLogs
本身还自带一个 Web 界面,这里我们通过 NodePort
来对外进行暴露,这样我们就可以通过 NodeIP:NodePort
来访问 VictoriaLogs
了。
同样直接部署上面的资源清单即可,部署完成后我们可以查看 VictoriaLogs
的 pod 日志,如果日志中没有报错,那么就说明我们的 VictoriaLogs
部署成功了。
部署完成后我们就可以通过 NodeIP:30694
来访问 VictoriaLogs
如下所示:
点击 select/vmui
就可以跳转到 VictoriaLogs
的 Logs Explorer 界面了,如下所示:
然后我们就可以根据自己的需求来进行日志的查询了,比如查询日志中包含 alog
关键字的日志:
此外还有 Table 和 JSON 两种展示模式:
日志查询使用的是 VictoriaLogs
的 LogsQL 语法,具体语法可以参考官方文档: https://docs.victoriametrics.com/VictoriaLogs/LogsQL.html
。
目前 VictoriaLogs
还处于预览版本,所以还有很多功能没有完善,只有简单的日志查询功能,比如目前还不支持日志的告警,可视化图表等等功能,但是 VictoriaLogs
的开发者已经在开发中了,相信很快就会支持了。
文章转载自公众号:k8s技术圈
