独立使用 APO 日志模块替代ELK实现日志监控功能

APO结构简析

APO 包含 Trace、Metrics、Logs 三大可观测性数据监控模块,用户可以使用默认配置全部部署,也可以参考本文独立部署 APO 的日志监控模块:

  • APO-server:APO 系统的服务端,包括前后端组件、数据库、采集器等组件
  • APO-one-agent:APO 系统的采集端,包括采集各种编程语言、各种业务环境的可观测性数据并发送给服务端

本文将介绍如何基于 APO 的日志监控功能进行日志模块的模块化部署。

APO v0.6.0 版本发布提供了基于 Clickhouse 的一套开箱即用的产品,配合 APO-server 可以实现快速部署全量日志系统,支持Kubernetes/传统服务器多种业务环境,为开发/运维提供方便快捷的日志查询功能。使用 Clickhouse 列式数据库进一步降低日志系统的运维成本。

与传统方式对比

传统的日志数据采集

ELK一直是日志领域的主流产品,但是ElasticSearch的成本很高,查询效果随着数据量的增加越来越慢。

目前使用ClickHose作为日志方案,相较于 ELK 产品能节约 50%的运维费用,但是存在以下问题:

  • 主流的Vector+ClickHose并未实现开箱即用,有许多的管理配置工作
  • 绝大多数方案不支持近似全文检索的功能(该功能很重要)
  • 使用双数组或者Map的表结构查询效率不高
  • ClickVisual是最接近的开箱即用的日志方案,也存在以下问题:
    • 强依赖Kafka,对于某些中小用户而言方案不够灵活,不友好
    • 未引入Vector,原生的ClickHose Kafka引擎在大流量情况下可能导致ClickHose内存爆掉(感谢社区大佬 十四反馈)

APO 实现的全量日志数据采集

  • 快速部署,开箱即用;轻松拓展 Trace Metrics Log 一体化可观测平台

  • 使用 iLogtail :

    https://ilogtail.gitbook.io/ilogtail-docs

    采集部署于物理机,虚拟机,Kubernetes等多种环境的业务日志,轻量稳定

  • 使用 Vector ,相较于 Kafka 几乎不需要运维,可以调整参数保证 Clickhouse 的稳定性;且用户也可以将 Kafka 对接进 Vector 继续实现后续的日志处理

  • 所有查询都是针对真实日志表的列查询,查询性能高,配合额外存储的 raw_log 和跳数索引完成近似日志全文检索功能
    在这里插入图片描述

支持全文检索和查看日志上下文

全文检索功能使用户能够迅速定位具体信息,而查看日志上下文的能力则为用户提供了更全面的事件背景。这对于问题排查和事件分析尤为重要,用户可以更清晰地理解问题的复杂性,快速制定解决方案,从而提高系统的稳定性和可靠性。
在这里插入图片描述
在这里插入图片描述

轻松拓展 Trace Metrics Log 一体化可观测平台——故障信息关联

相较于传统的日志监控体系,APO 不仅能够实现自动采集、处理和查询全量日志,还可以轻松扩展至涵盖 Trace、Metrics 和 Log 的一体化可观测平台。通过这一平台,不同数据类型(如指标、链路追踪、日志)可以相互关联,提供完整的可观测性视图,帮助开发者和运维人员在性能调优、故障排查、异常监控等方面更加高效。APO 以一站式的方式搭建起涵盖全栈的可观测体系,极大简化了系统的管理和监控工作。

APO 完整数据关联后,用户可以在服务详情页中的日志选项卡中选择对应时间段跳转查看故障日志信息。

在这里插入图片描述
在这里插入图片描述

如何配置 APO 仅使用日志监控模块

第一步:准备工作

要使用 Helm 安装 APO,请确保已完成以下操作:

  • 在计算机上安装 Kubernetes 服务器。有关安装 Kubernetes 的信息,请参阅链接:https://kubernetes.io/docs/setup/,安装 Kubernetes。
  • 安装 Helm 的最新稳定版本。有关安装 Helm 的信息,请参阅链接:https://helm.sh/docs/intro/install/,安装 Helm。
  • 网络策略:需要 APO-one-agent 所在集群/机器能够访问 APO-server 集群的 30044、31363、31317、30319 端口

第二步:设置 APO Helm 仓库

要设置 APO Helm 存储库,以便在计算机上下载正确的 APO Helm charts,请完成以下步骤:
使用下方命令添加apoHelm 仓库

helm repo add apo https://apo-charts.oss-cn-hangzhou.aliyuncs.com
helm repo update apo

第三步:配置 APO 仅使用日志监控模块

创建文件apo-values.yaml,并根据您的需求进行定义,并在部署阶段挂载配置。

本步骤配置 APO-server 数据模式为独立使用日志模块数据模式。

# apo-values.yaml

# agentCollectorMode 为采集数据模式
global:
  agentCollectorMode:
    - log

# APO-server 
# 持久化配置,默认为false
# 生产环境:推荐打开
# POC阶段:可以使用非持久化配置进行快速部署
# 如果为持久化配置则需要根据PVC创建PV
altinity-clickhouse-operator:
  clickhouse:
    persistence:
      enabled: true
victoria-metrics-single:
  server:
    persistentVolume:
      enabled: true
apo-backend:
  persistence: 
    enabled: true

这里提供的为 APO 部署的基础配置,如果您要进行更多配置更改,请从 APO Helm Charts 库中下载values.yaml文件:

helm show values apo/apo > values.yaml

第四步:部署 APO-server

运行以下命令,挂载配置文件并部署。

helm install apo apo/apo -n apo --create-namespace \
-f apo-values.yaml

第五步:配置 APO-one-agent 仅使用日志监控模块

创建文件apo-one-agent-values.yaml,并根据您的需求进行定义,并在部署阶段挂载配置。

本步骤配置 APO-on-agent 数据模式为独立使用日志模块数据模式。

# apo-one-agent-values.yaml

# apoServerIP 为 APO-server 所在的 ClusterIP
# agentCollectorMode 为采集数据模式
global:
  apoServerIP: x.x.x.x # FIXME
  agentCollectorMode:
    - log

这里提供的为 APO 部署的基础配置,如果您要进行更多配置更改,请从 APO Helm Charts 库中下载values.yaml文件:

helm show values apo/apo-one-agent > values.yaml

第六步:部署 APO-one-agent

运行以下命令,挂载配置文件并部署。

helm install apo-one-agent apo/apo-one-agent -n apo --create-namespace \
-f apo-one-agent-values.yaml

第七步:验证

执行下方命令查询 pod 运行状态

kubectl get po -n apo

卸载 APO-server

kubectl delete clickhouseinstallation apo -napo
helm uninstall apo -n apo
kubectl delete ns apo

卸载 APO-one-agent

helm uninstall apo-one-agent -n apo
kubectl delete ns apo

APO介绍:

国内开源首个 OpenTelemetry 结合 eBPF 的向导式可观测性产品

apo.kindlingx.com

https://github.com/CloudDetail/apo

上一篇:ELK同时采集Nginx、linux内核日志信息


下一篇:Python异常监测- 包络线-三、python的包络线实现