1.5. 配置日志记录收集器


Red Hat OpenShift 的 logging 从集群中收集操作和应用程序日志,并使用 Kubernetes pod 和项目元数据丰富数据。所有支持的对日志收集器的修改都是通过 ClusterLogForwarder 自定义资源(CR)中的 spec.collection 小节执行的。

1.5.1. 创建 LogFileMetricExporter 资源

要从运行容器生成的日志生成指标,您必须创建一个 LogFileMetricExporter 自定义资源(CR)。

如果没有创建 LogFileMetricExporter CR,您可能在 OpenShift Container Platform Web 控制台仪表板中看到 Produced LogsNo datapoints found 信息。

先决条件

  • 有管理员权限。
  • 已安装 Red Hat OpenShift Logging Operator。
  • 已安装 OpenShift CLI(oc)。

步骤

  1. 创建一个 LogFileMetricExporter CR 作为 YAML 文件:

    LogFileMetricExporter CR 示例

    apiVersion: logging.openshift.io/v1alpha1
    kind: LogFileMetricExporter
    metadata:
      name: instance
      namespace: openshift-logging
    spec:
      nodeSelector: {} 
    1
    
      resources: 
    2
    
        limits:
          cpu: 500m
          memory: 256Mi
        requests:
          cpu: 200m
          memory: 128Mi
      tolerations: [] 
    3
    
    # ...
    Copy to Clipboard Toggle word wrap

    1
    可选: nodeSelector 小节定义哪些 pod 调度到哪些节点上。
    2
    resources 小节定义了 LogFileMetricExporter CR 的资源要求。
    3
    可选:tolerations 小节定义 pod 接受的容限。
  2. 运行以下命令来应用 LogFileMetricExporter CR:

    $ oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap

1.5.2. 配置日志收集器 CPU 和内存限值

使用日志收集器调整 CPU 和内存限值。

流程

  • 编辑 ClusterLogForwarder 自定义资源(CR):

    $ oc -n openshift-logging edit ClusterLogging instance
    Copy to Clipboard Toggle word wrap
    apiVersion: observability.openshift.io/v1
    kind: ClusterLogForwarder
    metadata:
      name: instance
      namespace: openshift-logging
    spec:
      collector:
        resources:
          limits: 
    1
    
            memory: 736Mi
          requests:
            cpu: 100m
            memory: 736Mi
    # ...
    Copy to Clipboard Toggle word wrap
    1
    根据需要指定 CPU 和内存限值及请求。显示的值是默认值。

1.5.3. 配置输入接收器

Red Hat OpenShift Logging Operator 为每个配置的输入接收器部署服务,以便客户端可以写入收集器。此服务公开为输入接收器指定的端口。对于日志转发器 ClusterLogForwarder CR 部署,服务名称采用 < clusterlogforwarder_resource_name>-<input_name> 格式。

您可以通过将 http 指定为 ClusterLogForwarder 自定义资源(CR)的接收器输入,将日志收集器配置为仅侦听 HTTP 连接来接收审计日志。

重要

HTTP 接收器输入只支持以下情况:

  • 日志记录安装在托管的 control plane 上。
  • 当日志来自与 Red Hat OpenShift Logging Operator 相同的集群中安装的红帽支持的产品时。例如:

    • OpenShift Virtualization

先决条件

  • 有管理员权限。
  • 已安装 OpenShift CLI(oc)。
  • 已安装 Red Hat OpenShift Logging Operator。
  • 您已创建了 ClusterLogForwarder CR。

步骤

  1. 修改 ClusterLogForwarder CR,以添加 http 接收器输入的配置:

    ClusterLogForwarder CR 示例

    apiVersion: observability.openshift.io/v1
    kind: ClusterLogForwarder
    metadata:
    # ...
    spec:
      inputs:
      - name: http-receiver 
    1
    
        type: receiver
        receiver:
          type: http 
    2
    
          port: 8443 
    3
    
          http:
            format: kubeAPIAudit 
    4
    
      outputs:
      - name: default-lokistack
        lokiStack:
          authentication:
            token:
              from: serviceAccount
          target:
            name: logging-loki
            namespace: openshift-logging
        tls:
          ca:
            key: service-ca.crt
            configMapName: openshift-service-ca.crt
        type: lokiStack
    # ...
      pipelines: 
    5
    
        - name: http-pipeline
          inputRefs:
            - http-receiver
          outputRefs:
            - <output_name>
    # ...
    Copy to Clipboard Toggle word wrap

    1
    为您的输入接收器指定一个名称。
    2
    将输入接收器类型指定为 http
    3
    可选:指定输入接收器侦听的端口。这必须是 102465535 之间的值。默认值为 8443
    4
    目前,http 输入接收器只支持 kube-apiserver Webhook 格式。
    5
    为您的输入接收器配置管道。
  2. 运行以下命令,将更改应用到 ClusterLogForwarder CR:

    $ oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap

