Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add access log gRPC interceptor & Update observability features #852

Closed
wants to merge 15 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 33 additions & 5 deletions Makefile.d/k8s.mk
Original file line number Diff line number Diff line change
Expand Up @@ -317,17 +317,25 @@ k8s/metrics/metrics-server/delete:
kubectl delete -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

.PHONY: k8s/metrics/prometheus/deploy
## deploy prometheus and grafana
## deploy prometheus
k8s/metrics/prometheus/deploy:
kubectl apply -f k8s/metrics/prometheus
kubectl create configmap grafana-dashboards --from-file=k8s/metrics/grafana/dashboards/
kubectl apply -f k8s/metrics/grafana

.PHONY: k8s/metrics/prometheus/delete
## delete prometheus and grafana
## delete prometheus
k8s/metrics/prometheus/delete:
kubectl delete -f k8s/metrics/prometheus
kubectl delete configmap grafana-dashboards

.PHONY: k8s/metrics/grafana/deploy
## deploy grafana
k8s/metrics/grafana/deploy:
kubectl apply -f k8s/metrics/grafana/dashboards
kubectl apply -f k8s/metrics/grafana

.PHONY: k8s/metrics/grafana/delete
## delete grafana
k8s/metrics/grafana/delete:
kubectl delete -f k8s/metrics/grafana/dashboards
kubectl delete -f k8s/metrics/grafana

.PHONY: k8s/metrics/jaeger/deploy
Expand All @@ -340,6 +348,26 @@ k8s/metrics/jaeger/deploy:
k8s/metrics/jaeger/delete:
kubectl delete -f k8s/metrics/jaeger

.PHONY: k8s/metrics/loki/deploy
## deploy loki and promtail
k8s/metrics/loki/deploy:
kubectl apply -f k8s/metrics/loki

.PHONY: k8s/metrics/loki/delete
## delete loki and promtail
k8s/metrics/loki/delete:
kubectl delete -f k8s/metrics/loki

.PHONY: k8s/metrics/tempo/deploy
## deploy tempo and jaeger-agent
k8s/metrics/tempo/deploy:
kubectl apply -f k8s/metrics/tempo

.PHONY: k8s/metrics/tempo/delete
## delete tempo and jaeger-agent
k8s/metrics/tempo/delete:
kubectl delete -f k8s/metrics/tempo

.PHONY: k8s/metrics/profefe/deploy
## deploy profefe
k8s/metrics/profefe/deploy:
Expand Down
40 changes: 40 additions & 0 deletions charts/vald/values-observability-demo.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
#
# Copyright (C) 2019-2021 vdaas.org vald team <vald@vdaas.org>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

defaults:
image:
tag: nightly
logging:
logger: zap
format: json
server_config:
servers:
grpc:
server:
grpc:
interceptors:
- AccessLogInterceptor
metrics:
prometheus:
enabled: true
observability:
enabled: true
trace:
enabled: true
prometheus:
enabled: true
jaeger:
enabled: true
2 changes: 1 addition & 1 deletion charts/vald/values.schema.json

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions charts/vald/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ defaults:
time_zone: UTC
# @schema {"name": "defaults.logging", "type": "object", "anchor": "logging"}
logging:
# @schema {"name": "defaults.logging.logger", "type": "string", "enum": ["glg"]}
# @schema {"name": "defaults.logging.logger", "type": "string", "enum": ["glg", "zap"]}
# defaults.logging.logger -- logger name.
# currently logger must be `glg`.
# currently logger must be `glg` or `zap`.
logger: glg
# @schema {"name": "defaults.logging.level", "type": "string", "enum": ["debug", "info", "warn", "error", "fatal"]}
# defaults.logging.level -- logging level.
Expand Down Expand Up @@ -156,7 +156,7 @@ defaults:
# @schema {"name": "defaults.server_config.servers.grpc.server.grpc.header_table_size", "type": "integer"}
# defaults.server_config.servers.grpc.server.grpc.header_table_size -- gRPC server header table size
header_table_size: 0
# @schema {"name": "defaults.server_config.servers.grpc.server.grpc.interceptors", "type": "array"}
# @schema {"name": "defaults.server_config.servers.grpc.server.grpc.interceptors", "type": "array", "items": {"type": "string", "enum": ["AccessLogInterceptor"]}}
# defaults.server_config.servers.grpc.server.grpc.interceptors -- gRPC server interceptors
interceptors: []
# @schema {"name": "defaults.server_config.servers.grpc.server.restart", "type": "boolean"}
Expand Down
1 change: 1 addition & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ require (
go.opencensus.io v0.22.5
go.uber.org/automaxprocs v1.3.0
go.uber.org/goleak v1.1.10
go.uber.org/zap v1.14.0
golang.org/x/net v0.0.0-20210119194325-5f4716e94777
golang.org/x/sync v0.0.0-20201207232520-09787c993a3a
golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4
Expand Down
10 changes: 5 additions & 5 deletions internal/log/format/format.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ const (
Unknown Format = iota
RAW
JSON
LTSV
// LTSV
)

func (f Format) String() string {
Expand All @@ -33,8 +33,8 @@ func (f Format) String() string {
return "raw"
case JSON:
return "json"
case LTSV:
return "ltsv"
// case LTSV:
// return "ltsv"
}
return "unknown"
}
Expand All @@ -45,8 +45,8 @@ func Atof(str string) Format {
return RAW
case "json":
return JSON
case "ltsv":
return LTSV
// case "ltsv":
// return LTSV
}
return Unknown
}
44 changes: 22 additions & 22 deletions internal/log/format/format_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,13 +58,13 @@ func TestFormat_String(t *testing.T) {
},
},

