大家好,欢迎来到IT知识分享网。
云原生应用程序的即时可观察性
零代码、全栈、eBPF 和 Wasm
什么是 DeepFlow
DeepFlow开源项目旨在为复杂的云基础设施及云原生应用提供即时可启动性。DeepFlow基于eBPF结合实现了零侵扰(零代码)的指标、全面追踪、调用日志、函数剖析数据采集,并智能标签(SmartEncoding)技术实现了所有安置数据的全栈(高效 Full Stack)关联和访问。使用 DeepFlow,可以让云原生应用自动具有可安置性,从而免除开发者不断插桩的沉重负担,并为DevOps/SRE团队提供从代码到基础设施的监控及诊断能力。
核心特性
- 任意服务的全景图:利用eBPF零侵扰异构生产环境的全景图,包括任意语言开发的服务、未知代码的第三方服务、所有的云原生基础设施服务。内置标准协议解析能力,并提供Wasm插件机制扩展解析任意协议。每次调用应用程序和基础设施中的全栈黄金指标,零侵扰计算,快速确定界性能上限。
- 任意请求的全局追踪:基于eBPF的零侵扰全局追踪能力,支持任意语言的应用程序,并完整覆盖网关、服务网格、数据库、消息队列、DNS、阻塞等各类基础设施,不留下任何痕迹任何追踪盲点。全栈,自动采集每个跨度关联的网络性能指标和文件读写器事件。随后,遍历追踪进入零插桩的新时代。
- 任何函数的持续性能剖析:以低于1%的头部零侵扰采集生产环境进程的性能剖析数据,不同函数粒度的OnCPU、OffCPU模板图,快速定位应用函数、库函数、内核函数的全栈性能队列,并自动关联至全局追踪数据。在2.6+内核版本下,仍然可提供网络性能剖析能力,洞察代码性能瓶颈。
- 无缝集成流行的可安置性技术栈:可作为 Prometheus、OpenTelemetry、SkyWalking、Pyrscope 的存储仓库,可以提供SQL、PromQL、OTLP等数据接口作为流行技术栈的数据源。自动为所有安置信号注入统一标签,包括云资源、K8s容器资源、K8s标签/注释、CMDB中的业务属性等,消除数据孤岛。
- 存储性能10x ClickHouse:基于SmartEncoding,向所有迁移信号填充标准化的、预编码的元标签,相比ClickHouse的String或LowCard方案将饥饿存储工资降低10x。自定义标签与迁移数据分离存储,由此你可安心注入近乎无限维度和基数的标签,并且可以获得像BigTable一样的轻松查询体验。
快速上手
DeepFlow 共有三个版本:
- DeepFlow社区:DeepFlow社区版,面向开发人员
- DeepFlow Enterprise:DeepFlow 企业版,面向组织、解决团队协作的问题
- DeepFlow Cloud:DeepFlow SaaS 服务,目前测试阶段
软件架构
DeepFlow 社区版本主要由 Agent 和 Server 两个进程组成。每个 K8s 容器节点、传统服务器或云服务器中运行一个 Agent ,负责该服务器上所有应用进程的数据采集。Server 运行在一个 K8s 集群中,提供 Agent管理、标签注入、数据写入、数据查询服务。
部署
All-in-One 快速部署
#1. 简介
为了方便安装部署,我们为 deepflow-server 提供了 Kubernetes 和 Docker Compose 两种部署方式。本章我们从一个 All-in-One DeepFlow 出发,介绍如何部署一个 DeepFlow 的体验环境。
#2. 使用 Kubernetes 部署
#2.1 准备工作
#2.1.1 资源需求
- 建议部署使用的虚拟机最低规格为 4C8G
#2.1.2 部署 All-in-One K8s
使用 sealos (opens new window)快速部署一个 K8s 集群:
# install sealos curl -o /usr/bin/sealos https://deepflow-ce.oss-cn-beijing.aliyuncs.com/sealos/sealos && \ chmod +x /usr/bin/sealos # install All-in-One kubernetes cluster IP_ADDR="1.2.3.4" # FIXME: Your IP address PASSWORD="x" # FIXME: Your SSH root password sealos run labring/kubernetes:v1.24.0 labring/calico:v3.22.1 --masters $IP_ADDR -p $PASSWORD # remove kubernetes node taint kubectl taint node node-role.kubernetes.io/master- node-role.kubernetes.io/control-plane- --all
#2.1.3 安装 Helm
DeepFlow 使用 Helm (opens new window)进行部署,安装方法为:
curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 chmod 700 get_helm.sh ./get_helm.sh
也可使用 sealos 安装 helm:
sealos run labring/helm:v3.8.2
#2.2 部署 All-in-One DeepFlow
使用 Helm 安装 All-in-One DeepFlow:
Use Github and DockerHubUse Aliyun
helm repo add deepflow https://deepflowio.github.io/deepflow helm repo update deepflow # use `helm repo update` when helm < 3.7.0 cat << EOF > values-custom.yaml global: allInOneLocalStorage: true EOF helm install deepflow -n deepflow deepflow/deepflow --create-namespace \ -f values-custom.yaml
注意:
- 我们建议将 helm 的 –set 参数内容保存一个独立的 yaml 文件中,参考高级配置章节。
#2.3 访问 Grafana 页面
执行 helm 部署 DeepFlow 时输出的内容提示了获取访问 Grafana 的 URL 和密码的命令,输出示例:
NODE_PORT=$(kubectl get --namespace deepflow -o jsonpath="{.spec.ports[0].nodePort}" services deepflow-grafana) NODE_IP=$(kubectl get nodes -o jsonpath="{.items[0].status.addresses[0].address}") echo -e "Grafana URL: http://$NODE_IP:$NODE_PORT \nGrafana auth: admin:deepflow"
执行上述命令后的输出示例:
Grafana URL: http://10.1.2.3:31999 Grafana auth: admin:deepflow
#3. 使用 Docker Compose 部署
#3.1 准备工作
#3.1.1 资源需求
- 建议部署使用的虚拟机最低规格为 4C8G
#3.1.2 部署 Docker
参考 Docker (opens new window)文档部署 Docker:
curl -fsSL https://get.docker.com -o install-docker.sh sudo sh install-docker.sh
#3.1.3 部署 Docker Compose
参考 Docker Compose (opens new window)文档部署 Docker:
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker} mkdir -p $DOCKER_CONFIG/cli-plugins curl -SL https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose
#3.2 部署 All-in-One DeepFlow
设置环境变量 DOCKER_HOST_IP 为本机物理网卡 IP
unset DOCKER_HOST_IP DOCKER_HOST_IP="10.1.2.3" # FIXME: Deploy the environment machine IP
下载并安装 All-in-One DeepFlow
wget https://deepflow-ce.oss-cn-beijing.aliyuncs.com/pkg/docker-compose/stable/linux/deepflow-docker-compose.tar tar -zxf deepflow-docker-compose.tar sed -i "s|FIX_ME_ALLINONE_HOST_IP|$DOCKER_HOST_IP|g" deepflow-docker-compose/docker-compose.yaml docker compose -f deepflow-docker-compose/docker-compose.yaml up -d
#3.3 部署 DeepFlow Agent
参考 监控传统服务器 为该服务器部署 deepflow-agent。
#3.4 访问 Grafana 页面
使用 Docke Compose 部署的 DeepFlow Grafana 端口为 3000,用户密码为 admin:deepflow。
例如机器 IP 为 10.1.2.3, 则 Grafana 访问 URL 为 http://10.1.2.3:3000
#3.5 限制
- 该部署模式下 deepflow-server、clickhouse 均不支持水平扩展。
- 由于 deepflow-server 的一些能力依赖 Kubernetes,docker-compose 部署模式下无法监控云服务器,可参考 监控传统服务器 对云主机进行监控。
#4. 下载 deepflow-ctl
deepflow-ctl 是管理 DeepFlow 的一个命令行工具,建议下载至 deepflow-server 所在的 K8s Node 上,用于后续使用:
curl -o /usr/bin/deepflow-ctl https://deepflow-ce.oss-cn-beijing.aliyuncs.com/bin/ctl/stable/linux/$(arch | sed 's|x86_64|amd64|' | sed 's|aarch64|arm64|')/deepflow-ctl chmod a+x /usr/bin/deepflow-ctl
项目地址:
https://github.com/deepflowio/deepflow
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/159221.html