配置日志重定向

选择文档版本:

配置日志重定向

您可以将 AlloyDB Omni 中的控制平面和服务日志、内部日志、审核日志和备份日志 (pgBackRest) 重定向到集中式文件夹或观测磁盘。通过汇总分布在本地节点路径(例如 /var/log 或 /run/log)中的日志,您可以让生产监控工具识别系统错误、提高系统可观测性并简化问题排查流程。

集中式可观测性

AlloyDB Omni 堆栈包含多个组件,这些组件分为控制平面(例如集群管理器、节点管理器、etcd)和数据平面。日志重定向会将这些组件中的日志推送到集中式路径或观测磁盘 (ObsDisk)。然后,您可以将这些日志通过管道传输到可观测性工具中,以检测系统问题,而无需访问各个节点路径。

etcd 是集群管理器协调和管理状态所需的独立分布式配置存储。它可以自行在专用节点上运行,也可以与集群管理器节点共用节点。相比之下,节点管理器充当安装在数据平面节点(数据库节点和负载均衡器节点)上的本地代理,用于处理控制平面命令。

日志重定向涵盖以下组件:

  • 控制平面组件服务日志
    • 集群管理器节点上的集群管理器
    • 所有节点上的节点管理器
    • etcd 节点上的 etcd
  • 数据平面组件服务日志
    • 主实例和读取池实例节点上的 alloydbomni
    • 主实例和读取池实例节点上的 alloydbomni 监控器
    • 主实例节点上的 pgBackRest
    • 主实例节点或负载均衡器节点上的 pgbouncer
    • 主实例节点或负载均衡器节点上的 keepalived
    • 负载均衡器节点上的 HAProxy
  • AlloyDB Omni 内部日志和审核日志

限制

  • rsyslog 和 journal 在全局限制和基于速率的限制方面存在限制。
  • 仅当您使用 Ansible 界面时,才支持 etcd 日志重定向。
  • 日志截断:rsyslog 没有内置的日志截断支持。
  • Rsyslog 可观测性:直接监控 rsyslog 守护程序状态可能需要进行额外设置。

准备工作

  • 验证为日志重定向指定的路径是否存在于相关节点上,并且这些路径是目录。

配置日志重定向

如需在 AlloyDB Omni 中配置日志重定向,您必须为控制平面组件和数据平面组件指定目标目录。

重定向控制平面日志

请按照以下步骤为控制平面组件 cluster manager、node manager 和 etcd 配置日志重定向。

  1. 打开 deployment_spec.yaml 文件。

  2. 向 cluster_manager 和 etcd 节添加参数,以指定目标目录。

    以下 deployment_spec.yaml 提供了一个示例:

    alloydbomni:
      vars:
        cluster_manager:
          name: CM_CLUSTER
          logging:
            disk:
              path: "/obs"
        etcd:
          logging:
            disk:
              path: "/obs"
    

    您可以单独预配 etcd 服务。如需捕获所有控制平面日志,您必须在 deployment_spec.yaml 文件中的 cluster_manager 和 etcd 节下定义 logging 路径。

    下表介绍了用于配置控制平面日志重定向的参数,您可以使用这些参数在部署规范中指定日志的目标路径:

    参数 必需 说明
    logging.disk 否 用于将控制平面日志重定向到磁盘的子部分。
    logging.disk.path 基于条件 如果设置了 logging.disk,则为必需。rsyslog 将服务日志重定向到的磁盘路径。必须存在于节点上,并且必须是目录。
  3. 应用配置更改。

    Ansible

    Ansible 编排器会在安装或更新期间自动调用配置实用程序。如需使用 Ansible 编排器应用配置更新,请按以下步骤操作:

    1. 打开 Ansible 控制节点,即您在其中安装 Ansible 的管理机器或工作站。
    2. 创建一个名为 update.yml 的文件,并添加以下内容:

      ---
      - hosts: all
        become: true
        vars:
          update_action: "update_logging"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: ~/path/to/private-key
        roles:
          - role: google.alloydbomni_orchestrator.update
      

      将 SSH_USER 替换为您用于连接到部署节点的 SSH 用户名。

    3. 运行剧本以应用配置更改。

      ansible-playbook -i DEPLOYMENT_SPECIFICATION update.yml

      将 DEPLOYMENT_SPECIFICATION 替换为您在 安装 AlloyDB Omni 组件 中创建的部署规范文件的路径,例如 deployment_spec.yaml。

    alloydbctl

    1. 在集群管理器节点上,运行以下命令:

      /usr/local/bin/alloydbomni_cm_config apply -d deployment_spec.yaml
      
    2. 在节点管理器节点(包括所有数据库节点和负载均衡器节点)上,运行以下命令:

      /usr/local/bin/alloydbomni_nm_config apply -d deployment_spec.yaml
      
    3. 在 etcd 节点上,使用以下内容创建或更新 etcd systemd 替换文件 /etc/systemd/system/etcd.service.d/logging.conf:

      [Service]
      SyslogIdentifier=etcd
      
    4. 创建或更新 etcd rsyslog 文件 /etc/rsyslog.d/etcd.conf:

        template(name="DailyLogProg_etcd" type="string" string="ETCD_LOG_REDIRECT_DIR/%$year%-%$month%-%$day%-journal.log")
        if $programname == 'etcd' then {
          action(type="omfile" dynaFile="DailyLogProg_etcd" FileCreateMode="0644")
          stop
        }
      

      将 ETCD_LOG_REDIRECT_DIR 替换为您希望将 etcd 日志重定向到的目录的路径,例如 /obs。

    5. 重启 rsyslog 服务:

      sudo systemctl restart rsyslog
      

