.Net Core微服务 - Seq 日志聚合

Seq简介

Seq 是一款使用现代化技术构建的结构化日志存储,查询,分析工具。比起 ELK 这种组合要轻量级许多。只需要一个安装包就具有数据存储,查询,图表分析功能。它对 windows 友好,直接提供了安装包。当然也可以使用 docker 来部署。Seq 对于单个用户是免费的,这对于一些小团队并没有什么问题。Seq 一个比较强大的功能是提供了类似 Sql 语句的数据查询及处理能力,使得用户可以直接写 Select from 来得到自己想要的数据。
image

日志聚合

日志是我们写程序离不开的一个东西。在我们排查问题的时候日志就是我们的救命稻草。我们的每个服务都在不停的生产日志。但是实施微服务后,如果按照传统的写本地文件的日志方案,显然会面临跟修改配置一样麻烦的境地。不同的日志分散在各个服务器、容器内,这种情况下查日志就会十分费力。日志聚合组件为我们解决了这个问题。所有的服务通过接口发送日志到聚合服务,再由聚合服务进行统一存储,并且提供统一的查询、分析的能力。日志聚合组件业界有 ELK、Exceptionless、Seq 等,Seq是一款比较小众的日志聚合工具。

在 Docker 容器中运行 Seq

PH=$(echo '123qwe' | docker run --rm -i datalust/seq config hash)

mkdir -p /data/docker/seq

docker run \
  --name seq \
  -d \
  --restart=always \
  -e ACCEPT_EULA=Y \
  -e SEQ_FIRSTRUN_ADMINPASSWORDHASH="$PH" \
  -v /data/docker/seq:/data \
  -p 80:80 \
  -p 5341:5341 \
  datalust/seq

这将启动一个 Seq 实例,其中包含:
--name seq能够使用容器名称运行命令,例如docker stop seq
-d在守护程序模式下运行(在后台)
--restart=always如果docker 启动,始终启动它
-e ACCEPT_EULA=Y要运行 Seq
-e SEQ_FIRSTRUN_ADMINPASSWORDHASH="$PH"为用户帐户设置初始密码;替换为您想要的密码;上面我设置的 123qwe
-v :/data在主机上挂载到 docker 容器上 - 这是 Seq 存储其所有配置和日志文件的位置。将 Seq 数据存储在容器外部意味着 Seq 的日志数据和元数据会在容器的生命周期之后持续存在,并且不会增加 docker 容器的大小, 上面我设置的 /data/docker/seq
-p 80:80将主机映射到 Seq UI 和 API(端口 80)localhost:80
-p 5341:5341将主机映射到 Seq 的特殊仅引入端口(端口 5341)
运行上述命令后,在 http://localhost:80 处浏览 Seq UI。初始用户名:admin ,密码:{自定义密码}

参考文献

Seq官网 — 集中式结构化日志 (datalust.co)

posted @ 2024-03-19 13:45  小何同學  阅读(76)  评论(0编辑  收藏  举报