文档文档

使用 InfluxDB 堆栈节省时间

使用 InfluxDB 堆栈节省时间和金钱。以下是一些理想的用例

使用 GitOps 和堆栈自动化部署

GitOps 是一种流行的配置和自动化部署的方式。在 GitOps 工作流程中使用 InfluxDB 堆栈来自动更新 InfluxDB OSS 或 InfluxDB Cloud 的分布式实例。

要使用 GitOps 和堆栈自动化 InfluxDB 部署,请完成以下步骤

  1. 设置 GitHub 仓库
  2. 将现有资源添加到 GitHub 仓库
  3. 自动化为每个文件夹创建堆栈
  4. 设置 Github Actions 或 CircleCI

设置 GitHub 仓库

设置 GitHub 仓库以备份您的 InfluxDB 实例。确定您希望如何在 Github 仓库中组织堆栈中的资源。例如,在特定团队或功能的文件夹下组织资源。

我们建议将一个堆栈的所有资源存储在同一个文件夹中。例如,如果您监控 Redis,请创建一个 redis 堆栈,并将您的 Redis 监控资源(Telegraf 配置、四个仪表板、一个标签和两个告警检查)放入一个 Redis 文件夹中,每个资源放在单独的文件中。然后,当您需要更新 Redis 资源时,可以轻松在一个位置找到并进行更改。

通常,我们不建议在多个堆栈中使用相同的资源。如果您的组织在多个堆栈中使用相同的资源,在删除堆栈之前,请验证该堆栈不包含另一个堆栈依赖的资源。包含存储桶的堆栈通常包含许多不同模板使用的数据。因此,我们建议将存储桶与其他堆栈分开。

将现有资源添加到 GitHub 仓库

如果您从头开始或者没有要添加到堆栈的现有资源,请跳过本节。

使用 influx export 命令快速导出资源。将所有资源保存在单个文件中,或为每个资源单独创建文件。您可以稍后随时拆分或合并它们。

例如,如果您导出三个堆栈的资源:bucketsredismysql,则完成后的文件夹结构可能如下所示

influxdb-assets/
├── buckets/
│   ├── telegraf_bucket.yml
├── redis/
│   ├── redis_overview_dashboard.yml
│   ├── redis_label.yml
│   ├── redis_cpu_check.yml
│   └── redis_mem_check.yml
├── mysql/
│   ├── mysql_assets.yml
└── README.md

当您导出资源时,InfluxDB 会为该资源创建一个 meta.name。这些资源名称在您的 InfluxDB 实例中应该是唯一的。使用良好的命名约定以防止重复的 meta.names。更改 InfluxDB 资源的 meta.name 将导致堆栈孤立具有先前名称的资源,并创建具有更新名称的新资源。

将导出的资源添加到您的新 GitHub 仓库。

自动化为每个文件夹创建堆栈

要从 GitHub 仓库中的每个文件夹自动创建堆栈,请创建一个 shell 脚本来检查是否存在现有堆栈,如果未找到堆栈,则使用 influx stacks init 命令创建一个新堆栈。以下示例脚本创建一个 redis 堆栈,并自动将这些更改应用到您的实例

echo "Checking for existing redis stack..."
REDIS_STACK_ID=$(influx stacks --stack-name redis --json | jq -r '.[0].ID')
if [ "$REDIS_STACK_ID" == "null" ]; then
    echo "No stack found. Initializing our stack..."
    REDIS_STACK_ID=$(influx stacks init -n redis --json | jq -r '.ID')
fi

# Setting the base path
BASE_PATH="$(pwd)"

echo "Applying our redis stack..."
cat $BASE_PATH/redis/*.yml | \
influx apply --force true --stack-id $REDIS_STACK_ID -q

在针对 CLI 编写脚本时,InfluxDB CLI 中的 --json 标志非常有用。此标志使您可以轻松使用 jq 获取重要信息。

为仓库中的每个堆栈重复此步骤。当堆栈中的资源发生更改时,重新运行此脚本以将更新的资源应用到您的 InfluxDB 实例。重新应用具有更新资源的堆栈不会添加、删除或复制资源。

设置 Github Actions 或 CircleCI

在您拥有一个脚本来应用对本地实例所做的更改后,根据需要自动化部署到其他环境。使用 InfluxDB CLI 维护多个 配置配置文件 以轻松切换配置文件并针对其他 InfluxDB 实例发出命令。要将相同的脚本应用到不同的 InfluxDB 实例,请使用 influx config set 命令更改您的活动配置配置文件。或使用 -c, --active-config 标志动态设置所需的配置文件。

在针对共享环境运行自动化脚本之前,我们建议手动运行脚本中的步骤。

验证您的部署自动化软件是否允许您运行自定义脚本,然后在另一个环境中设置您在本地构建的自定义脚本。例如,这是一个自动执行部署的自定义 Github Action

name: deploy-influxdb-resources

on:
  push:
    branches: [ master ]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
      with:
        ref: ${{ github.ref }}
    - name: Deploys repo to cloud
      env:
        # These secrets can be configured in the Github repo to connect to 
        # your InfluxDB instance.
        INFLUX_TOKEN: ${{ secrets.INFLUX_TOKEN }}
        INFLUX_ORG: ${{ secrets.INFLUX_ORG }}
        INFLUX_URL: ${{ secrets.INFLUX_URL }}
        GITHUB_REPO: ${{ github.repository }}
        GITHUB_BRANCH: ${{ github.ref }}  
      run: |
        cd /tmp
        wget https://download.influxdata.com/platform/nightlies/influx_nightly_linux_amd64.tar.gz
        tar xvfz influx_nightly_linux_amd64.tar.gz
        sudo cp influx_nightly_linux_amd64/influx /usr/local/bin/
        cd $GITHUB_WORKSPACE
        # This runs the script to set up your stacks
        chmod +x ./setup.sh
        ./setup.sh prod

有关在您的项目中使用 GitHub Actions 的更多信息,请查看完整的 Github Actions 文档

从源代码控制的模板应用更新

您可以使用来自许多不同来源的各种 InfluxDB 模板,包括 Community Templates 或自构建的自定义模板。随着模板随时间更新,堆栈使您可以优雅地应用更新,而不会创建重复的资源。

跨多个 InfluxDB 实例应用模板更新

在许多情况下,您可能运行着多个 InfluxDB 实例,并希望将相同的模板应用于每个单独的实例。使用堆栈,您可以在一个实例上更改堆栈,将堆栈导出为模板,然后将更改应用于您的其他 InfluxDB 实例。

开发模板

InfluxDB 堆栈有助于开发和维护 InfluxDB 模板。堆栈允许您修改和更新模板清单,并将这些更改应用到使用该模板的任何堆栈中。


此页面是否对您有帮助?

感谢您的反馈!


Flux 的未来

Flux 即将进入维护模式。您可以继续像当前一样使用它,而无需对您的代码进行任何更改。

阅读更多

现已全面上市

InfluxDB 3 Core 和 Enterprise

快速启动。更快扩展。

获取更新

InfluxDB 3 Core 是一个开源、高速、最近数据引擎,可实时收集和处理数据,并将其持久保存到本地磁盘或对象存储。InfluxDB 3 Enterprise 以 Core 的基础为构建,增加了高可用性、读取副本、增强的安全性以及数据压缩,从而实现更快的查询和优化的存储。InfluxDB 3 Enterprise 的免费层可供非商业家庭或业余爱好者使用。

有关更多信息,请查看