获取日志
本文介绍如何通过3种方案获取 ONES 日志,root登录服务器后操作。
1. 获取运行时日志
本节介绍如何使用 kubectl logs 获取 Pod 的实时日志与历史日志。
1.1 获取当前运行日志
kubectl logs -n ones -l app=project-api -c project-api > /tmp/project-api.log
1.2 获取pod上一次重启前的日志
kubectl logs -n ones -l app=project-api -c project-api --previous --timestamps > /tmp/project-api-previous.log
1.3 不确定 Pod 名称或 Label 时
kubectl get pod -n ones |grep -i project
kubectl logs -n ones project-api-**** -c project-api > /tmp/project-api.log
2. 获取临时日志文件
在 K3S 中,部分组件的容器日志会通过 symlink 映射在 /var/log/pods 目录下,第一个方法找不到所需的日志,可参考该方法。
2.1 进入日志目录
cd /var/log/pods
2.2 构建日志包
构建日志包的方法,再将 <业务模块>-log.tar.gz 拿出来即可
ls | grep -e <组件名称1> -e <组件名称2> | xargs tar -czvf /tmp/<业务模块>-log.tar.gz
2.3 示例:Project 业务模块
更多业务模块和具体组件的关系,参考文末 FAQ;日志包存放于 /tmp 目录,需手动下载传输。
ls | grep -e project-api -e rabbitmq -e redis | xargs tar -czvf /tmp/project-log.tar.gz
3. 获取持久化日志文件
持久化日志需根据 ONES 版本区分,上述两个方案找不到所需的日志,可参考该方法。
3.1、6.1.94以上版本获取日志
检查是否开启可观测系统
kubectl get pod -n ones-telemetry
如果看到如下输出,代表当前环境开启了日志组件。否则没有开启,该方法不适用
[root@ones-cn-server-node03 ~]# kubectl get pod -n ones-telemetry
ones-logging-statefulset-0 1/1 Running 0 35d
进入日志目录
# 本地存储模式下默认 ONES 数据目录是 /data/ones
cd /data/ones/ones-local-storage/ones-logging/ones-telemetry/data-volume-ones-logging-statefulset-0/logs/
构建日志包
# 分析故障时,可打包该文件夹、提供给 ONES 工程师
tar cvf "/tmp/logs-$(hostname)-$(date '+%Y%m%d').tar" ./
将/tmp/logs-test1-20241008.tar下载传输即可。
3.2、6.1.94以下版本获取日志
检查是否开启日志组件
kubectl get po -A | grep -E "ones-logging-statefulset|fluent-bit"
如果看到如下输出,代表当前环境开启了日志组件。否则没有开启,该方法不适用
[root@ones-cn-server-node03 ~]# kubectl get po -A | grep -E "ones-logging-statefulset|fluent-bit"
logging fluent-bit-p7wxk 1/1 Running 0 26h
ones-logging ones-logging-statefulset-0 1/1 Running 6 (87m ago) 22h
进入日志目录
进入 ONES 日志目录, ONES 的日志目录为 <ones-data-path>/ones-local-storage/ones-logging/ones-logging/data-volume-ones-logging-statefulset-0/ones/
ones-data-path 的目录为安装时 ONES_DATA_DIR 环境变量指定,如果没有指定则默认为 /data/ones
cd /data/ones/ones-local-storage/ones-logging/ones-logging/data-volume-ones-logging-statefulset-0/ones/
构建日志包
构建日志包的方法
ls | grep -e <组件名称1> -e <组件名称2> | grep <日期> | xargs tar -czvf /tmp/<业务模块>-<日期>-log.tar.gz
例如构建 project 组件 2023-11-01 的日志包。业务模块和具体组件的关系,参考 FAQ
ls | grep -e project-api -e rabbitmq -e redis | grep 2023-11-01 | xargs tar -czvf /tmp/project-2023-11-01-log.tar.gz
将 /tmp/<业务模块>-<日期>-log.tar.gz 下载传输即可。
FAQ:业务模块和组件的关联关系
{
"gateway": ["ingress", "apisix"],
"project": ["project-api", "rabbitmq", "redis"],
"wiki": ["wiki-api", "wiz"],
"task": ["taskapp"],
"auditLog": ["binlog-event-sync", "audit-log-sync", "ones-canal", "kafka", "clickHouse"],
"performance": ["binlog-event-sync", "audit-log-sync", "ones-canal", "kafka", "clickHouse", "performance-api"],
"automation": ["camunda-bpm"],
"devops": ["ones-devops-api"],
"search": ["advanced-tidb-tikv", "kilob-sync", "binlog-event-sync"],
"openPlatform": ["ones-platform-api", "plugin-host-node", "platform-hostboot"],
"databases": ["mysql", "dm"]
}