We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Describe the bug 业务pod容器宿主机挂载,并且业务pod正常输出到日志文件: volumeMounts: - mountPath: /var/log/als/file/output/ name: volume1 volumes:
原因:没有匹配到正确的挂载点,StartsWith("/var/log", "/var/log/als/file/output")这里是false ,而是使用了容器内的overlay路径,因此采不到。 日志: set container base dir:/lmtagent_host/data/docker/overlay2/4997753881ff76a72d83f61d622324e2fb21a8d48e12c914e4b812483e1202fc/diff/var/log container id:92a89d9354a5a3692ab5f51323bcd7170efc5580a59676ba1a2af35645ce821f logPath:/var/log
InputFile.cpp 代码: bool InputFile::SetContainerBaseDir(ContainerInfo& containerInfo, const std::string& logPath, const std::string& configName) { if (!containerInfo.mRealBaseDir.empty()) { return true; } size_t pthSize = logPath.size();
size_t size = containerInfo.mMounts.size(); size_t bestMatchedMountsIndex = size; // ParseByJSONObj 确保 Destination、Source、mUpperDir 不会以\或者/结尾 for (size_t i = 0; i < size; ++i) { StringView dst = containerInfo.mMounts[i].mDestination; size_t dstSize = dst.size(); if (StartWith(logPath, dst) && (pthSize == dstSize || (pthSize > dstSize && (logPath[dstSize] == '/' || logPath[dstSize] == '\\'))) && (bestMatchedMountsIndex == size || containerInfo.mMounts[bestMatchedMountsIndex].mDestination.size() < dstSize)) { bestMatchedMountsIndex = i; } } if (bestMatchedMountsIndex < size) { containerInfo.mRealBaseDir = STRING_FLAG(default_container_host_path) + containerInfo.mMounts[bestMatchedMountsIndex].mSource + logPath.substr(containerInfo.mMounts[bestMatchedMountsIndex].mDestination.size()); LOG_DEBUG(sLogger, ("set container base dir", containerInfo.mRealBaseDir)("source", containerInfo.mMounts[bestMatchedMountsIndex].mSource)( "destination", containerInfo.mMounts[bestMatchedMountsIndex].mDestination)("logPath", logPath)); } else { containerInfo.mRealBaseDir = STRING_FLAG(default_container_host_path) + containerInfo.mUpperDir + logPath; } LOG_INFO(sLogger, ("set container base dir", containerInfo.mRealBaseDir)("container id", containerInfo.mID)("logPath", logPath)("config", configName)); return true;
}
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Describe the bug
业务pod容器宿主机挂载,并且业务pod正常输出到日志文件:
volumeMounts:
- mountPath: /var/log/als/file/output/
name: volume1
volumes:
path: /app/logs/
type: ""
name: volume1
配置采集规则的input:
"inputs" : [ {
"Type" : "input_file",
"FilePaths" : [ "/var/log/**/random_json_file_.log" ],
"MaxDirSearchDepth" : 5,
"ExcludeFilePaths" : [ ],
"TailSizeKB" : 0,
"EnableContainerDiscovery" : true,
"ContainerFilters" : {
"K8sNamespaceRegex" : "rule-verify-namespace",
"K8sPodRegex" : "hostpath-json-"
},
"AppendingLogPositionMeta" : true,
"AllowingIncludedByMultiConfigs" : true
} ],
原因:没有匹配到正确的挂载点,StartsWith("/var/log", "/var/log/als/file/output")这里是false ,而是使用了容器内的overlay路径,因此采不到。
日志:
set container base dir:/lmtagent_host/data/docker/overlay2/4997753881ff76a72d83f61d622324e2fb21a8d48e12c914e4b812483e1202fc/diff/var/log container id:92a89d9354a5a3692ab5f51323bcd7170efc5580a59676ba1a2af35645ce821f logPath:/var/log
InputFile.cpp 代码:
bool InputFile::SetContainerBaseDir(ContainerInfo& containerInfo, const std::string& logPath, const std::string& configName) {
if (!containerInfo.mRealBaseDir.empty()) {
return true;
}
size_t pthSize = logPath.size();
}
The text was updated successfully, but these errors were encountered: