ToB企服应用市场:ToB评测及商务社交产业平台
标题:
使用 OpenTelemetry 和 Loki 实现高效的应用日志采集和分析
[打印本页]
作者:
水军大提督
时间:
2024-3-3 11:44
标题:
使用 OpenTelemetry 和 Loki 实现高效的应用日志采集和分析
在之前的文章陆续介绍了
如何在 Kubernetes 中使用 Otel 的自动插桩
以及
Otel 与 服务网格协同实现分布式跟踪
,这两篇的文章都将目标聚焦在分布式跟踪中,而作为可观测性三大支柱之一的日志也是我们经常使用的系统观测手段,今天这篇文章就来体验下应用日志的操作闭环。
背景
OpenTelemetry 简介
OpenTelemetry
(以下简称 Otel)是一个开源项目,旨在为分布式追踪、度量和日志提供统一的标准,简化应用程序的观测性(Observability)。它提供了一系列工具和 API,用于收集和传输应用程序的性能数据和日志,帮助开发者和运维团队更好地理解系统的行为。功能包括自动和手动检测应用程序的追踪数据,收集关键度量指标,以及捕获和传输日志。Otel 支持多种编程语言和框架,可以与多个后端系统集成,如 Prometheus、Jaeger、Elasticsearch 等。
Log 是 OpenTelemetry 项目的一部分,旨在提供一种标准化的方式来收集、传输和存储日志数据。
Loki 简介
Loki
是
Grafana Labs
开发的一个水平可扩展、高可用性、多租户的日志聚合系统,专为效率和易用性而设计。与传统的日志聚合系统不同,Loki 主要索引日志内容的元数据而不是内容本身,这使得它既轻量又高效。Loki 采用了与
Prometheus
类似的标签系统,使得日志查询更加灵活和强大。常用于存储和查询大量日志数据,特别是与 Grafana 结合使用时,提供了强大的日志可视化和分析能力。
演示
在本演示中将使用 Java 应用进行日志闭环操作的演示,在
Otel Log 支持的语言
中,Java 是的最全面的语言之一。
架构
Otel Operator 通过自动插桩的配置,为 Java 工作负载安装探针并加载配置
应用通过 otlp 端点上报日志到 Otel collector
Otel collector 将日志输出到 Loki
grafana 将 Loki 作为数据源进行日志的可视化展示
前置条件
Kubernetes 集群
kubectl cli
helm cli
安装 Loki 和 Grafana
安装 Grafana helm 库。
helm repo add grafana https://grafana.github.io/helm-charts
helm repo update
复制代码
准备 Loki 的配置文件 values.yaml。
loki:
auth_enabled: false
commonConfig:
replication_factor: 1
storage:
type: 'filesystem'
singleBinary:
replicas: 1
复制代码
安装 Loki。
helm install --values values.yaml loki grafana/loki
复制代码
安装 Grafana。
helm install grafana grafana/grafana
复制代码
通过 port forward 可以访问 Grafana
http://localhost:3000
。
POD_NAME="$(kubectl get pod -l app.kubernetes.io/name=grafana -o jsonpath='{.items[0].metadata.name}')"
kubectl --namespace default port-forward $POD_NAME 3000
复制代码
在 Grafana 中配置 Loki 数据源,指向上面部署 Loki。
安装 Otel Operator
Otel Operator 依赖 cert-manager 进行证书的管理,安装 operator 之前需要安装 cert-manager。
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.2/cert-manager.yaml
复制代码
执行下面命令安装 Otel Operator
kubectl apply -f https://github.com/open-telemetry/opentelemetry-operator/releases/latest/download/opentelemetry-operator.yaml
复制代码
配置 Instrumentation
成功安装 Otel Operator 之后,接下来就是配置探针的安装和配置了,详细的配置说明,可以参考
Instrumentation API 文档
。
Instrumentation 是 Otel Operator 的另一个 CRD,用于自动安装 Otel 探针和配置。本演示虽然主要聚焦在日志,但我们依然保留了之前使用的分布式跟踪的配置,保证链路信息的传递。
propagators 用于配置跟踪信息在上下文的传递方式。
sampler 采样器
env 和 [language].env 添加到容器的环境变量
针对 Java 应用,通过环境变量 OTEL_EXPORTER_OTLP_ENDPOINT 设置 oltp 的端点,以及 OTEL_LOGS_EXPORTER 设置应用
日志的输出方式
oltp。也可以设置为 logging、oltp,将日志输出到控制台以及 oltp 端点。
[code]kubectl apply -f -
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4