{
name: "returns ltsv when f is LTSV",
f: LTSV,
want: want{
want: "ltsv",
},
},
// {
// name: "returns ltsv when f is LTSV",
// f: LTSV,
// want: want{
// want: "ltsv",
// },
// },

{
name: "returns unknown when f is 100",
Expand Down Expand Up @@ -148,21 +148,21 @@ func TestAtof(t *testing.T) {
},
},

{
name: "returns LTSV when str is `ltsv`",
str: "ltsv",
want: want{
want: LTSV,
},
},

{
name: "returns LTSV when str is `LTSv`",
str: "LTSv",
want: want{
want: LTSV,
},
},
// {
// name: "returns LTSV when str is `ltsv`",
// str: "ltsv",
// want: want{
// want: LTSV,
// },
// },
//
// {
// name: "returns LTSV when str is `LTSv`",
// str: "LTSv",
// want: want{
// want: LTSV,
// },
// },

{
name: "returns Unknown when str is `Vald`",
Expand Down
12 changes: 12 additions & 0 deletions internal/log/log.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import (

"github.com/vdaas/vald/internal/log/glg"
logger "github.com/vdaas/vald/internal/log/logger"
"github.com/vdaas/vald/internal/log/zap"
)

var (
Expand All @@ -40,6 +41,17 @@ func Init(opts ...Option) {

func getLogger(o *option) logger.Logger {
switch o.logType {
case logger.ZAP:
z, err := zap.New(
zap.WithLevel(o.level.String()),
zap.WithFormat(o.format.String()),
)
if err == nil {
return z
}

// fallback
fallthrough
case logger.GLG:
fallthrough
default:
Expand Down
18 changes: 18 additions & 0 deletions internal/log/log_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,24 @@ func Test_getLogger(t *testing.T) {
return nil
}
tests := []test{
func() test {
return test{
name: "returns zap object when *option.logType is ZAP",
args: args{
o: &option{
logType: logger.ZAP,
},
},
checkFunc: func(w want, got Logger) error {
if got == nil {
return errors.New("got object is empty")
}

return nil
},
}
}(),

{
name: "returns glg object when *option.logType is GLG",
args: args{
Expand Down
30 changes: 15 additions & 15 deletions internal/log/logger/type.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ const (
Unknown Type = iota
GLG
ZAP
ZEROLOG
LOGRUS
KLOG
// ZEROLOG
// LOGRUS
// KLOG
)

func (m Type) String() string {
Expand All @@ -35,12 +35,12 @@ func (m Type) String() string {
return "glg"
case ZAP:
return "zap"
case ZEROLOG:
return "zerolog"
case LOGRUS:
return "logrus"
case KLOG:
return "klog"
// case ZEROLOG:
// return "zerolog"
// case LOGRUS:
// return "logrus"
// case KLOG:
// return "klog"
}
return "unknown"
}
Expand All @@ -51,12 +51,12 @@ func Atot(str string) Type {
return GLG
case "zap":
return ZAP
case "zerolog":
return ZEROLOG
case "logrus":
return LOGRUS
case "klog":
return KLOG
// case "zerolog":
// return ZEROLOG
// case "logrus":
// return LOGRUS
// case "klog":
// return KLOG
}
return Unknown
}
Loading