2.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。

流程

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

    ClusterLogForwarder CR 示例

    apiVersion: observability.openshift.io/v1
    kind: ClusterLogForwarder
    metadata:
      name: <clusterlogforwarder_name> 
    1
    
      namespace: <namespace>
    # ...
    spec:
      serviceAccount:
        name: <service_account_name>
      inputs:
      - name: http-receiver 
    2
    
        type: receiver
        receiver:
          type: http 
    3
    
          port: 8443 
    4
    
          http:
            format: kubeAPIAudit 
    5
    
      outputs:
      - name: <output_name>
        type: http
        http:
          url: <url>
      pipelines: 
    6
    
        - name: http-pipeline
          inputRefs:
            - http-receiver
          outputRefs:
            - <output_name>
    # ...
    Copy to Clipboard Toggle word wrap

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

    $ oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap
  3. 运行以下命令,验证收集器正在监听服务,名称的格式是 <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

验证

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

    $ oc extract cm/openshift-service-ca.crt -n <namespace>
    Copy to Clipboard Toggle word wrap
    注意

    如果收集器运行有变化的集群中 CA,您必须再次提取 CA 证书文件。

  2. 例如,运行以下命令使用 curl 命令发送日志:

    $ curl --cacert <openshift_service_ca.crt> https://collector-http-receiver.<namespace>.svc:8443 -XPOST -d '{"<prefix>":"<message>"}'
    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。

流程

  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:
      name: <clusterlogforwarder_name> 
    1
    
      namespace: <namespace>
    # ...
    spec:
      serviceAccount:
        name: <service_account_name> 
    2
    
      inputs:
        - name: syslog-receiver 
    3
    
          type: receiver
          receiver:
            type: syslog 
    4
    
            port: 10514 
    5
    
      outputs:
      - name: <output_name>
        lokiStack:
          authentication:
            token:
              from: serviceAccount
          target:
            name: logging-loki
            namespace: openshift-logging
        tls: 
    6
    
          ca:
            key: service-ca.crt
            configMapName: openshift-service-ca.crt
        type: lokiStack
    # ...
      pipelines: 
    7
    
        - name: syslog-pipeline
          inputRefs:
            - syslog-receiver
          outputRefs:
            - <output_name>
    # ...
    Copy to Clipboard Toggle word wrap

    1 2
    使用您在上一步中授予 collect-infrastructure-logs 权限的服务帐户。
    3
    为您的输入接收器指定一个名称。
    4
    将输入接收器类型指定为 syslog
    5
    可选:指定输入接收器侦听的端口。这必须是 102465535 之间的值。
    6
    如果没有设置 TLS 配置,则使用默认证书。如需更多信息,请运行 oc explain clusterlogforwarders.spec.inputs.receiver.tls 命令。
    7
    为您的输入接收器配置管道。
  3. 运行以下命令,将更改应用到 ClusterLogForwarder CR:

    $ oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap
  4. 运行以下命令,验证收集器正在监听服务,名称的格式是 <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

验证

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

    $ oc extract cm/openshift-service-ca.crt -n <namespace>
    Copy to Clipboard Toggle word wrap
    注意

    如果收集器运行有变化的集群中 CA,您必须再次提取 CA 证书文件。

  2. 例如,运行以下命令使用 curl 命令发送日志:

    $ curl --cacert <openshift_service_ca.crt> collector-syslog-receiver.<namespace>.svc:10514  “test message”
    Copy to Clipboard Toggle word wrap

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

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat