前提是需要你已经有一个运行的 Grafana 实例。
使用 Helm 安装 DeepFlow
创建 MySQL 数据库
这里使用已有的 MySQL,首先需要创建两个数据库。
- deepflow
- grafana
修改 Helm 参数
DeepFlow 官方提供 Helm 安装仓库,而且有国内和国外版,这点好评。
helm repo add deepflow https://deepflow-ce.oss-cn-beijing.aliyuncs.com/chart/stable
helm repo update deepflow
# 获取 values.yaml 文件
helm show values deepflow/deepflow > values.yaml
里面有一些需要修改的配置
global:
image:
# 修改镜像仓库为北京
repository: registry.cn-beijing.aliyuncs.com/deepflow-ce
......
# 修改要使用的 StorageClass
storageClass: "longhorn"
......
# 我这里使用了集群已有的 MySQL,如果使用自带的数据库可以不用改,默认是 false
externalMySQL:
enabled: true
ip: mysql.databases.svc.cluster.local
port: 3306
username: root
password: xxxxxx
......
# 改成 NodePort,因为要从外部的 Grafana 访问。
# 如果 Grafana 也是一个集群里的那用 ClusterIP 就行,不用改。
server:
service:
type: NodePort
......
# Grafana 访问 deepflow-app service app 端口的 NodePort。
# 如果 Grafana 也是一个集群里的那用 ClusterIP 就行,不用改。
app:
service:
type: NodePort
......
# clickhouse 用的是自带的
clickhouse:
storageConfig:
persistence:
# 这里改一下储存空间,默认会申请 300GB
# clickhouse 非常吃存储,空间分配越大越好
# 如果你的磁盘空间多,或者使用 nfs-client 之类的 SC 也可以不用改
- name: clickhouse-path
size: 20Gi
......
- name: clickhouse-storage-path
size: 20Gi
service:
# 改成 NodePort,因为要从外部的 Grafana 访问
# 如果 Grafana 也是一个集群里的那用 ClusterIP 就行,不用改。
type: NodePort
......
# 关闭自带的 MySQL
mysql:
enabled: false
......
# 关闭自带的 Grafana
grafana:
enabled: false
修改完成后开始安装
helm install deepflow -n deepflow deepflow/deepflow --create-namespace -f values.yaml
等待就绪的时候先安装一下 deepflow-cli
# 如果是其他架构的系统自己改一下
curl -o /usr/bin/deepflow-ctl https://deepflow-ce.oss-cn-beijing.aliyuncs.com/bin/ctl/stable/linux/amd64/deepflow-ctl
chmod a+x /usr/bin/deepflow-ctl
配置 Grafana
我这里使用 9.3.0 版本,官方推荐使用 9.0 以上的版本,最低是 8.0。
因为 DeepFlow 的插件目前还没有通过认证,所以无法直接使用 grafana-cli 安装插件,只能手动安装。
修改 Grafana 配置文件,允许使用 DeepFlow 的插件。
# 直接安装的在 /etc/grafana/grafana.ini
# 有安装其他插件的自行在后面增加
[plugins]
allow_loading_unsigned_plugins = deepflow-querier-datasource,deepflow-apptracing-panel,deepflow-topo-panel,deepflowio-tracing-panel,deepflowio-deepflow-datasource,deepflowio-topo-panel
获取插件包并解压
cd /var/lib/grafana/plugins/
wget https://deepflow-ce.oss-cn-beijing.aliyuncs.com/pkg/grafana-plugin/stable/deepflow-gui-grafana.tar.gz
tar -zxvf deepflow-gui-grafana.tar.gz
rm deepflow-gui-grafana.tar.gz
这里我们需要再安装一个 ClickHouse 的插件,如果之前就装了可以跳过。
grafana-cli plugins install grafana-clickhouse-datasource
重启 Grafana 服务
systemctl restart grafana-server
systemctl status grafana-server
配置 Grafana Data Source
配置 DeepFlow
打开 Grafana 控制台,切换到 Data Source 面板,搜索刚刚添加的 DeepFlow 数据源。
首先查看一下 DeepFlow 的数据源地址,填入 Request Url
里。
echo "http://$(kubectl get nodes -o jsonpath="{.items[0].status.addresses[0].address}"):$(kubectl get --namespace deepflow -o jsonpath="{.spec.ports[0].nodePort}" services deepflow-server)"
然后查看一下 app 的数据源地址,填入 Tracing Url
里。
echo "http://$(kubectl get nodes -o jsonpath="{.items[0].status.addresses[0].address}"):$(kubectl get --namespace deepflow -o jsonpath="{.spec.ports[0].nodePort}" services deepflow-app)"

都填完了点击 Save & test 测试一下,没问题就可以切换到 Dashboard 标签,导入全部面板。

配置 ClickHouse
执行命令查看 ClickHouse 暴露的端口,需要使用 9000 端口采集数据。
echo "$(kubectl get nodes -o jsonpath="{.items[0].status.addresses[0].address}") $(kubectl get --namespace deepflow -o jsonpath="{.spec.ports[1].nodePort}" services deepflow-clickhouse)"
然后在 Grafana 里添加一个 ClickHouse 数据源,名称设置为 DeepFlow ClickHouse
,填入获取的 IP 和端口。

配置 MySQL
在 Grafana 里添加一个 MySQL 数据源,名称设置为 DeepFlow MySQL
,填入数据库的 IP 和 deepflow 数据库,用户名和密码自行设置。

配置 Prometheus
Prometheus 跟 deepflow-server 在一起,链接为 Request Url
+ /prom
。

配置 Tempo
Tempo 也跟 deepflow-server 一起。

所有数据源都接入完成,稍等片刻就会有数据产生。