重定向数据平面日志

如需为数据平面组件配置日志重定向,请按以下步骤操作:

  1. 打开 DBCluster 资源规范。

  2. 将观测磁盘 (ObsDisk) 添加到磁盘列表中。以下示例展示了如何定义存储扩展程序、添加观测磁盘,以及指定必须在路径 /obs 中装载或访问该磁盘。

     DBCluster:
       metadata:
         name: "DBCLUSTER_NAME"
       spec:
         primarySpec:
           resources:
             disks:
             - name: ObsDisk
               path: /obs
     ```
    
  3. 应用或引导 DBCluster 资源。

    Ansible

    1. 创建一个名为 update.yml 的文件,并添加以下内容:

      ---
      - hosts: all
        vars:
          update_action: "update_resource_spec"
          ansible_user: SSH_USER
          ansible_ssh_private_key_file: PRIVATE_KEY_PATH
        roles:
          - role: google.alloydbomni_orchestrator.update
      

      替换以下内容:

      • SSH_USER:用于连接到部署节点的 SSH 用户名。
      • PRIVATE_KEY_PATH:Ansible 控制节点上 SSH 私钥文件的路径,例如 ~/path/to/private-key。
    2. 运行剧本以应用配置更改。

      ansible-playbook -i DEPLOYMENT_SPECIFICATION update.yml -e "resource_spec=DBCLUSTER_SPECIFICATION"

      替换以下内容:

      • DEPLOYMENT_SPECIFICATION:您在安装 AlloyDB Omni 组件中创建的部署规范的路径。
      • DBCLUSTER_SPECIFICATION:集群规范的路径。

    alloydbctl

    运行以下命令:

    alloydbctl apply -d DEPLOYMENT_SPECIFICATION -r DBCLUSTER_SPECIFICATION

    替换以下内容:

    • DEPLOYMENT_SPECIFICATION:您在安装 AlloyDB Omni 组件中创建的部署规范的路径。
    • DBCLUSTER_SPECIFICATION:集群规范的路径。

验证日志重定向

应用配置后,请查看控制平面和数据平面重定向路径,验证日志是否流式传输到指定的目录。

控制平面重定向路径

组件 重定向的日志路径
alloydbomni_cluster_manager LOGGING_DISK_PATH/CM_CLUSTER_NAME/alloydbomni_cluster_manager/YYYY-MM-DD-journal.log
alloydbomni_node_manager LOGGING_DISK_PATH/CM_CLUSTER_NAME/alloydbomni_node_manager/YYYY-MM-DD-journal.log
etcd LOGGING_DISK_PATH/CM_CLUSTER_NAME/etcd/YYYY-MM-DD-journal.log
  • LOGGING_DISK_PATH:节点上控制平面服务日志重定向到的基本目录路径,例如 /obs。
  • CM_CLUSTER_NAME:deployment_spec.yaml 文件中定义的控制平面集群的名称。

数据平面重定向路径

组件 重定向的日志路径
alloydbomni OBS_DISK_PATH/DB_CLUSTER_NAME/alloydbomniVERSION@SYSTEMD_INSTANCE_NAME/YYYY-MM-DD-journal.log
alloydbomni_monitor OBS_DISK_PATH/DB_CLUSTER_NAME/alloydbomni_monitor@SYSTEMD_INSTANCE_NAME/YYYY-MM-DD-journal.log
pgbouncer OBS_DISK_PATH/DB_CLUSTER_NAME/PgBouncer@SYSTEMD_INSTANCE_NAME/YYYY-MM-DD-journal.log
keepalived OBS_DISK_PATH/DB_CLUSTER_NAME/keepalived@SYSTEMD_INSTANCE_NAME/YYYY-MM-DD-journal.log
haproxy OBS_DISK_PATH/DB_CLUSTER_NAME/haproxy@SYSTEMD_INSTANCE_NAME/YYYY-MM-DD-journal.log
pgbackrest OBS_DISK_PATH/DB_CLUSTER_NAME/pgbackrest/YYYY-MM-DD-*.log
  • OBS_DISK_PATH:ObsDisk 中指定的路径,例如 /obs。
  • DB_CLUSTER_NAME:数据库集群的名称。

日志记录配置参数

AlloyDB Omni 会根据您的配置自动设置标准 PostgreSQL 参数来管理日志生成。不过,您可以在用户定义的参数中替换 log_rotation_age 和 log_filename 等参数,以自定义日志轮换政策。

GUC 说明 不使用 OBS 磁盘 使用 OBS 磁盘
logging_collector 启用日志记录收集器后台进程。 开启 开启
log_directory 内部日志和审核日志的目录。 DATA_DISK_PATH/VERSION/log OBS_DISK_PATH/DB_CLUSTER_NAME/alloydbomni/VERSION
log_filename 文件名模式 (strftime)。 postgresql-%H.log(每 24 小时截断一次) postgresql-%Y-%m-%d_%H%M%S.log
log_file_mode 文件权限。 0600 0600
log_rotation_age 轮换前使用文件的最长时间。 60 分钟 60 分钟
log_rotation_size 轮换前的文件大小上限。 0 0
log_truncate_on_rotation 轮换时截断而不是追加。 开启 关闭