728x90
반응형
Overview
미들웨어, 데이터 베이스등과 같은 시스템을 운영하다보면 로그 레벨을 동적으로 변경해야되는 때가 많다. 그럴때마다 설정 파일을 변경하면서 시스템을 내렸다 올렸다는 일은 여간 까다롭거나 비용이 많이 드는 일이 아닐 수 없다. 다행히 Milvus에서는 이런 로그 레벨 수준으로 동적으로 변경 가능하도록 API 제공해주고 있다.
로그 레벨을 이제 동적으로 변경해보자
1. 로그 레벨을 error 로 변경해보자.
[root@localhost ~]# curl -X PUT localhost:9091/log/level -d level=error
{"level":"error"}
마지막 로그 이후에 출력이 멈춘 것을 볼 수 있다.
[root@localhost ~]# docker logs -f 4b2806e514a1
...
2. error 로그를 출력하기 위해서 etcd, minio container를 한번 내려보자
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4b2806e514a1 milvusdb/milvus:v2.2.11 "/tini -- milvus run…" 45 minutes ago Up 45 minutes 0.0.0.0:9091->9091/tcp, :::9091->9091/tcp, 0.0.0.0:19530->19530/tcp, :::19530->19530/tcp milvus-standalone
53e9f0029dad minio/minio:RELEASE.2023-03-20T20-16-18Z "/usr/bin/docker-ent…" 45 minutes ago Up 45 minutes (healthy) 9000/tcp milvus-minio
c4cb4680b4b7 quay.io/coreos/etcd:v3.5.5 "etcd -advertise-cli…" 45 minutes ago Up 45 minutes 2379-2380/tcp
[root@localhost ~]# docker stop 53e9f0029dad
53e9f0029dad
[root@localhost ~]# docker stop c4cb4680b4b7
c4cb4680b4b7
아래와 같이 로그가 error 로그가 출력되는 것을 볼 수 있다.
[2023/07/12 04:19:32.946 +00:00] [ERROR] [config/etcd_source.go:151] ["can not pull configs"] [error="context deadline exceeded"] [stack="github.com/milvus-io/milvus/internal/config.(*EtcdSource).refreshConfigurationsPeriodically\n\t/go/src/github.com/milvus-io/milvus/internal/config/etcd_source.go:151"]
[2023/07/12 04:19:32.946 +00:00] [ERROR] [config/etcd_source.go:151] ["can not pull configs"] [error="context deadline exceeded"] [stack="github.com/milvus-io/milvus/internal/config.(*EtcdSource).refreshConfigurationsPeriodically\n\t/go/src/github.com/milvus-io/milvus/internal/config/etcd_source.go:151"]
{"level":"warn","ts":"2023-07-12T04:19:32.946Z","logger":"etcd-client","caller":"v3@v3.5.5/retry_interceptor.go:62","msg":"retrying of unary invoker failed","target":"etcd-endpoints://0xc000511dc0/etcd:2379","attempt":0,"error":"rpc error: code = DeadlineExceeded desc = latest balancer error: last connection error: connection error: desc = \"transport: Error while dialing dial tcp: lookup etcd on 127.0.0.11:53: no such host\""}
{"level":"warn","ts":"2023-07-12T04:19:32.946Z","logger":"etcd-client","caller":"v3@v3.5.5/retry_interceptor.go:62","msg":"retrying of unary invoker failed","target":"etcd-endpoints://0xc0027601c0/etcd:2379","attempt":0,"error":"rpc error: code = DeadlineExceeded desc = latest balancer error: last connection error: connection error: desc = \"transport: Error while dialing dial tcp: lookup etcd on 127.0.0.11:53: no such host\""}
디폴트 로그 레벨은 INFO이다 (?)
위에 링크된 블로그 공식 사이트를 들어가보면 Milvus는 기본적으로 INFO 레벨 수준을 출력한다고 기재되어 있다.
정말 그런것일까 증명해보자.
docker-compose로 milvus standalone 설치
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4b2806e514a1 milvusdb/milvus:v2.2.11 "/tini -- milvus run…" 45 minutes ago Up 45 minutes 0.0.0.0:9091->9091/tcp, :::9091->9091/tcp, 0.0.0.0:19530->19530/tcp, :::19530->19530/tcp milvus-standalone
53e9f0029dad minio/minio:RELEASE.2023-03-20T20-16-18Z "/usr/bin/docker-ent…" 45 minutes ago Up 45 minutes (healthy) 9000/tcp milvus-minio
c4cb4680b4b7 quay.io/coreos/etcd:v3.5.5
출력 로그를 확인해보자
엥? DEBUG까지 출력을 하고 있다. INFO가 디폴트 설정으로 되어 있다는 것은 저 링크가 업데이트가 되지 않았거나 버전 차이일 수도 있다.
[root@localhost ~]# docker logs 4b2806e514a
...
[2023/07/12 03:11:31.579 +00:00] [INFO] [paramtable/hook_config.go:19] ["hook config"] [hook={}]
[2023/07/12 03:11:31.579 +00:00] [INFO] [config/etcd_source.go:145] ["start refreshing configurations"]
[2023/07/12 03:11:31.584 +00:00] [DEBUG] [paramtable/grpc_param.go:238] ["Init client max send size"] [role=indexcoord] [grpc.clientMaxSendSize=104857600]
[2023/07/12 03:11:31.584 +00:00] [DEBUG] [paramtable/grpc_param.go:238] ["Init client max recv size"] [role=indexcoord] [grpc.clientMaxRecvSize=104857600]
...
설정 파일을 확인해보자
docker container안에 들어가서 설정 파일을 출력해보면 etcd는 log레벨이 info로 되어 있지만 시스템 로그 설정은 기본적으로 debug로 되어있다. 영구적으로 변경하기 위해서는 container에 설정 파일을 volumne으로 연결해서로그 레벨을 변경해야할 것이다.
[root@localhost ~]# docker exec -it 4b2806e514a1 /bin/bash
root@4b2806e514a1:/milvus# cat configs/milvus.yaml
# Related configuration of etcd, used to store Milvus metadata & service discovery.
etcd:
endpoints:
- localhost:2379
rootPath: by-dev # The root path where data is stored in etcd
metaSubPath: meta # metaRootPath = rootPath + '/' + metaSubPath
kvSubPath: kv # kvRootPath = rootPath + '/' + kvSubPath
log:
# path is one of:
# - "default" as os.Stderr,
# - "stderr" as os.Stderr,
# - "stdout" as os.Stdout,
# - file path to append server logs to.
# please adjust in embedded Milvus: /tmp/milvus/logs/etcd.log
path: stdout
level: info # Only supports debug, info, warn, error, panic, or fatal. Default 'info'.
...
# Configures the system log output.
log:
level: debug # Only supports debug, info, warn, error, panic, or fatal. Default 'info'.
stdout: "true" # default true, print log to stdout
file:
# please adjust in embedded Milvus: /tmp/milvus/logs
rootPath: "" # root dir path to put logs, default "" means no log file will print
maxSize: 300 # MB
maxAge: 10 # Maximum time for log retention in day.
maxBackups: 20
format: text # text/json
728x90
반응형