DeepFlow 接入已有 Grafana

发布于 2024-12-19  845 次阅读


前提是需要你已经有一个运行的 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 一起。

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


且乐生前一杯酒