《OpenShift / RHEL / DevSecOps 汇总目录》
说明:本文已经在支持 OpenShift 4.12 + OpenShift Logging Operator 5.7.2 + Loki Operator 5.7.2 的环境中验证
文章目录
- OpenShift 基于 Loki 的日志架构
- 安装配置基于 Loki 的日志环境
- 安装 OpenShift Logging Operator 和 Loki Operator
- 配置对象存储
- 配置基于 Loki 的 OpenShift Logging
- 视频
- 参考
OpenShift 基于 Loki 的日志架构
在 OpenShift 4.10 以后开始逐步用基于 Vector+Loki 的日志架构替换原有基于 EFK 的日志架构。之所以用 Loki 替换 EFK 主要是因为 Loki 有更加轻量级的运行环境。这是因为在 EFK 架构中 Elasticsearch 会对传入的日志记录进行完全索引,而 Loki 只对一些固定的标签进行索引,并将更复杂的解析工作推迟到日志被存储之后,因此 Loki 不但占用空间更小,而且还可以更快速地收集日志。
OpenShift 基于 Loki 的日志架构主要使用了 2 个组件:Vector 和 Loki。其中 Vector 用来收集日志,Loki 作为存储日志,另外访问日志页面也直接集成到了 OpenShift 控制台中。需要注意的是 Loki 必须使用对象存储来保存日志。
安装配置基于 Loki 的日志环境
安装 OpenShift Logging Operator 和 Loki Operator
- 使用默认配置安装 OpenShift Logging Operator,该 Operator 将会安装在 openshift-logging 命名空间中。
- 使用默认配置安装 Loki Operator,该 Operator 将会安装在 openshift-operators-redhat 命名空间中。
配置对象存储
本文使用 AWS S3 作为 Loki 使用的对象存储。
- 执行命令创建访问 AWS 的凭证文件,其中我们会用到 us-east-1 区的 AWS S3 服务。
$ aws configure
AWS Access Key ID [None]: AKIAVROBYTZYQBBNWLF6
AWS Secret Access Key [None]: 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
Default region name [None]: us-east-1
Default output format [None]: json
$ cat .aws/credentials
[default]
aws_access_key_id = AKIAVROBYTZYQBBNWLF6
aws_secret_access_key = 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
- 在 AWS 上创建 S3 存储的 bucket。
$ GUID=`hostname | cut -d. -f2`
$ aws --profile default s3api create-bucket --bucket $GUID --region us-east-1 --create-bucket-configuration LocationConstraint=us-east-1
{
"Location": "/j68pw"
}
- 基于以下 YAML 创建访问 AWS bucket 的 Secret 对象。
apiVersion: v1
kind: Secret
metadata:
name: lokistack-dev-s3
namespace: openshift-logging
stringData:
access_key_id: w3EDfSERUiLSAEXAMPLE (Replace with your aws creds)
access_key_secret: mshdyShDTYKWEywajsqpshdNSUWJDA+1+REXAMPLE (Replace with your aws creds)
bucketnames: j68pw (we called it j68pw in our example)
endpoint: https://s3.us-east-1.amazonaws.com/
region: us-east-1
配置基于 Loki 的 OpenShift Logging
- 在 Loki Operator 中根据以下 2 个截图创建一个 Loki Stack 对象。
上述配置过程会生成以下 YAML:
apiVersion: loki.grafana.com/v1
kind: LokiStack
metadata:
name: loki
namespace: openshift-logging
spec:
size: 1x.extra-small
storage:
schemas:
- version: v12
effectiveDate: "2022-06-01"
secret:
name: lokistack-dev-s3
type: s3
storageClassName: gp3-csi
tenants:
mode: openshift-logging
- 基于以下 YAML,创建一个基于 lokistack 存储和 vector 收集器的 ClusterLogging 对象。
apiVersion: logging.openshift.io/v1
kind: ClusterLogging
metadata:
name: instance
namespace: openshift-logging
spec:
logStore:
type: lokistack
lokistack:
name: loki
collection:
logs:
type: vector
- 在完成后可在 OpenShift 的 “开发” 视图中看到部署运行的组件。
- 在OpenShift 的 “管理员” 视图的 “观察” 菜单中会出现 “Logs” 。点击进入 Logs 可以看到集群日志。
- 为了能获得并访问 Auditor 日志,需根据以下 YAML 创建 ClusterLogForwarder 对象。
apiVersion: logging.openshift.io/v1
kind: ClusterLogForwarder
metadata:
name: instance
namespace: openshift-logging
spec:
pipelines:
- name: all-to-default
inputRefs:
- infrastructure
- application
- audit
outputRefs:
- default
视频
视频
参考
https://github.com/OpenShiftDemos/openshift-ops-workshops/blob/ocp4-prod/workshop/content/logging.adoc
https://github.com/OpenShiftDemos/openshift-ops-workshops/blob/ocp4-prod/workshop/content/logging-with-loki.adoc
https://www.redhat.com/en/topics/devops/what-is-observability
https://landscape.cncf.io/guide#observability-and-analysis
https://cloud.redhat.com/blog/whats-new-in-red-hat-openshift-monitoring-4.13-logging-5.7-and-distributed-tracing-2.8
https://docs.openshift.com/container-platform/4.13/logging/cluster-logging.html
https://github.com/OpenShiftDemos/openshift-ops-workshops/blob/ocp4-prod/workshop/content/logging-with-loki.adoc
https://videos.learning.redhat.com/media/OpenShift%20Logging%20-%20Technical%20Enablement%20-%20Log-based%20Alerts/1_fl713aj5