新年1発目

アプリケーションのログを標準エラーに出力する

zap がパフォーマンスが良いという意見だけで zap にした。

結果、こんなのが標準エラーに出力されるようにした。

{
"level":"error",
"ts":1577969526.688373,
"caller":"lib/logger.go:29",
"msg":"checkCSRFToken returns false",
"func":"PreSigned",
"error":"checkCSRFToken returns false",
"stacktrace":"github.com/rluisr/easyuploader_api/lib.ErrorWithResponseBadRequest\n\t/go/src/easyuploader_api/lib/logger.go:29\ngithub.com/rluisr/easyuploader_api/resource.PreSigned\n\t/go/src/easyuploader_api/resource/pre-signed.go:19\nmain.main.func7\n\t/go/src/easyuploader_api/main.go:63\ngithub.com/gin-gonic/gin.(*Context).Next\n\t/go/pkg/mod/github.com/gin-gonic/[email protected]/context.go:124\ngithub.com/gin-gonic/gin.RecoveryWithWriter.func1\n\t/go/pkg/mod/github.com/gin-gonic/[email protected]/recovery.go:83\ngithub.com/gin-gonic/gin.(*Context).Next\n\t/go/pkg/mod/github.com/gin-gonic/[email protected]/context.go:124\ngo.elastic.co/apm/module/apmgin.(*middleware).handle\n\t/go/pkg/mod/go.elastic.co/apm/module/[email protected]/middleware.go:132\ngithub.com/gin-gonic/gin.(*Context).Next\n\t/go/pkg/mod/github.com/gin-gonic/[email protected]/context.go:124\ngithub.com/gin-gonic/gin.(*Engine).handleHTTPRequest\n\t/go/pkg/mod/github.com/gin-gonic/[email protected]/gin.go:389\ngithub.com/gin-gonic/gin.(*Engine).ServeHTTP\n\t/go/pkg/mod/github.com/gin-gonic/[email protected]/gin.go:351\nnet/http.serverHandler.ServeHTTP\n\t/usr/local/go/src/net/http/server.go:2802\nnet/http.(*conn).serve\n\t/usr/local/go/src/net/http/server.go:1890"
}

fluend を用意する

イメージと設定ファイル
github.com

ジョブファイル

job "fluentd" {
datacenters = ["luis"]
type = "service"
update {
stagger = "10s"
max_parallel = 1
}
group "fluentd" {
count = 1
restart {
attempts = 10
interval = "5m"
delay = "25s"
mode = "delay"
}
ephemeral_disk {
size = 3000
}
task "fluentd" {
driver = "docker"
config {
image = "registry.gitlab.com/rluisr/docker-registry_fluentd:20200102-6"
auth {
username = "r"
password = ""
}
port_map {
fluentd = 24224
}
}
resources {
cpu    = 100
memory = 256
network {
mbits = 10
port "fluentd" {}
}
}
service {
name = "fluentd"
port = "fluentd"
tags = [
"traefik.enable=true",
"traefik.tag=service-v2.1.1",
"traefik.tcp.routers.fluentd.entrypoints=fluentd",
"traefik.tcp.routers.fluentd.rule=HostSNI(`*`)"
]
check {
type     = "tcp"
port     = "fluentd"
interval = "1s"
timeout  = "1s"
}
}
}
}
}

見て分かるとおり、traefik で TCP ロードバランシングをする。
これを nginx で1つにまとめている。

server {
listen                      24224;
proxy_pass                  traefik-fluentd;
proxy_timeout               3s;
proxy_connect_timeout       1s;
}

f:id:rarirureluis:20200102222317p:plain

アプリケーションのロギングを変える

logging {
type = "fluentd"
config {
fluentd-address = "fluentd.luis.local:24224"
tag = "eu-stg-api"
}
}

確認

f:id:rarirureluis:20200102221844p:plain

log に全部まとめられているのをどうにかしたい。