使用 InfluxDB 堆栈节省时间
使用 InfluxDB 堆栈节省时间和金钱。以下是一些理想的用例
使用 GitOps 和堆栈自动化部署
GitOps 是一种流行的配置和自动化部署的方式。在 GitOps 工作流程中使用 InfluxDB 堆栈来自动更新 InfluxDB OSS 或 InfluxDB Cloud 的分布式实例。
要使用 GitOps 和堆栈自动化 InfluxDB 部署,请完成以下步骤
设置 GitHub 仓库
设置 GitHub 仓库以备份您的 InfluxDB 实例。确定您希望如何在 Github 仓库中组织堆栈中的资源。例如,在特定团队或功能的文件夹下组织资源。
我们建议将一个堆栈的所有资源存储在同一个文件夹中。例如,如果您监控 Redis,请创建一个 redis
堆栈,并将您的 Redis 监控资源(Telegraf 配置、四个仪表板、一个标签和两个告警检查)放入一个 Redis 文件夹中,每个资源放在单独的文件中。然后,当您需要更新 Redis 资源时,可以轻松在一个位置找到并进行更改。
通常,我们不建议在多个堆栈中使用相同的资源。如果您的组织在多个堆栈中使用相同的资源,在删除堆栈之前,请验证该堆栈不包含另一个堆栈依赖的资源。包含存储桶的堆栈通常包含许多不同模板使用的数据。因此,我们建议将存储桶与其他堆栈分开。
将现有资源添加到 GitHub 仓库
如果您从头开始或者没有要添加到堆栈的现有资源,请跳过本节。
使用 influx export
命令快速导出资源。将所有资源保存在单个文件中,或为每个资源单独创建文件。您可以稍后随时拆分或合并它们。
例如,如果您导出三个堆栈的资源:buckets
、redis
和 mysql
,则完成后的文件夹结构可能如下所示
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 模板。堆栈允许您修改和更新模板清单,并将这些更改应用到使用该模板的任何堆栈中。
此页面是否对您有帮助?
感谢您的反馈!