Document

Seq在centos Docker上的使用

Docker入门

Seq在Docker上可用datalust/seqSeq基于Linux的Docker映像非常适合部署到Linux主机和容器协调器,以及Linux或macOS上的本地开发。它还具有用于简化Kubernetes部署的Helm图表。

Seq在Docker Hub上作为官方支持的容器映像分发

 

📘

使用Docker预览Seq

docker run --name seq -e ACCEPT_EULA=Y -p 5341:80 datalust/seq:latest
 
这个命令中的/zhongweb就是日志的存储地址
docker run --name seq -e ACCEPT_EULA=Y -v /path/to/seq/data:/zhongweb -p 5341:80 datalust/seq:latest
 
 

您将能够浏览Seq UI,向其发送日志并与http:// localhost:5341上的HTTP API进行交互

注意:请继续阅读以了解如何在容器重启之间保留日志(即在生产环境中使用的日志)。

👍

Kubernetes支持

Seq有一个Helm图表,用于简化Kubernetes中的部署有关更多详细信息,请参见Kubernetes部署文档

 
 
在Docker容器中运行Seq
PH=$(echo '<password>' | docker run --rm -i datalust/seq config hash) docker run \ --name seq \ -d \ --restart unless-stopped \ -e ACCEPT_EULA=Y \ -e SEQ_FIRSTRUN_ADMINPASSWORDHASH="$PH" \ -v /path/to/seq/data:/data \ -p 80:80 \ -p 5341:5341 \ datalust/seq

这将以以下形式启动一个Seq实例:

  • --name seq
     能够使用容器名称运行命令,例如 
    docker stop seq
  • -d
     以后台程序模式运行(在后台),省略此参数以查看容器日志 
    stdout
  • --restart unless-stopped
     如果停止运行,请始终重新启动Seq泊坞窗容器,除非运行时 
    docker stop seq
  • -e ACCEPT_EULA=Y
    要运行Seq,您必须接受最终用户许可协议
  • -e SEQ_FIRSTRUN_ADMINPASSWORDHASH="$PH"
    用户帐户设置初始密码用您想要的密码替换上面的第一行将密码的加密哈希存储到环境变量中(bash语法)
    admin
    <password>
    $PH
  • -v /path/to/seq/data:/data
    安装在主机上的docker容器上-这是Seq存储其所有配置和日志文件的位置。
    /path/to/seq/data
    /data
  • -p 80:80
    将主机映射到Seq UI和API(端口80)
    localhost:80
  • -p 5341:5341
    将主机映射到Seq的特殊“仅摄取”端口(端口5341)。我们建议单独暴露仅摄入端口。
    localhost:5341

可以分别使用命令停止和启动容器

docker stop seq
docker start seq

 

运行上面的命令后,在http:// localhost:80浏览Seq UI 

Seq Web UI,以降序显示搜索栏和最新事件列表。

 
 
记忆体限制

为了使Seq准确测量可用内存,具体取决于托管基础结构,通常有必要为容器指定内存限制。如果Seq容器意外退出,或者由于内存不足错误而失败,请为指定的参数

--memory
--memory-swap
docker run

 

docker run --memory=16g --memory-swap=16g <other args> datalust/seq

这些标志的参数是系统应为容器提供的总内存(越多越好)。通常,两个标志应具有相同的值,从而有效地禁用容器的交换。

 
 
持久卷

Seq Docker容器将配置和日志事件存储在其目录中。为了使该目录能够在容器重新启动后继续运行,如上例所示,需要使用命令行将其映射到持久卷

/data
-v

 

Seq是一个数据库;提供给它的卷应等效于本地磁盘存储,例如Azure磁盘VHD或AWS EBS卷。

只有一个正在运行的Seq容器可以同时访问一个存储卷:不可能运行两个或多个指向同一存储的容器实例。

🚧

Azure文件卷

在Microsoft Azure上运行Seq时,仅建议将Azure磁盘卷(已挂载的VHD)用于持久性存储。

对于非关键工作负载,Azure Premium文件可以用于事件存储,但是元数据必须在此配置中持久保存到SQL Azure不支持标准(非高级)Azure文件卷。

 
 
启用身份验证

如果您在命令行中为admin帐户指定了初始密码,则身份验证将已启用。

docker run

 

如果没有,那么下一步应该是访问“设置”>“用户”启用身份验证

 
 
接收日志事件
 
 
使用日志记录库

在使用Seq之前,您需要将应用程序配置为通过支持的日志记录库之一发送日志事件。

Seq集成了多种语言,库和框架,并具有用于接收日志数据的简单HTTP API。了解有关将日志放入Seq的更多信息。

📘

如果您不确定从哪里开始,我们建议您选择Serilog

 
 
使用CLI或HTTP

您的应用程序还可以通过在命令行客户端添加输出来将事件记录到Seq

 

./my-app | seqcli ingest

或直接将JSON发布到Seq:

curl -XPOST "http://your-seq-host/api/events/raw?clef" \ -d "{'@t':'2018-06-07T03:44:57.8532799Z','@mt':'Hello, {User}','User':'alice'}"

容器化服务还可以使用Docker的GELF(Graylog扩展日志格式)日志驱动程序将其日志本地转发到Seq

 
 
更改默认摄取端口

除了API端口以外,容器还可以公开有限的接收端口。在容器中,提取端口映射到

5341

 

docker run \ -e ACCEPT_EULA=Y \ -v $HOST_PATH_TO_SEQ:/data \ -p $HOST_HTTP_PORT:80 \ -p $HOST_INGESTION_PORT:5341 \ datalust/seq:latest

在哪里:

  • $HOST_PATH_TO_SEQ
     是容器主机上供Seq实例使用的绝对路径。
  • $HOST_INGESTION_PORT
     是主机上用于公开Seq接收终结点的端口。
 
 
在Docker容器中运行其他Seq命令

命令中映像之后指定的任何参数都将作为参数传递给Seq二进制文件:

datalust/seq:latest
docker run

 

docker run \ --rm \ -e ACCEPT_EULA=Y \ -v $HOST_PATH_TO_SEQ:/data \ datalust/seq:latest version

在哪里:

  • $HOST_PATH_TO_SEQ
     是容器主机上供Seq实例使用的绝对路径。
 
 
集装箱环境
 
 
文件路径

容器中Seq使用的重要文件路径。

价值描述
/data
Seq范围和日志的位置
 
 
港口

容器中Seq使用的重要端口。

价值描述
:80
Seq绑定到API和UI的端口
:5341
Seq绑定到仅摄取端点的端口
 
 
环境变量

容器中Seq使用的环境变量。有关容器支持的环境变量的完整列表,请参见“服务器配置”参考。

价值描述
ACCEPT_EULA
必须设置为表明已接受Seq EULA
Y
SEQ_API_CANONICALURI
可用于到达容器外部的Seq的外部URI(以前称为
BASE_URI
SEQ_FIRSTRUN_ADMINUSERNAME
默认管理员帐户的用户名,仅在首次初始化容器时使用;默认是
admin
SEQ_FIRSTRUN_ADMINPASSWORDHASH
默认管理员密码的加密加密哈希,仅在首次初始化容器时使用;默认为不设置密码;使用创建哈希并提供密码
docker run datalust/seq config hash
STDIN
 
 
下一步是什么?

一旦您的应用愉快地将事件发送到Seq,您就可以:

posted @ 2021-04-15 15:27  从未被超越  阅读(1021)  评论(0)    收藏  举报