验证

  1. 运行以下命令,验证收集器是否在 <clusterlogforwarder_resource_name>-<input _name> 格式处于 <clusterlogforwarder_resource_name>-<input_name > 格式的服务:

    $ oc get svc
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                      TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)            AGE
    collector                 ClusterIP   172.30.85.239    <none>        24231/TCP          3m6s
    collector-http-receiver   ClusterIP   172.30.205.160   <none>        8443/TCP           3m6s
    Copy to Clipboard Toggle word wrap

    在本例中,服务名称是 collector-http-receiver

  2. 运行以下命令提取证书颁发机构(CA)证书文件:

    $ oc extract cm/openshift-service-ca.crt -n <namespace>
    Copy to Clipboard Toggle word wrap
  3. 运行以下命令,使用 curl 命令发送日志:

    $ curl --cacert <openshift_service_ca.crt> https://collector-http-receiver.<namespace>.svc:8443 -XPOST -d '{"<prefix>":"<msessage>"}'
    Copy to Clipboard Toggle word wrap

    <openshift_service_ca.crt > 替换为提取的 CA 证书文件。

    注意

    您只能按照验证步骤在集群中转发日志。

您可以通过在 ClusterLogForwarder 自定义资源(CR)中将 syslog 指定为接收器输入,将日志收集器配置为收集日志格式基础架构日志。

重要

只有在以下情况中只支持 syslog 接收器输入:

  • 日志记录安装在托管的 control plane 上。
  • 当日志来自与 Red Hat OpenShift Logging Operator 相同的集群中安装的红帽支持的产品时。例如:

    • Red Hat OpenStack Services on OpenShift (RHOSO)
    • OpenShift Virtualization

先决条件

  • 有管理员权限。
  • 已安装 OpenShift CLI(oc)。
  • 已安装 Red Hat OpenShift Logging Operator。
  • 您已创建了 ClusterLogForwarder CR。

流程

  1. 运行以下命令,为服务帐户授予 collect-infrastructure-logs 集群角色:

    绑定命令示例

    $ oc adm policy add-cluster-role-to-user collect-infrastructure-logs -z logcollector
    Copy to Clipboard Toggle word wrap

  2. 修改 ClusterLogForwarder CR,为 syslog 接收器输入添加配置:

    ClusterLogForwarder CR 示例

    apiVersion: observability.openshift.io/v1
    kind: ClusterLogForwarder
    metadata:
    # ...
    spec:
      serviceAccount:
        name: <service_account_name>
      inputs:
        - name: syslog-receiver 
    1
    
          type: receiver
          receiver:
            type: syslog 
    2
    
            port: 10514 
    3
    
      outputs:
      - name: default-lokistack
        lokiStack:
          authentication:
            token:
              from: serviceAccount
          target:
            name: logging-loki
            namespace: openshift-logging
        tls:
          ca:
            key: service-ca.crt
            configMapName: openshift-service-ca.crt
        type: lokiStack
    # ...
      pipelines: 
    4
    
        - name: syslog-pipeline
          inputRefs:
            - syslog-receiver
          outputRefs:
            - <output_name>
    # ...
    Copy to Clipboard Toggle word wrap

    1
    为您的输入接收器指定一个名称。
    2
    将输入接收器类型指定为 syslog
    3
    可选:指定输入接收器侦听的端口。这必须是 102465535 之间的值。
    4
    为您的输入接收器配置管道。
  3. 运行以下命令,将更改应用到 ClusterLogForwarder CR:

    $ oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap

验证

  • 运行以下命令,验证收集器是否在 <clusterlogforwarder_resource_name>-<input _name> 格式处于 <clusterlogforwarder_resource_name>-<input_name > 格式的服务:

    $ oc get svc
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)            AGE
    collector                   ClusterIP   172.30.85.239    <none>        24231/TCP          33m
    collector-syslog-receiver   ClusterIP   172.30.216.142   <none>        10514/TCP          2m20s
    Copy to Clipboard Toggle word wrap

    在本例中,服务名称为 collector-syslog-receiver

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat