OpenShift 4 - 可观测性之 OpenShift Logging - Loki(附视频)

OpenShift / RHEL / DevSecOps 汇总目录
说明:本文已经在支持 OpenShift 4.15 + Loki Operator 5.9.3 + OpenShift Logging Operator 5.8.8 的环境中验证(OpenShift Logging Operator 5.9.3 有问题)

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

  1. 使用默认配置安装 OpenShift Logging Operator,该 Operator 将会安装在 openshift-logging 命名空间中。
  2. 使用默认配置安装 Loki Operator,该 Operator 将会安装在 openshift-operators-redhat 命名空间中。
    在这里插入图片描述

配置对象存储

可以使用以下任一种 S3 对象存储作为 Loki 的存储。

使用 MinIO 对象存储

  1. 参考《OpenShift 4 - 基于 MinIO 安装 Red Hat Quay 镜像仓库》一文的 “安装 MinIO” 一节安装 MinIO 环境,然后创建名为 loki-logging 的 bucket 和 user (用户名和密码为 loki/openshift4,权限为 readwrite)。
  2. 创建访问 loki 存储桶的 Secret。
$ cat << EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
metadata:
  name: lokistack-dev-s3
  namespace:  openshift-logging
stringData:
  access_key_id: loki
  access_key_secret: openshift4
  bucketnames: loki-logging
  endpoint: http://minio-svc.minio-dev.svc:9000
  insecure: "true"
EOF

使用 AWS 对象存储

  1. 执行命令创建访问 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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
  1. 在 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"
}
  1. 基于以下 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

  1. 在 Loki Operator 中根据以下 2 个截图创建一个 LokiStack 对象。
    在这里插入图片描述

以下 Storage Class Name 为可提供 RWO 存储的存储类即可。
在这里插入图片描述
上述配置过程会生成以下 YAML,其中 gp2-csi 是 OpenShift 中已有的 StorageClass。

apiVersion: loki.grafana.com/v1
kind: LokiStack
metadata:
  name: loki-logging
  namespace: openshift-logging
spec:
  size: 1x.extra-small
  storage:
    schemas:
    - version: v13
      effectiveDate: "2023-10-15"
    secret:
      name: lokistack-dev-s3
      type: s3
  storageClassName: gp2-csi
  managementState: Managed
  hashRing:
    type: memberlist 
  tenants:
    mode: openshift-logging
  1. 基于以下 YAML 创建一个基于 lokistack 存储和 vector 收集器的 ClusterLogging 对象。
apiVersion: logging.openshift.io/v1
kind: ClusterLogging
metadata:
  name: instance
  namespace: openshift-logging
spec:
  logStore:
    type: lokistack
    lokistack:
      name: loki-logging
  collection:
    type: vector
  visualization:
    type: ocp-console
  managementState: Managed
  1. 基于以下 YAML 创建一个 LogFileMetricExporter 对象。说明:当使用 OpenShift Logging Operator 5.8.8 时无需此步操作,不过和 https://docs.openshift.com/container-platform/4.15/observability/logging/logging_release_notes/logging-5-8-release-notes.html#logging-release-notes-5-8-0-enhancements 似乎不一致。
apiVersion: logging.openshift.io/v1alpha1
kind: LogFileMetricExporter
metadata:
  name: instance
  namespace: openshift-logging
spec:
  resources:
    limits:
      cpu: 500m
    requests:
      cpu: 200m
      memory: 128Mi
  tolerations:
    - effect: NoSchedule
      key: node-role.kubernetes.io/master
      operator: Exists
  1. 在完成后可在 OpenShift 的 “开发者” 视图中看到部署运行的组件。说明:此图不包括上一步说的 LogFileMetricExporter 对象。
    在这里插入图片描述
  2. 刷新 OpenShift 的 “管理员” 视图,在 “观察” 菜单中会出现 “Logs” ,点击进入 Logs 可以看到集群日志。
    在这里插入图片描述
  3. 为了能获得并访问 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.16/logging/cluster-logging.html
https://github.com/grafana/loki/blob/main/operator/hack/lokistack_gateway_ocp.yaml
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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值