DeepFlow简介
DeepFlow 是云杉网络 (opens new window)开发的一款可观测性产品,旨在为复杂的云基础设施及云原生应用提供深度可观测性。DeepFlow 基于 eBPF 实现了应用性能指标、分布式追踪、持续性能剖析等观测信号的零侵扰(Zero Code)采集,并结合智能标签(SmartEncoding)技术实现了所有观测信号的全栈(Full Stack)关联和高效存取。使用 DeepFlow,可以让云原生应用自动具有深度可观测性,从而消除开发者不断插桩的沉重负担,并为 DevOps/SRE 团队提供从代码到基础设施的监控及诊断能力。
使用sealos在单机上快速部署一个k8s 集群
下载sealos
curl -o /usr/bin/sealos https://deepflow-ce.oss-cn-beijing.aliyuncs.com/sealos/sealos
chmod+x /usr/bin/sealos
使用sealos安装运行kubernetes、calico、helm
IP_ADDR="1.2.3.4" # FIXME: 这里推荐填写内网IP可以加快速度
PASSWORD='xxxxx' # FIXME: Your SSH root password
./sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes:v1.24.0 registry.cn-shanghai.aliyuncs.com/labring/calico:v3.22.1 registry.cn-shanghai.aliyuncs.com/labring/helm:v3.8.2 --masters $IP_ADDR -p $PASSWORD
这里使用了registry.cn-shanghai.aliyuncs.com
中的国内镜像源。关于sealos安装k8s的更多内容可以参考sealos的官方教程。更多sealos命令可参考sealos官方命令说明。
在单机上k8s集群上部署deepflow
为sealos添加deepflow仓库,这里使用了国内源
helm repo add deepflow https://deepflow-ce.oss-cn-beijing.aliyuncs.com/chart/stable
helm repo update deepflow # use `helm repo update` when helm < 3.7.0
使用helm search repo deepflow
命令确认deepflow版本>=6.4.3
创建deepflow配置文件
values-custom.yaml
cat << EOF > values-custom.yaml
global:
allInOneLocalStorage: true
image:
repository: registry.cn-beijing.aliyuncs.com/deepflow-ce
EOF
使用helm部署deepflow
helm install deepflow -n deepflow deepflow/deepflow --create-namespace -f values-custom.yaml
kubectl get pods -A
查看deepflow容器运行状态kubectl get svc -n deepflow | grep deepflow
查看deepflow的grafana容器ip与端口deepflow的pods状态均为running后,使用
curl
测试使用nginx将deepflow-grafana映射到外网
安装nginx
apt install -y nginx
修改/etc/nginx/nginx.conf
文件,添加以下映射server配置,并使用nginx -s stop; nginx
重启nginx
server {
listen 80;
server_name ecs-deepflow;
location / {
proxy_pass http://10.96.2.242:80;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /api/live/ws {
proxy_pass http://10.96.2.242:80;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
这里指定了域名为ecs-deepflow
,修改DNS后可以通过http://ecs-deepflow/
访问grafana。我这里使用了switchhost,有条件的也可以使用nip进行dns解析。proxy_pass为deepflow的grafana容器ip与端口。
访问http://ecs-deepflow/
,成功进入grafana页面,默认账号密码admin/deepflow
可进入
Home > Dashoards > DeepFlow Templtes > Distributed Tracing
目录查看分布式追踪信息。