2.3. 操作故障排除
本节介绍如何配置 3scale 审计日志记录以在 OpenShift 上显示,以及如何访问 OpenShift 上的 3scale 日志和作业队列。
2.3.1. 在 OpenShift 上配置 3scale 审计日志记录
这可让所有日志位于一个位置,供 Elasticsearch、Fluentd 和 Kibana(EFK)日志工具查询。这些工具提高了对 3scale 配置所做的更改的可见性,以及进行了这些更改的时间。例如,这包括对计费、应用程序计划、API 配置等的更改。
前提条件
- 3scale 2.12 部署。
流程
配置审计日志记录到 stdout
,以将所有应用日志转发到标准 OpenShift 容器集日志。
注意事项:
-
默认情况下,当 3scale 内部部署 3scale 时,将审计日志记录输出到
stdout
被禁用,您需要配置此功能才能完全正常工作。 -
对于托管的 3scale,不提供将审计日志记录输出到
stdout
的功能。
2.3.2. 启用审计日志记录
3scale 使用 features.yml
配置文件启用一些全局功能。要将审计日志记录启用到 stdout
,您必须从 ConfigMap
挂载此文件,以替换默认的 文件。依赖于 features.yml
的 OpenShift pod 是 system-app
和 system-sidekiq
。
前提条件
- 您必须在 OpenShift 上具有集群管理员访问权限。
流程
输入以下命令将审计日志记录启用到
stdout
:oc patch configmap system -p '{"data": {"features.yml": "features: &default\n logging:\n audits_to_stdout: true\n\nproduction:\n <<: *default\n"}}'
导出以下环境变量:
export PATCH_SYSTEM_VOLUMES='{"spec":{"template":{"spec":{"volumes":[{"emptyDir":{"medium":"Memory"},"name":"system-tmp"},{"configMap":{"items":[{"key":"zync.yml","path":"zync.yml"},{"key":"rolling_updates.yml","path":"rolling_updates.yml"},{"key":"service_discovery.yml","path":"service_discovery.yml"},{"key":"features.yml","path":"features.yml"}],"name":"system"},"name":"system-config"}]}}}}'
输入以下命令将更新的部署配置应用到相关的 OpenShift pod:
oc patch dc system-app -p $PATCH_SYSTEM_VOLUMES oc patch dc system-sidekiq -p $PATCH_SYSTEM_VOLUMES
2.3.3. 配置 EFK 日志
当您启用了审计日志记录到 stdout
将 3scale 应用日志转发到 OpenShift 后,您可以使用 EFK 日志工具来监控 3scale 应用。
有关如何在 OpenShift 中配置 EFK 日志的详情,请参考以下内容:
2.3.4. 访问日志
每个组件的部署配置都包含用于访问和异常的日志。如果您在部署时遇到问题,请检查这些日志以了解详细信息。
按照以下步骤访问 3scale 中的日志:
流程
查找您要日志的 pod 的 ID:
oc get pods
输入
oc logs
和所选 pod 的 ID:oc logs <pod>
系统 pod 有两个容器,各自具有单独的日志。要访问容器的日志,请使用
system-provider
和system-developer
pod 指定--container
参数:oc logs <pod> --container=system-provider oc logs <pod> --container=system-developer
2.3.5. 检查作业队列
作业队列包含从 system-sidekiq
pod 发送的信息日志。使用这些日志来检查集群是否正在处理数据。您可以使用 OpenShift CLI 查询日志:
oc get jobs
oc logs <job>
2.3.6. 防止单调增长
为防止单例增长,3scale 默认调度 3scale 调度,自动清除以下表:
- user_sessions - 清理每周触发一次,可删除超过两周的记录。
- audits - 每天触发一次清理,删除超过 3 个月的记录。
- log_entries - 每天清理一次,删除超过 6 个月的记录。
- event_store_events - 清理每周触发一次,删除超过一周的记录。
除以上列出的表外,下表需要数据库管理员手动清除:
- alerts
数据库类型 | SQL 命令 |
---|---|
MySQL |
DELETE FROM alerts WHERE timestamp < NOW() - INTERVAL 14 DAY; |
PostgreSQL |
DELETE FROM alerts WHERE timestamp < NOW() - INTERVAL '14 day'; |
Oracle |
DELETE FROM alerts WHERE timestamp <= TRUNC(SYSDATE) - 14; |
对于本节中未指定的其他表,数据库管理员必须手动清理系统不会自动清除的表。