2.3. 操作故障排除

本节介绍如何配置 3scale 审计日志记录以在 OpenShift 上显示,以及如何访问 OpenShift 上的 3scale 日志和作业队列。

2.3.1. 在 OpenShift 上配置 3scale 审计日志记录

这可让所有日志位于一个位置,供 Elasticsearch、Fluentd 和 Kibana(EFK)日志工具查询。这些工具提高了对 3scale 配置所做的更改的可见性,以及进行了这些更改的时间。例如,这包括对计费、应用程序计划、API 配置等的更改。

先决条件

  • 3scale 2.11 部署。

流程

配置审计日志记录到 stdout,以将所有应用日志转发到标准 OpenShift 容器集日志。

注意事项:

  • 默认情况下,当 3scale 内部部署 3scale 时,将审计日志记录输出到 stdout 被禁用,您需要配置此功能才能完全正常工作。
  • 对于托管的 3scale,不提供将审计日志记录输出到 stdout 的功能。

2.3.2. 启用审计日志记录

3scale 使用 features.yml 配置文件启用一些全局功能。要将审计日志记录启用到 stdout,您必须从 ConfigMap 挂载此文件,以替换默认的 文件。依赖于 features.yml 的 OpenShift pod 是 system-appsystem-sidekiq

先决条件

  • 您必须在 OpenShift 上具有集群管理员访问权限。

流程

  1. 输入以下命令将审计日志记录启用到 stdout

    oc patch configmap system -p '{"data": {"features.yml": "features: &default\n  logging:\n    audits_to_stdout: true\n\nproduction:\n  <<: *default\n"}}'
  2. 导出以下环境变量:

    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"}]}}}}'
  3. 输入以下命令将更新的部署配置应用到相关的 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 中的日志:

流程

  1. 查找您要日志的 pod 的 ID:

    oc get pods
  2. 输入 oc logs 和所选 pod 的 ID:

    oc logs <pod>

    系统 pod 有两个容器,各自具有单独的日志。要访问容器的日志,请使用 system-providersystem-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

表 2.1. SQL 清除命令

数据库类型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;

对于本节中未指定的其他表,数据库管理员必须手动清理系统不会自动清除的表。

其他资源