**稳定版**通道仅提供对最新日志记录版本的更新。要继续接收先前版本的更新,您必须将订阅通道更改为**稳定版-x.y**,其中 |
您可以使用OpenShift CLI (oc
) 或Red Hat OpenShift Service on AWS Web控制台在您的Red Hat OpenShift Service on AWS集群上部署日志存储。
日志记录5.9版本不包含OpenShift Elasticsearch Operator的更新版本。如果您目前使用的是日志记录5.8版本发布的OpenShift Elasticsearch Operator,它将继续与日志记录一起使用,直到日志记录5.8版本结束生命周期为止。作为使用OpenShift Elasticsearch Operator管理默认日志存储的替代方法,您可以使用Loki Operator。有关日志记录生命周期日期的更多信息,请参阅与平台无关的Operators。 |
您可以使用Loki Operator在您的Red Hat OpenShift Service on AWS集群上部署内部Loki日志存储。安装Loki Operator后,必须通过创建密钥来配置Loki对象存储,并创建LokiStack
自定义资源(CR)。
Loki的规模采用1x.<size>
的格式,其中值1x
是实例数量,<size>
指定性能能力。
无法更改部署规模中的数字 |
1x.demo | 1x.extra-small | 1x.small | 1x.medium | |
---|---|---|---|---|
数据传输 |
仅限演示使用 |
100GB/天 |
500GB/天 |
2TB/天 |
每秒查询数(QPS) |
仅限演示使用 |
1-25 QPS at 200ms |
25-50 QPS at 200ms |
25-75 QPS at 200ms |
复制因子 |
无 |
2 |
2 |
2 |
总CPU请求 |
无 |
14 vCPU |
34 vCPU |
54 vCPU |
如果使用ruler,则总CPU请求 |
无 |
16 vCPU |
42 vCPU |
70 vCPU |
总内存请求 |
无 |
31Gi |
67Gi |
139Gi |
如果使用ruler,则总内存请求 |
无 |
35Gi |
83Gi |
171Gi |
总磁盘请求 |
40Gi |
430Gi |
430Gi |
590Gi |
如果使用ruler,则总磁盘请求 |
80Gi |
750Gi |
750Gi |
910Gi |
要在您的Red Hat OpenShift Service on AWS集群上安装和配置日志记录,必须首先安装用于日志存储的Operator,例如Loki Operator。这可以通过Web控制台中的OperatorHub来完成。
您可以访问受支持的对象存储(AWS S3、Google Cloud Storage、Azure、Swift、Minio、OpenShift Data Foundation)。
您具有管理员权限。
您可以访问Red Hat OpenShift Service on AWS Web控制台。
在Red Hat OpenShift Service on AWS Web控制台的**管理员**视角下,转到**Operators** → **OperatorHub**。
在**按关键词筛选**字段中输入Loki Operator。在可用Operators列表中点击**Loki Operator**,然后点击**安装**。
Red Hat不支持社区Loki Operator。 |
选择**稳定版**或**稳定版-x.y**作为**更新通道**。
**稳定版**通道仅提供对最新日志记录版本的更新。要继续接收先前版本的更新,您必须将订阅通道更改为**稳定版-x.y**,其中 |
Loki Operator必须部署到全局operator组命名空间openshift-operators-redhat
,因此**安装模式**和**已安装命名空间**已预先选择。如果此命名空间尚不存在,则会为您创建。
选择**在此命名空间上启用Operator推荐的集群监控**。
此选项在Namespace
对象中设置openshift.io/cluster-monitoring: "true"
标签。您必须选择此选项,以确保集群监控会抓取openshift-operators-redhat
命名空间。
对于**更新批准**,选择**自动**,然后点击**安装**。
如果订阅中的批准策略设置为**自动**,则只要在所选通道中出现新的Operator版本,更新过程就会立即启动。如果批准策略设置为**手动**,则必须手动批准待处理的更新。
安装Red Hat OpenShift Logging Operator
在Red Hat OpenShift Service on AWS Web控制台中,点击**Operators** → **OperatorHub**。
从可用Operators列表中选择**Red Hat OpenShift Logging**,然后点击**安装**。
确保在**安装模式**下选择了**集群上的特定命名空间**。
确保在**已安装命名空间**下**Operator推荐的命名空间**为**openshift-logging**。
选择**在此命名空间上启用Operator推荐的集群监控**。
此选项在Namespace
对象中设置openshift.io/cluster-monitoring: "true"
标签。您必须选择此选项,以确保集群监控会抓取openshift-logging
命名空间。
选择**stable-5.y**作为**更新通道**。
选择**批准策略**。
**自动**策略允许Operator Lifecycle Manager (OLM)在有新版本可用时自动更新Operator。
**手动**策略需要具有相应凭据的用户来批准Operator更新。
点击**安装**。
转到**Operators** → **已安装Operators**页面。点击**所有实例**选项卡。
从**新建**下拉列表中,选择**LokiStack**。
选择**YAML视图**,然后使用以下模板创建LokiStack
CR
LokiStack
CRapiVersion: loki.grafana.com/v1
kind: LokiStack
metadata:
name: logging-loki (1)
namespace: openshift-logging (2)
spec:
size: 1x.small (3)
storage:
schemas:
- version: v13
effectiveDate: "<yyyy>-<mm>-<dd>"
secret:
name: logging-loki-s3 (4)
type: s3 (5)
credentialMode: (6)
storageClassName: <storage_class_name> (7)
tenants:
mode: openshift-logging (8)
1 | 使用名称logging-loki 。 |
2 | 您必须指定openshift-logging 命名空间。 |
3 | 指定部署规模。在日志记录5.8及更高版本中,Loki生产实例支持的规模选项为1x.extra-small 、1x.small 或1x.medium 。 |
4 | 指定日志存储密钥的名称。 |
5 | 指定相应的存储类型。 |
6 | 可选字段,Logging 5.9 及更高版本。支持用户配置的值如下:static 是所有支持的对象存储类型使用的默认身份验证模式,使用存储在 Secret 中的凭据。token 用于从凭据源检索的短期令牌。在此模式下,静态配置不包含对象存储所需的凭据。相反,它们是在运行时使用服务生成的,这允许使用更短寿命的凭据并进行更细粒度的控制。此身份验证模式并非所有对象存储类型都支持。token-cco 是 Loki 在托管 STS 模式下运行并在 STS/WIF 集群上使用 CCO 时的默认值。 |
7 | 指定临时存储的存储类的名称。为获得最佳性能,请指定分配块存储的存储类。可以使用 oc get storageclasses 命令列出集群可用的存储类。 |
8 | LokiStack 默认以多租户模式运行,无法修改。每种日志类型(审核日志、基础设施日志和应用程序日志)提供一个租户。这使得各个用户和用户组可以访问不同的日志流。 |
无法更改部署规模中的数字 |
点击创建。
创建 OpenShift Logging 实例
切换到管理 → 自定义资源定义页面。
在自定义资源定义页面上,点击ClusterLogging。
在自定义资源定义详细信息页面上,从操作菜单中选择查看实例。
在ClusterLoggings页面上,点击创建 ClusterLogging。
您可能需要刷新页面才能加载数据。
在 YAML 字段中,将代码替换为以下内容
apiVersion: logging.openshift.io/v1
kind: ClusterLogging
metadata:
name: instance (1)
namespace: openshift-logging (2)
spec:
collection:
type: vector
logStore:
lokistack:
name: logging-loki
retentionPolicy:
application:
maxAge: 7d
audit:
maxAge: 7d
infra:
maxAge: 7d
type: lokistack
visualization:
type: ocp-console
ocpConsole:
logsLimit: 15
managementState: Managed
1 | 名称必须为instance 。 |
2 | 命名空间必须为openshift-logging 。 |
转到Operators → 已安装的 Operators。
确保选择了openshift-logging项目。
在状态列中,验证您是否看到带有InstallSucceeded和文本最新的绿色复选标记。
在安装完成之前,Operator 可能显示 |
要配置 Loki 对象存储,必须创建一个密钥。可以使用 Red Hat OpenShift Service on AWS Web 控制台创建密钥。
您具有管理员权限。
您可以访问Red Hat OpenShift Service on AWS Web控制台。
您已安装 Loki Operator。
在 Red Hat OpenShift Service on AWS Web 控制台的管理员视角中,转到工作负载 → 密钥。
从创建下拉列表中,选择从 YAML。
创建一个使用access_key_id
和access_key_secret
字段指定您的凭据,并使用bucketnames
、endpoint
和region
字段定义对象存储位置的密钥。以下示例使用 AWS
Secret
对象apiVersion: v1
kind: Secret
metadata:
name: logging-loki-s3
namespace: openshift-logging
stringData:
access_key_id: AKIAIOSFODNN7EXAMPLE
access_key_secret: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
bucketnames: s3-bucket-name
endpoint: https://s3.eu-central-1.amazonaws.com
region: eu-central-1
工作负载身份联合允许使用短期令牌对基于云的日志存储进行身份验证。
Red Hat OpenShift Service on AWS 4.14 及更高版本
Logging 5.9 及更高版本
如果您使用 Red Hat OpenShift Service on AWS Web 控制台安装 Loki Operator,则会自动检测使用短期令牌的集群。系统会提示您创建角色并提供 Loki Operator 创建CredentialsRequest
对象所需的数据,该对象将填充密钥。
如果您使用 OpenShift CLI (oc
) 安装 Loki Operator,则必须使用适合您存储提供商的模板手动创建一个订阅对象,如下例所示。此身份验证策略仅支持指示的存储提供商。
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: loki-operator
namespace: openshift-operators-redhat
spec:
channel: "stable-5.9"
installPlanApproval: Manual
name: loki-operator
source: redhat-operators
sourceNamespace: openshift-marketplace
config:
env:
- name: CLIENTID
value: <your_client_id>
- name: TENANTID
value: <your_tenant_id>
- name: SUBSCRIPTIONID
value: <your_subscription_id>
- name: REGION
value: <your_region>
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: loki-operator
namespace: openshift-operators-redhat
spec:
channel: "stable-5.9"
installPlanApproval: Manual
name: loki-operator
source: redhat-operators
sourceNamespace: openshift-marketplace
config:
env:
- name: ROLEARN
value: <role_ARN>
您可以使用 Red Hat OpenShift Service on AWS Web 控制台创建LokiStack
自定义资源 (CR)。
您具有管理员权限。
您可以访问Red Hat OpenShift Service on AWS Web控制台。
您已安装 Loki Operator。
转到**Operators** → **已安装Operators**页面。点击**所有实例**选项卡。
从**新建**下拉列表中,选择**LokiStack**。
选择**YAML视图**,然后使用以下模板创建LokiStack
CR
apiVersion: loki.grafana.com/v1
kind: LokiStack
metadata:
name: logging-loki (1)
namespace: openshift-logging
spec:
size: 1x.small (2)
storage:
schemas:
- effectiveDate: '2023-10-15'
version: v13
secret:
name: logging-loki-s3 (3)
type: s3 (4)
credentialMode: (5)
storageClassName: <storage_class_name> (6)
tenants:
mode: openshift-logging
1 | 使用名称logging-loki 。 |
2 | 指定部署规模。在日志记录5.8及更高版本中,Loki生产实例支持的规模选项为1x.extra-small 、1x.small 或1x.medium 。 |
3 | 指定用于日志存储的密钥。 |
4 | 指定相应的存储类型。 |
5 | 可选字段,Logging 5.9 及更高版本。支持用户配置的值如下:static 是所有支持的对象存储类型使用的默认身份验证模式,使用存储在 Secret 中的凭据。token 用于从凭据源检索的短期令牌。在此模式下,静态配置不包含对象存储所需的凭据。相反,它们是在运行时使用服务生成的,这允许使用更短寿命的凭据并进行更细粒度的控制。此身份验证模式并非所有对象存储类型都支持。token-cco 是 Loki 在托管 STS 模式下运行并在 STS/WIF 集群上使用 CCO 时的默认值。 |
6 | 输入临时存储的存储类的名称。为获得最佳性能,请指定分配块存储的存储类。可以使用 oc get storageclasses 命令列出集群可用的存储类。 |
要在您的 Red Hat OpenShift Service on AWS 集群上安装和配置日志记录,必须首先安装 Operator(例如用于日志存储的 Loki Operator)。这可以通过 Red Hat OpenShift Service on AWS CLI 完成。
您具有管理员权限。
您已安装 OpenShift CLI (oc
)。
您可以访问支持的对象存储。例如:AWS S3、Google Cloud Storage、Azure、Swift、Minio 或 OpenShift Data Foundation。
**稳定版**通道仅提供对最新日志记录版本的更新。要继续接收先前版本的更新,您必须将订阅通道更改为**稳定版-x.y**,其中 |
为 Loki Operator 创建Namespace
对象
Namespace
对象apiVersion: v1
kind: Namespace
metadata:
name: openshift-operators-redhat (1)
annotations:
openshift.io/node-selector: ""
labels:
openshift.io/cluster-monitoring: "true" (2)
1 | 必须指定openshift-operators-redhat 命名空间。为避免与指标发生可能的冲突,您应该将 Prometheus 集群监控堆栈配置为从openshift-operators-redhat 命名空间而不是openshift-operators 命名空间抓取指标。openshift-operators 命名空间可能包含社区 Operators,这些 Operators 是不可信的,并且可能发布与 Red Hat OpenShift Service on AWS 指标名称相同的指标,这会导致冲突。 |
2 | 一个字符串值,指定显示的标签,以确保集群监控抓取openshift-operators-redhat 命名空间。 |
通过运行以下命令应用Namespace
对象
$ oc apply -f <filename>.yaml
为 Loki Operator 创建Subscription
对象
Subscription
对象apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: loki-operator
namespace: openshift-operators-redhat (1)
spec:
channel: stable (2)
name: loki-operator
source: redhat-operators (3)
sourceNamespace: openshift-marketplace
1 | 必须指定openshift-operators-redhat 命名空间。 |
2 | 指定stable 或stable-5.<y> 作为通道。 |
3 | 指定redhat-operators 。如果您的 Red Hat OpenShift Service on AWS 集群安装在受限网络(也称为断开连接的集群)上,请指定在配置 Operator Lifecycle Manager (OLM) 时创建的CatalogSource 对象的名称。 |
通过运行以下命令应用Subscription
对象
$ oc apply -f <filename>.yaml
为 Red Hat OpenShift Logging Operator 创建namespace
对象
namespace
对象apiVersion: v1
kind: Namespace
metadata:
name: openshift-logging (1)
annotations:
openshift.io/node-selector: ""
labels:
openshift.io/cluster-logging: "true"
openshift.io/cluster-monitoring: "true" (2)
1 | Red Hat OpenShift Logging Operator 只能部署到openshift-logging 命名空间。 |
2 | 一个字符串值,指定显示的标签,以确保集群监控抓取openshift-operators-redhat 命名空间。 |
通过运行以下命令应用namespace
对象
$ oc apply -f <filename>.yaml
创建一个OperatorGroup
对象
OperatorGroup
对象apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
name: cluster-logging
namespace: openshift-logging (1)
spec:
targetNamespaces:
- openshift-logging
1 | 您必须指定openshift-logging 命名空间。 |
通过运行以下命令应用OperatorGroup
对象
$ oc apply -f <filename>.yaml
创建一个Subscription
对象
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: cluster-logging
namespace: openshift-logging (1)
spec:
channel: stable (2)
name: cluster-logging
source: redhat-operators (3)
sourceNamespace: openshift-marketplace
1 | 您必须指定openshift-logging 命名空间。 |
2 | 指定stable 或stable-5.<y> 作为通道。 |
3 | 指定redhat-operators 。如果您的 Red Hat OpenShift Service on AWS 集群安装在受限网络(也称为脱机集群)上,请指定您在配置 Operator Lifecycle Manager (OLM) 时创建的 CatalogSource 对象的名称。 |
通过运行以下命令应用Subscription
对象
$ oc apply -f <filename>.yaml
创建一个LokiStack
CR
LokiStack
CRapiVersion: loki.grafana.com/v1
kind: LokiStack
metadata:
name: logging-loki (1)
namespace: openshift-logging (2)
spec:
size: 1x.small (3)
storage:
schemas:
- version: v13
effectiveDate: "<yyyy>-<mm>-<dd>"
secret:
name: logging-loki-s3 (4)
type: s3 (5)
credentialMode: (6)
storageClassName: <storage_class_name> (7)
tenants:
mode: openshift-logging (8)
1 | 使用名称logging-loki 。 |
2 | 您必须指定openshift-logging 命名空间。 |
3 | 指定部署规模。在日志记录5.8及更高版本中,Loki生产实例支持的规模选项为1x.extra-small 、1x.small 或1x.medium 。 |
4 | 指定日志存储密钥的名称。 |
5 | 指定相应的存储类型。 |
6 | 可选字段,Logging 5.9 及更高版本。支持用户配置的值如下:static 是所有支持的对象存储类型使用的默认身份验证模式,使用存储在 Secret 中的凭据。token 用于从凭据源检索的短期令牌。在此模式下,静态配置不包含对象存储所需的凭据。相反,它们是在运行时使用服务生成的,这允许使用更短寿命的凭据并进行更细粒度的控制。此身份验证模式并非所有对象存储类型都支持。token-cco 是 Loki 在托管 STS 模式下运行并在 STS/WIF 集群上使用 CCO 时的默认值。 |
7 | 指定临时存储的存储类的名称。为获得最佳性能,请指定分配块存储的存储类。可以使用 oc get storageclasses 命令列出集群可用的存储类。 |
8 | LokiStack 默认以多租户模式运行,无法修改。每种日志类型(审核日志、基础设施日志和应用程序日志)提供一个租户。这使得各个用户和用户组可以访问不同的日志流。 |
运行以下命令应用LokiStack CR
对象
$ oc apply -f <filename>.yaml
创建一个ClusterLogging
CR 对象
apiVersion: logging.openshift.io/v1
kind: ClusterLogging
metadata:
name: instance (1)
namespace: openshift-logging (2)
spec:
collection:
type: vector
logStore:
lokistack:
name: logging-loki
retentionPolicy:
application:
maxAge: 7d
audit:
maxAge: 7d
infra:
maxAge: 7d
type: lokistack
visualization:
type: ocp-console
ocpConsole:
logsLimit: 15
managementState: Managed
1 | 名称必须为instance 。 |
2 | 命名空间必须为openshift-logging 。 |
运行以下命令应用ClusterLogging CR
对象
$ oc apply -f <filename>.yaml
运行以下命令验证安装
$ oc get pods -n openshift-logging
$ oc get pods -n openshift-logging
NAME READY STATUS RESTARTS AGE
cluster-logging-operator-fb7f7cf69-8jsbq 1/1 Running 0 98m
collector-222js 2/2 Running 0 18m
collector-g9ddv 2/2 Running 0 18m
collector-hfqq8 2/2 Running 0 18m
collector-sphwg 2/2 Running 0 18m
collector-vv7zn 2/2 Running 0 18m
collector-wk5zz 2/2 Running 0 18m
logging-view-plugin-6f76fbb78f-n2n4n 1/1 Running 0 18m
lokistack-sample-compactor-0 1/1 Running 0 42m
lokistack-sample-distributor-7d7688bcb9-dvcj8 1/1 Running 0 42m
lokistack-sample-gateway-5f6c75f879-bl7k9 2/2 Running 0 42m
lokistack-sample-gateway-5f6c75f879-xhq98 2/2 Running 0 42m
lokistack-sample-index-gateway-0 1/1 Running 0 42m
lokistack-sample-ingester-0 1/1 Running 0 42m
lokistack-sample-querier-6b7b56bccc-2v9q4 1/1 Running 0 42m
lokistack-sample-query-frontend-84fb57c578-gq2f7 1/1 Running 0 42m
要配置 Loki 对象存储,您必须创建一个密钥。您可以使用 OpenShift CLI (oc
) 来完成此操作。
您具有管理员权限。
您已安装 Loki Operator。
您已安装 OpenShift CLI (oc
)。
在包含您的证书和密钥文件的目录中运行以下命令创建一个密钥
$ oc create secret generic -n openshift-logging <your_secret_name> \
--from-file=tls.key=<your_key_file>
--from-file=tls.crt=<your_crt_file>
--from-file=ca-bundle.crt=<your_bundle_file>
--from-literal=username=<your_username>
--from-literal=password=<your_password>
为获得最佳结果,请使用通用或不透明密钥。 |
运行以下命令验证是否已创建密钥
$ oc get secrets
您可以使用 OpenShift CLI (oc
) 创建LokiStack
自定义资源 (CR)。
您具有管理员权限。
您已安装 Loki Operator。
您已安装 OpenShift CLI (oc
)。
创建一个LokiStack
CR
LokiStack
CRapiVersion: loki.grafana.com/v1
kind: LokiStack
metadata:
name: logging-loki (1)
namespace: openshift-logging
spec:
size: 1x.small (2)
storage:
schemas:
- effectiveDate: '2023-10-15'
version: v13
secret:
name: logging-loki-s3 (3)
type: s3 (4)
credentialMode: (5)
storageClassName: <storage_class_name> (6)
tenants:
mode: openshift-logging
1 | 使用名称logging-loki 。 |
2 | 指定部署规模。在日志记录5.8及更高版本中,Loki生产实例支持的规模选项为1x.extra-small 、1x.small 或1x.medium 。 |
3 | 指定用于日志存储的密钥。 |
4 | 指定相应的存储类型。 |
5 | 可选字段,Logging 5.9 及更高版本。支持用户配置的值如下:static 是所有支持的对象存储类型使用的默认身份验证模式,使用存储在 Secret 中的凭据。token 用于从凭据源检索的短期令牌。在此模式下,静态配置不包含对象存储所需的凭据。相反,它们是在运行时使用服务生成的,这允许使用更短寿命的凭据并进行更细粒度的控制。此身份验证模式并非所有对象存储类型都支持。token-cco 是 Loki 在托管 STS 模式下运行并在 STS/WIF 集群上使用 CCO 时的默认值。 |
6 | 输入临时存储的存储类的名称。为获得最佳性能,请指定分配块存储的存储类。可以使用 oc get storageclasses 命令列出集群可用的存储类。
|
通过运行以下命令并观察输出,列出openshift-logging
项目中的 Pod 来验证安装
$ oc get pods -n openshift-logging
确认您看到了日志记录组件的多个 Pod,类似于以下列表
NAME READY STATUS RESTARTS AGE
cluster-logging-operator-78fddc697-mnl82 1/1 Running 0 14m
collector-6cglq 2/2 Running 0 45s
collector-8r664 2/2 Running 0 45s
collector-8z7px 2/2 Running 0 45s
collector-pdxl9 2/2 Running 0 45s
collector-tc9dx 2/2 Running 0 45s
collector-xkd76 2/2 Running 0 45s
logging-loki-compactor-0 1/1 Running 0 8m2s
logging-loki-distributor-b85b7d9fd-25j9g 1/1 Running 0 8m2s
logging-loki-distributor-b85b7d9fd-xwjs6 1/1 Running 0 8m2s
logging-loki-gateway-7bb86fd855-hjhl4 2/2 Running 0 8m2s
logging-loki-gateway-7bb86fd855-qjtlb 2/2 Running 0 8m2s
logging-loki-index-gateway-0 1/1 Running 0 8m2s
logging-loki-index-gateway-1 1/1 Running 0 7m29s
logging-loki-ingester-0 1/1 Running 0 8m2s
logging-loki-ingester-1 1/1 Running 0 6m46s
logging-loki-querier-f5cf9cb87-9fdjd 1/1 Running 0 8m2s
logging-loki-querier-f5cf9cb87-fp9v5 1/1 Running 0 8m2s
logging-loki-query-frontend-58c579fcb7-lfvbc 1/1 Running 0 8m2s
logging-loki-query-frontend-58c579fcb7-tjf9k 1/1 Running 0 8m2s
logging-view-plugin-79448d8df6-ckgmx 1/1 Running 0 46s
建议的 Loki 存储命名法为logging-loki-<your_storage_provider>
。
下表显示了每个存储提供程序的LokiStack
自定义资源 (CR) 中的type
值。有关更多信息,请参阅您存储提供程序的部分。
存储提供商 | 密钥type 值 |
---|---|
AWS |
s3 |
Azure |
azure |
Google Cloud |
gcs |
Minio |
s3 |
OpenShift Data Foundation |
s3 |
Swift |
swift |
您已安装 Loki Operator。
您已安装 OpenShift CLI (oc
)。
您已在 AWS 上创建了一个存储桶。
您已创建了一个AWS IAM策略和IAM用户。
运行以下命令创建一个名为logging-loki-aws
的对象存储密钥
$ oc create secret generic logging-loki-aws \
--from-literal=bucketnames="<bucket_name>" \
--from-literal=endpoint="<aws_bucket_endpoint>" \
--from-literal=access_key_id="<aws_access_key_id>" \
--from-literal=access_key_secret="<aws_access_key_secret>" \
--from-literal=region="<aws_region_of_your_bucket>"
如果您的集群启用了 STS,则 Cloud Credential Operator (CCO) 支持使用 AWS 令牌进行短期身份验证。
您可以通过运行以下命令手动创建 Loki 对象存储密钥
$ oc -n openshift-logging create secret generic "logging-loki-aws" \
--from-literal=bucketnames="<s3_bucket_name>" \
--from-literal=region="<bucket_region>" \
--from-literal=audience="<oidc_audience>" (1)
1 | 可选注释,默认值为openshift 。 |
您已安装 Loki Operator。
您已安装 OpenShift CLI (oc
)。
您已在 Azure 上创建了一个存储桶。
运行以下命令创建一个名为logging-loki-azure
的对象存储密钥
$ oc create secret generic logging-loki-azure \
--from-literal=container="<azure_container_name>" \
--from-literal=environment="<azure_environment>" \ (1)
--from-literal=account_name="<azure_account_name>" \
--from-literal=account_key="<azure_account_key>"
1 | 支持的环境值是AzureGlobal 、AzureChinaCloud 、AzureGermanCloud 或AzureUSGovernment 。 |
如果您的集群启用了 Microsoft Entra 工作负载 ID,则 Cloud Credential Operator (CCO) 支持使用工作负载 ID 进行短期身份验证。
您可以通过运行以下命令手动创建 Loki 对象存储密钥
$ oc -n openshift-logging create secret generic logging-loki-azure \
--from-literal=environment="<azure_environment>" \
--from-literal=account_name="<storage_account_name>" \
--from-literal=container="<container_name>"
将从 GCP 收到的服务帐号凭据复制到名为key.json
的文件中。
运行以下命令创建一个名为logging-loki-gcs
的对象存储密钥
$ oc create secret generic logging-loki-gcs \
--from-literal=bucketname="<bucket_name>" \
--from-file=key.json="<path/to/key.json>"
运行以下命令创建一个名为logging-loki-minio
的对象存储密钥
$ oc create secret generic logging-loki-minio \
--from-literal=bucketnames="<bucket_name>" \
--from-literal=endpoint="<minio_bucket_endpoint>" \
--from-literal=access_key_id="<minio_access_key_id>" \
--from-literal=access_key_secret="<minio_access_key_secret>"
您已安装 Loki Operator。
您已安装 OpenShift CLI (oc
)。
您已将 OpenShift Data Foundation 集群配置为对象存储。
在openshift-logging
命名空间中创建一个ObjectBucketClaim
自定义资源
apiVersion: objectbucket.io/v1alpha1
kind: ObjectBucketClaim
metadata:
name: loki-bucket-odf
namespace: openshift-logging
spec:
generateBucketName: loki-bucket-odf
storageClassName: openshift-storage.noobaa.io
运行以下命令从关联的ConfigMap
对象获取存储桶属性
BUCKET_HOST=$(oc get -n openshift-logging configmap loki-bucket-odf -o jsonpath='{.data.BUCKET_HOST}')
BUCKET_NAME=$(oc get -n openshift-logging configmap loki-bucket-odf -o jsonpath='{.data.BUCKET_NAME}')
BUCKET_PORT=$(oc get -n openshift-logging configmap loki-bucket-odf -o jsonpath='{.data.BUCKET_PORT}')
运行以下命令从关联的密钥获取存储桶访问密钥
ACCESS_KEY_ID=$(oc get -n openshift-logging secret loki-bucket-odf -o jsonpath='{.data.AWS_ACCESS_KEY_ID}' | base64 -d)
SECRET_ACCESS_KEY=$(oc get -n openshift-logging secret loki-bucket-odf -o jsonpath='{.data.AWS_SECRET_ACCESS_KEY}' | base64 -d)
运行以下命令创建一个名为logging-loki-odf
的对象存储密钥
$ oc create -n openshift-logging secret generic logging-loki-odf \
--from-literal=access_key_id="<access_key_id>" \
--from-literal=access_key_secret="<secret_access_key>" \
--from-literal=bucketnames="<bucket_name>" \
--from-literal=endpoint="https://<bucket_host>:<bucket_port>"
您已安装 Loki Operator。
您已安装 OpenShift CLI (oc
)。
您已在 Swift 上创建了一个存储桶。
运行以下命令创建一个名为logging-loki-swift
的对象存储密钥
$ oc create secret generic logging-loki-swift \
--from-literal=auth_url="<swift_auth_url>" \
--from-literal=username="<swift_usernameclaim>" \
--from-literal=user_domain_name="<swift_user_domain_name>" \
--from-literal=user_domain_id="<swift_user_domain_id>" \
--from-literal=user_id="<swift_user_id>" \
--from-literal=password="<swift_password>" \
--from-literal=domain_id="<swift_domain_id>" \
--from-literal=domain_name="<swift_domain_name>" \
--from-literal=container_name="<swift_container_name>"
您可以选择通过运行以下命令提供项目特定数据、区域或两者。
$ oc create secret generic logging-loki-swift \
--from-literal=auth_url="<swift_auth_url>" \
--from-literal=username="<swift_usernameclaim>" \
--from-literal=user_domain_name="<swift_user_domain_name>" \
--from-literal=user_domain_id="<swift_user_domain_id>" \
--from-literal=user_id="<swift_user_id>" \
--from-literal=password="<swift_password>" \
--from-literal=domain_id="<swift_domain_id>" \
--from-literal=domain_name="<swift_domain_name>" \
--from-literal=container_name="<swift_container_name>" \
--from-literal=project_id="<swift_project_id>" \
--from-literal=project_name="<swift_project_name>" \
--from-literal=project_domain_id="<swift_project_domain_id>" \
--from-literal=project_domain_name="<swift_project_domain_name>" \
--from-literal=region="<swift_region>"
您可以使用 OpenShift Elasticsearch Operator 在您的 Red Hat OpenShift Service on AWS 集群上部署内部 Elasticsearch 日志存储。
日志记录5.9版本不包含OpenShift Elasticsearch Operator的更新版本。如果您目前使用的是日志记录5.8版本发布的OpenShift Elasticsearch Operator,它将继续与日志记录一起使用,直到日志记录5.8版本结束生命周期为止。作为使用OpenShift Elasticsearch Operator管理默认日志存储的替代方法,您可以使用Loki Operator。有关日志记录生命周期日期的更多信息,请参阅与平台无关的Operators。 |
每个 Elasticsearch 部署配置都需要一个持久卷。在 Red Hat OpenShift Service on AWS 上,这是使用持久卷声明 (PVC) 实现的。
如果您使用本地卷进行持久性存储,请不要使用原始块卷,这在 |
OpenShift Elasticsearch Operator 使用 Elasticsearch 资源名称命名 PVC。
Fluentd 将来自**systemd journal**和**/var/log/containers/*.log**的任何日志发送到 Elasticsearch。
Elasticsearch 需要足够的内存才能执行大型合并操作。如果内存不足,它将无响应。为避免此问题,请评估您需要的应用程序日志数据量,并分配大约两倍的可用存储容量。
默认情况下,当存储容量达到 85% 时,Elasticsearch 将停止向节点分配新数据。在 90% 时,Elasticsearch 会尝试尽可能将现有分片从该节点重新定位到其他节点。但是,如果没有任何节点的可用容量低于 85%,Elasticsearch 将有效地拒绝创建新索引并变为 RED。
这些低水位和高水位值是当前版本中的 Elasticsearch 默认值。您可以修改这些默认值。尽管警报使用相同的默认值,但您无法更改警报中的这些值。 |
OpenShift Elasticsearch Operator 创建并管理 OpenShift Logging 使用的 Elasticsearch 集群。
Elasticsearch 是一个内存密集型应用程序。除非您在ClusterLogging
自定义资源中另行指定,否则每个 Elasticsearch 节点至少需要 16GB 的内存用于内存请求和限制。
初始的 AWS 上 Red Hat OpenShift 服务节点可能不足以支持 Elasticsearch 集群。您必须向 AWS 集群上的 Red Hat OpenShift 服务添加更多节点才能以推荐的或更高的内存运行,每个 Elasticsearch 节点最多可达 64GB。
Elasticsearch 节点可以使用较低的内存设置运行,但这不推荐用于生产环境。
确保您拥有 Elasticsearch 必要的持久性存储。请注意,每个 Elasticsearch 节点都需要自己的存储卷。
如果您使用本地卷进行持久性存储,请不要使用原始块卷,这在 |
在Red Hat OpenShift Service on AWS Web控制台中,点击**Operators** → **OperatorHub**。
从可用 Operators 列表中单击**OpenShift Elasticsearch Operator**,然后单击**安装**。
确保在**安装模式**下选择了**集群上的所有命名空间**。
确保在**已安装命名空间**下选择了**openshift-operators-redhat**。
您必须指定`openshift-operators-redhat`命名空间。`openshift-operators`命名空间可能包含社区 Operators,这些 Operators 未经信任,可能发布与 AWS 上 Red Hat OpenShift 服务指标名称相同的指标,这将导致冲突。
选择**在此命名空间上启用 Operator 推荐的集群监控**。
此选项在Namespace
对象中设置openshift.io/cluster-monitoring: "true"
标签。您必须选择此选项,以确保集群监控会抓取openshift-operators-redhat
命名空间。
选择**stable-5.x**作为**更新渠道**。
选择**更新审批**策略。
**自动**策略允许Operator Lifecycle Manager (OLM)在有新版本可用时自动更新Operator。
**手动**策略需要具有相应凭据的用户来批准Operator更新。
点击**安装**。
通过切换到**Operators** → **已安装 Operators**页面来验证 OpenShift Elasticsearch Operator 是否已安装。
确保**OpenShift Elasticsearch Operator**在所有项目中均列出,且**状态**为**成功**。
您可以使用 OpenShift CLI(`oc`)安装 OpenShift Elasticsearch Operator。
确保您拥有 Elasticsearch 必要的持久性存储。请注意,每个 Elasticsearch 节点都需要自己的存储卷。
如果您使用本地卷进行持久性存储,请不要使用原始块卷,这在 |
Elasticsearch 是一个内存密集型应用程序。默认情况下,AWS 上的 Red Hat OpenShift 服务会安装三个 Elasticsearch 节点,其内存请求和限制为 16 GB。这三个初始的 AWS 上 Red Hat OpenShift 服务节点可能没有足够的内存来在您的集群中运行 Elasticsearch。如果您遇到与 Elasticsearch 相关的内存问题,请向集群添加更多 Elasticsearch 节点,而不是增加现有节点上的内存。
您具有管理员权限。
您已安装 OpenShift CLI(`oc`)。
创建一个作为 YAML 文件的`Namespace`对象。
apiVersion: v1
kind: Namespace
metadata:
name: openshift-operators-redhat (1)
annotations:
openshift.io/node-selector: ""
labels:
openshift.io/cluster-monitoring: "true" (2)
1 | 您必须指定`openshift-operators-redhat`命名空间。为了防止可能与指标发生冲突,请将 Prometheus 集群监控堆栈配置为从`openshift-operators-redhat`命名空间而不是`openshift-operators`命名空间抓取指标。`openshift-operators`命名空间可能包含社区 Operators,这些 Operators 未经信任,可能发布与 ROSA 指标名称相同的指标,这将导致冲突。 |
2 | 字符串。您必须按所示指定此标签,以确保集群监控抓取`openshift-operators-redhat`命名空间。 |
通过运行以下命令应用Namespace
对象
$ oc apply -f <filename>.yaml
创建一个作为 YAML 文件的`OperatorGroup`对象。
apiVersion: operators.coreos.com/v1
kind: OperatorGroup
metadata:
name: openshift-operators-redhat
namespace: openshift-operators-redhat (1)
spec: {}
1 | 必须指定openshift-operators-redhat 命名空间。 |
通过运行以下命令应用OperatorGroup
对象
$ oc apply -f <filename>.yaml
创建一个`Subscription`对象以将命名空间订阅到 OpenShift Elasticsearch Operator。
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: elasticsearch-operator
namespace: openshift-operators-redhat (1)
spec:
channel: stable-x.y (2)
installPlanApproval: Automatic (3)
source: redhat-operators (4)
sourceNamespace: openshift-marketplace
name: elasticsearch-operator
1 | 必须指定openshift-operators-redhat 命名空间。 |
2 | 指定`stable`或`stable-x.y`作为渠道。请参见以下说明。 |
3 | `Automatic`允许 Operator 生命周期管理器 (OLM) 在有新版本可用时自动更新 Operator。`Manual`需要具有适当凭据的用户批准 Operator 更新。 |
4 | 指定`redhat-operators`。如果您的 AWS 上 Red Hat OpenShift 服务集群安装在受限网络(也称为断开连接的集群)上,请指定配置 Operator 生命周期管理器 (OLM) 时创建的`CatalogSource`对象的名称。 |
指定`stable`将安装最新稳定版本的当前版本。将`stable`与`installPlanApproval: "Automatic"`一起使用会自动将您的 Operators 升级到最新的稳定主版本和次版本。 指定`stable-x.y`将安装特定主版本的当前次版本。将`stable-x.y`与`installPlanApproval: "Automatic"`一起使用会自动将您的 Operators 升级到主版本内的最新稳定次版本。 |
运行以下命令应用订阅
$ oc apply -f <filename>.yaml
OpenShift Elasticsearch Operator 已安装到`openshift-operators-redhat`命名空间,并已复制到集群中的每个项目。
运行以下命令
$ oc get csv -n --all-namespaces
观察输出并确认 OpenShift Elasticsearch Operator 的 Pod 是否存在于每个命名空间中。
NAMESPACE NAME DISPLAY VERSION REPLACES PHASE
default elasticsearch-operator.v5.8.1 OpenShift Elasticsearch Operator 5.8.1 elasticsearch-operator.v5.8.0 Succeeded
kube-node-lease elasticsearch-operator.v5.8.1 OpenShift Elasticsearch Operator 5.8.1 elasticsearch-operator.v5.8.0 Succeeded
kube-public elasticsearch-operator.v5.8.1 OpenShift Elasticsearch Operator 5.8.1 elasticsearch-operator.v5.8.0 Succeeded
kube-system elasticsearch-operator.v5.8.1 OpenShift Elasticsearch Operator 5.8.1 elasticsearch-operator.v5.8.0 Succeeded
non-destructive-test elasticsearch-operator.v5.8.1 OpenShift Elasticsearch Operator 5.8.1 elasticsearch-operator.v5.8.0 Succeeded
openshift-apiserver-operator elasticsearch-operator.v5.8.1 OpenShift Elasticsearch Operator 5.8.1 elasticsearch-operator.v5.8.0 Succeeded
openshift-apiserver elasticsearch-operator.v5.8.1 OpenShift Elasticsearch Operator 5.8.1 elasticsearch-operator.v5.8.0 Succeeded
...
您可以通过修改`ClusterLogging`自定义资源 (CR) 来配置日志记录使用的日志存储类型。
您具有管理员权限。
您已安装 OpenShift CLI(`oc`)。
您已安装 Red Hat OpenShift Logging Operator 和一个内部日志存储,该存储是 LokiStack 或 Elasticsearch。
您已创建`ClusterLogging` CR。
日志记录5.9版本不包含OpenShift Elasticsearch Operator的更新版本。如果您目前使用的是日志记录5.8版本发布的OpenShift Elasticsearch Operator,它将继续与日志记录一起使用,直到日志记录5.8版本结束生命周期为止。作为使用OpenShift Elasticsearch Operator管理默认日志存储的替代方法,您可以使用Loki Operator。有关日志记录生命周期日期的更多信息,请参阅与平台无关的Operators。 |
修改`ClusterLogging` CR `logStore`规范。
apiVersion: logging.openshift.io/v1
kind: ClusterLogging
metadata:
# ...
spec:
# ...
logStore:
type: <log_store_type> (1)
elasticsearch: (2)
nodeCount: <integer>
resources: {}
storage: {}
redundancyPolicy: <redundancy_type> (3)
lokistack: (4)
name: {}
# ...
1 | 指定日志存储类型。这可以是`lokistack`或`elasticsearch`。 |
2 | Elasticsearch 日志存储的可选配置选项。 |
3 | 指定冗余类型。此值可以是`ZeroRedundancy`、`SingleRedundancy`、`MultipleRedundancy`或`FullRedundancy`。 |
4 | LokiStack 的可选配置选项。 |
apiVersion: logging.openshift.io/v1
kind: ClusterLogging
metadata:
name: instance
namespace: openshift-logging
spec:
managementState: Managed
logStore:
type: lokistack
lokistack:
name: logging-loki
# ...
运行以下命令应用`ClusterLogging` CR
$ oc apply -f <filename>.yaml