## ESXi 7.0U3f
고객사에서 Log Insight로 확인 시, 특정 ESXi Host에 다량의 로그가 쌓이는 현상이 있었습니다.
일단 문제를 좁히기 위해서 어떤 유형의 로그가 많이 쌓이는지를 구분할 필요가 있었습니다.
Log Insight에서 문제가 발생하는 ESXi Host의 특정 시간대에 가장 많이 발생하는 로그를 대부분이 hostd 에 쌓이고 있었습니다.
일차적으로 hostd에 많은 로그가 쌓이고 있었기 때문에, HostAgent 관련 옵션을 수정하였습니다.
아래 화면을 보면, Config.HostAgent.level에 verbose가 추가되어 있는 것을 알 수 있습니다.
이 verbose 옵션을 우선 제거하여 문제 증상이 지속되는지를 확인하였습니다.
안타깝게도 verbose 옵션을 제거하였지만 동일하게 hostd.log에 다량의 로그가 계속해서 쌓이고 있었습니다.
이제는 hostd.log에 어떠한 유형의 로그가 많이 쌓이는지를 구분해야 할 때입니다.
원래는 verbose 레벨의 로그가 기록되면 안되는데, 계속해서 아래와 같은 verbose 레벨의 로그가 기록되고 있었습니다.일단 문제를 좁히기 위해서 어떤 유형의 로그가 많이 쌓이는지를 구분할 필요가 있었습니다.
Log Insight에서 문제가 발생하는 ESXi Host의 특정 시간대에 가장 많이 발생하는 로그를 대부분이 hostd 에 쌓이고 있었습니다.
일차적으로 hostd에 많은 로그가 쌓이고 있었기 때문에, HostAgent 관련 옵션을 수정하였습니다.
아래 화면을 보면, Config.HostAgent.level에 verbose가 추가되어 있는 것을 알 수 있습니다.
이 verbose 옵션을 우선 제거하여 문제 증상이 지속되는지를 확인하였습니다.
안타깝게도 verbose 옵션을 제거하였지만 동일하게 hostd.log에 다량의 로그가 계속해서 쌓이고 있었습니다.
이제는 hostd.log에 어떠한 유형의 로그가 많이 쌓이는지를 구분해야 할 때입니다.
원래는 verbose 레벨의 로그가 기록되면 안되는데, 계속해서 아래와 같은 verbose 레벨의 로그가 기록되고 있었습니다.
2022-10-13T04:20:26.792Z verbose hostd[3260951] [Originator@6876 sub=Solo.Vmomi opID=37dc4964-24-d3fb user=vpxuser:VSPHERE.LOCAL\Administrator] Result:
--> (vim.PerformanceManager.EntityMetricCSV) [
--> (vim.PerformanceManager.EntityMetricCSV) {
--> entity = 'vim.VirtualMachine:2',
--> sampleInfoCSV =
"20,2022-10-13T04:10:20Z,20,2022-10-13T04:10:40Z,20,2022-10-13T04:11:00Z,20,2022-10-13T04:11:20Z,20,2022-10-13T04:11:40Z,20,2022-10-13T04:12:00Z,20,2022-10-13T04:12:20Z,20,2022-10-13T04:12:40Z,20,2022-10-13T04:13:00Z,20,2022-10-13T04:13:20Z,20,2022-10-13T04:13:40Z,20,2022-10-13T04:14:00Z,20,2022-10-13T04:14:20Z,20,2022-10-13T04:14:40Z,20,2022-10-13T04:15:00Z,20,2022-10-13T04:15:20Z,20,2022-10-13T04:15:40Z,20,2022-10-13T04:16:00Z,20,2022-10-13T04:16:20Z,20,2022-10-13T04:16:40Z,20,2022-10-13T04:17:00Z,20,2022-10-13T04:17:20Z,20,2022-10-13T04:17:40Z,20,2022-10-13T04:18:00Z,20,2022-10-13T04:18:20Z,20,2022-10-13T04:18:40Z,20,2022-10-13T04:19:00Z,20,2022-10-13T04:19:20Z,20,2022-10-13T04:19:40Z,20,2022-10-13T04:20:00Z,20,2022-10-13T04:20:20Z",
--> value = (vim.PerformanceManager.MetricSeriesCSV) [
--> (vim.PerformanceManager.MetricSeriesCSV) {
--> id = (vim.PerformanceManager.MetricId) {
--> counterId = 1,
--> instance = ""
--> },
--> value = "121,37,37,37,35,38,118,38,34,59,37,35,117,38,33,43,37,40,123,42,33,37,36,33,105,34,40,67,37,36,105"
--> }
--> ]
--> },
처음에는 외부의 Client에서 지속적인 요청 때문에 쌓이는 로그라고 생각했지만, Research 결과 이는 VMOMI(Virtualization Management Object Management Infrastructure) 관련 verbose 로그였습니다.
일반적인 상황에서는 VMOMI 관련 trivia 로그가 필요 없지만, Troubleshooting 목적으로 보다 자세한 로그 수집이 필요할 때 로그 레벨을 수정할 수 있습니다.
관련 내용을 다루고 있는 외부 문서는 아래 일본어로 된 KB만 있습니다.
vCenter Server での vmomi ログの有効化 (2145692)
https://kb.vmware.com/s/article/2145692?lang=ja
Default로는 VMOMI 관련 로그가 설정되어 있지 않기 때문에 hostd 서비스의 configuration 정보가 추가되어 있는 경우, verbose 로그가 계속해서 기록될 수 있습니다.
그렇다면, 어떤 값들을 수정해야 verbose 로그가 기록되는 것을 방지할 수 있는지 알아보겠습니다.
ESXi 7.0 Update2부터는 개별 서비스들을 위한 configuration 관련 XML 파일이 사라지고 ConfigStoreDB를 /bin/configstorecli 도구를 이용하여 export/import를 통해 configuration 정보를 수정해야 합니다.
먼저, verbose 로그가 기록되고 있는 상태에서 ConfigStoreDB가 어떻게 설정되어 있는지 확인합니다.
아래 결과는 /bin/configstorecli 도구를 이용하여 hostd 서비스의 configuration 정보를 json 파일로 export 한 것입니다.
[root@mgmtesxi01:~] /bin/configstorecli config current get -c esx -g services -k hostd -outfile tmp.json
{
"browsable_console_dir": "/vmimages",
"default_config_path": "/etc/vmware/",
...
"solo": {
...
"requires": "hostsvc",
"soap_port": 8307,
"trace_at": "trivia",
"trace_faults_only": false,
"trace_vmomi": true,
"web_server": {
"port": 8309
}
},
위 결과 값에서 "trace_vmomi"와 "trace_faults_only"는 기본적으로 없는 Key 이며, "trace_at" Key의 value는 Default로 verbose 입니다.
이를 원복하기 위해서 json 파일을 다음과 같이 수정합니다.
{
"browsable_console_dir": "/vmimages",
"default_config_path": "/etc/vmware/",
...
"solo": {
...
"requires": "hostsvc",
"soap_port": 8307,
"trace_at": "verbose",
"web_server": {
"port": 8309
}
},
이제 수정한 json 파일을 다시 ConfigStoreDB로 import 해줘야 합니다. 아래 명령어를 이용하면 json 파일을 import 할 수 있습니다.
[root@mgmtesxi01:~] /bin/configstorecli config current set -c esx -g services -k hostd -infile tmp.json
전체 과정을 간단하게 정리하면 다음과 같습니다.
1. ConfigStoreDB에서 hostd 서비스 관련 configuration 정보 export
/bin/configstorecli config current get -c esx -g services -k hostd -outfile tmp.json
2. export한 configuration 정보를 담고 있는 json 파일 vi editor로 열기
vi tmp.json
3. vi editor에서 trace 관련 내용 수정
"trace_vmomi"와 "trace_faults_only" 제거
"trace_at"은 trivia 대신 verbose로 변경
4. ConfigStoreDB로 hostd 서비스 관련 configuration 정보 import
/bin/configstorecli config current set -c esx -g services -k hostd -infile tmp.json
5. hostd 서비스 재시작
/etc/init.d/hostd restart
|
위 작업을 완료하고 나면, 더 이상 hostd.log 파일에 verbose 레벨의 로그가 기록되지 않는 것을 확인할 수 있었습니다.
'Compute' 카테고리의 다른 글
Fail to upgrade vcenter from 7.0u2 to 7.0u3c (0) | 2022.11.24 |
---|---|
How to configure syslog server (0) | 2022.11.19 |
How to read ConfigStoreDB (0) | 2022.11.15 |
How to collect guest os memory dump using vmss2core (0) | 2022.11.02 |
How to use non-default vCenter events (0) | 2022.10.27 |