From 14eee406325824cc1b3dbc62f2f4ca8f3f877440 Mon Sep 17 00:00:00 2001 From: meelahme Date: Fri, 22 Aug 2025 12:45:53 -0700 Subject: [PATCH 01/49] changing file name --- .../cloud-dedicated/admin/users/_index.md | 90 ------------------- .../cloud-dedicated/admin/users/admin-ui.md | 19 ++++ 2 files changed, 19 insertions(+), 90 deletions(-) delete mode 100644 content/influxdb3/cloud-dedicated/admin/users/_index.md create mode 100644 content/influxdb3/cloud-dedicated/admin/users/admin-ui.md diff --git a/content/influxdb3/cloud-dedicated/admin/users/_index.md b/content/influxdb3/cloud-dedicated/admin/users/_index.md deleted file mode 100644 index 2f29c4ec1..000000000 --- a/content/influxdb3/cloud-dedicated/admin/users/_index.md +++ /dev/null @@ -1,90 +0,0 @@ ---- -title: Manage users -seotitle: Manage users and permissions in InfluxDB Cloud Dedicated -description: > - Manage users and access to resources in your InfluxDB Cloud Dedicated cluster. - Assign user groups for role-based access control and security. -menu: - influxdb3_cloud_dedicated: - parent: Administer InfluxDB Cloud -weight: 101 -influxdb3/cloud-dedicated/tags: [user groups] -related: - - /influxdb3/cloud-dedicated/reference/internals/security/ - - /influxdb3/cloud-dedicated/admin/tokens/ ---- - -Manage users and access to resources in your {{% product-name %}} cluster. - -By assigning users to different groups based on the level of access they need, -you can minimize unnecessary access and reduce the risk of inadvertent -actions. -User groups associate access privileges with user attributes--an important part of the -Attribute-Based Access Control (ABAC) security model which grants access based on -user attributes, resource types, and environment context. - -- [Available user groups](#available-user-groups) -- [Manage users](#manage-users) - -## Available user groups - -In {{% product-name %}}, users have "management" responsibilities, such as creating and -deleting [databases](/influxdb3/cloud-dedicated/admin/databases/), [viewing resource information](/influxdb3/cloud-dedicated/admin/monitor-your-cluster/), and provisioning -[database tokens](/influxdb3/cloud-dedicated/admin/tokens/database/) for reading and writing data. - -A user can belong to the following groups, each with predefined privileges: - -- **Admin**: Read and write permissions on all resources. -- **Member**: Read permission on certain resources and create permission for - database tokens; members can't delete or create databases or management tokens. -- **Auditor**: Read permission on all resources; auditors can't modify resources. - -> [!Note] -> #### Existing users are Admin by default -> -> With the release of user groups for {{% product-name %}}, all existing users -> in your account are initially assigned to the Admin group, retaining full -> access to resources in your cluster. - -## Manage users - -- [Assign a user to a different group](#assign-a-user-to-a-different-group) -- [Invite a user to your account](#invite-a-user-to-your-account) - -### Assign a user to a different group - -To assign existing users in your account to different -groups, [contact InfluxData support](https://support.influxdata.com/s/login/) -and provide the list of users and the desired [user groups](#available-user-groups) -for each. - -### Invite a user to your account - -For new users that you want to add to your account, the InfluxData Support Team -configures invitations with the attributes and groups that you specify. - -1. [Contact InfluxData support](https://support.influxdata.com/s/login/) - to invite a user to your account. - In your request, provide the user details, including email address, desired - [user groups](#available-user-groups), and other attributes for the user. -2. InfluxData support creates the user account and emails the user an invitation - that includes following: - - - A login URL to authenticate access to the cluster - - The {{% product-name %}} **account ID** - - The {{% product-name %}} **cluster ID** - - The {{% product-name %}} **cluster URL** - - A password reset email for setting the login password - -3. The user accepts the invitation to your account - -With a valid password, the user can access cluster resources by interacting with the -[`influxctl`](/influxdb3/cloud-dedicated/reference/influxctl/) command line tool. -The assigned user groups determine the user's access to resources. - -> [!Note] -> #### Use database tokens to authorize data reads and writes -> -> In {{% product-name %}}, user groups control access for managing cluster resources. -> [Database tokens](/influxdb3/cloud-dedicated/admin/tokens/database/) control access -> for reading and writing data in cluster databases. diff --git a/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md b/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md new file mode 100644 index 000000000..69540e6d8 --- /dev/null +++ b/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md @@ -0,0 +1,19 @@ +--- +title: Manage users in the Admin UI +seotitle: Manage users in InfluxDB Cloud Dedicated Admin UI +description: > + Use the InfluxDB Cloud Dedicated Admin UI to view users, send invitations, assign roles, + and manage user access to your cluster. Learn how to invite new users, revoke invitations, + and understand role-based permissions. +menu: + influxdb3_cloud_dedicated: + parent: Manage users + name: Admin UI +weight: 201 +influxdb3/cloud-dedicated/tags: [users, admin ui, invitations, roles] +related: + - /influxdb3/cloud-dedicated/admin/users/ + - /influxdb3/cloud-dedicated/reference/internals/security/ + - /influxdb3/cloud-dedicated/admin/tokens/ +--- + From db8f70a26bf2afb542afbd345d70fd6d953c54d9 Mon Sep 17 00:00:00 2001 From: meelahme Date: Fri, 22 Aug 2025 12:50:55 -0700 Subject: [PATCH 02/49] adding intro and TOC --- content/influxdb3/cloud-dedicated/admin/users/admin-ui.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md b/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md index 69540e6d8..36ea31fba 100644 --- a/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md +++ b/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md @@ -17,3 +17,11 @@ related: - /influxdb3/cloud-dedicated/admin/tokens/ --- +Use the {{% product-name %}} Admin UI to manage users and control access to your cluster through a web-based interface. The Admin UI provides self-service user management capabilities, allowing administrators to invite new users, assign roles, and manage invitations without contacting support. + +- [Access the Users page](#access-the-users-page) +- [View existing users](#view-existing-users) +- [Invite a user](#invite-a-user) +- [Manage invitations](#manage-invitations) +- [User roles and permissions](#user-roles-and-permissions) +- [Limitations](#limitations) \ No newline at end of file From 8993037547b70f428d49daa98d2a6655a7dbf82b Mon Sep 17 00:00:00 2001 From: meelahme Date: Fri, 22 Aug 2025 12:52:39 -0700 Subject: [PATCH 03/49] adding content --- .../cloud-dedicated/admin/users/admin-ui.md | 112 +++++++++++++++++- 1 file changed, 111 insertions(+), 1 deletion(-) diff --git a/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md b/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md index 36ea31fba..3e43f4943 100644 --- a/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md +++ b/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md @@ -24,4 +24,114 @@ Use the {{% product-name %}} Admin UI to manage users and control access to your - [Invite a user](#invite-a-user) - [Manage invitations](#manage-invitations) - [User roles and permissions](#user-roles-and-permissions) -- [Limitations](#limitations) \ No newline at end of file +- [Limitations](#limitations) + +## Access the Users page + +1. Access the {{% product-name %}} Admin UI at [console.influxdata.com](https://console.influxdata.com). + If you don't have login credentials, [contact InfluxData support](https://support.influxdata.com). +2. Log in using the credentials provided by InfluxData. +3. From the Account Management portal, select your cluster. +4. In the cluster resource management view, click **Users** in the navigation. + +The Users page displays your account information and a table of existing users and invitations. + +## View existing users + +The Users page shows a comprehensive view of all users and pending invitations for your account: + +- **Invite ID**: Unique identifier for each user invitation +- **Email**: Email address of the invited or existing user +- **Invited At**: Date and time when the invitation was sent +- **Status**: Current status of the invitation + - `accepted`: User has accepted the invitation and has access to the cluster + - `expired`: Invitation has expired and is no longer valid + - `revoked`: Invitation has been manually revoked by an administrator + +Use the search functionality to quickly find specific users by email address or invitation details. + +## Invite a user + +Only users with the **Admin** role can send new invitations. + +1. On the Users page, click **{{< icon "plus" >}} Invite Users**. +2. In the **Invite User** dialog: + - Enter the **email address** of the user you want to invite + - Select the appropriate **role** from the dropdown menu: + - **Admin**: Full read and write permissions on all resources + - **Member**: Read permission on certain resources and create permission for database tokens + - **Auditor**: Read permission on all resources without modification capabilities +3. Click **Send Invitation**. + +An invitation email with an activation link is sent to the specified email address. The user must accept the invitation to gain access to your {{% product-name %}} cluster. + +{{% note %}} +#### Invitation expiration +Invitations expire after a set period. If an invitation expires, you'll need to send a new invitation to the user. +{{% /note %}} + +## Manage invitations + +### Revoke an invitation + +You can revoke pending invitations that haven't been accepted yet: + +1. In the Users table, locate the invitation you want to revoke. +2. Click the **Actions** menu (โ‹ฎ) for that invitation. +3. Select **Revoke Invitation**. +4. Confirm the revocation when prompted. + +Revoked invitations can no longer be used to access your cluster. The invitation status will change to `revoked`. + +### View invitation details + +Click on any invitation in the table to view additional details, including: +- Complete invitation ID +- Exact timestamp of invitation creation +- Current status and any status changes + +## User roles and permissions + +{{% product-name %}} uses role-based access control to manage user permissions: + +### Admin +- Full read and write permissions on all cluster resources +- Can create and delete databases, tables, and tokens +- Can send and revoke user invitations +- Can manage all aspects of cluster administration + +### Member +- Read permission on databases and certain cluster resources +- Can create database tokens for data access +- Cannot delete or create databases +- Cannot manage other users or send invitations + +### Auditor +- Read-only access to all cluster resources +- Can view databases, tables, and configuration +- Can see user invitations but cannot create or revoke them +- Cannot modify any resources or create tokens + +{{% note %}} +#### Role assignment +User roles are assigned when sending invitations and cannot currently be changed through the Admin UI. To modify a user's role, [contact InfluxData support](https://support.influxdata.com). +{{% /note %}} + +## Limitations + +The current Admin UI user management feature has the following limitations: + +- **Role modification**: User roles cannot be changed after invitation acceptance. Contact support to modify roles. +- **User deletion**: Users cannot be removed from accounts through the UI. Contact support for user removal. +- **Post-acceptance management**: After a user accepts an invitation, their role details are not visible in the UI. + +### Alternative management methods + +For operations not available in the Admin UI: + +- **influxctl CLI**: Use the [`influxctl user list`](/influxdb3/cloud-dedicated/reference/cli/influxctl/user/list/) command to view comprehensive user information +- **Support requests**: Contact [InfluxData support](https://support.influxdata.com) for role changes, user removal, or other advanced user management tasks + +--- + +The Admin UI provides essential self-service capabilities for day-to-day user management while InfluxData continues to expand functionality in future releases. \ No newline at end of file From 8b36a3ca67dcf7ab18c50bc37b5f42c12e0caa56 Mon Sep 17 00:00:00 2001 From: meelahme Date: Fri, 29 Aug 2025 10:31:45 -0700 Subject: [PATCH 04/49] revising index.md and updating content --- content/influxdb3/cloud-dedicated/admin/users/_index.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 content/influxdb3/cloud-dedicated/admin/users/_index.md diff --git a/content/influxdb3/cloud-dedicated/admin/users/_index.md b/content/influxdb3/cloud-dedicated/admin/users/_index.md new file mode 100644 index 000000000..e69de29bb From 7e4e2e9b53202676da6a5709bf755eb4796c9762 Mon Sep 17 00:00:00 2001 From: meelahme Date: Fri, 29 Aug 2025 12:30:23 -0700 Subject: [PATCH 05/49] revising user management section in index.md --- .../cloud-dedicated/admin/users/_index.md | 71 +++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/content/influxdb3/cloud-dedicated/admin/users/_index.md b/content/influxdb3/cloud-dedicated/admin/users/_index.md index e69de29bb..e63ca9ee4 100644 --- a/content/influxdb3/cloud-dedicated/admin/users/_index.md +++ b/content/influxdb3/cloud-dedicated/admin/users/_index.md @@ -0,0 +1,71 @@ +--- +title: Manage users +seotitle: Manage users and permissions in InfluxDB Cloud Dedicated +description: > + Manage users and access to resources in your InfluxDB Cloud Dedicated cluster. + Use the Admin UI for self-service user management or contact support for advanced operations +menu: + influxdb3_cloud_dedicated: + parent: Administer InfluxDB Cloud +weight: 101 +influxdb3/cloud-dedicated/tags: [user groups] +related: + - /influxdb3/cloud-dedicated/reference/internals/security/ + - /influxdb3/cloud-dedicated/admin/tokens/ +--- + +Manage users and access to resources in your {{% product-name %}} cluster. + +By assigning users to different groups based on the level of access they need, +you can minimize unnecessary access and reduce the risk of inadvertent +actions. +User groups associate access privileges with user attributes--an important part of the +Attribute-Based Access Control (ABAC) security model which grants access based on +user attributes, resource types, and environment context. + +- [Available user groups](#available-user-groups) +- [Manage users](#manage-users) + +## Available user groups + +In {{% product-name %}}, users have "management" responsibilities, such as creating and +deleting [databases](/influxdb3/cloud-dedicated/admin/databases/), [viewing resource information](/influxdb3/cloud-dedicated/admin/monitor-your-cluster/), and provisioning +[database tokens](/influxdb3/cloud-dedicated/admin/tokens/database/) for reading and writing data. + +A user can belong to the following groups, each with predefined privileges: + +- **Admin**: Read and write permissions on all resources. +- **Member**: Read permission on certain resources and create permission for + database tokens; members can't delete or create databases or management tokens. +- **Auditor**: Read permission on all resources; auditors can't modify resources. + +> [!Note] +> #### Existing users are Admin by default +> +> With the release of user groups for {{% product-name %}}, all existing users +> in your account are initially assigned to the Admin group, retaining full +> access to resources in your cluster. + +## User management methods + +Choose the appropriate method for your user managemnt needs: + +### Admin UI (Self-service) +Use the Admin UI for user management tasks (available to Admin users only): + +- **View users and invitations** - View existing users, invite status, invite ID, and invitation date +- **Invite new users** - Send invitations with role assignment (Admin, Member, Auditor) +- **Revoke pending invitations** - Cancel invitations that haven't been accepted + +> [!Note] Auditor role users can view the invite list but cannot send or revoke invitations. Member role users cannot access the invite list. + +For detailed instructions, [Manage users in the Admin UI](/influxdb3/cloud-dedicated/admin/users/admin-ui/). + +### Contact support (Advanced operations) +For operations not available in the Admin UI: + +- View or change user roles after invitation acceptance +- Remove accepted users from your account +- Advanced user configurations + +{{< children >}} \ No newline at end of file From fad18667828c82c2e564516cdeb04d9f97bffaef Mon Sep 17 00:00:00 2001 From: meelahme Date: Fri, 29 Aug 2025 12:48:35 -0700 Subject: [PATCH 06/49] docs: updates to admin-ui.md content --- .../cloud-dedicated/admin/users/admin-ui.md | 22 ++++++------------- 1 file changed, 7 insertions(+), 15 deletions(-) diff --git a/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md b/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md index 3e43f4943..2e019c16e 100644 --- a/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md +++ b/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md @@ -117,21 +117,13 @@ Click on any invitation in the table to view additional details, including: User roles are assigned when sending invitations and cannot currently be changed through the Admin UI. To modify a user's role, [contact InfluxData support](https://support.influxdata.com). {{% /note %}} -## Limitations +## Current limitations -The current Admin UI user management feature has the following limitations: +Based on the current Admin UI user management feature: -- **Role modification**: User roles cannot be changed after invitation acceptance. Contact support to modify roles. -- **User deletion**: Users cannot be removed from accounts through the UI. Contact support for user removal. -- **Post-acceptance management**: After a user accepts an invitation, their role details are not visible in the UI. +- **Post-acceptance role visibility**: Users cannot see or manage what roles a user has after they have accepted the invite +- **Role modification**: User roles cannot be changed through the Admin UI after invitation acceptance +- **User removal**: Users cannot delete accepted users from accounts through the UI +- **Historical records**: Invitation records remain even after user removal; use `influxctl` list command to confirm current users -### Alternative management methods - -For operations not available in the Admin UI: - -- **influxctl CLI**: Use the [`influxctl user list`](/influxdb3/cloud-dedicated/reference/cli/influxctl/user/list/) command to view comprehensive user information -- **Support requests**: Contact [InfluxData support](https://support.influxdata.com) for role changes, user removal, or other advanced user management tasks - ---- - -The Admin UI provides essential self-service capabilities for day-to-day user management while InfluxData continues to expand functionality in future releases. \ No newline at end of file +For operations not available in the Admin UI, contact [InfluxData support](https://support.influxdata.com) for role changes, user removal, or other advanced user management tasks. From dde285411b330f6f98a7701dd114208498afe63e Mon Sep 17 00:00:00 2001 From: Jameelah Mercer <36314199+MeelahMe@users.noreply.github.com> Date: Fri, 29 Aug 2025 12:52:09 -0700 Subject: [PATCH 07/49] Update content/influxdb3/cloud-dedicated/admin/users/_index.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- content/influxdb3/cloud-dedicated/admin/users/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/influxdb3/cloud-dedicated/admin/users/_index.md b/content/influxdb3/cloud-dedicated/admin/users/_index.md index e63ca9ee4..d0748a235 100644 --- a/content/influxdb3/cloud-dedicated/admin/users/_index.md +++ b/content/influxdb3/cloud-dedicated/admin/users/_index.md @@ -48,7 +48,7 @@ A user can belong to the following groups, each with predefined privileges: ## User management methods -Choose the appropriate method for your user managemnt needs: +Choose the appropriate method for your user management needs: ### Admin UI (Self-service) Use the Admin UI for user management tasks (available to Admin users only): From 526a098dee531d61ccd75f80705c9cb4d4c50899 Mon Sep 17 00:00:00 2001 From: Jameelah Mercer <36314199+MeelahMe@users.noreply.github.com> Date: Fri, 29 Aug 2025 12:52:20 -0700 Subject: [PATCH 08/49] Update content/influxdb3/cloud-dedicated/admin/users/admin-ui.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- content/influxdb3/cloud-dedicated/admin/users/admin-ui.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md b/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md index 2e019c16e..82160d708 100644 --- a/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md +++ b/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md @@ -119,11 +119,6 @@ User roles are assigned when sending invitations and cannot currently be changed ## Current limitations -Based on the current Admin UI user management feature: - -- **Post-acceptance role visibility**: Users cannot see or manage what roles a user has after they have accepted the invite -- **Role modification**: User roles cannot be changed through the Admin UI after invitation acceptance -- **User removal**: Users cannot delete accepted users from accounts through the UI -- **Historical records**: Invitation records remain even after user removal; use `influxctl` list command to confirm current users +- **Historical records**: Invitation records remain even after user removal; use the [`influxctl users list`](https://docs.influxdata.com/influxdb/cloud-dedicated/reference/influxctl/#list-users) command to confirm current users For operations not available in the Admin UI, contact [InfluxData support](https://support.influxdata.com) for role changes, user removal, or other advanced user management tasks. From 0c62fd2aedc31e3627fbefb6294e0cd851a5d124 Mon Sep 17 00:00:00 2001 From: meelahme Date: Wed, 3 Sep 2025 16:35:40 -0700 Subject: [PATCH 09/49] fix: correct influxctl CLI reference URL in user management docs --- content/influxdb3/cloud-dedicated/admin/users/admin-ui.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md b/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md index 82160d708..8921d7627 100644 --- a/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md +++ b/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md @@ -119,6 +119,6 @@ User roles are assigned when sending invitations and cannot currently be changed ## Current limitations -- **Historical records**: Invitation records remain even after user removal; use the [`influxctl users list`](https://docs.influxdata.com/influxdb/cloud-dedicated/reference/influxctl/#list-users) command to confirm current users +- **Historical records**: Invitation records remain even after user removal; use the [`influxctl users list`](https://docs.influxdata.com/influxdb3/cloud-dedicated/reference/influxctl/#list-users) command to confirm current users For operations not available in the Admin UI, contact [InfluxData support](https://support.influxdata.com) for role changes, user removal, or other advanced user management tasks. From 29eb2ce0623aaab44e17bd5a5794dd0606fab054 Mon Sep 17 00:00:00 2001 From: meelahme Date: Wed, 3 Sep 2025 17:09:37 -0700 Subject: [PATCH 10/49] fix: update to TOC --- content/influxdb3/cloud-dedicated/admin/users/admin-ui.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md b/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md index 8921d7627..154ea2ef9 100644 --- a/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md +++ b/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md @@ -117,7 +117,7 @@ Click on any invitation in the table to view additional details, including: User roles are assigned when sending invitations and cannot currently be changed through the Admin UI. To modify a user's role, [contact InfluxData support](https://support.influxdata.com). {{% /note %}} -## Current limitations +## Limitations - **Historical records**: Invitation records remain even after user removal; use the [`influxctl users list`](https://docs.influxdata.com/influxdb3/cloud-dedicated/reference/influxctl/#list-users) command to confirm current users From df51d8c9429a49ae916de9acfc30fe8f302b293a Mon Sep 17 00:00:00 2001 From: Jameelah Mercer <36314199+MeelahMe@users.noreply.github.com> Date: Fri, 5 Sep 2025 14:12:18 -0700 Subject: [PATCH 11/49] Update content/influxdb3/cloud-dedicated/admin/users/_index.md Co-authored-by: Jason Stirnaman --- content/influxdb3/cloud-dedicated/admin/users/_index.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/content/influxdb3/cloud-dedicated/admin/users/_index.md b/content/influxdb3/cloud-dedicated/admin/users/_index.md index d0748a235..fd20ba3da 100644 --- a/content/influxdb3/cloud-dedicated/admin/users/_index.md +++ b/content/influxdb3/cloud-dedicated/admin/users/_index.md @@ -57,7 +57,10 @@ Use the Admin UI for user management tasks (available to Admin users only): - **Invite new users** - Send invitations with role assignment (Admin, Member, Auditor) - **Revoke pending invitations** - Cancel invitations that haven't been accepted -> [!Note] Auditor role users can view the invite list but cannot send or revoke invitations. Member role users cannot access the invite list. +> [!Note] +> #### Role permissions +> +> Auditor role users can view the invite list but cannot send or revoke invitations. Member role users cannot access the invite list. For detailed instructions, [Manage users in the Admin UI](/influxdb3/cloud-dedicated/admin/users/admin-ui/). From 8e2e2eca2c50b81eb1be84b636cae09b5fa57812 Mon Sep 17 00:00:00 2001 From: Jameelah Mercer <36314199+MeelahMe@users.noreply.github.com> Date: Fri, 5 Sep 2025 14:12:25 -0700 Subject: [PATCH 12/49] Update content/influxdb3/cloud-dedicated/admin/users/_index.md Co-authored-by: Jason Stirnaman --- content/influxdb3/cloud-dedicated/admin/users/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/influxdb3/cloud-dedicated/admin/users/_index.md b/content/influxdb3/cloud-dedicated/admin/users/_index.md index fd20ba3da..d5209a3d2 100644 --- a/content/influxdb3/cloud-dedicated/admin/users/_index.md +++ b/content/influxdb3/cloud-dedicated/admin/users/_index.md @@ -62,7 +62,7 @@ Use the Admin UI for user management tasks (available to Admin users only): > > Auditor role users can view the invite list but cannot send or revoke invitations. Member role users cannot access the invite list. -For detailed instructions, [Manage users in the Admin UI](/influxdb3/cloud-dedicated/admin/users/admin-ui/). +For more information, see [Manage users in the Admin UI](/influxdb3/cloud-dedicated/admin/users/admin-ui/). ### Contact support (Advanced operations) For operations not available in the Admin UI: From 01bd7b29b7da538c024c88dd36d47dcb1651300c Mon Sep 17 00:00:00 2001 From: Jameelah Mercer <36314199+MeelahMe@users.noreply.github.com> Date: Fri, 5 Sep 2025 14:12:32 -0700 Subject: [PATCH 13/49] Update content/influxdb3/cloud-dedicated/admin/users/admin-ui.md Co-authored-by: Jason Stirnaman --- content/influxdb3/cloud-dedicated/admin/users/admin-ui.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md b/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md index 154ea2ef9..74f31f160 100644 --- a/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md +++ b/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md @@ -92,7 +92,7 @@ Click on any invitation in the table to view additional details, including: ## User roles and permissions -{{% product-name %}} uses role-based access control to manage user permissions: +{{% product-name %}} uses role-based access control to manage user permissions for the following roles: ### Admin - Full read and write permissions on all cluster resources From 48f1e40b5aced4003818f6e5c87cff679905b666 Mon Sep 17 00:00:00 2001 From: Jameelah Mercer <36314199+MeelahMe@users.noreply.github.com> Date: Fri, 5 Sep 2025 14:12:38 -0700 Subject: [PATCH 14/49] Update content/influxdb3/cloud-dedicated/admin/users/admin-ui.md Co-authored-by: Jason Stirnaman --- .../influxdb3/cloud-dedicated/admin/users/admin-ui.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md b/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md index 74f31f160..56fb32abc 100644 --- a/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md +++ b/content/influxdb3/cloud-dedicated/admin/users/admin-ui.md @@ -112,10 +112,11 @@ Click on any invitation in the table to view additional details, including: - Can see user invitations but cannot create or revoke them - Cannot modify any resources or create tokens -{{% note %}} -#### Role assignment -User roles are assigned when sending invitations and cannot currently be changed through the Admin UI. To modify a user's role, [contact InfluxData support](https://support.influxdata.com). -{{% /note %}} +> [!Note] +> #### Role assignment +> +> User roles are assigned when sending invitations and cannot currently be changed through the Admin UI. +> To modify a user's role, [contact InfluxData support](https://support.influxdata.com). ## Limitations From c498579c5a1f74070370199541c33a76eb3f63fb Mon Sep 17 00:00:00 2001 From: Jameelah Mercer <36314199+MeelahMe@users.noreply.github.com> Date: Fri, 12 Sep 2025 12:47:36 -0700 Subject: [PATCH 15/49] Adding an extra period at the end for a test Clarified permissions for Auditor and Member roles in user management. --- content/influxdb3/cloud-dedicated/admin/users/_index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/influxdb3/cloud-dedicated/admin/users/_index.md b/content/influxdb3/cloud-dedicated/admin/users/_index.md index d5209a3d2..54082e410 100644 --- a/content/influxdb3/cloud-dedicated/admin/users/_index.md +++ b/content/influxdb3/cloud-dedicated/admin/users/_index.md @@ -60,7 +60,7 @@ Use the Admin UI for user management tasks (available to Admin users only): > [!Note] > #### Role permissions > -> Auditor role users can view the invite list but cannot send or revoke invitations. Member role users cannot access the invite list. +> Auditor role users can view the invite list but cannot send or revoke invitations. Member role users cannot access the invite list... For more information, see [Manage users in the Admin UI](/influxdb3/cloud-dedicated/admin/users/admin-ui/). @@ -71,4 +71,4 @@ For operations not available in the Admin UI: - Remove accepted users from your account - Advanced user configurations -{{< children >}} \ No newline at end of file +{{< children >}} From 72bea7e810bb778ae305ff1f6fefa783f0f31c2b Mon Sep 17 00:00:00 2001 From: Jameelah Mercer <36314199+MeelahMe@users.noreply.github.com> Date: Fri, 12 Sep 2025 13:21:43 -0700 Subject: [PATCH 16/49] Fix formatting of role permissions note --- content/influxdb3/cloud-dedicated/admin/users/_index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/influxdb3/cloud-dedicated/admin/users/_index.md b/content/influxdb3/cloud-dedicated/admin/users/_index.md index 54082e410..74dfa2bfe 100644 --- a/content/influxdb3/cloud-dedicated/admin/users/_index.md +++ b/content/influxdb3/cloud-dedicated/admin/users/_index.md @@ -60,7 +60,7 @@ Use the Admin UI for user management tasks (available to Admin users only): > [!Note] > #### Role permissions > -> Auditor role users can view the invite list but cannot send or revoke invitations. Member role users cannot access the invite list... +> Auditor role users can view the invite list but cannot send or revoke invitations. Member role users cannot access the invite list. For more information, see [Manage users in the Admin UI](/influxdb3/cloud-dedicated/admin/users/admin-ui/). From 1639bde0732b92ffde37b78889155ba77db8b980 Mon Sep 17 00:00:00 2001 From: meelahme Date: Fri, 17 Oct 2025 11:39:21 -0700 Subject: [PATCH 17/49] Fix #6432: Update docker-compose to docker compose commandsRetry --- .../cloud-dedicated/process-data/visualize/superset.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/content/influxdb3/cloud-dedicated/process-data/visualize/superset.md b/content/influxdb3/cloud-dedicated/process-data/visualize/superset.md index 45de33bca..e2058c9d1 100644 --- a/content/influxdb3/cloud-dedicated/process-data/visualize/superset.md +++ b/content/influxdb3/cloud-dedicated/process-data/visualize/superset.md @@ -52,7 +52,7 @@ stored in an InfluxDB database. ### Install prerequisites for Superset and Flight SQL -We recommend using **Docker and docker-compose** to run Superset. +We recommend using **Docker and docker-compose v2** to run Superset. To set up Superset to run in Docker containers with Flight SQL, follow these steps: > [!Warning] @@ -154,7 +154,7 @@ pip3 install flightsql-dbapi 3. Use the `docker-compose pull` command to fetch dependencies for the Docker containers. ```sh - docker-compose -f docker-compose-non-dev.yml pull + docker compose -f docker-compose-non-dev.yml pull ``` The process might take several seconds to complete. @@ -165,7 +165,7 @@ pip3 install flightsql-dbapi To start the containers and run Superset, enter the `docker-compose up` command and pass the `-f` flag with the setup file name: ```sh -docker-compose -f docker-compose-non-dev.yml up +docker compose -f docker-compose-non-dev.yml up ``` This might take several seconds to complete. From 986ead55c6b79cea21c1cfd3e67070910fc05db4 Mon Sep 17 00:00:00 2001 From: meelahme Date: Fri, 17 Oct 2025 11:42:55 -0700 Subject: [PATCH 18/49] minor update to instal prereq --- .../cloud-dedicated/process-data/visualize/superset.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/influxdb3/cloud-dedicated/process-data/visualize/superset.md b/content/influxdb3/cloud-dedicated/process-data/visualize/superset.md index e2058c9d1..5973bc44f 100644 --- a/content/influxdb3/cloud-dedicated/process-data/visualize/superset.md +++ b/content/influxdb3/cloud-dedicated/process-data/visualize/superset.md @@ -52,7 +52,7 @@ stored in an InfluxDB database. ### Install prerequisites for Superset and Flight SQL -We recommend using **Docker and docker-compose v2** to run Superset. +We recommend using **Docker and Docker Compose v2** to run Superset. To set up Superset to run in Docker containers with Flight SQL, follow these steps: > [!Warning] From cd79e3503d9864b682ed3d271a55ff0a3582cfb4 Mon Sep 17 00:00:00 2001 From: meelahme Date: Fri, 17 Oct 2025 12:03:07 -0700 Subject: [PATCH 19/49] Fix #6432: fix broken links --- .../cloud-dedicated/process-data/visualize/superset.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/influxdb3/cloud-dedicated/process-data/visualize/superset.md b/content/influxdb3/cloud-dedicated/process-data/visualize/superset.md index 5973bc44f..0f977799b 100644 --- a/content/influxdb3/cloud-dedicated/process-data/visualize/superset.md +++ b/content/influxdb3/cloud-dedicated/process-data/visualize/superset.md @@ -58,7 +58,7 @@ To set up Superset to run in Docker containers with Flight SQL, follow these ste > [!Warning] > **Superset** is not officially supported on Windows. For more information about running Superset with > Windows and Docker, see the -> [Superset documentation](https://superset.apache.org/docs/installation/installing-superset-using-docker-compose#1-install-a-docker-engine-and-docker-compose). +> [Superset documentation](https://superset.apache.org/docs/installation/docker-compose). 1. Follow the instructions to download and install Docker and docker-compose for your system: From 36b09a46051c3401eb900ffbc0fd88c34250da19 Mon Sep 17 00:00:00 2001 From: Jameelah Mercer <36314199+MeelahMe@users.noreply.github.com> Date: Fri, 17 Oct 2025 12:08:23 -0700 Subject: [PATCH 20/49] Update content/influxdb3/cloud-dedicated/process-data/visualize/superset.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../cloud-dedicated/process-data/visualize/superset.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/influxdb3/cloud-dedicated/process-data/visualize/superset.md b/content/influxdb3/cloud-dedicated/process-data/visualize/superset.md index 0f977799b..893371146 100644 --- a/content/influxdb3/cloud-dedicated/process-data/visualize/superset.md +++ b/content/influxdb3/cloud-dedicated/process-data/visualize/superset.md @@ -60,7 +60,7 @@ To set up Superset to run in Docker containers with Flight SQL, follow these ste > Windows and Docker, see the > [Superset documentation](https://superset.apache.org/docs/installation/docker-compose). -1. Follow the instructions to download and install Docker and docker-compose for your system: +1. Follow the instructions to download and install Docker and Docker Compose for your system: - **macOS**: [Install Docker for macOS](https://docs.docker.com/desktop/install/mac-install/) - **Linux**: [Install Docker for Linux](https://docs.docker.com/desktop/install/linux-install/) From 54fc68edf05bf4ca16a00e2de130def879945c06 Mon Sep 17 00:00:00 2001 From: Jameelah Mercer <36314199+MeelahMe@users.noreply.github.com> Date: Mon, 20 Oct 2025 09:10:15 -0700 Subject: [PATCH 21/49] Update content/influxdb3/cloud-dedicated/process-data/visualize/superset.md Co-authored-by: Jason Stirnaman --- .../cloud-dedicated/process-data/visualize/superset.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/influxdb3/cloud-dedicated/process-data/visualize/superset.md b/content/influxdb3/cloud-dedicated/process-data/visualize/superset.md index 893371146..d33b04153 100644 --- a/content/influxdb3/cloud-dedicated/process-data/visualize/superset.md +++ b/content/influxdb3/cloud-dedicated/process-data/visualize/superset.md @@ -52,7 +52,7 @@ stored in an InfluxDB database. ### Install prerequisites for Superset and Flight SQL -We recommend using **Docker and Docker Compose v2** to run Superset. +We recommend using **Docker and Docker Compose** to run Superset. To set up Superset to run in Docker containers with Flight SQL, follow these steps: > [!Warning] From 5afb288b08b27e44df5b68df8806408d27cd1a5c Mon Sep 17 00:00:00 2001 From: meelahme Date: Mon, 20 Oct 2025 09:35:53 -0700 Subject: [PATCH 22/49] updating broken link --- .../cloud-dedicated/process-data/visualize/superset.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/influxdb3/cloud-dedicated/process-data/visualize/superset.md b/content/influxdb3/cloud-dedicated/process-data/visualize/superset.md index 45de33bca..4def58c66 100644 --- a/content/influxdb3/cloud-dedicated/process-data/visualize/superset.md +++ b/content/influxdb3/cloud-dedicated/process-data/visualize/superset.md @@ -58,7 +58,7 @@ To set up Superset to run in Docker containers with Flight SQL, follow these ste > [!Warning] > **Superset** is not officially supported on Windows. For more information about running Superset with > Windows and Docker, see the -> [Superset documentation](https://superset.apache.org/docs/installation/installing-superset-using-docker-compose#1-install-a-docker-engine-and-docker-compose). +> [Superset documentation](https://superset.apache.org/docs/installation/docker-compose). 1. Follow the instructions to download and install Docker and docker-compose for your system: From 142b82785b161c877fa4bdcf016dbac6457240b6 Mon Sep 17 00:00:00 2001 From: meelahme Date: Mon, 20 Oct 2025 09:48:31 -0700 Subject: [PATCH 23/49] updating broken link in _index.md --- .../cloud-dedicated/admin/users/_index.md | 2 +- link-check-results.json | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 link-check-results.json diff --git a/content/influxdb3/cloud-dedicated/admin/users/_index.md b/content/influxdb3/cloud-dedicated/admin/users/_index.md index 74dfa2bfe..db5cde4f2 100644 --- a/content/influxdb3/cloud-dedicated/admin/users/_index.md +++ b/content/influxdb3/cloud-dedicated/admin/users/_index.md @@ -24,7 +24,7 @@ Attribute-Based Access Control (ABAC) security model which grants access based o user attributes, resource types, and environment context. - [Available user groups](#available-user-groups) -- [Manage users](#manage-users) +- [User management methods](#user-management-methods) ## Available user groups diff --git a/link-check-results.json b/link-check-results.json new file mode 100644 index 000000000..71320803b --- /dev/null +++ b/link-check-results.json @@ -0,0 +1,14 @@ +{ + "summary": { + "total_checked": 79, + "broken_count": 0, + "success_rate": 100.0, + "duration_ms": null + }, + "broken_links": [], + "metadata": { + "timestamp": "2025-10-20T16:47:58.217901+00:00", + "ci_mode": "Local", + "version": "0.1.0" + } +} \ No newline at end of file From 20562d5bb6129cf8430ea5f318426794203b9756 Mon Sep 17 00:00:00 2001 From: Jason Stirnaman Date: Mon, 20 Oct 2025 17:18:34 -0500 Subject: [PATCH 24/49] Automate plugin documentation sync workflow between influxdb3_plugins and docs-v2 (#6329) * feat(plugins): add automated plugin documentation sync workflow - Add GitHub Actions workflow for syncing plugin docs from influxdb3_plugins - Create issue template for triggering sync requests - Add Node.js transformation script (port_to_docs.js) with ES modules - Add mapping configuration (docs_mapping.yaml) for all official plugins - Add npm scripts for plugin sync operations - Include comprehensive documentation in helper-scripts/influxdb3-plugins/README.md The workflow provides: - Issue-triggered automation with no cross-repo secrets required - Validation of source READMEs against template requirements - Content transformation with Hugo shortcodes and GitHub URLs - Screenshot generation for visual validation - Automatic PR creation with detailed change summaries * Updated source paths in docs_mapping.yaml to use ./influxdb3_plugins/ instead of ../influxdb3_plugins/ to match what the GitHub Actions workflow expects when it clones the repository: 1. GitHub Actions workflow clones to ./influxdb3_plugins/ 2. docs_mapping.yaml references ./influxdb3_plugins/influxdata/[plugin]/README.md 3. Local development can manually clone the repo to the same location for testing Tupdated all the source paths in docs_mapping.yaml to use ./influxdb3_plugins/ instead of ../influxdb3_plugins/. This now matches exactly what the GitHub Actions workflow expects when it clones the repository. The paths are now consistent: 1. GitHub Actions workflow clones to ./influxdb3_plugins/ 2. docs_mapping.yaml references ./influxdb3_plugins/influxdata/[plugin]/README.md 3. Local development can manually clone the repo to the same location for testing This resolves the inconsistency and makes the automation more reliable. For local development, developers would just need to run: git clone https://github.com/influxdata/influxdb3_plugins.git From the docs-v2 root directory, and then they can use the same paths that the automation uses. * Updated source paths in docs_mapping.yaml to use ./influxdb3_plugins/ instead of ../influxdb3_plugins/ to match what the GitHub Actions workflow expects when it clones the repository: 1. GitHub Actions workflow clones to ./influxdb3_plugins/ 2. docs_mapping.yaml references ./influxdb3_plugins/influxdata/[plugin]/README.md 3. Local development can manually clone the repo to the same location for testing Tupdated all the source paths in docs_mapping.yaml to use ./influxdb3_plugins/ instead of ../influxdb3_plugins/. This now matches exactly what the GitHub Actions workflow expects when it clones the repository. The paths are now consistent: 1. GitHub Actions workflow clones to ./influxdb3_plugins/ 2. docs_mapping.yaml references ./influxdb3_plugins/influxdata/[plugin]/README.md 3. Local development can manually clone the repo to the same location for testing This resolves the inconsistency and makes the automation more reliable. For local development, developers would just need to run: git clone https://github.com/influxdata/influxdb3_plugins.git From the docs-v2 root directory, and then they can use the same paths that the automation uses. * Jmercer/plugin sync test (#6468) * fix: update workflow branch references from master to main * fix: update issue template branch references from master to main - Update sync-plugin-docs.yml description (line 40) - Update placeholder from 'master' to 'main' (line 41) - Update default value from 'master' to 'main' (line 42) - Add influxdb3_plugins/ to .gitignore - Ensures template matches influxdb3_plugins default branch * Update .gitignore --------- Co-authored-by: Jason Stirnaman * Update docs_mapping.yaml * Apply suggestion from @Copilot Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * Apply suggestion from @jstirnaman * Apply suggestion from @jstirnaman * Apply suggestion from @jstirnaman * Apply suggestion from @jstirnaman * Use /.ext/influxdb3_plugins for the source path --------- Co-authored-by: Jameelah Mercer <36314199+MeelahMe@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .github/ISSUE_TEMPLATE/sync-plugin-docs.yml | 89 +++ .github/workflows/sync-plugins.yml | 353 +++++++++ .gitignore | 3 + helper-scripts/influxdb3-plugins/README.md | 669 ++++++++++++++++++ .../influxdb3-plugins/docs_mapping.yaml | 122 ++++ .../influxdb3-plugins/port_to_docs.js | 486 +++++++++++++ package.json | 5 +- 7 files changed, 1726 insertions(+), 1 deletion(-) create mode 100644 .github/ISSUE_TEMPLATE/sync-plugin-docs.yml create mode 100644 .github/workflows/sync-plugins.yml create mode 100644 helper-scripts/influxdb3-plugins/README.md create mode 100644 helper-scripts/influxdb3-plugins/docs_mapping.yaml create mode 100644 helper-scripts/influxdb3-plugins/port_to_docs.js diff --git a/.github/ISSUE_TEMPLATE/sync-plugin-docs.yml b/.github/ISSUE_TEMPLATE/sync-plugin-docs.yml new file mode 100644 index 000000000..382af5ce3 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/sync-plugin-docs.yml @@ -0,0 +1,89 @@ +name: Sync Plugin Documentation +description: Request synchronization of plugin documentation from influxdb3_plugins repository +title: "Sync plugin docs: [PLUGIN_NAMES]" +labels: ["sync-plugin-docs", "documentation", "automation"] +assignees: [] +body: + - type: markdown + attributes: + value: | + ## Plugin Documentation Sync Request + + This will trigger an automated workflow to sync plugin documentation from the influxdb3_plugins repository to docs-v2. + + The workflow will: + 1. โœ… Validate source READMEs against template requirements + 2. ๐Ÿ”„ Transform content for docs-v2 compatibility + 3. ๐Ÿ—๏ธ Build Hugo site and generate screenshots + 4. ๐Ÿ“ Create a pull request with the changes + + **Note**: All plugin READMEs must pass validation before sync can proceed. + + - type: input + id: plugins + attributes: + label: Plugin Names + description: | + Comma-separated list of plugins to sync (e.g., `basic_transformation, downsampler`) or `all` to sync all plugins. + Plugin names should match the directory names in `influxdata/` (without the `influxdata/` prefix). + placeholder: "basic_transformation, downsampler" + value: "all" + validations: + required: true + + - type: input + id: source_commit + attributes: + label: Source Commit/Branch + description: | + Commit SHA, branch name, or tag from influxdb3_plugins repository to sync from. + Leave as `main` to sync from the latest main branch. + placeholder: "main" + value: "main" + validations: + required: true + + - type: textarea + id: context + attributes: + label: Additional Context + description: | + Optional: Provide any additional context about this sync request, such as: + - What changes were made to the plugins + - Any special considerations for review + - Links to related issues or PRs + placeholder: "Updated basic_transformation plugin to support new data types..." + validations: + required: false + + - type: checkboxes + id: checklist + attributes: + label: Pre-sync Checklist + description: Please confirm the following before submitting + options: + - label: Plugin READMEs in influxdb3_plugins follow the [README_TEMPLATE.md](https://github.com/influxdata/influxdb3_plugins/blob/master/README_TEMPLATE.md) structure + required: true + - label: All required sections are present (Description, Configuration, Installation steps, Example usage, Troubleshooting) + required: true + - label: Plugin metadata includes proper emoji indicators (โšก triggers, ๐Ÿท๏ธ tags, ๐Ÿ”ง compatibility) + required: true + - label: Code examples include expected outputs where applicable + required: true + + - type: markdown + attributes: + value: | + --- + + **What happens next?** + 1. Creating this issue will automatically trigger the sync workflow + 2. The workflow will validate all specified plugin READMEs + 3. If validation passes, content will be transformed and a PR will be created + 4. If validation fails, you'll receive feedback on what needs to be fixed + 5. This issue will be automatically closed when the process completes + + **Need help?** + - See the [plugin documentation workflow guide](https://github.com/influxdata/docs-v2/blob/master/helper-scripts/influxdb3-plugins/README.md) + - Check the [plugin template requirements](https://github.com/influxdata/influxdb3_plugins/blob/master/README_TEMPLATE.md) + - Review existing [plugin documentation](https://docs.influxdata.com/influxdb3/core/reference/plugins/) \ No newline at end of file diff --git a/.github/workflows/sync-plugins.yml b/.github/workflows/sync-plugins.yml new file mode 100644 index 000000000..d850122ee --- /dev/null +++ b/.github/workflows/sync-plugins.yml @@ -0,0 +1,353 @@ +name: Sync Plugin Documentation + +on: + issues: + types: [opened] + workflow_dispatch: + inputs: + plugins: + description: 'Plugin names to sync (comma-separated, or "all")' + required: true + default: 'all' + source_commit: + description: 'influxdb3_plugins commit SHA or branch' + required: false + default: 'main' + +permissions: + contents: write + pull-requests: write + issues: write + +jobs: + sync-plugins: + runs-on: ubuntu-latest + # Only run on issues with sync-plugin-docs label or manual dispatch + if: | + github.event_name == 'workflow_dispatch' || + (github.event_name == 'issues' && contains(github.event.issue.labels.*.name, 'sync-plugin-docs')) + + steps: + - name: Parse issue inputs + id: parse-inputs + if: github.event_name == 'issues' + uses: actions/github-script@v7 + with: + script: | + const issue = context.payload.issue; + const body = issue.body || ''; + + // Extract plugins and source_commit from issue body + const pluginsMatch = body.match(/### Plugin Names\s*\n\s*(.+)/); + const commitMatch = body.match(/### Source Commit\/Branch\s*\n\s*(.+)/); + + const plugins = pluginsMatch ? pluginsMatch[1].trim() : 'all'; + const sourceCommit = commitMatch ? commitMatch[1].trim() : 'main'; + + core.setOutput('plugins', plugins); + core.setOutput('source_commit', sourceCommit); + core.setOutput('issue_number', issue.number); + + - name: Set workflow inputs + id: inputs + run: | + if [[ "${{ github.event_name }}" == "workflow_dispatch" ]]; then + echo "plugins=${{ github.event.inputs.plugins }}" >> $GITHUB_OUTPUT + echo "source_commit=${{ github.event.inputs.source_commit }}" >> $GITHUB_OUTPUT + echo "issue_number=" >> $GITHUB_OUTPUT + else + echo "plugins=${{ steps.parse-inputs.outputs.plugins }}" >> $GITHUB_OUTPUT + echo "source_commit=${{ steps.parse-inputs.outputs.source_commit }}" >> $GITHUB_OUTPUT + echo "issue_number=${{ steps.parse-inputs.outputs.issue_number }}" >> $GITHUB_OUTPUT + fi + + - name: Update issue status + if: steps.inputs.outputs.issue_number != '' + uses: actions/github-script@v7 + with: + script: | + await github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: ${{ steps.inputs.outputs.issue_number }}, + body: '๐Ÿ”„ Plugin sync started...\n\nPlugins: `${{ steps.inputs.outputs.plugins }}`\nSource: `${{ steps.inputs.outputs.source_commit }}`' + }); + + - name: Checkout docs-v2 + uses: actions/checkout@v4 + with: + path: docs-v2 + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Checkout influxdb3_plugins (sparse) + run: | + git clone --filter=blob:none --sparse https://github.com/influxdata/influxdb3_plugins.git .ext/influxdb3_plugins + cd .ext/influxdb3_plugins + git sparse-checkout set influxdata/ scripts/ + git checkout ${{ steps.inputs.outputs.source_commit }} + + - name: Setup Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + cache: 'yarn' + cache-dependency-path: docs-v2/yarn.lock + + - name: Install dependencies + run: | + cd docs-v2 + CYPRESS_INSTALL_BINARY=0 yarn install + + - name: Setup Python + uses: actions/setup-python@v4 + with: + python-version: '3.9' + + - name: Validate plugin READMEs + id: validate + run: | + cd .ext/influxdb3_plugins + + # Determine which plugins to validate + if [[ "${{ steps.inputs.outputs.plugins }}" == "all" ]]; then + PLUGINS="" + else + PLUGINS="${{ steps.inputs.outputs.plugins }}" + fi + + # Run validation + if [[ -n "$PLUGINS" ]]; then + echo "Validating specific plugins: $PLUGINS" + python scripts/validate_readme.py --plugins "$PLUGINS" 2>&1 | tee validation.log + else + echo "Validating all plugins" + python scripts/validate_readme.py 2>&1 | tee validation.log + fi + + # Check if validation passed + if [[ ${PIPESTATUS[0]} -eq 0 ]]; then + echo "validation_passed=true" >> $GITHUB_OUTPUT + else + echo "validation_passed=false" >> $GITHUB_OUTPUT + fi + + - name: Report validation failure + if: steps.validate.outputs.validation_passed == 'false' + uses: actions/github-script@v7 + with: + script: | + const fs = require('fs'); + let validationLog = ''; + try { + validationLog = fs.readFileSync('influxdb3_plugins/validation.log', 'utf8'); + } catch (e) { + validationLog = 'Could not read validation log'; + } + + const issueNumber = '${{ steps.inputs.outputs.issue_number }}'; + if (issueNumber) { + await github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: parseInt(issueNumber), + body: `โŒ **Validation Failed** + + Plugin READMEs do not meet template requirements. Please fix the following issues in influxdb3_plugins: + + \`\`\` + ${validationLog} + \`\`\` + + See [README_TEMPLATE.md](https://github.com/influxdata/influxdb3_plugins/blob/main/README_TEMPLATE.md) for requirements.` + }); + + await github.rest.issues.update({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: parseInt(issueNumber), + state: 'closed', + labels: ['sync-plugin-docs', 'validation-failed'] + }); + } + + core.setFailed('Plugin validation failed'); + + - name: Transform plugin documentation + if: steps.validate.outputs.validation_passed == 'true' + run: | + cd docs-v2 + + # Set PLUGIN_DIR for the transformation script + export INFLUXDB3_PLUGINS_PATH=".ext/influxdb3_plugins" + + # Run the transformation + if [[ "${{ steps.inputs.outputs.plugins }}" == "all" ]]; then + node helper-scripts/influxdb3-plugins/port_to_docs.js + else + # Transform specific plugins + IFS=',' read -ra PLUGIN_ARRAY <<< "${{ steps.inputs.outputs.plugins }}" + for plugin in "${PLUGIN_ARRAY[@]}"; do + plugin=$(echo "$plugin" | xargs) # trim whitespace + echo "Transforming plugin: $plugin" + node helper-scripts/influxdb3-plugins/port_to_docs.js --plugin "$plugin" + done + fi + + - name: Build Hugo site + run: | + cd docs-v2 + npx hugo --quiet --minify + + - name: Setup Playwright + run: | + cd docs-v2 + npx playwright install chromium + + - name: Generate screenshots + id: screenshots + run: | + cd docs-v2 + + # Start Hugo server in background + npx hugo server --bind 0.0.0.0 --port 1313 --quiet & + HUGO_PID=$! + + # Wait for server to start + sleep 10 + + # Create screenshots directory + mkdir -p plugin-screenshots + + # Generate screenshots for changed plugin pages + node -e " + const { chromium } = require('playwright'); + const fs = require('fs'); + const path = require('path'); + + async function captureScreenshots() { + const browser = await chromium.launch(); + const page = await browser.newPage({ viewport: { width: 1200, height: 800 } }); + + // Find changed plugin files + const glob = require('glob'); + const pluginFiles = glob.sync('content/shared/influxdb3-plugins/plugins-library/**/*.md'); + + for (const file of pluginFiles) { + const pluginName = path.basename(file, '.md'); + const url = \`http://localhost:1313/influxdb3/core/reference/plugins/\${pluginName}/\`; + + try { + console.log(\`Capturing screenshot for \${pluginName}\`); + await page.goto(url, { waitUntil: 'networkidle' }); + await page.screenshot({ + path: \`plugin-screenshots/\${pluginName}.png\`, + fullPage: true + }); + } catch (error) { + console.log(\`Could not capture \${pluginName}: \${error.message}\`); + } + } + + await browser.close(); + } + + captureScreenshots().catch(console.error); + " + + # Stop Hugo server + kill $HUGO_PID + + # List generated screenshots + ls -la plugin-screenshots/ || echo "No screenshots generated" + echo "screenshots_generated=$(ls plugin-screenshots/ 2>/dev/null | wc -l)" >> $GITHUB_OUTPUT + + - name: Create Pull Request + if: steps.validate.outputs.validation_passed == 'true' + id: create-pr + uses: peter-evans/create-pull-request@v5 + with: + path: docs-v2 + token: ${{ secrets.GITHUB_TOKEN }} + commit-message: | + sync: update plugin documentation from influxdb3_plugins@${{ steps.inputs.outputs.source_commit }} + + Plugins: ${{ steps.inputs.outputs.plugins }} + branch: sync-plugins-${{ github.run_number }} + title: "Sync plugin documentation: ${{ steps.inputs.outputs.plugins }}" + body: | + ## Plugin Documentation Sync + + **Source**: influxdb3_plugins@${{ steps.inputs.outputs.source_commit }} + **Plugins**: ${{ steps.inputs.outputs.plugins }} + **Triggered by**: ${{ github.event_name == 'issues' && format('Issue #{0}', steps.inputs.outputs.issue_number) || 'Manual workflow dispatch' }} + + ### Changes Made + - โœ… Validated source READMEs against template requirements + - ๐Ÿ”„ Transformed content for docs-v2 compatibility + - ๐Ÿ–ผ๏ธ Generated ${{ steps.screenshots.outputs.screenshots_generated }} plugin page screenshots + + ### Transformations Applied + - Removed emoji metadata (already in plugin JSON metadata) + - Converted relative links to GitHub URLs + - Added Hugo product shortcodes (`{{% product-name %}}`) + - Added standard logging section + - Updated support sections with docs-v2 format + + ### Screenshots + Plugin page previews are available in the `plugin-screenshots/` directory (if any were generated). + + ### Review Checklist + - [ ] All plugin pages render correctly + - [ ] GitHub links resolve properly + - [ ] Product shortcodes display correctly + - [ ] Code examples are properly formatted + - [ ] Support sections link correctly + + --- + *This PR was automatically generated by the plugin sync workflow.* + + - name: Update issue with success + if: steps.validate.outputs.validation_passed == 'true' && steps.inputs.outputs.issue_number != '' + uses: actions/github-script@v7 + with: + script: | + await github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: ${{ steps.inputs.outputs.issue_number }}, + body: `โœ… **Plugin sync completed successfully!** + + **Pull Request**: #${{ steps.create-pr.outputs.pull-request-number }} + **Plugins synced**: ${{ steps.inputs.outputs.plugins }} + **Source commit**: ${{ steps.inputs.outputs.source_commit }} + **Screenshots generated**: ${{ steps.screenshots.outputs.screenshots_generated }} + + The PR is ready for review and includes all necessary transformations and validations.` + }); + + await github.rest.issues.update({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: ${{ steps.inputs.outputs.issue_number }}, + state: 'closed', + labels: ['sync-plugin-docs', 'completed'] + }); + + - name: Report failure + if: failure() && steps.inputs.outputs.issue_number != '' + uses: actions/github-script@v7 + with: + script: | + await github.rest.issues.createComment({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: ${{ steps.inputs.outputs.issue_number }}, + body: `โŒ **Plugin sync failed** + + Please check the [workflow run](${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}) for details. + + You may need to: + - Check that the source commit exists + - Verify plugin names are correct + - Ensure all validation requirements are met` + }); \ No newline at end of file diff --git a/.gitignore b/.gitignore index 4e0b03b35..5209786a1 100644 --- a/.gitignore +++ b/.gitignore @@ -41,3 +41,6 @@ tmp # User context files for AI assistant tools .context/* !.context/README.md + +# External repos +.ext/* diff --git a/helper-scripts/influxdb3-plugins/README.md b/helper-scripts/influxdb3-plugins/README.md new file mode 100644 index 000000000..84dcc6055 --- /dev/null +++ b/helper-scripts/influxdb3-plugins/README.md @@ -0,0 +1,669 @@ +# InfluxDB 3 Plugin Documentation Automation + +This directory contains scripts and configuration for automating plugin documentation sync between `influxdata/influxdb3_plugins` (source) and `influxdata/docs-v2` (documentation site). + +## Files in This Directory + +- **`port_to_docs.js`** - Transforms plugin READMEs from influxdb3_plugins to docs-v2 format +- **`docs_mapping.yaml`** - Maps source plugin READMEs to destination documentation files +- **`README.md`** - This file: complete workflow documentation + +## Quick Start + +### Automated Sync (Recommended) + +When you update plugin READMEs in influxdb3_plugins: + +1. **Commit your changes** - The reminder workflow will automatically detect changes +2. **Click the sync link** - A comment will appear with a pre-filled link to create a sync request +3. **Review the PR** - The workflow creates a pull request with transformed content and screenshots + +### Manual Sync (Alternative) + +To manually trigger synchronization: + +1. **Create sync request**: [Open sync request form](https://github.com/influxdata/docs-v2/issues/new?template=sync-plugin-docs.yml) +2. **Fill in plugin names** and source commit +3. **Submit issue** - This automatically triggers the sync workflow + +### Local Development + +For local testing and development: + +1. **Validate source content** (run from influxdb3_plugins directory): + ```bash + cd /path/to/influxdb3_plugins + python scripts/validate_readme.py + ``` + +2. **Transform content** (run from docs-v2 root directory): + ```bash + cd /path/to/docs-v2 + npm run sync-plugins + ``` + +3. **Review changes**: + ```bash + git diff content/shared/influxdb3-plugins/ + ``` + +## NPM Scripts + +From the docs-v2 root directory, you can use these convenient npm scripts: + +- `npm run sync-plugins` - Transform all plugin documentation +- `npm run sync-plugins:dry-run` - Preview changes without writing files +- `npm run validate-plugin-config` - Validate the mapping configuration + +## Overview + +This workflow maintains consistent plugin documentation between repositories while ensuring bidirectional consistency and enabling future automation. + +## Key Principles + +1. **Single Source of Truth**: Plugin READMEs in `influxdb3_plugins` are the canonical source +2. **Consistency**: All plugin READMEs follow a standardized template +3. **Automation**: Documentation updates flow automatically from source to docs +4. **Validation**: Both repositories validate documentation quality +5. **No Divergence**: Content differences are managed through transformation rules + +## Repository Responsibilities + +### influxdb3_plugins (Source) +- Contains canonical plugin documentation in README files +- Follows strict template structure +- Includes all technical details and examples +- Validates README compliance + +### docs-v2 (Documentation Site) +- Transforms and enhances source documentation +- Adds product-specific formatting and shortcodes +- Includes additional support sections +- Never directly edits plugin content + +## Phase 1: Standardize Source Documentation + +### 1.1 README Template Structure + +All plugin READMEs in `influxdb3_plugins` must follow this structure: + +```markdown +# [Plugin Name] + +โšก [trigger-type1, trigger-type2] ๐Ÿท๏ธ [tag1, tag2, tag3] ๐Ÿ”ง InfluxDB 3 Core, InfluxDB 3 Enterprise + +## Description + +[2-4 sentences describing what the plugin does, its main capabilities, supported trigger types, and any special features] + +## Configuration + +Plugin parameters may be specified as key-value pairs in the `--trigger-arguments` flag (CLI) or in the `trigger_arguments` field (API) when creating a trigger. Some plugins support TOML configuration files, which can be specified using the plugin's `config_file_path` parameter. + +If a plugin supports multiple trigger specifications, some parameters may depend on the trigger specification that you use. + +### Plugin metadata + +This plugin includes a JSON metadata schema in its docstring that defines supported trigger types and configuration parameters. This metadata enables the [InfluxDB 3 Explorer](https://docs.influxdata.com/influxdb3/explorer/) UI to display and configure the plugin. + +### Required parameters + +| Parameter | Type | Default | Description | +|-----------|------|---------|-------------| +| `param_name` | string | required | Description of parameter | + +### [Category] parameters + +[Additional parameter tables organized by category] + +### TOML configuration + +| Parameter | Type | Default | Description | +|-----------|------|---------|-------------| +| `config_file_path` | string | none | TOML config file path relative to `PLUGIN_DIR` (required for TOML configuration) | + +*To use a TOML configuration file, set the `PLUGIN_DIR` environment variable and specify the `config_file_path` in the trigger arguments.* This is in addition to the `--plugin-dir` flag when starting InfluxDB 3. + +#### Example TOML configurations + +- [config_file.toml](config_file.toml) - Description + +For more information on using TOML configuration files, see the Using TOML Configuration Files section in the [influxdb3_plugins/README.md](/README.md). + +## [Special Requirements Section - if applicable] + +[For example: Data requirements, Schema requirements, Software requirements] + +## Installation steps + +1. Start InfluxDB 3 with the Processing Engine enabled: + ```bash + influxdb3 serve \ + --node-id node0 \ + --object-store file \ + --data-dir ~/.influxdb3 \ + --plugin-dir ~/.plugins + ``` + +2. Install required Python packages (if any): + ```bash + influxdb3 install package package_name + ``` + +## Trigger setup + +### [Trigger Type 1] + +[Description and example] + +```bash +influxdb3 create trigger \ + --database mydb \ + --plugin-filename gh:influxdata/[plugin]/[plugin].py \ + --trigger-spec "[spec]" \ + --trigger-arguments '[arguments]' \ + trigger_name +``` + +### [Trigger Type 2] + +[Additional trigger examples as needed] + +## Example usage + +### Example 1: [Use case name] + +[Description of the example] + +```bash +# Create the trigger +influxdb3 create trigger \ + --database mydb \ + --plugin-filename gh:influxdata/[plugin]/[plugin].py \ + --trigger-spec "[spec]" \ + --trigger-arguments '[arguments]' \ + trigger_name + +# Write test data +influxdb3 write \ + --database mydb \ + "measurement,tag=value field=1" + +# Query results +influxdb3 query \ + --database mydb \ + "SELECT * FROM result_measurement" +``` + +### Expected output + +``` +[Expected output format] +``` + +**Details:** +- Before: [input state] +- After: [output state] + +### Example 2: [Use case name] + +[Additional examples following the same pattern] + +## Code overview + +### Files + +- `plugin_name.py`: Main plugin code +- `config.toml`: Example configuration file + +### Main functions + +#### `function_name(params)` +[Description of what the function does] + +Key operations: +1. [Operation 1] +2. [Operation 2] +3. [Operation 3] + +### Key logic + +[Description of the plugin's core logic and processing flow] + +## Troubleshooting + +### Common issues + +#### Issue: [Problem description] +**Solution**: [How to fix it] + +#### Issue: [Problem description] +**Solution**: [How to fix it] + +### Debugging tips + +1. **[Tip 1]**: [Description] +2. **[Tip 2]**: [Description] + +### Performance considerations + +- [Performance note 1] +- [Performance note 2] + +## Questions/Comments + +For questions or comments about this plugin, please open an issue in the [influxdb3_plugins repository](https://github.com/influxdata/influxdb3_plugins/issues). +``` + +### 1.2 Validation Requirements + +Each README must: +- Include all required sections in the correct order +- Use consistent parameter table formatting +- Provide at least 2 complete usage examples +- Include expected output for examples +- Document all configuration parameters +- Link to TOML configuration files (if applicable) + +## Phase 2: Transformation to docs-v2 + +### 2.1 Transformation Rules + +When porting content from `influxdb3_plugins` to `docs-v2`: + +#### Content Transformations + +1. **Remove emoji metadata line** (already in plugin metadata) + +2. **Convert relative links to GitHub URLs**: + - `[file.toml](file.toml)` โ†’ `[file.toml](https://github.com/influxdata/influxdb3_plugins/blob/master/influxdata/[plugin]/file.toml)` + - `/README.md` โ†’ `https://github.com/influxdata/influxdb3_plugins/blob/master/README.md` + +3. **Add product shortcodes**: + - Replace "InfluxDB 3" with `{{% product-name %}}` + - Add `{{% token-link %}}` for token references + - Use `{{% show-in "enterprise" %}}` for conditional content + +4. **Enhance opening paragraph** (optional): + - Can be expanded for better SEO and context + - Must maintain factual accuracy + +5. **Add docs-specific sections**: + +```markdown +## Logging + +Logs are stored in the `_internal` database (or the database where the trigger is created) in the `system.processing_engine_logs` table. To view logs: + +```bash +influxdb3 query --database _internal "SELECT * FROM system.processing_engine_logs WHERE trigger_name = 'your_trigger_name'" +``` + +Log columns: +- **event_time**: Timestamp of the log event +- **trigger_name**: Name of the trigger that generated the log +- **log_level**: Severity level (INFO, WARN, ERROR) +- **log_text**: Message describing the action or error + +## Report an issue + +For plugin issues, see the Plugins repository [issues page](https://github.com/influxdata/influxdb3_plugins/issues). + +## Find support for {{% product-name %}} + +The [InfluxDB Discord server](https://discord.gg/9zaNCW2PRT) is the best place to find support for InfluxDB 3 Core and InfluxDB 3 Enterprise. +``` + +### 2.2 File Structure in docs-v2 + +Plugin documentation location: +- **Official plugins**: `/content/shared/influxdb3-plugins/plugins-library/official/[plugin-name].md` +- **Example plugins**: `/content/shared/influxdb3-plugins/plugins-library/examples/[plugin-name].md` +- **Community plugins**: `/content/shared/influxdb3-plugins/plugins-library/community/[plugin-name].md` + +## Phase 3: Automation Implementation + +### 3.1 Validation Script (scripts/validate_readme.py) + +```python +#!/usr/bin/env python3 +""" +Validates plugin README files against the standard template. +""" + +import sys +import re +from pathlib import Path + +REQUIRED_SECTIONS = [ + "# ", # Title + "## Description", + "## Configuration", + "### Required parameters", + "## Installation steps", + "## Trigger setup", + "## Example usage", + "## Code overview", + "## Troubleshooting", + "## Questions/Comments" +] + +def validate_readme(readme_path): + """Validate a README file against the template.""" + with open(readme_path, 'r') as f: + content = f.read() + + errors = [] + + # Check for required sections + for section in REQUIRED_SECTIONS: + if section not in content: + errors.append(f"Missing required section: {section}") + + # Check for emoji metadata + if not re.search(r'^โšก.*๐Ÿท๏ธ.*๐Ÿ”ง', content, re.MULTILINE): + errors.append("Missing emoji metadata line") + + # Check for parameter tables + if '| Parameter |' not in content: + errors.append("No parameter tables found") + + # Check for code examples + if '```bash' not in content: + errors.append("No bash code examples found") + + # Check for expected output + if '### Expected output' not in content and '**Expected output' not in content: + errors.append("No expected output section found") + + return errors + +if __name__ == "__main__": + # Validate all plugin READMEs + plugin_dirs = Path('influxdata').glob('*/README.md') + + all_valid = True + for readme_path in plugin_dirs: + errors = validate_readme(readme_path) + if errors: + all_valid = False + print(f"\nโŒ {readme_path}:") + for error in errors: + print(f" - {error}") + else: + print(f"โœ… {readme_path}") + + sys.exit(0 if all_valid else 1) +``` + +### 3.2 Transformation Script (port_to_docs.py) + +```python +#!/usr/bin/env python3 +""" +Transforms plugin READMEs from influxdb3_plugins to docs-v2 format. +""" + +import re +import yaml +from pathlib import Path + +def transform_content(content, plugin_name): + """Transform README content for docs-v2.""" + + # Remove emoji metadata line + content = re.sub(r'^โšก.*๐Ÿ”ง.*$', '', content, flags=re.MULTILINE) + + # Convert relative links to GitHub URLs + base_url = f"https://github.com/influxdata/influxdb3_plugins/blob/master/influxdata/{plugin_name}/" + content = re.sub(r'\[([^\]]+)\]\(([^)]+\.toml)\)', + f'[\\1]({base_url}\\2)', content) + + # Replace InfluxDB 3 references + content = content.replace('InfluxDB 3 Core/Enterprise', '{{% product-name %}}') + content = content.replace('InfluxDB 3', '{{% product-name %}}') + + # Remove Questions/Comments section (will be replaced) + content = re.sub(r'## Questions/Comments.*', '', content, flags=re.DOTALL) + + # Add docs-specific sections + docs_sections = """ +## Logging + +Logs are stored in the `_internal` database (or the database where the trigger is created) in the `system.processing_engine_logs` table. To view logs: + +```bash +influxdb3 query --database _internal "SELECT * FROM system.processing_engine_logs WHERE trigger_name = 'your_trigger_name'" +``` + +Log columns: +- **event_time**: Timestamp of the log event +- **trigger_name**: Name of the trigger that generated the log +- **log_level**: Severity level (INFO, WARN, ERROR) +- **log_text**: Message describing the action or error + +## Report an issue + +For plugin issues, see the Plugins repository [issues page](https://github.com/influxdata/influxdb3_plugins/issues). + +## Find support for {{% product-name %}} + +The [InfluxDB Discord server](https://discord.gg/9zaNCW2PRT) is the best place to find support for InfluxDB 3 Core and InfluxDB 3 Enterprise. +""" + + return content + docs_sections + +def process_plugin(source_path, target_path, plugin_name): + """Process a single plugin README.""" + with open(source_path, 'r') as f: + content = f.read() + + transformed = transform_content(content, plugin_name) + + # Ensure target directory exists + target_path.parent.mkdir(parents=True, exist_ok=True) + + with open(target_path, 'w') as f: + f.write(transformed) + + print(f"โœ… Processed {plugin_name}") + +if __name__ == "__main__": + # Load mapping configuration + with open('docs_mapping.yaml', 'r') as f: + config = yaml.safe_load(f) + + for plugin_name, mapping in config['plugins'].items(): + source = Path(mapping['source']) + target = Path(mapping['target']) + + if source.exists(): + process_plugin(source, target, plugin_name) + else: + print(f"โŒ Source not found: {source}") +``` + +### 3.3 Mapping Configuration (docs_mapping.yaml) + +```yaml +plugins: + basic_transformation: + source: influxdata/basic_transformation/README.md + target: ../docs-v2/content/shared/influxdb3-plugins/plugins-library/official/basic-transformation.md + category: official + + downsampler: + source: influxdata/downsampler/README.md + target: ../docs-v2/content/shared/influxdb3-plugins/plugins-library/official/downsampler.md + category: official + + forecast_error_evaluator: + source: influxdata/forecast_error_evaluator/README.md + target: ../docs-v2/content/shared/influxdb3-plugins/plugins-library/official/forecast-error-evaluator.md + category: official + + influxdb_to_iceberg: + source: influxdata/influxdb_to_iceberg/README.md + target: ../docs-v2/content/shared/influxdb3-plugins/plugins-library/official/influxdb-to-iceberg.md + category: official + + mad_check: + source: influxdata/mad_check/README.md + target: ../docs-v2/content/shared/influxdb3-plugins/plugins-library/official/mad-check.md + category: official + + notifier: + source: influxdata/notifier/README.md + target: ../docs-v2/content/shared/influxdb3-plugins/plugins-library/official/notifier.md + category: official + + prophet_forecasting: + source: influxdata/prophet_forecasting/README.md + target: ../docs-v2/content/shared/influxdb3-plugins/plugins-library/official/prophet-forecasting.md + category: official + + state_change: + source: influxdata/state_change/README.md + target: ../docs-v2/content/shared/influxdb3-plugins/plugins-library/official/state-change.md + category: official + + stateless_adtk_detector: + source: influxdata/stateless_adtk_detector/README.md + target: ../docs-v2/content/shared/influxdb3-plugins/plugins-library/official/stateless-adtk-detector.md + category: official + + system_metrics: + source: influxdata/system_metrics/README.md + target: ../docs-v2/content/shared/influxdb3-plugins/plugins-library/official/system-metrics.md + category: official + + threshold_deadman_checks: + source: influxdata/threshold_deadman_checks/README.md + target: ../docs-v2/content/shared/influxdb3-plugins/plugins-library/official/threshold-deadman-checks.md + category: official +``` + +## Phase 4: GitHub Actions Automation + +### 4.1 Automated Workflow Architecture + +The plugin documentation sync process uses a two-repository workflow: + +1. **influxdb3_plugins**: Detects README changes and creates reminder comments +2. **docs-v2**: Handles the complete sync workflow via issue-triggered automation + +### 4.2 Reminder System (influxdb3_plugins) + +**File**: `.github/workflows/remind-sync-docs.yml` + +- **Triggers**: On pushes to `influxdata/**/README.md` files +- **Action**: Creates commit comment with pre-filled link to docs-v2 sync form +- **No secrets required**: Pure URL-based integration + +**Flow**: +``` +Plugin README change โ†’ Commit โ†’ Automatic comment with sync link +``` + +### 4.3 Sync Automation (docs-v2) + +**Files**: +- `.github/workflows/sync-plugins.yml` - Main sync workflow +- `.github/ISSUE_TEMPLATE/sync-plugin-docs.yml` - Issue template for requests + +**Triggers**: +- Issue creation with `sync-plugin-docs` label (from template) +- Manual workflow dispatch + +**Process**: +1. **Parse request** - Extract plugin names and source commit from issue +2. **Validate source** - Run `scripts/validate_readme.py` on specified plugins +3. **Transform content** - Apply docs-v2 formatting and enhancements +4. **Generate screenshots** - Capture Hugo-rendered plugin pages +5. **Create PR** - Submit changes with comprehensive summary +6. **Update issue** - Close with success/failure status + +### 4.4 Key Features + +- **No cross-repo secrets** - Uses URL parameters and public APIs +- **Visual validation** - Screenshots included in PRs +- **Comprehensive error handling** - Clear feedback on failures +- **Selective sync** - Individual plugins or "all" +- **Progress tracking** - Issue updates throughout process + +## Phase 5: Manual Workflow (Until Automation is Ready) + +### Step 1: Update Source README +1. Edit README in `influxdb3_plugins/influxdata/[plugin]/` +2. Run validation: `python scripts/validate_readme.py` +3. Fix any validation errors + +### Step 2: Transform Content +1. Change to docs-v2 directory: `cd ../docs-v2` +2. Run transformation: `npm run sync-plugins` +3. Review generated content: `git diff content/shared/influxdb3-plugins/` + +### Step 3: Manual Adjustments (if needed) +1. Add any docs-specific enhancements +2. Verify shortcodes and formatting +3. Test links and examples + +### Step 4: Commit and PR +1. Commit changes in influxdb3_plugins +2. Commit transformed content in docs-v2 +3. Reference source commit in docs-v2 commit message + +## Maintenance Guidelines + +### For New Plugins +1. Create README following template in `influxdb3_plugins` +2. Add entry to `docs_mapping.yaml` +3. Run validation and transformation scripts +4. Review and merge generated documentation + +### For Updates +1. Update source README in `influxdb3_plugins` +2. Automation (or manual script) creates PR to docs-v2 +3. Review for accuracy and merge + +### Exception Handling +- Use `[no-sync]` in commit message to skip automation +- Document special cases in `exceptions.yaml` +- Manual override allowed for urgent fixes + +## Quality Assurance Checklist + +Before merging any plugin documentation: + +- [ ] Source README passes validation (`scripts/validate_readme.py`) +- [ ] All required sections present and properly formatted +- [ ] At least 2 complete usage examples with expected output +- [ ] All configuration parameters documented +- [ ] Links to GitHub source files work +- [ ] TOML configuration documented (if applicable) +- [ ] Transformation script runs without errors +- [ ] Generated docs-v2 content is accurate +- [ ] Product shortcodes properly applied +- [ ] Support sections included + +## Benefits of This Workflow + +1. **Consistency**: Single source of truth eliminates divergence +2. **Automation**: Reduces manual work and human error +3. **Validation**: Ensures quality standards are met +4. **Scalability**: Easy to add new plugins +5. **Maintainability**: Clear ownership and update process +6. **Traceability**: Git history shows relationship between repos + +## Future Enhancements + +1. **Automated testing** of code examples +2. **Version tracking** for plugin compatibility +3. **Changelog generation** from commit history +4. **Multi-language** example generation +5. **API documentation** generation from metadata +6. **Search optimization** through automated tagging + +## Conclusion + +This workflow establishes a sustainable process for maintaining high-quality, consistent plugin documentation across both repositories while enabling progressive automation. The standardized template and transformation rules ensure that documentation remains synchronized while allowing for repository-specific requirements. \ No newline at end of file diff --git a/helper-scripts/influxdb3-plugins/docs_mapping.yaml b/helper-scripts/influxdb3-plugins/docs_mapping.yaml new file mode 100644 index 000000000..35c0447b0 --- /dev/null +++ b/helper-scripts/influxdb3-plugins/docs_mapping.yaml @@ -0,0 +1,122 @@ +# Mapping configuration for transforming plugin documentation from influxdb3_plugins to docs-v2 +# This file defines the source and target paths for each plugin's documentation + +plugins: + basic_transformation: + source: ../../.ext/influxdb3_plugins/influxdata/basic_transformation/README.md + target: ../../content/shared/influxdb3-plugins/plugins-library/official/basic-transformation.md + category: official + additional_sections: + - schema_requirements + - logging + + downsampler: + source: ../../.ext/influxdb3_plugins/influxdata/downsampler/README.md + target: ../../content/shared/influxdb3-plugins/plugins-library/official/downsampler.md + category: official + additional_sections: + - schema_management + - logging + + forecast_error_evaluator: + source: ../../.ext/influxdb3_plugins/influxdata/forecast_error_evaluator/README.md + target: ../../content/shared/influxdb3-plugins/plugins-library/official/forecast-error-evaluator.md + category: official + additional_sections: + - logging + + influxdb_to_iceberg: + source: ../../.ext/influxdb3_plugins/influxdata/influxdb_to_iceberg/README.md + target: ../../content/shared/influxdb3-plugins/plugins-library/official/influxdb-to-iceberg.md + category: official + additional_sections: + - logging + + mad_check: + source: ../../.ext/influxdb3_plugins/influxdata/mad_check/README.md + target: ../../content/shared/influxdb3-plugins/plugins-library/official/mad-check.md + category: official + additional_sections: + - logging + + notifier: + source: ../../.ext/influxdb3_plugins/influxdata/notifier/README.md + target: ../../content/shared/influxdb3-plugins/plugins-library/official/notifier.md + category: official + additional_sections: + - logging + + prophet_forecasting: + source: ../../.ext/influxdb3_plugins/influxdata/prophet_forecasting/README.md + target: ../../content/shared/influxdb3-plugins/plugins-library/official/prophet-forecasting.md + category: official + additional_sections: + - logging + + state_change: + source: ../../.ext/influxdb3_plugins/influxdata/state_change/README.md + target: ../../content/shared/influxdb3-plugins/plugins-library/official/state-change.md + category: official + additional_sections: + - logging + + stateless_adtk_detector: + source: ../../.ext/influxdb3_plugins/influxdata/stateless_adtk_detector/README.md + target: ../../content/shared/influxdb3-plugins/plugins-library/official/stateless-adtk-detector.md + category: official + additional_sections: + - logging + + system_metrics: + source: ../../.ext/influxdb3_plugins/influxdata/system_metrics/README.md + target: ../../content/shared/influxdb3-plugins/plugins-library/official/system-metrics.md + category: official + additional_sections: + - logging + + threshold_deadman_checks: + source: ../../.ext/influxdb3_plugins/influxdata/threshold_deadman_checks/README.md + target: ../../content/shared/influxdb3-plugins/plugins-library/official/threshold-deadman-checks.md + category: official + additional_sections: + - logging + +# Example plugins (if any exist in the examples directory) +example_plugins: + # Add example plugins here when they are created + # example_name: + # source: examples/example_name/README.md + # target: ../docs-v2/content/shared/influxdb3-plugins/plugins-library/examples/example-name.md + # category: examples + +# Community plugins (future expansion) +community_plugins: + # Add community plugins here as they are contributed + # author_plugin: + # source: community/author/plugin_name/README.md + # target: ../docs-v2/content/shared/influxdb3-plugins/plugins-library/community/plugin-name.md + # category: community + +# Configuration settings +settings: + # Whether to validate links in transformed content + validate_links: true + + # Whether to check for template remnants + check_template_remnants: true + + # Whether to create backup of existing docs before overwriting + create_backup: false + + # Default category if not specified + default_category: official + +# Exceptions - plugins that require special handling +exceptions: + # List plugins that should not be automatically synced + no_sync: [] + + # Plugins that require manual review after transformation + manual_review: + - influxdb_to_iceberg # Complex configuration may need manual verification + - forecast_error_evaluator # Multiple notification options need review diff --git a/helper-scripts/influxdb3-plugins/port_to_docs.js b/helper-scripts/influxdb3-plugins/port_to_docs.js new file mode 100644 index 000000000..590b45b0f --- /dev/null +++ b/helper-scripts/influxdb3-plugins/port_to_docs.js @@ -0,0 +1,486 @@ +#!/usr/bin/env node +/** + * Transforms plugin READMEs from influxdb3_plugins to docs-v2 format. + * Maintains consistency while applying documentation-specific enhancements. + */ + +import { promises as fs } from 'fs'; +import path from 'path'; +import yaml from 'js-yaml'; + +/** + * Load the mapping configuration file. + */ +async function loadMappingConfig(configPath = 'docs_mapping.yaml') { + try { + const content = await fs.readFile(configPath, 'utf8'); + return yaml.load(content); + } catch (error) { + if (error.code === 'ENOENT') { + console.error(`โŒ Error: Configuration file '${configPath}' not found`); + } else { + console.error(`โŒ Error parsing YAML configuration: ${error.message}`); + } + process.exit(1); + } +} + +/** + * Remove the emoji metadata line from content. + */ +function removeEmojiMetadata(content) { + // Remove the emoji line (it's already in the plugin's JSON metadata) + const pattern = /^โšก.*?๐Ÿ”ง.*?$\n*/gm; + return content.replace(pattern, ''); +} + +/** + * Convert relative links to GitHub URLs. + */ +function convertRelativeLinks(content, pluginName) { + const baseUrl = `https://github.com/influxdata/influxdb3_plugins/blob/master/influxdata/${pluginName}/`; + + // Convert TOML file links + content = content.replace( + /\[([^\]]+\.toml)\]\(([^)]+\.toml)\)/g, + (match, linkText, linkPath) => `[${linkText}](${baseUrl}${linkPath})` + ); + + // Convert Python file links + content = content.replace( + /\[([^\]]+\.py)\]\(([^)]+\.py)\)/g, + (match, linkText, linkPath) => `[${linkText}](${baseUrl}${linkPath})` + ); + + // Convert main README reference + content = content.replace( + '[influxdb3_plugins/README.md](/README.md)', + '[influxdb3_plugins/README.md](https://github.com/influxdata/influxdb3_plugins/blob/master/README.md)' + ); + + return content; +} + +/** + * Replace product references with Hugo shortcodes. + */ +function addProductShortcodes(content) { + // Replace various forms of InfluxDB 3 references + const replacements = [ + [/InfluxDB 3 Core\/Enterprise/g, '{{% product-name %}}'], + [/InfluxDB 3 Core and InfluxDB 3 Enterprise/g, '{{% product-name %}}'], + [/InfluxDB 3 Core, InfluxDB 3 Enterprise/g, '{{% product-name %}}'], + // Be careful not to replace in URLs or code blocks + [/(? [!WARNING] +> #### Requires existing schema +> +> By design, the plugin returns an error if the schema doesn't exist or doesn't contain the expected columns. +`; + } else if (pluginName === 'downsampler') { + schemaSection = `## Schema management + +Each downsampled record includes three additional metadata columns: + +- \`record_count\` โ€” the number of original points compressed into this single downsampled row +- \`time_from\` โ€” the minimum timestamp among the original points in the interval +- \`time_to\` โ€” the maximum timestamp among the original points in the interval +`; + } else { + return content; + } + + // Insert after Configuration section + if (content.includes('## Installation steps')) { + content = content.replace( + '## Installation steps', + schemaSection + '\n## Installation steps' + ); + } + + return content; +} + +/** + * Apply all transformations to convert README for docs-v2. + */ +function transformContent(content, pluginName, config) { + // Apply transformations in order + content = removeEmojiMetadata(content); + content = convertRelativeLinks(content, pluginName); + content = addProductShortcodes(content); + content = enhanceOpeningParagraph(content); + content = fixCodeBlockFormatting(content); + + // Add schema requirements if applicable + if ( + config.additional_sections && + config.additional_sections.includes('schema_requirements') + ) { + content = addSchemaRequirements(content, pluginName); + } + + // Add logging section + content = addLoggingSection(content); + + // Replace support section + content = replaceSupportSection(content); + + return content; +} + +/** + * Process a single plugin README. + * Returns true if successful, false otherwise. + */ +async function processPlugin(pluginName, mapping, dryRun = false) { + const sourcePath = mapping.source; + const targetPath = mapping.target; + + try { + // Check if source exists + await fs.access(sourcePath); + } catch (error) { + console.error(`โŒ Source not found: ${sourcePath}`); + return false; + } + + try { + // Read source content + const content = await fs.readFile(sourcePath, 'utf8'); + + // Transform content + const transformed = transformContent(content, pluginName, mapping); + + if (dryRun) { + console.log(`โœ… Would process ${pluginName}`); + console.log(` Source: ${sourcePath}`); + console.log(` Target: ${targetPath}`); + return true; + } + + // Ensure target directory exists + await fs.mkdir(path.dirname(targetPath), { recursive: true }); + + // Write transformed content + await fs.writeFile(targetPath, transformed, 'utf8'); + + console.log(`โœ… Processed ${pluginName}`); + console.log(` Source: ${sourcePath}`); + console.log(` Target: ${targetPath}`); + return true; + } catch (error) { + console.error(`โŒ Error processing ${pluginName}: ${error.message}`); + return false; + } +} + +/** + * Check if docs-v2 repository is accessible. + */ +async function validateDocsV2Path() { + try { + await fs.access('../..'); + return true; + } catch (error) { + console.warn('โš ๏ธ Warning: docs-v2 repository structure not detected'); + console.warn( + ' Make sure you are running this from docs-v2/helper-scripts/influxdb3-plugins' + ); + return false; + } +} + +/** + * Parse command line arguments. + */ +function parseArgs() { + const args = process.argv.slice(2); + const options = { + config: 'docs_mapping.yaml', + plugin: null, + dryRun: false, + validate: false, + help: false, + }; + + for (let i = 0; i < args.length; i++) { + const arg = args[i]; + switch (arg) { + case '--config': + options.config = args[++i]; + break; + case '--plugin': + options.plugin = args[++i]; + break; + case '--dry-run': + options.dryRun = true; + break; + case '--validate': + options.validate = true; + break; + case '--help': + case '-h': + options.help = true; + break; + default: + console.error(`Unknown argument: ${arg}`); + options.help = true; + break; + } + } + + return options; +} + +/** + * Show help message. + */ +function showHelp() { + console.log(` +Transform plugin READMEs from influxdb3_plugins to docs-v2 format + +Usage: node port_to_docs.js [options] + +Options: + --config Path to mapping configuration file (default: docs_mapping.yaml) + --plugin Process only specified plugin + --dry-run Show what would be done without making changes + --validate Validate configuration only + --help, -h Show this help message + +Examples: + node port_to_docs.js # Process all plugins + node port_to_docs.js --plugin basic_transformation # Process specific plugin + node port_to_docs.js --dry-run # Preview changes + node port_to_docs.js --validate # Check configuration +`); +} + +/** + * Main transformation function. + */ +async function main() { + const options = parseArgs(); + + if (options.help) { + showHelp(); + process.exit(0); + } + + // Load configuration + const config = await loadMappingConfig(options.config); + + if (!config || !config.plugins) { + console.error('โŒ Invalid configuration file'); + process.exit(1); + } + + // Validate configuration + if (options.validate) { + console.log('Validating configuration...'); + let valid = true; + + for (const [pluginName, mapping] of Object.entries(config.plugins)) { + if (!mapping.source || !mapping.target) { + console.error( + `โŒ Invalid mapping for ${pluginName}: missing source or target` + ); + valid = false; + continue; + } + + try { + await fs.access(mapping.source); + } catch (error) { + console.warn( + `โš ๏ธ Source not found for ${pluginName}: ${mapping.source}` + ); + } + } + + if (valid) { + console.log('โœ… Configuration is valid'); + } + process.exit(valid ? 0 : 1); + } + + // Check if we're in the right location + if (!options.dryRun && !(await validateDocsV2Path())) { + console.log( + '\nTo use this script, ensure you are in the correct directory:' + ); + console.log(' cd docs-v2/helper-scripts/influxdb3-plugins'); + process.exit(1); + } + + // Process plugins + let pluginsToProcess = Object.entries(config.plugins); + + if (options.plugin) { + if (!config.plugins[options.plugin]) { + console.error(`โŒ Plugin '${options.plugin}' not found in configuration`); + process.exit(1); + } + pluginsToProcess = [[options.plugin, config.plugins[options.plugin]]]; + } + + console.log( + `${options.dryRun ? 'DRY RUN: ' : ''}Processing ${pluginsToProcess.length} plugin(s)...\n` + ); + + let successCount = 0; + let errorCount = 0; + + for (const [pluginName, mapping] of pluginsToProcess) { + if (await processPlugin(pluginName, mapping, options.dryRun)) { + successCount++; + } else { + errorCount++; + } + } + + // Print summary + console.log('\n' + '='.repeat(60)); + console.log('TRANSFORMATION SUMMARY'); + console.log('='.repeat(60)); + console.log(`Successfully processed: ${successCount}`); + console.log(`Errors: ${errorCount}`); + + if (errorCount === 0) { + console.log('\nโœ… All plugins processed successfully!'); + if (!options.dryRun) { + console.log('\nNext steps:'); + console.log('1. Review the generated documentation in docs-v2'); + console.log('2. Test that all links work correctly'); + console.log('3. Verify product shortcodes render properly'); + console.log('4. Commit changes in both repositories'); + } + } else { + console.log(`\nโŒ ${errorCount} plugin(s) failed to process`); + process.exit(1); + } +} + +// Handle unhandled promise rejections +process.on('unhandledRejection', (reason, promise) => { + console.error('Unhandled Rejection at:', promise, 'reason:', reason); + process.exit(1); +}); + +// Run main function +if (import.meta.url.endsWith(process.argv[1])) { + main().catch((error) => { + console.error('โŒ Fatal error:', error.message); + process.exit(1); + }); +} + +export { transformContent, processPlugin, loadMappingConfig }; diff --git a/package.json b/package.json index 118893cd3..1f4d274cb 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,10 @@ "test:codeblocks:v2": "docker compose run --rm --name v2-pytest v2-pytest", "test:codeblocks:stop-monitors": "./test/scripts/monitor-tests.sh stop cloud-dedicated-pytest && ./test/scripts/monitor-tests.sh stop clustered-pytest", "test:e2e": "node cypress/support/run-e2e-specs.js", - "test:shortcode-examples": "node cypress/support/run-e2e-specs.js --spec \"cypress/e2e/content/index.cy.js\" content/example.md" + "test:shortcode-examples": "node cypress/support/run-e2e-specs.js --spec \"cypress/e2e/content/index.cy.js\" content/example.md", + "sync-plugins": "cd helper-scripts/influxdb3-plugins && node port_to_docs.js", + "sync-plugins:dry-run": "cd helper-scripts/influxdb3-plugins && node port_to_docs.js --dry-run", + "validate-plugin-config": "cd helper-scripts/influxdb3-plugins && node port_to_docs.js --validate" }, "type": "module", "browserslist": [ From 9606e1bd3ea189f0203617cb97d09fd1426bf7aa Mon Sep 17 00:00:00 2001 From: Sven Rebhan <36194019+srebhan@users.noreply.github.com> Date: Tue, 21 Oct 2025 19:23:21 +0200 Subject: [PATCH 25/49] Telegraf v1.36.3 (#6473) * Updating changelog * Updating product version * Updating plugins --- .../aggregator-plugins/basicstats/_index.md | 2 +- .../aggregator-plugins/derivative/_index.md | 2 +- .../v1/aggregator-plugins/final/_index.md | 2 +- .../v1/aggregator-plugins/histogram/_index.md | 2 +- .../v1/aggregator-plugins/merge/_index.md | 2 +- .../v1/aggregator-plugins/minmax/_index.md | 2 +- .../v1/aggregator-plugins/quantile/_index.md | 2 +- .../v1/aggregator-plugins/starlark/_index.md | 2 +- .../aggregator-plugins/valuecounter/_index.md | 2 +- .../v1/input-plugins/activemq/_index.md | 2 +- .../v1/input-plugins/aerospike/_index.md | 2 +- .../v1/input-plugins/aliyuncms/_index.md | 2 +- .../v1/input-plugins/amd_rocm_smi/_index.md | 2 +- .../v1/input-plugins/amqp_consumer/_index.md | 2 +- .../v1/input-plugins/apache/_index.md | 2 +- .../v1/input-plugins/apcupsd/_index.md | 2 +- .../v1/input-plugins/aurora/_index.md | 2 +- .../v1/input-plugins/azure_monitor/_index.md | 2 +- .../azure_storage_queue/_index.md | 2 +- .../v1/input-plugins/bcache/_index.md | 2 +- .../v1/input-plugins/beanstalkd/_index.md | 2 +- .../telegraf/v1/input-plugins/beat/_index.md | 2 +- .../telegraf/v1/input-plugins/bind/_index.md | 2 +- .../telegraf/v1/input-plugins/bond/_index.md | 2 +- .../v1/input-plugins/burrow/_index.md | 2 +- .../telegraf/v1/input-plugins/ceph/_index.md | 2 +- .../v1/input-plugins/cgroup/_index.md | 2 +- .../v1/input-plugins/chrony/_index.md | 2 +- .../cisco_telemetry_mdt/_index.md | 2 +- .../v1/input-plugins/clickhouse/_index.md | 2 +- .../v1/input-plugins/cloud_pubsub/_index.md | 2 +- .../input-plugins/cloud_pubsub_push/_index.md | 2 +- .../v1/input-plugins/cloudwatch/_index.md | 2 +- .../cloudwatch_metric_streams/_index.md | 2 +- .../v1/input-plugins/conntrack/_index.md | 2 +- .../v1/input-plugins/consul/_index.md | 2 +- .../v1/input-plugins/consul_agent/_index.md | 2 +- .../v1/input-plugins/couchbase/_index.md | 2 +- .../v1/input-plugins/couchdb/_index.md | 2 +- .../telegraf/v1/input-plugins/cpu/_index.md | 2 +- .../telegraf/v1/input-plugins/csgo/_index.md | 2 +- .../input-plugins/ctrlx_datalayer/_index.md | 2 +- .../telegraf/v1/input-plugins/dcos/_index.md | 2 +- .../input-plugins/directory_monitor/_index.md | 2 +- .../telegraf/v1/input-plugins/disk/_index.md | 2 +- .../v1/input-plugins/diskio/_index.md | 2 +- .../v1/input-plugins/disque/_index.md | 2 +- .../v1/input-plugins/dmcache/_index.md | 2 +- .../v1/input-plugins/dns_query/_index.md | 2 +- .../v1/input-plugins/docker/_index.md | 19 ++++- .../v1/input-plugins/docker_log/_index.md | 2 +- .../v1/input-plugins/dovecot/_index.md | 2 +- .../telegraf/v1/input-plugins/dpdk/_index.md | 2 +- .../telegraf/v1/input-plugins/ecs/_index.md | 2 +- .../v1/input-plugins/elasticsearch/_index.md | 2 +- .../elasticsearch_query/_index.md | 2 +- .../v1/input-plugins/ethtool/_index.md | 2 +- .../input-plugins/eventhub_consumer/_index.md | 2 +- .../telegraf/v1/input-plugins/exec/_index.md | 2 +- .../telegraf/v1/input-plugins/execd/_index.md | 2 +- .../v1/input-plugins/fail2ban/_index.md | 2 +- .../v1/input-plugins/fibaro/_index.md | 2 +- .../telegraf/v1/input-plugins/file/_index.md | 2 +- .../v1/input-plugins/filecount/_index.md | 2 +- .../v1/input-plugins/filestat/_index.md | 2 +- .../v1/input-plugins/fireboard/_index.md | 2 +- .../v1/input-plugins/firehose/_index.md | 2 +- .../v1/input-plugins/fluentd/_index.md | 2 +- .../v1/input-plugins/fritzbox/_index.md | 2 +- .../v1/input-plugins/github/_index.md | 2 +- .../telegraf/v1/input-plugins/gnmi/_index.md | 2 +- .../google_cloud_storage/_index.md | 2 +- .../v1/input-plugins/graylog/_index.md | 2 +- .../v1/input-plugins/haproxy/_index.md | 2 +- .../v1/input-plugins/hddtemp/_index.md | 2 +- .../telegraf/v1/input-plugins/http/_index.md | 2 +- .../input-plugins/http_listener_v2/_index.md | 2 +- .../v1/input-plugins/http_response/_index.md | 2 +- .../v1/input-plugins/huebridge/_index.md | 2 +- .../v1/input-plugins/hugepages/_index.md | 2 +- .../v1/input-plugins/icinga2/_index.md | 2 +- .../v1/input-plugins/infiniband/_index.md | 2 +- .../v1/input-plugins/influxdb/_index.md | 2 +- .../input-plugins/influxdb_listener/_index.md | 2 +- .../influxdb_v2_listener/_index.md | 2 +- .../v1/input-plugins/intel_baseband/_index.md | 2 +- .../v1/input-plugins/intel_dlb/_index.md | 2 +- .../v1/input-plugins/intel_pmt/_index.md | 2 +- .../v1/input-plugins/intel_pmu/_index.md | 2 +- .../input-plugins/intel_powerstat/_index.md | 6 +- .../v1/input-plugins/intel_rdt/_index.md | 2 +- .../v1/input-plugins/internal/_index.md | 2 +- .../v1/input-plugins/internet_speed/_index.md | 2 +- .../v1/input-plugins/interrupts/_index.md | 2 +- .../v1/input-plugins/ipmi_sensor/_index.md | 2 +- .../telegraf/v1/input-plugins/ipset/_index.md | 2 +- .../v1/input-plugins/iptables/_index.md | 2 +- .../telegraf/v1/input-plugins/ipvs/_index.md | 2 +- .../v1/input-plugins/jenkins/_index.md | 2 +- .../v1/input-plugins/jolokia2_agent/_index.md | 2 +- .../v1/input-plugins/jolokia2_proxy/_index.md | 2 +- .../jti_openconfig_telemetry/_index.md | 2 +- .../v1/input-plugins/kafka_consumer/_index.md | 2 +- .../v1/input-plugins/kapacitor/_index.md | 2 +- .../v1/input-plugins/kernel/_index.md | 2 +- .../v1/input-plugins/kernel_vmstat/_index.md | 2 +- .../v1/input-plugins/kibana/_index.md | 2 +- .../input-plugins/kinesis_consumer/_index.md | 2 +- .../v1/input-plugins/knx_listener/_index.md | 2 +- .../v1/input-plugins/kube_inventory/_index.md | 2 +- .../v1/input-plugins/kubernetes/_index.md | 2 +- .../telegraf/v1/input-plugins/lanz/_index.md | 2 +- .../telegraf/v1/input-plugins/ldap/_index.md | 2 +- .../telegraf/v1/input-plugins/leofs/_index.md | 2 +- .../v1/input-plugins/libvirt/_index.md | 2 +- .../v1/input-plugins/linux_cpu/_index.md | 2 +- .../input-plugins/linux_sysctl_fs/_index.md | 2 +- .../v1/input-plugins/logstash/_index.md | 2 +- .../v1/input-plugins/lustre2/_index.md | 2 +- .../telegraf/v1/input-plugins/lvm/_index.md | 2 +- .../v1/input-plugins/mailchimp/_index.md | 2 +- .../v1/input-plugins/marklogic/_index.md | 2 +- .../v1/input-plugins/mavlink/_index.md | 2 +- .../v1/input-plugins/mcrouter/_index.md | 2 +- .../v1/input-plugins/mdstat/_index.md | 2 +- .../telegraf/v1/input-plugins/mem/_index.md | 2 +- .../v1/input-plugins/memcached/_index.md | 2 +- .../telegraf/v1/input-plugins/mesos/_index.md | 2 +- .../v1/input-plugins/minecraft/_index.md | 2 +- .../telegraf/v1/input-plugins/mock/_index.md | 2 +- .../v1/input-plugins/modbus/_index.md | 2 +- .../v1/input-plugins/mongodb/_index.md | 2 +- .../telegraf/v1/input-plugins/monit/_index.md | 2 +- .../v1/input-plugins/mqtt_consumer/_index.md | 2 +- .../v1/input-plugins/multifile/_index.md | 2 +- .../telegraf/v1/input-plugins/mysql/_index.md | 2 +- .../telegraf/v1/input-plugins/nats/_index.md | 2 +- .../v1/input-plugins/nats_consumer/_index.md | 2 +- .../v1/input-plugins/neoom_beaam/_index.md | 2 +- .../v1/input-plugins/neptune_apex/_index.md | 2 +- .../telegraf/v1/input-plugins/net/_index.md | 2 +- .../v1/input-plugins/net_response/_index.md | 2 +- .../v1/input-plugins/netflow/_index.md | 2 +- .../v1/input-plugins/netstat/_index.md | 2 +- .../v1/input-plugins/nfsclient/_index.md | 2 +- .../telegraf/v1/input-plugins/nginx/_index.md | 2 +- .../v1/input-plugins/nginx_plus/_index.md | 2 +- .../v1/input-plugins/nginx_plus_api/_index.md | 2 +- .../v1/input-plugins/nginx_sts/_index.md | 2 +- .../nginx_upstream_check/_index.md | 2 +- .../v1/input-plugins/nginx_vts/_index.md | 2 +- .../telegraf/v1/input-plugins/nomad/_index.md | 2 +- .../telegraf/v1/input-plugins/nsd/_index.md | 2 +- .../telegraf/v1/input-plugins/nsdp/_index.md | 2 +- .../telegraf/v1/input-plugins/nsq/_index.md | 2 +- .../v1/input-plugins/nsq_consumer/_index.md | 2 +- .../telegraf/v1/input-plugins/nstat/_index.md | 2 +- .../telegraf/v1/input-plugins/ntpq/_index.md | 2 +- .../v1/input-plugins/nvidia_smi/_index.md | 2 +- .../telegraf/v1/input-plugins/opcua/_index.md | 2 +- .../v1/input-plugins/opcua_listener/_index.md | 2 +- .../v1/input-plugins/openldap/_index.md | 2 +- .../v1/input-plugins/openntpd/_index.md | 2 +- .../input-plugins/opensearch_query/_index.md | 2 +- .../v1/input-plugins/opensmtpd/_index.md | 2 +- .../v1/input-plugins/openstack/_index.md | 2 +- .../v1/input-plugins/opentelemetry/_index.md | 11 ++- .../v1/input-plugins/openweathermap/_index.md | 2 +- .../v1/input-plugins/p4runtime/_index.md | 2 +- .../v1/input-plugins/passenger/_index.md | 2 +- .../telegraf/v1/input-plugins/pf/_index.md | 2 +- .../v1/input-plugins/pgbouncer/_index.md | 2 +- .../v1/input-plugins/phpfpm/_index.md | 2 +- .../telegraf/v1/input-plugins/ping/_index.md | 2 +- .../v1/input-plugins/postfix/_index.md | 2 +- .../v1/input-plugins/postgresql/_index.md | 2 +- .../postgresql_extensible/_index.md | 2 +- .../v1/input-plugins/powerdns/_index.md | 2 +- .../input-plugins/powerdns_recursor/_index.md | 2 +- .../v1/input-plugins/processes/_index.md | 2 +- .../v1/input-plugins/procstat/_index.md | 2 +- .../v1/input-plugins/prometheus/_index.md | 2 +- .../v1/input-plugins/proxmox/_index.md | 2 +- .../v1/input-plugins/puppetagent/_index.md | 2 +- .../v1/input-plugins/rabbitmq/_index.md | 4 +- .../v1/input-plugins/radius/_index.md | 2 +- .../v1/input-plugins/raindrops/_index.md | 2 +- .../telegraf/v1/input-plugins/ras/_index.md | 2 +- .../v1/input-plugins/ravendb/_index.md | 2 +- .../v1/input-plugins/redfish/_index.md | 2 +- .../telegraf/v1/input-plugins/redis/_index.md | 2 +- .../v1/input-plugins/redis_sentinel/_index.md | 2 +- .../v1/input-plugins/rethinkdb/_index.md | 2 +- .../telegraf/v1/input-plugins/riak/_index.md | 2 +- .../input-plugins/riemann_listener/_index.md | 2 +- .../v1/input-plugins/s7comm/_index.md | 2 +- .../v1/input-plugins/salesforce/_index.md | 2 +- .../v1/input-plugins/sensors/_index.md | 2 +- .../telegraf/v1/input-plugins/sflow/_index.md | 2 +- .../telegraf/v1/input-plugins/slab/_index.md | 2 +- .../telegraf/v1/input-plugins/slurm/_index.md | 2 +- .../telegraf/v1/input-plugins/smart/_index.md | 2 +- .../v1/input-plugins/smartctl/_index.md | 2 +- .../telegraf/v1/input-plugins/snmp/_index.md | 2 +- .../v1/input-plugins/snmp_trap/_index.md | 2 +- .../input-plugins/socket_listener/_index.md | 2 +- .../v1/input-plugins/socketstat/_index.md | 2 +- .../telegraf/v1/input-plugins/solr/_index.md | 2 +- .../telegraf/v1/input-plugins/sql/_index.md | 2 +- .../v1/input-plugins/sqlserver/_index.md | 2 +- .../v1/input-plugins/stackdriver/_index.md | 2 +- .../v1/input-plugins/statsd/_index.md | 2 +- .../v1/input-plugins/supervisor/_index.md | 2 +- .../v1/input-plugins/suricata/_index.md | 2 +- .../telegraf/v1/input-plugins/swap/_index.md | 2 +- .../v1/input-plugins/synproxy/_index.md | 2 +- .../v1/input-plugins/syslog/_index.md | 2 +- .../v1/input-plugins/sysstat/_index.md | 2 +- .../v1/input-plugins/system/_index.md | 2 +- .../v1/input-plugins/systemd_units/_index.md | 2 +- .../v1/input-plugins/tacacs/_index.md | 2 +- .../telegraf/v1/input-plugins/tail/_index.md | 2 +- .../v1/input-plugins/teamspeak/_index.md | 2 +- .../telegraf/v1/input-plugins/temp/_index.md | 2 +- .../v1/input-plugins/tengine/_index.md | 2 +- .../v1/input-plugins/tomcat/_index.md | 2 +- .../telegraf/v1/input-plugins/trig/_index.md | 2 +- .../v1/input-plugins/turbostat/_index.md | 2 +- .../v1/input-plugins/twemproxy/_index.md | 2 +- .../v1/input-plugins/unbound/_index.md | 2 +- .../telegraf/v1/input-plugins/upsd/_index.md | 2 +- .../telegraf/v1/input-plugins/uwsgi/_index.md | 2 +- .../v1/input-plugins/varnish/_index.md | 2 +- .../telegraf/v1/input-plugins/vault/_index.md | 2 +- .../v1/input-plugins/vsphere/_index.md | 2 +- .../v1/input-plugins/webhooks/_index.md | 2 +- .../telegraf/v1/input-plugins/whois/_index.md | 2 +- .../v1/input-plugins/win_eventlog/_index.md | 2 +- .../input-plugins/win_perf_counters/_index.md | 2 +- .../v1/input-plugins/win_services/_index.md | 2 +- .../v1/input-plugins/win_wmi/_index.md | 2 +- .../v1/input-plugins/wireguard/_index.md | 2 +- .../v1/input-plugins/wireless/_index.md | 2 +- .../v1/input-plugins/x509_cert/_index.md | 2 +- .../v1/input-plugins/xtremio/_index.md | 2 +- .../telegraf/v1/input-plugins/zfs/_index.md | 22 +++++- .../v1/input-plugins/zipkin/_index.md | 2 +- .../v1/input-plugins/zookeeper/_index.md | 2 +- .../telegraf/v1/output-plugins/amon/_index.md | 2 +- .../telegraf/v1/output-plugins/amqp/_index.md | 2 +- .../application_insights/_index.md | 2 +- .../azure_data_explorer/_index.md | 2 +- .../v1/output-plugins/azure_monitor/_index.md | 2 +- .../v1/output-plugins/bigquery/_index.md | 2 +- .../v1/output-plugins/clarify/_index.md | 2 +- .../v1/output-plugins/cloud_pubsub/_index.md | 2 +- .../v1/output-plugins/cloudwatch/_index.md | 2 +- .../output-plugins/cloudwatch_logs/_index.md | 2 +- .../v1/output-plugins/cratedb/_index.md | 2 +- .../v1/output-plugins/datadog/_index.md | 2 +- .../v1/output-plugins/discard/_index.md | 2 +- .../v1/output-plugins/dynatrace/_index.md | 2 +- .../v1/output-plugins/elasticsearch/_index.md | 2 +- .../v1/output-plugins/event_hubs/_index.md | 2 +- .../telegraf/v1/output-plugins/exec/_index.md | 2 +- .../v1/output-plugins/execd/_index.md | 2 +- .../telegraf/v1/output-plugins/file/_index.md | 2 +- .../v1/output-plugins/graphite/_index.md | 2 +- .../v1/output-plugins/graylog/_index.md | 2 +- .../v1/output-plugins/groundwork/_index.md | 2 +- .../v1/output-plugins/health/_index.md | 2 +- .../telegraf/v1/output-plugins/http/_index.md | 2 +- .../v1/output-plugins/influxdb/_index.md | 2 +- .../v1/output-plugins/influxdb_v2/_index.md | 2 +- .../v1/output-plugins/inlong/_index.md | 2 +- .../v1/output-plugins/instrumental/_index.md | 2 +- .../v1/output-plugins/iotdb/_index.md | 2 +- .../v1/output-plugins/kafka/_index.md | 2 +- .../v1/output-plugins/kinesis/_index.md | 2 +- .../v1/output-plugins/librato/_index.md | 2 +- .../v1/output-plugins/logzio/_index.md | 2 +- .../telegraf/v1/output-plugins/loki/_index.md | 2 +- .../output-plugins/microsoft_fabric/_index.md | 2 +- .../v1/output-plugins/mongodb/_index.md | 2 +- .../telegraf/v1/output-plugins/mqtt/_index.md | 2 +- .../telegraf/v1/output-plugins/nats/_index.md | 2 +- .../nebius_cloud_monitoring/_index.md | 2 +- .../v1/output-plugins/newrelic/_index.md | 2 +- .../telegraf/v1/output-plugins/nsq/_index.md | 2 +- .../v1/output-plugins/opensearch/_index.md | 2 +- .../v1/output-plugins/opentelemetry/_index.md | 2 +- .../v1/output-plugins/opentsdb/_index.md | 2 +- .../v1/output-plugins/parquet/_index.md | 2 +- .../v1/output-plugins/postgresql/_index.md | 2 +- .../prometheus_client/_index.md | 2 +- .../telegraf/v1/output-plugins/quix/_index.md | 2 +- .../output-plugins/redistimeseries/_index.md | 2 +- .../v1/output-plugins/remotefile/_index.md | 2 +- .../v1/output-plugins/riemann/_index.md | 2 +- .../v1/output-plugins/sensu/_index.md | 2 +- .../v1/output-plugins/signalfx/_index.md | 2 +- .../v1/output-plugins/socket_writer/_index.md | 2 +- .../telegraf/v1/output-plugins/sql/_index.md | 2 +- .../v1/output-plugins/stackdriver/_index.md | 2 +- .../v1/output-plugins/stomp/_index.md | 2 +- .../v1/output-plugins/sumologic/_index.md | 2 +- .../v1/output-plugins/syslog/_index.md | 2 +- .../v1/output-plugins/timestream/_index.md | 2 +- .../v1/output-plugins/warp10/_index.md | 2 +- .../v1/output-plugins/wavefront/_index.md | 2 +- .../v1/output-plugins/websocket/_index.md | 2 +- .../yandex_cloud_monitoring/_index.md | 2 +- .../v1/output-plugins/zabbix/_index.md | 2 +- .../v1/processor-plugins/aws_ec2/_index.md | 2 +- .../v1/processor-plugins/batch/_index.md | 2 +- .../v1/processor-plugins/clone/_index.md | 2 +- .../v1/processor-plugins/converter/_index.md | 2 +- .../cumulative_sum/_index.md | 2 +- .../v1/processor-plugins/date/_index.md | 2 +- .../v1/processor-plugins/dedup/_index.md | 2 +- .../v1/processor-plugins/defaults/_index.md | 2 +- .../v1/processor-plugins/enum/_index.md | 2 +- .../v1/processor-plugins/execd/_index.md | 2 +- .../v1/processor-plugins/filepath/_index.md | 2 +- .../v1/processor-plugins/filter/_index.md | 2 +- .../v1/processor-plugins/ifname/_index.md | 2 +- .../v1/processor-plugins/lookup/_index.md | 2 +- .../v1/processor-plugins/noise/_index.md | 2 +- .../v1/processor-plugins/override/_index.md | 2 +- .../v1/processor-plugins/parser/_index.md | 2 +- .../v1/processor-plugins/pivot/_index.md | 2 +- .../v1/processor-plugins/port_name/_index.md | 2 +- .../v1/processor-plugins/printer/_index.md | 2 +- .../v1/processor-plugins/regex/_index.md | 2 +- .../v1/processor-plugins/rename/_index.md | 2 +- .../processor-plugins/reverse_dns/_index.md | 2 +- .../v1/processor-plugins/round/_index.md | 2 +- .../v1/processor-plugins/s2geo/_index.md | 2 +- .../v1/processor-plugins/scale/_index.md | 2 +- .../processor-plugins/snmp_lookup/_index.md | 2 +- .../v1/processor-plugins/split/_index.md | 2 +- .../v1/processor-plugins/starlark/_index.md | 2 +- .../v1/processor-plugins/strings/_index.md | 2 +- .../v1/processor-plugins/tag_limit/_index.md | 2 +- .../v1/processor-plugins/template/_index.md | 2 +- .../v1/processor-plugins/timestamp/_index.md | 2 +- .../v1/processor-plugins/topk/_index.md | 2 +- .../v1/processor-plugins/unpivot/_index.md | 2 +- content/telegraf/v1/release-notes.md | 77 +++++++++++++++++++ data/products.yml | 2 +- 350 files changed, 471 insertions(+), 356 deletions(-) diff --git a/content/telegraf/v1/aggregator-plugins/basicstats/_index.md b/content/telegraf/v1/aggregator-plugins/basicstats/_index.md index 3359ef879..97fd33d51 100644 --- a/content/telegraf/v1/aggregator-plugins/basicstats/_index.md +++ b/content/telegraf/v1/aggregator-plugins/basicstats/_index.md @@ -10,7 +10,7 @@ introduced: "v1.5.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/aggregators/basicstats/README.md, Basic Statistics Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/aggregators/basicstats/README.md, Basic Statistics Plugin Source --- # Basic Statistics Aggregator Plugin diff --git a/content/telegraf/v1/aggregator-plugins/derivative/_index.md b/content/telegraf/v1/aggregator-plugins/derivative/_index.md index caa53a04b..6bb48bb22 100644 --- a/content/telegraf/v1/aggregator-plugins/derivative/_index.md +++ b/content/telegraf/v1/aggregator-plugins/derivative/_index.md @@ -10,7 +10,7 @@ introduced: "v1.18.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/aggregators/derivative/README.md, Derivative Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/aggregators/derivative/README.md, Derivative Plugin Source --- # Derivative Aggregator Plugin diff --git a/content/telegraf/v1/aggregator-plugins/final/_index.md b/content/telegraf/v1/aggregator-plugins/final/_index.md index 40020eb00..563e2a04c 100644 --- a/content/telegraf/v1/aggregator-plugins/final/_index.md +++ b/content/telegraf/v1/aggregator-plugins/final/_index.md @@ -10,7 +10,7 @@ introduced: "v1.11.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/aggregators/final/README.md, Final Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/aggregators/final/README.md, Final Plugin Source --- # Final Aggregator Plugin diff --git a/content/telegraf/v1/aggregator-plugins/histogram/_index.md b/content/telegraf/v1/aggregator-plugins/histogram/_index.md index 4432f05a4..234ce37b1 100644 --- a/content/telegraf/v1/aggregator-plugins/histogram/_index.md +++ b/content/telegraf/v1/aggregator-plugins/histogram/_index.md @@ -10,7 +10,7 @@ introduced: "v1.4.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/aggregators/histogram/README.md, Histogram Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/aggregators/histogram/README.md, Histogram Plugin Source --- # Histogram Aggregator Plugin diff --git a/content/telegraf/v1/aggregator-plugins/merge/_index.md b/content/telegraf/v1/aggregator-plugins/merge/_index.md index 2c3c6d800..73c1c9fb7 100644 --- a/content/telegraf/v1/aggregator-plugins/merge/_index.md +++ b/content/telegraf/v1/aggregator-plugins/merge/_index.md @@ -10,7 +10,7 @@ introduced: "v1.13.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/aggregators/merge/README.md, Merge Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/aggregators/merge/README.md, Merge Plugin Source --- # Merge Aggregator Plugin diff --git a/content/telegraf/v1/aggregator-plugins/minmax/_index.md b/content/telegraf/v1/aggregator-plugins/minmax/_index.md index ab6e8d4f4..11cb130d5 100644 --- a/content/telegraf/v1/aggregator-plugins/minmax/_index.md +++ b/content/telegraf/v1/aggregator-plugins/minmax/_index.md @@ -10,7 +10,7 @@ introduced: "v1.1.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/aggregators/minmax/README.md, Minimum-Maximum Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/aggregators/minmax/README.md, Minimum-Maximum Plugin Source --- # Minimum-Maximum Aggregator Plugin diff --git a/content/telegraf/v1/aggregator-plugins/quantile/_index.md b/content/telegraf/v1/aggregator-plugins/quantile/_index.md index 1115a5200..8634208cd 100644 --- a/content/telegraf/v1/aggregator-plugins/quantile/_index.md +++ b/content/telegraf/v1/aggregator-plugins/quantile/_index.md @@ -10,7 +10,7 @@ introduced: "v1.18.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/aggregators/quantile/README.md, Quantile Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/aggregators/quantile/README.md, Quantile Plugin Source --- # Quantile Aggregator Plugin diff --git a/content/telegraf/v1/aggregator-plugins/starlark/_index.md b/content/telegraf/v1/aggregator-plugins/starlark/_index.md index 375150389..d75a2365a 100644 --- a/content/telegraf/v1/aggregator-plugins/starlark/_index.md +++ b/content/telegraf/v1/aggregator-plugins/starlark/_index.md @@ -10,7 +10,7 @@ introduced: "v1.21.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/aggregators/starlark/README.md, Starlark Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/aggregators/starlark/README.md, Starlark Plugin Source --- # Starlark Aggregator Plugin diff --git a/content/telegraf/v1/aggregator-plugins/valuecounter/_index.md b/content/telegraf/v1/aggregator-plugins/valuecounter/_index.md index 18087519f..666cbd261 100644 --- a/content/telegraf/v1/aggregator-plugins/valuecounter/_index.md +++ b/content/telegraf/v1/aggregator-plugins/valuecounter/_index.md @@ -10,7 +10,7 @@ introduced: "v1.8.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/aggregators/valuecounter/README.md, Value Counter Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/aggregators/valuecounter/README.md, Value Counter Plugin Source --- # Value Counter Aggregator Plugin diff --git a/content/telegraf/v1/input-plugins/activemq/_index.md b/content/telegraf/v1/input-plugins/activemq/_index.md index f5b6fca83..723864a03 100644 --- a/content/telegraf/v1/input-plugins/activemq/_index.md +++ b/content/telegraf/v1/input-plugins/activemq/_index.md @@ -10,7 +10,7 @@ introduced: "v1.8.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/activemq/README.md, ActiveMQ Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/activemq/README.md, ActiveMQ Plugin Source --- # ActiveMQ Input Plugin diff --git a/content/telegraf/v1/input-plugins/aerospike/_index.md b/content/telegraf/v1/input-plugins/aerospike/_index.md index b1129d737..c4028cefd 100644 --- a/content/telegraf/v1/input-plugins/aerospike/_index.md +++ b/content/telegraf/v1/input-plugins/aerospike/_index.md @@ -12,7 +12,7 @@ removal: v1.40.0 os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/aerospike/README.md, Aerospike Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/aerospike/README.md, Aerospike Plugin Source --- # Aerospike Input Plugin diff --git a/content/telegraf/v1/input-plugins/aliyuncms/_index.md b/content/telegraf/v1/input-plugins/aliyuncms/_index.md index 911d313e2..ed8d5d80b 100644 --- a/content/telegraf/v1/input-plugins/aliyuncms/_index.md +++ b/content/telegraf/v1/input-plugins/aliyuncms/_index.md @@ -10,7 +10,7 @@ introduced: "v1.19.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/aliyuncms/README.md, Alibaba Cloud Monitor Service (Aliyun) Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/aliyuncms/README.md, Alibaba Cloud Monitor Service (Aliyun) Plugin Source --- # Alibaba Cloud Monitor Service (Aliyun) Input Plugin diff --git a/content/telegraf/v1/input-plugins/amd_rocm_smi/_index.md b/content/telegraf/v1/input-plugins/amd_rocm_smi/_index.md index 99086749a..b397e0755 100644 --- a/content/telegraf/v1/input-plugins/amd_rocm_smi/_index.md +++ b/content/telegraf/v1/input-plugins/amd_rocm_smi/_index.md @@ -10,7 +10,7 @@ introduced: "v1.20.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/amd_rocm_smi/README.md, AMD ROCm System Management Interface (SMI) Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/amd_rocm_smi/README.md, AMD ROCm System Management Interface (SMI) Plugin Source --- # AMD ROCm System Management Interface (SMI) Input Plugin diff --git a/content/telegraf/v1/input-plugins/amqp_consumer/_index.md b/content/telegraf/v1/input-plugins/amqp_consumer/_index.md index 6cc4fb8dd..e721e8ccc 100644 --- a/content/telegraf/v1/input-plugins/amqp_consumer/_index.md +++ b/content/telegraf/v1/input-plugins/amqp_consumer/_index.md @@ -10,7 +10,7 @@ introduced: "v1.3.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/amqp_consumer/README.md, AMQP Consumer Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/amqp_consumer/README.md, AMQP Consumer Plugin Source --- # AMQP Consumer Input Plugin diff --git a/content/telegraf/v1/input-plugins/apache/_index.md b/content/telegraf/v1/input-plugins/apache/_index.md index d891dda32..3aa6eeef2 100644 --- a/content/telegraf/v1/input-plugins/apache/_index.md +++ b/content/telegraf/v1/input-plugins/apache/_index.md @@ -10,7 +10,7 @@ introduced: "v1.8.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/apache/README.md, Apache Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/apache/README.md, Apache Plugin Source --- # Apache Input Plugin diff --git a/content/telegraf/v1/input-plugins/apcupsd/_index.md b/content/telegraf/v1/input-plugins/apcupsd/_index.md index c0bd60d9e..21fa0766d 100644 --- a/content/telegraf/v1/input-plugins/apcupsd/_index.md +++ b/content/telegraf/v1/input-plugins/apcupsd/_index.md @@ -10,7 +10,7 @@ introduced: "v1.12.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/apcupsd/README.md, APC UPSD Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/apcupsd/README.md, APC UPSD Plugin Source --- # APC UPSD Input Plugin diff --git a/content/telegraf/v1/input-plugins/aurora/_index.md b/content/telegraf/v1/input-plugins/aurora/_index.md index d5d267369..f23bb5cff 100644 --- a/content/telegraf/v1/input-plugins/aurora/_index.md +++ b/content/telegraf/v1/input-plugins/aurora/_index.md @@ -10,7 +10,7 @@ introduced: "v1.7.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/aurora/README.md, Apache Aurora Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/aurora/README.md, Apache Aurora Plugin Source --- # Apache Aurora Input Plugin diff --git a/content/telegraf/v1/input-plugins/azure_monitor/_index.md b/content/telegraf/v1/input-plugins/azure_monitor/_index.md index 2cc6dfbfc..ba1fb21d4 100644 --- a/content/telegraf/v1/input-plugins/azure_monitor/_index.md +++ b/content/telegraf/v1/input-plugins/azure_monitor/_index.md @@ -10,7 +10,7 @@ introduced: "v1.25.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/azure_monitor/README.md, Azure Monitor Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/azure_monitor/README.md, Azure Monitor Plugin Source --- # Azure Monitor Input Plugin diff --git a/content/telegraf/v1/input-plugins/azure_storage_queue/_index.md b/content/telegraf/v1/input-plugins/azure_storage_queue/_index.md index 94f818e4a..8c04b14ac 100644 --- a/content/telegraf/v1/input-plugins/azure_storage_queue/_index.md +++ b/content/telegraf/v1/input-plugins/azure_storage_queue/_index.md @@ -10,7 +10,7 @@ introduced: "v1.13.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/azure_storage_queue/README.md, Azure Queue Storage Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/azure_storage_queue/README.md, Azure Queue Storage Plugin Source --- # Azure Queue Storage Input Plugin diff --git a/content/telegraf/v1/input-plugins/bcache/_index.md b/content/telegraf/v1/input-plugins/bcache/_index.md index 69ab48783..93fc623ef 100644 --- a/content/telegraf/v1/input-plugins/bcache/_index.md +++ b/content/telegraf/v1/input-plugins/bcache/_index.md @@ -10,7 +10,7 @@ introduced: "v0.2.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/bcache/README.md, Bcache Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/bcache/README.md, Bcache Plugin Source --- # Bcache Input Plugin diff --git a/content/telegraf/v1/input-plugins/beanstalkd/_index.md b/content/telegraf/v1/input-plugins/beanstalkd/_index.md index 7f21d51de..b328c4a8e 100644 --- a/content/telegraf/v1/input-plugins/beanstalkd/_index.md +++ b/content/telegraf/v1/input-plugins/beanstalkd/_index.md @@ -10,7 +10,7 @@ introduced: "v1.8.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/beanstalkd/README.md, Beanstalkd Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/beanstalkd/README.md, Beanstalkd Plugin Source --- # Beanstalkd Input Plugin diff --git a/content/telegraf/v1/input-plugins/beat/_index.md b/content/telegraf/v1/input-plugins/beat/_index.md index 12ece3916..481457ff0 100644 --- a/content/telegraf/v1/input-plugins/beat/_index.md +++ b/content/telegraf/v1/input-plugins/beat/_index.md @@ -10,7 +10,7 @@ introduced: "v1.18.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/beat/README.md, Beat Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/beat/README.md, Beat Plugin Source --- # Beat Input Plugin diff --git a/content/telegraf/v1/input-plugins/bind/_index.md b/content/telegraf/v1/input-plugins/bind/_index.md index c45f3cb6f..af934218d 100644 --- a/content/telegraf/v1/input-plugins/bind/_index.md +++ b/content/telegraf/v1/input-plugins/bind/_index.md @@ -10,7 +10,7 @@ introduced: "v1.11.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/bind/README.md, BIND 9 Nameserver Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/bind/README.md, BIND 9 Nameserver Plugin Source --- # BIND 9 Nameserver Input Plugin diff --git a/content/telegraf/v1/input-plugins/bond/_index.md b/content/telegraf/v1/input-plugins/bond/_index.md index 75b00f764..59eeab4a8 100644 --- a/content/telegraf/v1/input-plugins/bond/_index.md +++ b/content/telegraf/v1/input-plugins/bond/_index.md @@ -10,7 +10,7 @@ introduced: "v1.5.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/bond/README.md, Bond Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/bond/README.md, Bond Plugin Source --- # Bond Input Plugin diff --git a/content/telegraf/v1/input-plugins/burrow/_index.md b/content/telegraf/v1/input-plugins/burrow/_index.md index ee7f48f82..b1791027b 100644 --- a/content/telegraf/v1/input-plugins/burrow/_index.md +++ b/content/telegraf/v1/input-plugins/burrow/_index.md @@ -10,7 +10,7 @@ introduced: "v1.7.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/burrow/README.md, Burrow Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/burrow/README.md, Burrow Plugin Source --- # Burrow Input Plugin diff --git a/content/telegraf/v1/input-plugins/ceph/_index.md b/content/telegraf/v1/input-plugins/ceph/_index.md index 81a7cc113..9ba689428 100644 --- a/content/telegraf/v1/input-plugins/ceph/_index.md +++ b/content/telegraf/v1/input-plugins/ceph/_index.md @@ -10,7 +10,7 @@ introduced: "v0.13.1" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/ceph/README.md, Ceph Storage Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/ceph/README.md, Ceph Storage Plugin Source --- # Ceph Storage Input Plugin diff --git a/content/telegraf/v1/input-plugins/cgroup/_index.md b/content/telegraf/v1/input-plugins/cgroup/_index.md index e47a5bd86..b7a9eb558 100644 --- a/content/telegraf/v1/input-plugins/cgroup/_index.md +++ b/content/telegraf/v1/input-plugins/cgroup/_index.md @@ -10,7 +10,7 @@ introduced: "v1.0.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/cgroup/README.md, Control Group Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/cgroup/README.md, Control Group Plugin Source --- # Control Group Input Plugin diff --git a/content/telegraf/v1/input-plugins/chrony/_index.md b/content/telegraf/v1/input-plugins/chrony/_index.md index 7c77dffe8..15925e085 100644 --- a/content/telegraf/v1/input-plugins/chrony/_index.md +++ b/content/telegraf/v1/input-plugins/chrony/_index.md @@ -10,7 +10,7 @@ introduced: "v0.13.1" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/chrony/README.md, chrony Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/chrony/README.md, chrony Plugin Source --- # chrony Input Plugin diff --git a/content/telegraf/v1/input-plugins/cisco_telemetry_mdt/_index.md b/content/telegraf/v1/input-plugins/cisco_telemetry_mdt/_index.md index 426c9b7a6..ba85a6f77 100644 --- a/content/telegraf/v1/input-plugins/cisco_telemetry_mdt/_index.md +++ b/content/telegraf/v1/input-plugins/cisco_telemetry_mdt/_index.md @@ -10,7 +10,7 @@ introduced: "v1.11.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/cisco_telemetry_mdt/README.md, Cisco Model-Driven Telemetry (MDT) Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/cisco_telemetry_mdt/README.md, Cisco Model-Driven Telemetry (MDT) Plugin Source --- # Cisco Model-Driven Telemetry (MDT) Input Plugin diff --git a/content/telegraf/v1/input-plugins/clickhouse/_index.md b/content/telegraf/v1/input-plugins/clickhouse/_index.md index e466ca3ba..70a4613fe 100644 --- a/content/telegraf/v1/input-plugins/clickhouse/_index.md +++ b/content/telegraf/v1/input-plugins/clickhouse/_index.md @@ -10,7 +10,7 @@ introduced: "v1.14.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/clickhouse/README.md, ClickHouse Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/clickhouse/README.md, ClickHouse Plugin Source --- # ClickHouse Input Plugin diff --git a/content/telegraf/v1/input-plugins/cloud_pubsub/_index.md b/content/telegraf/v1/input-plugins/cloud_pubsub/_index.md index 1d4f77f92..c7a3889ad 100644 --- a/content/telegraf/v1/input-plugins/cloud_pubsub/_index.md +++ b/content/telegraf/v1/input-plugins/cloud_pubsub/_index.md @@ -10,7 +10,7 @@ introduced: "v1.10.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/cloud_pubsub/README.md, Google Cloud PubSub Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/cloud_pubsub/README.md, Google Cloud PubSub Plugin Source --- # Google Cloud PubSub Input Plugin diff --git a/content/telegraf/v1/input-plugins/cloud_pubsub_push/_index.md b/content/telegraf/v1/input-plugins/cloud_pubsub_push/_index.md index dd0a337b0..9f47eb3ba 100644 --- a/content/telegraf/v1/input-plugins/cloud_pubsub_push/_index.md +++ b/content/telegraf/v1/input-plugins/cloud_pubsub_push/_index.md @@ -10,7 +10,7 @@ introduced: "v1.10.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/cloud_pubsub_push/README.md, Google Cloud PubSub Push Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/cloud_pubsub_push/README.md, Google Cloud PubSub Push Plugin Source --- # Google Cloud PubSub Push Input Plugin diff --git a/content/telegraf/v1/input-plugins/cloudwatch/_index.md b/content/telegraf/v1/input-plugins/cloudwatch/_index.md index b50ab03c0..25fd86136 100644 --- a/content/telegraf/v1/input-plugins/cloudwatch/_index.md +++ b/content/telegraf/v1/input-plugins/cloudwatch/_index.md @@ -10,7 +10,7 @@ introduced: "v0.12.1" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/cloudwatch/README.md, Amazon CloudWatch Statistics Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/cloudwatch/README.md, Amazon CloudWatch Statistics Plugin Source --- # Amazon CloudWatch Statistics Input Plugin diff --git a/content/telegraf/v1/input-plugins/cloudwatch_metric_streams/_index.md b/content/telegraf/v1/input-plugins/cloudwatch_metric_streams/_index.md index d24d90db3..7ee7bdda0 100644 --- a/content/telegraf/v1/input-plugins/cloudwatch_metric_streams/_index.md +++ b/content/telegraf/v1/input-plugins/cloudwatch_metric_streams/_index.md @@ -10,7 +10,7 @@ introduced: "v1.24.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/cloudwatch_metric_streams/README.md, Amazon CloudWatch Metric Streams Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/cloudwatch_metric_streams/README.md, Amazon CloudWatch Metric Streams Plugin Source --- # Amazon CloudWatch Metric Streams Input Plugin diff --git a/content/telegraf/v1/input-plugins/conntrack/_index.md b/content/telegraf/v1/input-plugins/conntrack/_index.md index 61de3af0b..683d63d2c 100644 --- a/content/telegraf/v1/input-plugins/conntrack/_index.md +++ b/content/telegraf/v1/input-plugins/conntrack/_index.md @@ -10,7 +10,7 @@ introduced: "v1.0.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/conntrack/README.md, Netfilter Conntrack Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/conntrack/README.md, Netfilter Conntrack Plugin Source --- # Netfilter Conntrack Input Plugin diff --git a/content/telegraf/v1/input-plugins/consul/_index.md b/content/telegraf/v1/input-plugins/consul/_index.md index d9a652e7a..135d13db7 100644 --- a/content/telegraf/v1/input-plugins/consul/_index.md +++ b/content/telegraf/v1/input-plugins/consul/_index.md @@ -10,7 +10,7 @@ introduced: "v1.0.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/consul/README.md, Hashicorp Consul Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/consul/README.md, Hashicorp Consul Plugin Source --- # Hashicorp Consul Input Plugin diff --git a/content/telegraf/v1/input-plugins/consul_agent/_index.md b/content/telegraf/v1/input-plugins/consul_agent/_index.md index 121bde832..c74bea8ea 100644 --- a/content/telegraf/v1/input-plugins/consul_agent/_index.md +++ b/content/telegraf/v1/input-plugins/consul_agent/_index.md @@ -10,7 +10,7 @@ introduced: "v1.22.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/consul_agent/README.md, Hashicorp Consul Agent Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/consul_agent/README.md, Hashicorp Consul Agent Plugin Source --- # Hashicorp Consul Agent Input Plugin diff --git a/content/telegraf/v1/input-plugins/couchbase/_index.md b/content/telegraf/v1/input-plugins/couchbase/_index.md index 93aff67d1..1d3c8f8d8 100644 --- a/content/telegraf/v1/input-plugins/couchbase/_index.md +++ b/content/telegraf/v1/input-plugins/couchbase/_index.md @@ -10,7 +10,7 @@ introduced: "v0.12.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/couchbase/README.md, Couchbase Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/couchbase/README.md, Couchbase Plugin Source --- # Couchbase Input Plugin diff --git a/content/telegraf/v1/input-plugins/couchdb/_index.md b/content/telegraf/v1/input-plugins/couchdb/_index.md index 3fd91fe8e..7e271846d 100644 --- a/content/telegraf/v1/input-plugins/couchdb/_index.md +++ b/content/telegraf/v1/input-plugins/couchdb/_index.md @@ -10,7 +10,7 @@ introduced: "v0.10.3" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/couchdb/README.md, Apache CouchDB Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/couchdb/README.md, Apache CouchDB Plugin Source --- # Apache CouchDB Input Plugin diff --git a/content/telegraf/v1/input-plugins/cpu/_index.md b/content/telegraf/v1/input-plugins/cpu/_index.md index c84095bc7..4331eab94 100644 --- a/content/telegraf/v1/input-plugins/cpu/_index.md +++ b/content/telegraf/v1/input-plugins/cpu/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.5" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/cpu/README.md, CPU Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/cpu/README.md, CPU Plugin Source --- # CPU Input Plugin diff --git a/content/telegraf/v1/input-plugins/csgo/_index.md b/content/telegraf/v1/input-plugins/csgo/_index.md index d3604917f..ad7620d77 100644 --- a/content/telegraf/v1/input-plugins/csgo/_index.md +++ b/content/telegraf/v1/input-plugins/csgo/_index.md @@ -10,7 +10,7 @@ introduced: "v1.18.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/csgo/README.md, Counter-Strike Global Offensive (CSGO) Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/csgo/README.md, Counter-Strike Global Offensive (CSGO) Plugin Source --- # Counter-Strike: Global Offensive (CSGO) Input Plugin diff --git a/content/telegraf/v1/input-plugins/ctrlx_datalayer/_index.md b/content/telegraf/v1/input-plugins/ctrlx_datalayer/_index.md index 5301a2bb1..1c93da76b 100644 --- a/content/telegraf/v1/input-plugins/ctrlx_datalayer/_index.md +++ b/content/telegraf/v1/input-plugins/ctrlx_datalayer/_index.md @@ -10,7 +10,7 @@ introduced: "v1.27.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/ctrlx_datalayer/README.md, Bosch Rexroth ctrlX Data Layer Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/ctrlx_datalayer/README.md, Bosch Rexroth ctrlX Data Layer Plugin Source --- # Bosch Rexroth ctrlX Data Layer Input Plugin diff --git a/content/telegraf/v1/input-plugins/dcos/_index.md b/content/telegraf/v1/input-plugins/dcos/_index.md index c508c5a46..8be3a440f 100644 --- a/content/telegraf/v1/input-plugins/dcos/_index.md +++ b/content/telegraf/v1/input-plugins/dcos/_index.md @@ -10,7 +10,7 @@ introduced: "v1.5.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/dcos/README.md, Mesosphere Distributed Cloud OS Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/dcos/README.md, Mesosphere Distributed Cloud OS Plugin Source --- # Mesosphere Distributed Cloud OS Input Plugin diff --git a/content/telegraf/v1/input-plugins/directory_monitor/_index.md b/content/telegraf/v1/input-plugins/directory_monitor/_index.md index 4d722c827..799c0e109 100644 --- a/content/telegraf/v1/input-plugins/directory_monitor/_index.md +++ b/content/telegraf/v1/input-plugins/directory_monitor/_index.md @@ -10,7 +10,7 @@ introduced: "v1.18.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/directory_monitor/README.md, Directory Monitor Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/directory_monitor/README.md, Directory Monitor Plugin Source --- # Directory Monitor Input Plugin diff --git a/content/telegraf/v1/input-plugins/disk/_index.md b/content/telegraf/v1/input-plugins/disk/_index.md index c109a7b2f..43246d2c8 100644 --- a/content/telegraf/v1/input-plugins/disk/_index.md +++ b/content/telegraf/v1/input-plugins/disk/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.1" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/disk/README.md, Disk Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/disk/README.md, Disk Plugin Source --- # Disk Input Plugin diff --git a/content/telegraf/v1/input-plugins/diskio/_index.md b/content/telegraf/v1/input-plugins/diskio/_index.md index eb05bdcf0..3f1b009ff 100644 --- a/content/telegraf/v1/input-plugins/diskio/_index.md +++ b/content/telegraf/v1/input-plugins/diskio/_index.md @@ -10,7 +10,7 @@ introduced: "v0.10.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/diskio/README.md, DiskIO Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/diskio/README.md, DiskIO Plugin Source --- # DiskIO Input Plugin diff --git a/content/telegraf/v1/input-plugins/disque/_index.md b/content/telegraf/v1/input-plugins/disque/_index.md index 212b9b02e..8c9ca7abe 100644 --- a/content/telegraf/v1/input-plugins/disque/_index.md +++ b/content/telegraf/v1/input-plugins/disque/_index.md @@ -10,7 +10,7 @@ introduced: "v0.10.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/disque/README.md, Disque Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/disque/README.md, Disque Plugin Source --- # Disque Input Plugin diff --git a/content/telegraf/v1/input-plugins/dmcache/_index.md b/content/telegraf/v1/input-plugins/dmcache/_index.md index 985206f9c..36d4e29dd 100644 --- a/content/telegraf/v1/input-plugins/dmcache/_index.md +++ b/content/telegraf/v1/input-plugins/dmcache/_index.md @@ -10,7 +10,7 @@ introduced: "v1.3.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/dmcache/README.md, Device Mapper Cache Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/dmcache/README.md, Device Mapper Cache Plugin Source --- # Device Mapper Cache Input Plugin diff --git a/content/telegraf/v1/input-plugins/dns_query/_index.md b/content/telegraf/v1/input-plugins/dns_query/_index.md index 9c7842273..410b65be6 100644 --- a/content/telegraf/v1/input-plugins/dns_query/_index.md +++ b/content/telegraf/v1/input-plugins/dns_query/_index.md @@ -10,7 +10,7 @@ introduced: "v1.4.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/dns_query/README.md, DNS Query Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/dns_query/README.md, DNS Query Plugin Source --- # DNS Query Input Plugin diff --git a/content/telegraf/v1/input-plugins/docker/_index.md b/content/telegraf/v1/input-plugins/docker/_index.md index a73b1812d..ba9bf9895 100644 --- a/content/telegraf/v1/input-plugins/docker/_index.md +++ b/content/telegraf/v1/input-plugins/docker/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.9" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/docker/README.md, Docker Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/docker/README.md, Docker Plugin Source --- # Docker Input Plugin @@ -74,6 +74,12 @@ See the [CONFIGURATION.md](/telegraf/v1/configuration/#plugins) for more details ## Timeout for docker list, info, and stats commands timeout = "5s" + ## Podman compatibility settings (auto-enabled when Podman detected) + ## Cache TTL for accurate CPU percentage calculation (default: 60s) + ## Set higher than your collection interval for accurate measurements + ## Set to 0 to keep cache entries forever (not recommended for dynamic environments) + # podman_cache_ttl = "60s" + ## Specifies for which classes a per-device metric should be issued ## Possible values are 'cpu' (cpu0, cpu1, ...), 'blkio' (8:0, 8:1, ...) and 'network' (eth0, eth1, ...) # perdevice_include = ["cpu"] @@ -114,6 +120,17 @@ relevant if the telegraf configuration can be changed by untrusted users. [4]: https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface +### Podman Compatibility + +This plugin is compatible with Podman through its Docker-compatible API. +When connected to Podman: + +- The plugin automatically detects Podman by examining the server version and + endpoint +- Uses an intelligent caching mechanism to calculate accurate CPU percentages +- Configure Podman socket endpoint, for example: + `endpoint = "unix:///run/podman/podman.sock"` + ### Docker Daemon Permissions Typically, telegraf must be given permission to access the docker daemon unix diff --git a/content/telegraf/v1/input-plugins/docker_log/_index.md b/content/telegraf/v1/input-plugins/docker_log/_index.md index c1418e28a..bb9d96e80 100644 --- a/content/telegraf/v1/input-plugins/docker_log/_index.md +++ b/content/telegraf/v1/input-plugins/docker_log/_index.md @@ -10,7 +10,7 @@ introduced: "v1.12.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/docker_log/README.md, Docker Log Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/docker_log/README.md, Docker Log Plugin Source --- # Docker Log Input Plugin diff --git a/content/telegraf/v1/input-plugins/dovecot/_index.md b/content/telegraf/v1/input-plugins/dovecot/_index.md index b46b1db0d..c8289f66d 100644 --- a/content/telegraf/v1/input-plugins/dovecot/_index.md +++ b/content/telegraf/v1/input-plugins/dovecot/_index.md @@ -10,7 +10,7 @@ introduced: "v0.10.3" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/dovecot/README.md, Dovecot Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/dovecot/README.md, Dovecot Plugin Source --- # Dovecot Input Plugin diff --git a/content/telegraf/v1/input-plugins/dpdk/_index.md b/content/telegraf/v1/input-plugins/dpdk/_index.md index 49e344c05..4942a0289 100644 --- a/content/telegraf/v1/input-plugins/dpdk/_index.md +++ b/content/telegraf/v1/input-plugins/dpdk/_index.md @@ -10,7 +10,7 @@ introduced: "v1.19.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/dpdk/README.md, Data Plane Development Kit (DPDK) Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/dpdk/README.md, Data Plane Development Kit (DPDK) Plugin Source --- # Data Plane Development Kit (DPDK) Input Plugin diff --git a/content/telegraf/v1/input-plugins/ecs/_index.md b/content/telegraf/v1/input-plugins/ecs/_index.md index 7da3973e2..114f00113 100644 --- a/content/telegraf/v1/input-plugins/ecs/_index.md +++ b/content/telegraf/v1/input-plugins/ecs/_index.md @@ -10,7 +10,7 @@ introduced: "v1.11.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/ecs/README.md, Amazon Elastic Container Service Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/ecs/README.md, Amazon Elastic Container Service Plugin Source --- # Amazon Elastic Container Service Input Plugin diff --git a/content/telegraf/v1/input-plugins/elasticsearch/_index.md b/content/telegraf/v1/input-plugins/elasticsearch/_index.md index 62f5cc68c..f9954c738 100644 --- a/content/telegraf/v1/input-plugins/elasticsearch/_index.md +++ b/content/telegraf/v1/input-plugins/elasticsearch/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.5" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/elasticsearch/README.md, Elasticsearch Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/elasticsearch/README.md, Elasticsearch Plugin Source --- # Elasticsearch Input Plugin diff --git a/content/telegraf/v1/input-plugins/elasticsearch_query/_index.md b/content/telegraf/v1/input-plugins/elasticsearch_query/_index.md index e6e15276a..d671c6593 100644 --- a/content/telegraf/v1/input-plugins/elasticsearch_query/_index.md +++ b/content/telegraf/v1/input-plugins/elasticsearch_query/_index.md @@ -10,7 +10,7 @@ introduced: "v1.20.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/elasticsearch_query/README.md, Elasticsearch Query Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/elasticsearch_query/README.md, Elasticsearch Query Plugin Source --- # Elasticsearch Query Input Plugin diff --git a/content/telegraf/v1/input-plugins/ethtool/_index.md b/content/telegraf/v1/input-plugins/ethtool/_index.md index 1bbe061da..b0e748533 100644 --- a/content/telegraf/v1/input-plugins/ethtool/_index.md +++ b/content/telegraf/v1/input-plugins/ethtool/_index.md @@ -10,7 +10,7 @@ introduced: "v1.13.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/ethtool/README.md, Ethtool Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/ethtool/README.md, Ethtool Plugin Source --- # Ethtool Input Plugin diff --git a/content/telegraf/v1/input-plugins/eventhub_consumer/_index.md b/content/telegraf/v1/input-plugins/eventhub_consumer/_index.md index 2967437b9..bc7cbc633 100644 --- a/content/telegraf/v1/input-plugins/eventhub_consumer/_index.md +++ b/content/telegraf/v1/input-plugins/eventhub_consumer/_index.md @@ -10,7 +10,7 @@ introduced: "v1.14.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/eventhub_consumer/README.md, Azure Event Hub Consumer Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/eventhub_consumer/README.md, Azure Event Hub Consumer Plugin Source --- # Azure Event Hub Consumer Input Plugin diff --git a/content/telegraf/v1/input-plugins/exec/_index.md b/content/telegraf/v1/input-plugins/exec/_index.md index c4fd89561..c6d54f6ed 100644 --- a/content/telegraf/v1/input-plugins/exec/_index.md +++ b/content/telegraf/v1/input-plugins/exec/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.5" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/exec/README.md, Exec Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/exec/README.md, Exec Plugin Source --- # Exec Input Plugin diff --git a/content/telegraf/v1/input-plugins/execd/_index.md b/content/telegraf/v1/input-plugins/execd/_index.md index 361720c32..30557798f 100644 --- a/content/telegraf/v1/input-plugins/execd/_index.md +++ b/content/telegraf/v1/input-plugins/execd/_index.md @@ -10,7 +10,7 @@ introduced: "v1.14.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/execd/README.md, Execd Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/execd/README.md, Execd Plugin Source --- # Execd Input Plugin diff --git a/content/telegraf/v1/input-plugins/fail2ban/_index.md b/content/telegraf/v1/input-plugins/fail2ban/_index.md index 9b846fe8a..77d2625d1 100644 --- a/content/telegraf/v1/input-plugins/fail2ban/_index.md +++ b/content/telegraf/v1/input-plugins/fail2ban/_index.md @@ -10,7 +10,7 @@ introduced: "v1.4.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/fail2ban/README.md, Fail2ban Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/fail2ban/README.md, Fail2ban Plugin Source --- # Fail2ban Input Plugin diff --git a/content/telegraf/v1/input-plugins/fibaro/_index.md b/content/telegraf/v1/input-plugins/fibaro/_index.md index ee2907e93..68edc16a0 100644 --- a/content/telegraf/v1/input-plugins/fibaro/_index.md +++ b/content/telegraf/v1/input-plugins/fibaro/_index.md @@ -10,7 +10,7 @@ introduced: "v1.7.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/fibaro/README.md, Fibaro Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/fibaro/README.md, Fibaro Plugin Source --- # Fibaro Input Plugin diff --git a/content/telegraf/v1/input-plugins/file/_index.md b/content/telegraf/v1/input-plugins/file/_index.md index 6a3b7deb9..c08d75fbd 100644 --- a/content/telegraf/v1/input-plugins/file/_index.md +++ b/content/telegraf/v1/input-plugins/file/_index.md @@ -10,7 +10,7 @@ introduced: "v1.8.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/file/README.md, File Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/file/README.md, File Plugin Source --- # File Input Plugin diff --git a/content/telegraf/v1/input-plugins/filecount/_index.md b/content/telegraf/v1/input-plugins/filecount/_index.md index 6ee7eb0f1..dd3b18ef4 100644 --- a/content/telegraf/v1/input-plugins/filecount/_index.md +++ b/content/telegraf/v1/input-plugins/filecount/_index.md @@ -10,7 +10,7 @@ introduced: "v1.8.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/filecount/README.md, Filecount Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/filecount/README.md, Filecount Plugin Source --- # Filecount Input Plugin diff --git a/content/telegraf/v1/input-plugins/filestat/_index.md b/content/telegraf/v1/input-plugins/filestat/_index.md index c3cb8853c..cf2a2c13f 100644 --- a/content/telegraf/v1/input-plugins/filestat/_index.md +++ b/content/telegraf/v1/input-plugins/filestat/_index.md @@ -10,7 +10,7 @@ introduced: "v0.13.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/filestat/README.md, File statistics Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/filestat/README.md, File statistics Plugin Source --- # File statistics Input Plugin diff --git a/content/telegraf/v1/input-plugins/fireboard/_index.md b/content/telegraf/v1/input-plugins/fireboard/_index.md index b54eb3844..5f473012e 100644 --- a/content/telegraf/v1/input-plugins/fireboard/_index.md +++ b/content/telegraf/v1/input-plugins/fireboard/_index.md @@ -10,7 +10,7 @@ introduced: "v1.12.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/fireboard/README.md, Fireboard Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/fireboard/README.md, Fireboard Plugin Source --- # Fireboard Input Plugin diff --git a/content/telegraf/v1/input-plugins/firehose/_index.md b/content/telegraf/v1/input-plugins/firehose/_index.md index 28f135e09..2b5872b88 100644 --- a/content/telegraf/v1/input-plugins/firehose/_index.md +++ b/content/telegraf/v1/input-plugins/firehose/_index.md @@ -10,7 +10,7 @@ introduced: "v1.34.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/firehose/README.md, AWS Data Firehose Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/firehose/README.md, AWS Data Firehose Plugin Source --- # AWS Data Firehose Input Plugin diff --git a/content/telegraf/v1/input-plugins/fluentd/_index.md b/content/telegraf/v1/input-plugins/fluentd/_index.md index d02b34d44..51ac62965 100644 --- a/content/telegraf/v1/input-plugins/fluentd/_index.md +++ b/content/telegraf/v1/input-plugins/fluentd/_index.md @@ -10,7 +10,7 @@ introduced: "v1.4.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/fluentd/README.md, Fluentd Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/fluentd/README.md, Fluentd Plugin Source --- # Fluentd Input Plugin diff --git a/content/telegraf/v1/input-plugins/fritzbox/_index.md b/content/telegraf/v1/input-plugins/fritzbox/_index.md index 6cc2ca77e..b912b8539 100644 --- a/content/telegraf/v1/input-plugins/fritzbox/_index.md +++ b/content/telegraf/v1/input-plugins/fritzbox/_index.md @@ -10,7 +10,7 @@ introduced: "v1.35.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/fritzbox/README.md, Fritzbox Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/fritzbox/README.md, Fritzbox Plugin Source --- # Fritzbox Input Plugin diff --git a/content/telegraf/v1/input-plugins/github/_index.md b/content/telegraf/v1/input-plugins/github/_index.md index 20996e3f0..41b8e0a20 100644 --- a/content/telegraf/v1/input-plugins/github/_index.md +++ b/content/telegraf/v1/input-plugins/github/_index.md @@ -10,7 +10,7 @@ introduced: "v1.11.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/github/README.md, GitHub Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/github/README.md, GitHub Plugin Source --- # GitHub Input Plugin diff --git a/content/telegraf/v1/input-plugins/gnmi/_index.md b/content/telegraf/v1/input-plugins/gnmi/_index.md index a08a7033f..9109dcdc7 100644 --- a/content/telegraf/v1/input-plugins/gnmi/_index.md +++ b/content/telegraf/v1/input-plugins/gnmi/_index.md @@ -10,7 +10,7 @@ introduced: "v1.15.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/gnmi/README.md, gNMI (gRPC Network Management Interface) Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/gnmi/README.md, gNMI (gRPC Network Management Interface) Plugin Source --- # gNMI (gRPC Network Management Interface) Input Plugin diff --git a/content/telegraf/v1/input-plugins/google_cloud_storage/_index.md b/content/telegraf/v1/input-plugins/google_cloud_storage/_index.md index e1bdbce73..609f7a38d 100644 --- a/content/telegraf/v1/input-plugins/google_cloud_storage/_index.md +++ b/content/telegraf/v1/input-plugins/google_cloud_storage/_index.md @@ -10,7 +10,7 @@ introduced: "v1.25.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/google_cloud_storage/README.md, Google Cloud Storage Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/google_cloud_storage/README.md, Google Cloud Storage Plugin Source --- # Google Cloud Storage Input Plugin diff --git a/content/telegraf/v1/input-plugins/graylog/_index.md b/content/telegraf/v1/input-plugins/graylog/_index.md index 22b549211..006bd94e3 100644 --- a/content/telegraf/v1/input-plugins/graylog/_index.md +++ b/content/telegraf/v1/input-plugins/graylog/_index.md @@ -10,7 +10,7 @@ introduced: "v1.0.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/graylog/README.md, GrayLog Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/graylog/README.md, GrayLog Plugin Source --- # GrayLog Input Plugin diff --git a/content/telegraf/v1/input-plugins/haproxy/_index.md b/content/telegraf/v1/input-plugins/haproxy/_index.md index df3a12506..c104db417 100644 --- a/content/telegraf/v1/input-plugins/haproxy/_index.md +++ b/content/telegraf/v1/input-plugins/haproxy/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.5" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/haproxy/README.md, HAProxy Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/haproxy/README.md, HAProxy Plugin Source --- # HAProxy Input Plugin diff --git a/content/telegraf/v1/input-plugins/hddtemp/_index.md b/content/telegraf/v1/input-plugins/hddtemp/_index.md index b753110d1..a7b2c484f 100644 --- a/content/telegraf/v1/input-plugins/hddtemp/_index.md +++ b/content/telegraf/v1/input-plugins/hddtemp/_index.md @@ -10,7 +10,7 @@ introduced: "v1.0.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/hddtemp/README.md, HDDtemp Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/hddtemp/README.md, HDDtemp Plugin Source --- # HDDtemp Input Plugin diff --git a/content/telegraf/v1/input-plugins/http/_index.md b/content/telegraf/v1/input-plugins/http/_index.md index 55633e00c..3c5edfd83 100644 --- a/content/telegraf/v1/input-plugins/http/_index.md +++ b/content/telegraf/v1/input-plugins/http/_index.md @@ -10,7 +10,7 @@ introduced: "v1.6.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/http/README.md, HTTP Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/http/README.md, HTTP Plugin Source --- # HTTP Input Plugin diff --git a/content/telegraf/v1/input-plugins/http_listener_v2/_index.md b/content/telegraf/v1/input-plugins/http_listener_v2/_index.md index 5d46880d6..1cca79c41 100644 --- a/content/telegraf/v1/input-plugins/http_listener_v2/_index.md +++ b/content/telegraf/v1/input-plugins/http_listener_v2/_index.md @@ -10,7 +10,7 @@ introduced: "v1.9.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/http_listener_v2/README.md, HTTP Listener v2 Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/http_listener_v2/README.md, HTTP Listener v2 Plugin Source --- # HTTP Listener v2 Input Plugin diff --git a/content/telegraf/v1/input-plugins/http_response/_index.md b/content/telegraf/v1/input-plugins/http_response/_index.md index 61a97a7a5..08646239b 100644 --- a/content/telegraf/v1/input-plugins/http_response/_index.md +++ b/content/telegraf/v1/input-plugins/http_response/_index.md @@ -10,7 +10,7 @@ introduced: "v0.12.1" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/http_response/README.md, HTTP Response Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/http_response/README.md, HTTP Response Plugin Source --- # HTTP Response Input Plugin diff --git a/content/telegraf/v1/input-plugins/huebridge/_index.md b/content/telegraf/v1/input-plugins/huebridge/_index.md index b3cac217e..e32b32a10 100644 --- a/content/telegraf/v1/input-plugins/huebridge/_index.md +++ b/content/telegraf/v1/input-plugins/huebridge/_index.md @@ -10,7 +10,7 @@ introduced: "v1.34.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/huebridge/README.md, HueBridge Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/huebridge/README.md, HueBridge Plugin Source --- # HueBridge Input Plugin diff --git a/content/telegraf/v1/input-plugins/hugepages/_index.md b/content/telegraf/v1/input-plugins/hugepages/_index.md index 1ce7037d8..4695df434 100644 --- a/content/telegraf/v1/input-plugins/hugepages/_index.md +++ b/content/telegraf/v1/input-plugins/hugepages/_index.md @@ -10,7 +10,7 @@ introduced: "v1.22.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/hugepages/README.md, Hugepages Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/hugepages/README.md, Hugepages Plugin Source --- # Hugepages Input Plugin diff --git a/content/telegraf/v1/input-plugins/icinga2/_index.md b/content/telegraf/v1/input-plugins/icinga2/_index.md index 757664147..d59023f8d 100644 --- a/content/telegraf/v1/input-plugins/icinga2/_index.md +++ b/content/telegraf/v1/input-plugins/icinga2/_index.md @@ -10,7 +10,7 @@ introduced: "v1.8.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/icinga2/README.md, Icinga2 Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/icinga2/README.md, Icinga2 Plugin Source --- # Icinga2 Input Plugin diff --git a/content/telegraf/v1/input-plugins/infiniband/_index.md b/content/telegraf/v1/input-plugins/infiniband/_index.md index 8befacbda..7ca97bc44 100644 --- a/content/telegraf/v1/input-plugins/infiniband/_index.md +++ b/content/telegraf/v1/input-plugins/infiniband/_index.md @@ -10,7 +10,7 @@ introduced: "v1.14.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/infiniband/README.md, InfiniBand Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/infiniband/README.md, InfiniBand Plugin Source --- # InfiniBand Input Plugin diff --git a/content/telegraf/v1/input-plugins/influxdb/_index.md b/content/telegraf/v1/input-plugins/influxdb/_index.md index 8fe7f58b5..f21d5f335 100644 --- a/content/telegraf/v1/input-plugins/influxdb/_index.md +++ b/content/telegraf/v1/input-plugins/influxdb/_index.md @@ -10,7 +10,7 @@ introduced: "v0.2.5" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/influxdb/README.md, InfluxDB Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/influxdb/README.md, InfluxDB Plugin Source --- # InfluxDB Input Plugin diff --git a/content/telegraf/v1/input-plugins/influxdb_listener/_index.md b/content/telegraf/v1/input-plugins/influxdb_listener/_index.md index 7e53643fa..8ba13f971 100644 --- a/content/telegraf/v1/input-plugins/influxdb_listener/_index.md +++ b/content/telegraf/v1/input-plugins/influxdb_listener/_index.md @@ -10,7 +10,7 @@ introduced: "v1.9.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/influxdb_listener/README.md, InfluxDB Listener Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/influxdb_listener/README.md, InfluxDB Listener Plugin Source --- # InfluxDB Listener Input Plugin diff --git a/content/telegraf/v1/input-plugins/influxdb_v2_listener/_index.md b/content/telegraf/v1/input-plugins/influxdb_v2_listener/_index.md index b54f91142..31f4cb433 100644 --- a/content/telegraf/v1/input-plugins/influxdb_v2_listener/_index.md +++ b/content/telegraf/v1/input-plugins/influxdb_v2_listener/_index.md @@ -10,7 +10,7 @@ introduced: "v1.16.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/influxdb_v2_listener/README.md, InfluxDB V2 Listener Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/influxdb_v2_listener/README.md, InfluxDB V2 Listener Plugin Source --- # InfluxDB V2 Listener Input Plugin diff --git a/content/telegraf/v1/input-plugins/intel_baseband/_index.md b/content/telegraf/v1/input-plugins/intel_baseband/_index.md index 645347947..f24123321 100644 --- a/content/telegraf/v1/input-plugins/intel_baseband/_index.md +++ b/content/telegraf/v1/input-plugins/intel_baseband/_index.md @@ -10,7 +10,7 @@ introduced: "v1.27.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/intel_baseband/README.md, Intel Baseband Accelerator Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/intel_baseband/README.md, Intel Baseband Accelerator Plugin Source --- # Intel Baseband Accelerator Input Plugin diff --git a/content/telegraf/v1/input-plugins/intel_dlb/_index.md b/content/telegraf/v1/input-plugins/intel_dlb/_index.md index e14a90c48..e1edd7113 100644 --- a/content/telegraf/v1/input-plugins/intel_dlb/_index.md +++ b/content/telegraf/v1/input-plugins/intel_dlb/_index.md @@ -10,7 +10,7 @@ introduced: "v1.25.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/intel_dlb/README.md, Intelยฎ Dynamic Load Balancer Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/intel_dlb/README.md, Intelยฎ Dynamic Load Balancer Plugin Source --- # Intelยฎ Dynamic Load Balancer Input Plugin diff --git a/content/telegraf/v1/input-plugins/intel_pmt/_index.md b/content/telegraf/v1/input-plugins/intel_pmt/_index.md index 7d3d4b388..eb6f93943 100644 --- a/content/telegraf/v1/input-plugins/intel_pmt/_index.md +++ b/content/telegraf/v1/input-plugins/intel_pmt/_index.md @@ -10,7 +10,7 @@ introduced: "v1.28.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/intel_pmt/README.md, Intelยฎ Platform Monitoring Technology Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/intel_pmt/README.md, Intelยฎ Platform Monitoring Technology Plugin Source --- # Intelยฎ Platform Monitoring Technology Input Plugin diff --git a/content/telegraf/v1/input-plugins/intel_pmu/_index.md b/content/telegraf/v1/input-plugins/intel_pmu/_index.md index 051d95c53..d9dfe96f9 100644 --- a/content/telegraf/v1/input-plugins/intel_pmu/_index.md +++ b/content/telegraf/v1/input-plugins/intel_pmu/_index.md @@ -10,7 +10,7 @@ introduced: "v1.21.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/intel_pmu/README.md, Intel Performance Monitoring Unit Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/intel_pmu/README.md, Intel Performance Monitoring Unit Plugin Source --- # Intel Performance Monitoring Unit Plugin diff --git a/content/telegraf/v1/input-plugins/intel_powerstat/_index.md b/content/telegraf/v1/input-plugins/intel_powerstat/_index.md index ac178abda..6022457f3 100644 --- a/content/telegraf/v1/input-plugins/intel_powerstat/_index.md +++ b/content/telegraf/v1/input-plugins/intel_powerstat/_index.md @@ -10,7 +10,7 @@ introduced: "v1.17.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/intel_powerstat/README.md, Intel PowerStat Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/intel_powerstat/README.md, Intel PowerStat Plugin Source --- # Intel PowerStat Input Plugin @@ -125,7 +125,6 @@ The following processor properties are required by the plugin: - `cpu_c3_state_residency` - `cpu_c6_state_residency` - `cpu_c7_state_residency` - - `cpu_busy_cycles` (**DEPRECATED** - superseded by `cpu_c0_state_residency_percent`) - `cpu_busy_frequency` - `cpu_temperature` - `cpu_base_frequency` @@ -134,7 +133,6 @@ The following processor properties are required by the plugin: - `aperfmperf` shall be present to collect the following metrics: - `cpu_c0_state_residency` - `cpu_c1_state_residency` - - `cpu_busy_cycles` (**DEPRECATED** - superseded by `cpu_c0_state_residency_percent`) - `cpu_busy_frequency` - `dts` shall be present to collect: - `cpu_temperature` @@ -314,7 +312,6 @@ Details of these dependencies are discussed above: | `cpu_c3_state_residency` | `cpu_metrics` | `msr` module | | `cpu_c6_state_residency` | `cpu_metrics` | `msr` module | | `cpu_c7_state_residency` | `cpu_metrics` | `msr` module | -| `cpu_busy_cycles` (**DEPRECATED**, use `cpu_c0_state_residency_percent`) | `cpu_metrics` | `msr` module | | `cpu_temperature` | `cpu_metrics` | `msr` module | | `cpu_busy_frequency` | `cpu_metrics` | `msr` module | | `cpu_c0_substate_c01` | `cpu_metrics` | `perf` interface | @@ -418,7 +415,6 @@ The following measurements are supported by Intel PowerStat plugin: | `cpu_c0_substate_c01_percent` | Percentage of time that CPU Core spent in C0.1 substate out of the total time in the C0 state. | % | | `cpu_c0_substate_c02_percent` | Percentage of time that CPU Core spent in C0.2 substate out of the total time in the C0 state. | % | | `cpu_c0_substate_c0_wait_percent` | Percentage of time that CPU Core spent in C0_Wait substate out of the total time in the C0 state. | % | - | `cpu_busy_cycles_percent` | (**DEPRECATED** - superseded by cpu_c0_state_residency_percent) CPU Core Busy cycles as a ratio of Cycles spent in C0 state residency to all cycles executed by CPU Core. | % | - `powerstat_package` - The following tags are returned by plugin with `powerstat_package` measurements: diff --git a/content/telegraf/v1/input-plugins/intel_rdt/_index.md b/content/telegraf/v1/input-plugins/intel_rdt/_index.md index e272797cb..b4f67a067 100644 --- a/content/telegraf/v1/input-plugins/intel_rdt/_index.md +++ b/content/telegraf/v1/input-plugins/intel_rdt/_index.md @@ -10,7 +10,7 @@ introduced: "v1.16.0" os_support: "freebsd, linux, macos" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/intel_rdt/README.md, Intel RDT Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/intel_rdt/README.md, Intel RDT Plugin Source --- # Intel RDT Input Plugin diff --git a/content/telegraf/v1/input-plugins/internal/_index.md b/content/telegraf/v1/input-plugins/internal/_index.md index 6e8fc5cd4..8664cde0a 100644 --- a/content/telegraf/v1/input-plugins/internal/_index.md +++ b/content/telegraf/v1/input-plugins/internal/_index.md @@ -10,7 +10,7 @@ introduced: "v1.2.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/internal/README.md, Telegraf Internal Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/internal/README.md, Telegraf Internal Plugin Source --- # Telegraf Internal Input Plugin diff --git a/content/telegraf/v1/input-plugins/internet_speed/_index.md b/content/telegraf/v1/input-plugins/internet_speed/_index.md index 2827aeccd..a486f475e 100644 --- a/content/telegraf/v1/input-plugins/internet_speed/_index.md +++ b/content/telegraf/v1/input-plugins/internet_speed/_index.md @@ -10,7 +10,7 @@ introduced: "v1.20.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/internet_speed/README.md, Internet Speed Monitor Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/internet_speed/README.md, Internet Speed Monitor Plugin Source --- # Internet Speed Monitor Input Plugin diff --git a/content/telegraf/v1/input-plugins/interrupts/_index.md b/content/telegraf/v1/input-plugins/interrupts/_index.md index 74df3d5d4..8aa45b09c 100644 --- a/content/telegraf/v1/input-plugins/interrupts/_index.md +++ b/content/telegraf/v1/input-plugins/interrupts/_index.md @@ -10,7 +10,7 @@ introduced: "v1.3.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/interrupts/README.md, Interrupts Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/interrupts/README.md, Interrupts Plugin Source --- # Interrupts Input Plugin diff --git a/content/telegraf/v1/input-plugins/ipmi_sensor/_index.md b/content/telegraf/v1/input-plugins/ipmi_sensor/_index.md index 28a673d4d..eb95011bd 100644 --- a/content/telegraf/v1/input-plugins/ipmi_sensor/_index.md +++ b/content/telegraf/v1/input-plugins/ipmi_sensor/_index.md @@ -10,7 +10,7 @@ introduced: "v0.12.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/ipmi_sensor/README.md, IPMI Sensor Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/ipmi_sensor/README.md, IPMI Sensor Plugin Source --- # IPMI Sensor Input Plugin diff --git a/content/telegraf/v1/input-plugins/ipset/_index.md b/content/telegraf/v1/input-plugins/ipset/_index.md index ca8e6505d..5b4e38e7c 100644 --- a/content/telegraf/v1/input-plugins/ipset/_index.md +++ b/content/telegraf/v1/input-plugins/ipset/_index.md @@ -10,7 +10,7 @@ introduced: "v1.6.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/ipset/README.md, Ipset Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/ipset/README.md, Ipset Plugin Source --- # Ipset Input Plugin diff --git a/content/telegraf/v1/input-plugins/iptables/_index.md b/content/telegraf/v1/input-plugins/iptables/_index.md index 84e1a70b0..5dc3e64eb 100644 --- a/content/telegraf/v1/input-plugins/iptables/_index.md +++ b/content/telegraf/v1/input-plugins/iptables/_index.md @@ -10,7 +10,7 @@ introduced: "v1.1.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/iptables/README.md, Iptables Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/iptables/README.md, Iptables Plugin Source --- # Iptables Input Plugin diff --git a/content/telegraf/v1/input-plugins/ipvs/_index.md b/content/telegraf/v1/input-plugins/ipvs/_index.md index b74d7c615..a4cf34d7a 100644 --- a/content/telegraf/v1/input-plugins/ipvs/_index.md +++ b/content/telegraf/v1/input-plugins/ipvs/_index.md @@ -10,7 +10,7 @@ introduced: "v1.9.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/ipvs/README.md, IPVS Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/ipvs/README.md, IPVS Plugin Source --- # IPVS Input Plugin diff --git a/content/telegraf/v1/input-plugins/jenkins/_index.md b/content/telegraf/v1/input-plugins/jenkins/_index.md index 53dc4fc2e..f5b38194a 100644 --- a/content/telegraf/v1/input-plugins/jenkins/_index.md +++ b/content/telegraf/v1/input-plugins/jenkins/_index.md @@ -10,7 +10,7 @@ introduced: "v1.9.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/jenkins/README.md, Jenkins Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/jenkins/README.md, Jenkins Plugin Source --- # Jenkins Input Plugin diff --git a/content/telegraf/v1/input-plugins/jolokia2_agent/_index.md b/content/telegraf/v1/input-plugins/jolokia2_agent/_index.md index 04a40baaf..fe51e86c4 100644 --- a/content/telegraf/v1/input-plugins/jolokia2_agent/_index.md +++ b/content/telegraf/v1/input-plugins/jolokia2_agent/_index.md @@ -10,7 +10,7 @@ introduced: "v1.5.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/jolokia2_agent/README.md, Jolokia2 Agent Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/jolokia2_agent/README.md, Jolokia2 Agent Plugin Source --- # Jolokia2 Agent Input Plugin diff --git a/content/telegraf/v1/input-plugins/jolokia2_proxy/_index.md b/content/telegraf/v1/input-plugins/jolokia2_proxy/_index.md index 885ff2147..b26a4c639 100644 --- a/content/telegraf/v1/input-plugins/jolokia2_proxy/_index.md +++ b/content/telegraf/v1/input-plugins/jolokia2_proxy/_index.md @@ -10,7 +10,7 @@ introduced: "v1.5.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/jolokia2_proxy/README.md, Jolokia2 Proxy Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/jolokia2_proxy/README.md, Jolokia2 Proxy Plugin Source --- # Jolokia2 Proxy Input Plugin diff --git a/content/telegraf/v1/input-plugins/jti_openconfig_telemetry/_index.md b/content/telegraf/v1/input-plugins/jti_openconfig_telemetry/_index.md index 65fe22450..e8325b228 100644 --- a/content/telegraf/v1/input-plugins/jti_openconfig_telemetry/_index.md +++ b/content/telegraf/v1/input-plugins/jti_openconfig_telemetry/_index.md @@ -10,7 +10,7 @@ introduced: "v1.7.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/jti_openconfig_telemetry/README.md, Juniper Telemetry Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/jti_openconfig_telemetry/README.md, Juniper Telemetry Plugin Source --- # Juniper Telemetry Input Plugin diff --git a/content/telegraf/v1/input-plugins/kafka_consumer/_index.md b/content/telegraf/v1/input-plugins/kafka_consumer/_index.md index d4d008f17..2ee749618 100644 --- a/content/telegraf/v1/input-plugins/kafka_consumer/_index.md +++ b/content/telegraf/v1/input-plugins/kafka_consumer/_index.md @@ -10,7 +10,7 @@ introduced: "v0.2.3" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/kafka_consumer/README.md, Apache Kafka Consumer Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/kafka_consumer/README.md, Apache Kafka Consumer Plugin Source --- # Apache Kafka Consumer Input Plugin diff --git a/content/telegraf/v1/input-plugins/kapacitor/_index.md b/content/telegraf/v1/input-plugins/kapacitor/_index.md index 026579d3d..1b42ed561 100644 --- a/content/telegraf/v1/input-plugins/kapacitor/_index.md +++ b/content/telegraf/v1/input-plugins/kapacitor/_index.md @@ -10,7 +10,7 @@ introduced: "v1.3.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/kapacitor/README.md, Kapacitor Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/kapacitor/README.md, Kapacitor Plugin Source --- # Kapacitor Input Plugin diff --git a/content/telegraf/v1/input-plugins/kernel/_index.md b/content/telegraf/v1/input-plugins/kernel/_index.md index 7413a29c9..85169238d 100644 --- a/content/telegraf/v1/input-plugins/kernel/_index.md +++ b/content/telegraf/v1/input-plugins/kernel/_index.md @@ -10,7 +10,7 @@ introduced: "v0.11.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/kernel/README.md, Kernel Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/kernel/README.md, Kernel Plugin Source --- # Kernel Input Plugin diff --git a/content/telegraf/v1/input-plugins/kernel_vmstat/_index.md b/content/telegraf/v1/input-plugins/kernel_vmstat/_index.md index 739b49cd6..af6a2be0e 100644 --- a/content/telegraf/v1/input-plugins/kernel_vmstat/_index.md +++ b/content/telegraf/v1/input-plugins/kernel_vmstat/_index.md @@ -10,7 +10,7 @@ introduced: "v1.0.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/kernel_vmstat/README.md, Kernel VM Statistics Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/kernel_vmstat/README.md, Kernel VM Statistics Plugin Source --- # Kernel VM Statistics Input Plugin diff --git a/content/telegraf/v1/input-plugins/kibana/_index.md b/content/telegraf/v1/input-plugins/kibana/_index.md index a87c5e6db..32d085d94 100644 --- a/content/telegraf/v1/input-plugins/kibana/_index.md +++ b/content/telegraf/v1/input-plugins/kibana/_index.md @@ -10,7 +10,7 @@ introduced: "v1.8.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/kibana/README.md, Kibana Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/kibana/README.md, Kibana Plugin Source --- # Kibana Input Plugin diff --git a/content/telegraf/v1/input-plugins/kinesis_consumer/_index.md b/content/telegraf/v1/input-plugins/kinesis_consumer/_index.md index 6a16b3370..8e23559c3 100644 --- a/content/telegraf/v1/input-plugins/kinesis_consumer/_index.md +++ b/content/telegraf/v1/input-plugins/kinesis_consumer/_index.md @@ -10,7 +10,7 @@ introduced: "v1.10.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/kinesis_consumer/README.md, Kinesis Consumer Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/kinesis_consumer/README.md, Kinesis Consumer Plugin Source --- # Kinesis Consumer Input Plugin diff --git a/content/telegraf/v1/input-plugins/knx_listener/_index.md b/content/telegraf/v1/input-plugins/knx_listener/_index.md index 4ec9f3f45..2a371cca9 100644 --- a/content/telegraf/v1/input-plugins/knx_listener/_index.md +++ b/content/telegraf/v1/input-plugins/knx_listener/_index.md @@ -10,7 +10,7 @@ introduced: "v1.19.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/knx_listener/README.md, KNX Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/knx_listener/README.md, KNX Plugin Source --- # KNX Input Plugin diff --git a/content/telegraf/v1/input-plugins/kube_inventory/_index.md b/content/telegraf/v1/input-plugins/kube_inventory/_index.md index 9e4a1963e..0a4b3eac9 100644 --- a/content/telegraf/v1/input-plugins/kube_inventory/_index.md +++ b/content/telegraf/v1/input-plugins/kube_inventory/_index.md @@ -10,7 +10,7 @@ introduced: "v1.10.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/kube_inventory/README.md, Kubernetes Inventory Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/kube_inventory/README.md, Kubernetes Inventory Plugin Source --- # Kubernetes Inventory Input Plugin diff --git a/content/telegraf/v1/input-plugins/kubernetes/_index.md b/content/telegraf/v1/input-plugins/kubernetes/_index.md index ad953e3bb..d88d15cb1 100644 --- a/content/telegraf/v1/input-plugins/kubernetes/_index.md +++ b/content/telegraf/v1/input-plugins/kubernetes/_index.md @@ -10,7 +10,7 @@ introduced: "v1.1.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/kubernetes/README.md, Kubernetes Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/kubernetes/README.md, Kubernetes Plugin Source --- # Kubernetes Input Plugin diff --git a/content/telegraf/v1/input-plugins/lanz/_index.md b/content/telegraf/v1/input-plugins/lanz/_index.md index ef54dc583..ee20776b9 100644 --- a/content/telegraf/v1/input-plugins/lanz/_index.md +++ b/content/telegraf/v1/input-plugins/lanz/_index.md @@ -10,7 +10,7 @@ introduced: "v1.14.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/lanz/README.md, Arista LANZ Consumer Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/lanz/README.md, Arista LANZ Consumer Plugin Source --- # Arista LANZ Consumer Input Plugin diff --git a/content/telegraf/v1/input-plugins/ldap/_index.md b/content/telegraf/v1/input-plugins/ldap/_index.md index 4f9de8ce4..f9417c764 100644 --- a/content/telegraf/v1/input-plugins/ldap/_index.md +++ b/content/telegraf/v1/input-plugins/ldap/_index.md @@ -10,7 +10,7 @@ introduced: "v1.29.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/ldap/README.md, LDAP Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/ldap/README.md, LDAP Plugin Source --- # LDAP Input Plugin diff --git a/content/telegraf/v1/input-plugins/leofs/_index.md b/content/telegraf/v1/input-plugins/leofs/_index.md index 8039e207b..97a20387d 100644 --- a/content/telegraf/v1/input-plugins/leofs/_index.md +++ b/content/telegraf/v1/input-plugins/leofs/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.5" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/leofs/README.md, LeoFS Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/leofs/README.md, LeoFS Plugin Source --- # LeoFS Input Plugin diff --git a/content/telegraf/v1/input-plugins/libvirt/_index.md b/content/telegraf/v1/input-plugins/libvirt/_index.md index 634e73f64..adb68a3a8 100644 --- a/content/telegraf/v1/input-plugins/libvirt/_index.md +++ b/content/telegraf/v1/input-plugins/libvirt/_index.md @@ -10,7 +10,7 @@ introduced: "v1.25.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/libvirt/README.md, Libvirt Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/libvirt/README.md, Libvirt Plugin Source --- # Libvirt Input Plugin diff --git a/content/telegraf/v1/input-plugins/linux_cpu/_index.md b/content/telegraf/v1/input-plugins/linux_cpu/_index.md index df72c209f..cbe276461 100644 --- a/content/telegraf/v1/input-plugins/linux_cpu/_index.md +++ b/content/telegraf/v1/input-plugins/linux_cpu/_index.md @@ -10,7 +10,7 @@ introduced: "v1.24.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/linux_cpu/README.md, Linux CPU Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/linux_cpu/README.md, Linux CPU Plugin Source --- # Linux CPU Input Plugin diff --git a/content/telegraf/v1/input-plugins/linux_sysctl_fs/_index.md b/content/telegraf/v1/input-plugins/linux_sysctl_fs/_index.md index 7af53ba8e..af0526c4c 100644 --- a/content/telegraf/v1/input-plugins/linux_sysctl_fs/_index.md +++ b/content/telegraf/v1/input-plugins/linux_sysctl_fs/_index.md @@ -10,7 +10,7 @@ introduced: "v1.24.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/linux_sysctl_fs/README.md, Linux Sysctl Filesystem Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/linux_sysctl_fs/README.md, Linux Sysctl Filesystem Plugin Source --- # Linux Sysctl Filesystem Input Plugin diff --git a/content/telegraf/v1/input-plugins/logstash/_index.md b/content/telegraf/v1/input-plugins/logstash/_index.md index cbc240f6f..a1b8b43b3 100644 --- a/content/telegraf/v1/input-plugins/logstash/_index.md +++ b/content/telegraf/v1/input-plugins/logstash/_index.md @@ -10,7 +10,7 @@ introduced: "v1.12.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/logstash/README.md, Logstash Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/logstash/README.md, Logstash Plugin Source --- # Logstash Input Plugin diff --git a/content/telegraf/v1/input-plugins/lustre2/_index.md b/content/telegraf/v1/input-plugins/lustre2/_index.md index 20af5c5f1..5ea7109a6 100644 --- a/content/telegraf/v1/input-plugins/lustre2/_index.md +++ b/content/telegraf/v1/input-plugins/lustre2/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.5" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/lustre2/README.md, Lustre Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/lustre2/README.md, Lustre Plugin Source --- # Lustre Input Plugin diff --git a/content/telegraf/v1/input-plugins/lvm/_index.md b/content/telegraf/v1/input-plugins/lvm/_index.md index f789dae61..fcf010c06 100644 --- a/content/telegraf/v1/input-plugins/lvm/_index.md +++ b/content/telegraf/v1/input-plugins/lvm/_index.md @@ -10,7 +10,7 @@ introduced: "v1.21.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/lvm/README.md, Logical Volume Manager Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/lvm/README.md, Logical Volume Manager Plugin Source --- # Logical Volume Manager Input Plugin diff --git a/content/telegraf/v1/input-plugins/mailchimp/_index.md b/content/telegraf/v1/input-plugins/mailchimp/_index.md index 0732ea746..936652377 100644 --- a/content/telegraf/v1/input-plugins/mailchimp/_index.md +++ b/content/telegraf/v1/input-plugins/mailchimp/_index.md @@ -10,7 +10,7 @@ introduced: "v0.2.4" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/mailchimp/README.md, Mailchimp Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/mailchimp/README.md, Mailchimp Plugin Source --- # Mailchimp Input Plugin diff --git a/content/telegraf/v1/input-plugins/marklogic/_index.md b/content/telegraf/v1/input-plugins/marklogic/_index.md index 6b76737b4..304a22798 100644 --- a/content/telegraf/v1/input-plugins/marklogic/_index.md +++ b/content/telegraf/v1/input-plugins/marklogic/_index.md @@ -10,7 +10,7 @@ introduced: "v1.12.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/marklogic/README.md, MarkLogic Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/marklogic/README.md, MarkLogic Plugin Source --- # MarkLogic Input Plugin diff --git a/content/telegraf/v1/input-plugins/mavlink/_index.md b/content/telegraf/v1/input-plugins/mavlink/_index.md index 1e60b3026..3c544867b 100644 --- a/content/telegraf/v1/input-plugins/mavlink/_index.md +++ b/content/telegraf/v1/input-plugins/mavlink/_index.md @@ -10,7 +10,7 @@ introduced: "v1.35.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/mavlink/README.md, MavLink Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/mavlink/README.md, MavLink Plugin Source --- # MavLink Input Plugin diff --git a/content/telegraf/v1/input-plugins/mcrouter/_index.md b/content/telegraf/v1/input-plugins/mcrouter/_index.md index 2e91b8dc8..63f352ac9 100644 --- a/content/telegraf/v1/input-plugins/mcrouter/_index.md +++ b/content/telegraf/v1/input-plugins/mcrouter/_index.md @@ -10,7 +10,7 @@ introduced: "v1.7.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/mcrouter/README.md, Mcrouter Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/mcrouter/README.md, Mcrouter Plugin Source --- # Mcrouter Input Plugin diff --git a/content/telegraf/v1/input-plugins/mdstat/_index.md b/content/telegraf/v1/input-plugins/mdstat/_index.md index fc719b167..fd5465302 100644 --- a/content/telegraf/v1/input-plugins/mdstat/_index.md +++ b/content/telegraf/v1/input-plugins/mdstat/_index.md @@ -10,7 +10,7 @@ introduced: "v1.20.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/mdstat/README.md, MD RAID Statistics Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/mdstat/README.md, MD RAID Statistics Plugin Source --- # MD RAID Statistics Input Plugin diff --git a/content/telegraf/v1/input-plugins/mem/_index.md b/content/telegraf/v1/input-plugins/mem/_index.md index 6fb24e74c..a91ffba26 100644 --- a/content/telegraf/v1/input-plugins/mem/_index.md +++ b/content/telegraf/v1/input-plugins/mem/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.5" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/mem/README.md, Memory Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/mem/README.md, Memory Plugin Source --- # Memory Input Plugin diff --git a/content/telegraf/v1/input-plugins/memcached/_index.md b/content/telegraf/v1/input-plugins/memcached/_index.md index d5220f3d4..046b9462e 100644 --- a/content/telegraf/v1/input-plugins/memcached/_index.md +++ b/content/telegraf/v1/input-plugins/memcached/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.2" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/memcached/README.md, Memcached Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/memcached/README.md, Memcached Plugin Source --- # Memcached Input Plugin diff --git a/content/telegraf/v1/input-plugins/mesos/_index.md b/content/telegraf/v1/input-plugins/mesos/_index.md index 035a2a1c3..d55b8c004 100644 --- a/content/telegraf/v1/input-plugins/mesos/_index.md +++ b/content/telegraf/v1/input-plugins/mesos/_index.md @@ -10,7 +10,7 @@ introduced: "v0.10.3" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/mesos/README.md, Apache Mesos Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/mesos/README.md, Apache Mesos Plugin Source --- # Apache Mesos Input Plugin diff --git a/content/telegraf/v1/input-plugins/minecraft/_index.md b/content/telegraf/v1/input-plugins/minecraft/_index.md index 1b2cb587d..bdae7e716 100644 --- a/content/telegraf/v1/input-plugins/minecraft/_index.md +++ b/content/telegraf/v1/input-plugins/minecraft/_index.md @@ -10,7 +10,7 @@ introduced: "v1.4.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/minecraft/README.md, Minecraft Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/minecraft/README.md, Minecraft Plugin Source --- # Minecraft Input Plugin diff --git a/content/telegraf/v1/input-plugins/mock/_index.md b/content/telegraf/v1/input-plugins/mock/_index.md index ec3e37443..d33b0b551 100644 --- a/content/telegraf/v1/input-plugins/mock/_index.md +++ b/content/telegraf/v1/input-plugins/mock/_index.md @@ -10,7 +10,7 @@ introduced: "v1.22.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/mock/README.md, Mock Data Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/mock/README.md, Mock Data Plugin Source --- # Mock Data Input Plugin diff --git a/content/telegraf/v1/input-plugins/modbus/_index.md b/content/telegraf/v1/input-plugins/modbus/_index.md index acbaef5d0..8f45ac6ce 100644 --- a/content/telegraf/v1/input-plugins/modbus/_index.md +++ b/content/telegraf/v1/input-plugins/modbus/_index.md @@ -10,7 +10,7 @@ introduced: "v1.14.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/modbus/README.md, Modbus Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/modbus/README.md, Modbus Plugin Source --- diff --git a/content/telegraf/v1/input-plugins/mongodb/_index.md b/content/telegraf/v1/input-plugins/mongodb/_index.md index e2c992c93..ac2e9f8ee 100644 --- a/content/telegraf/v1/input-plugins/mongodb/_index.md +++ b/content/telegraf/v1/input-plugins/mongodb/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.5" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/mongodb/README.md, MongoDB Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/mongodb/README.md, MongoDB Plugin Source --- # MongoDB Input Plugin diff --git a/content/telegraf/v1/input-plugins/monit/_index.md b/content/telegraf/v1/input-plugins/monit/_index.md index e88daee02..182f5655c 100644 --- a/content/telegraf/v1/input-plugins/monit/_index.md +++ b/content/telegraf/v1/input-plugins/monit/_index.md @@ -10,7 +10,7 @@ introduced: "v1.14.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/monit/README.md, Monit Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/monit/README.md, Monit Plugin Source --- # Monit Input Plugin diff --git a/content/telegraf/v1/input-plugins/mqtt_consumer/_index.md b/content/telegraf/v1/input-plugins/mqtt_consumer/_index.md index 6d19097ef..a0c851f48 100644 --- a/content/telegraf/v1/input-plugins/mqtt_consumer/_index.md +++ b/content/telegraf/v1/input-plugins/mqtt_consumer/_index.md @@ -10,7 +10,7 @@ introduced: "v0.10.3" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/mqtt_consumer/README.md, MQTT Consumer Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/mqtt_consumer/README.md, MQTT Consumer Plugin Source --- # MQTT Consumer Input Plugin diff --git a/content/telegraf/v1/input-plugins/multifile/_index.md b/content/telegraf/v1/input-plugins/multifile/_index.md index e04242b55..57e4a0faf 100644 --- a/content/telegraf/v1/input-plugins/multifile/_index.md +++ b/content/telegraf/v1/input-plugins/multifile/_index.md @@ -10,7 +10,7 @@ introduced: "v1.10.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/multifile/README.md, Multifile Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/multifile/README.md, Multifile Plugin Source --- # Multifile Input Plugin diff --git a/content/telegraf/v1/input-plugins/mysql/_index.md b/content/telegraf/v1/input-plugins/mysql/_index.md index cf06f5819..b2541f33b 100644 --- a/content/telegraf/v1/input-plugins/mysql/_index.md +++ b/content/telegraf/v1/input-plugins/mysql/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.1" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/mysql/README.md, MySQL Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/mysql/README.md, MySQL Plugin Source --- # MySQL Input Plugin diff --git a/content/telegraf/v1/input-plugins/nats/_index.md b/content/telegraf/v1/input-plugins/nats/_index.md index 8bc981638..467f06ab6 100644 --- a/content/telegraf/v1/input-plugins/nats/_index.md +++ b/content/telegraf/v1/input-plugins/nats/_index.md @@ -10,7 +10,7 @@ introduced: "v1.6.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/nats/README.md, NATS Server Monitoring Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/nats/README.md, NATS Server Monitoring Plugin Source --- # NATS Server Monitoring Input Plugin diff --git a/content/telegraf/v1/input-plugins/nats_consumer/_index.md b/content/telegraf/v1/input-plugins/nats_consumer/_index.md index 9d4d1c26d..f8507ea72 100644 --- a/content/telegraf/v1/input-plugins/nats_consumer/_index.md +++ b/content/telegraf/v1/input-plugins/nats_consumer/_index.md @@ -10,7 +10,7 @@ introduced: "v0.10.3" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/nats_consumer/README.md, NATS Consumer Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/nats_consumer/README.md, NATS Consumer Plugin Source --- # NATS Consumer Input Plugin diff --git a/content/telegraf/v1/input-plugins/neoom_beaam/_index.md b/content/telegraf/v1/input-plugins/neoom_beaam/_index.md index 7db955597..74ee89093 100644 --- a/content/telegraf/v1/input-plugins/neoom_beaam/_index.md +++ b/content/telegraf/v1/input-plugins/neoom_beaam/_index.md @@ -10,7 +10,7 @@ introduced: "v1.33.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/neoom_beaam/README.md, Neoom Beaam Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/neoom_beaam/README.md, Neoom Beaam Plugin Source --- # Neoom Beaam Input Plugin diff --git a/content/telegraf/v1/input-plugins/neptune_apex/_index.md b/content/telegraf/v1/input-plugins/neptune_apex/_index.md index bde66cda2..05fad5039 100644 --- a/content/telegraf/v1/input-plugins/neptune_apex/_index.md +++ b/content/telegraf/v1/input-plugins/neptune_apex/_index.md @@ -10,7 +10,7 @@ introduced: "v1.10.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/neptune_apex/README.md, Neptune Apex Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/neptune_apex/README.md, Neptune Apex Plugin Source --- # Neptune Apex Input Plugin diff --git a/content/telegraf/v1/input-plugins/net/_index.md b/content/telegraf/v1/input-plugins/net/_index.md index 674e4ce33..df474d030 100644 --- a/content/telegraf/v1/input-plugins/net/_index.md +++ b/content/telegraf/v1/input-plugins/net/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.1" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/net/README.md, Network Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/net/README.md, Network Plugin Source --- # Network Input Plugin diff --git a/content/telegraf/v1/input-plugins/net_response/_index.md b/content/telegraf/v1/input-plugins/net_response/_index.md index e838fabcd..3997be393 100644 --- a/content/telegraf/v1/input-plugins/net_response/_index.md +++ b/content/telegraf/v1/input-plugins/net_response/_index.md @@ -10,7 +10,7 @@ introduced: "v0.10.3" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/net_response/README.md, Network Response Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/net_response/README.md, Network Response Plugin Source --- # Network Response Input Plugin diff --git a/content/telegraf/v1/input-plugins/netflow/_index.md b/content/telegraf/v1/input-plugins/netflow/_index.md index e6e7ca6bd..bc3f37666 100644 --- a/content/telegraf/v1/input-plugins/netflow/_index.md +++ b/content/telegraf/v1/input-plugins/netflow/_index.md @@ -10,7 +10,7 @@ introduced: "v1.25.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/netflow/README.md, Netflow Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/netflow/README.md, Netflow Plugin Source --- # Netflow Input Plugin diff --git a/content/telegraf/v1/input-plugins/netstat/_index.md b/content/telegraf/v1/input-plugins/netstat/_index.md index bf99fd6a7..f1bb26b08 100644 --- a/content/telegraf/v1/input-plugins/netstat/_index.md +++ b/content/telegraf/v1/input-plugins/netstat/_index.md @@ -10,7 +10,7 @@ introduced: "v0.2.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/netstat/README.md, Network Connection Statistics Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/netstat/README.md, Network Connection Statistics Plugin Source --- # Network Connection Statistics Input Plugin diff --git a/content/telegraf/v1/input-plugins/nfsclient/_index.md b/content/telegraf/v1/input-plugins/nfsclient/_index.md index 509ef11fc..c96bf5307 100644 --- a/content/telegraf/v1/input-plugins/nfsclient/_index.md +++ b/content/telegraf/v1/input-plugins/nfsclient/_index.md @@ -10,7 +10,7 @@ introduced: "v1.18.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/nfsclient/README.md, Network Filesystem Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/nfsclient/README.md, Network Filesystem Plugin Source --- # Network Filesystem Input Plugin diff --git a/content/telegraf/v1/input-plugins/nginx/_index.md b/content/telegraf/v1/input-plugins/nginx/_index.md index c9b03a586..b3cb7ee2e 100644 --- a/content/telegraf/v1/input-plugins/nginx/_index.md +++ b/content/telegraf/v1/input-plugins/nginx/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.5" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/nginx/README.md, Nginx Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/nginx/README.md, Nginx Plugin Source --- # Nginx Input Plugin diff --git a/content/telegraf/v1/input-plugins/nginx_plus/_index.md b/content/telegraf/v1/input-plugins/nginx_plus/_index.md index be8cbef7c..6b896d699 100644 --- a/content/telegraf/v1/input-plugins/nginx_plus/_index.md +++ b/content/telegraf/v1/input-plugins/nginx_plus/_index.md @@ -10,7 +10,7 @@ introduced: "v1.5.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/nginx_plus/README.md, Nginx Plus Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/nginx_plus/README.md, Nginx Plus Plugin Source --- # Nginx Plus Input Plugin diff --git a/content/telegraf/v1/input-plugins/nginx_plus_api/_index.md b/content/telegraf/v1/input-plugins/nginx_plus_api/_index.md index 6708e3f79..570e22cad 100644 --- a/content/telegraf/v1/input-plugins/nginx_plus_api/_index.md +++ b/content/telegraf/v1/input-plugins/nginx_plus_api/_index.md @@ -10,7 +10,7 @@ introduced: "v1.9.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/nginx_plus_api/README.md, Nginx Plus API Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/nginx_plus_api/README.md, Nginx Plus API Plugin Source --- # Nginx Plus API Input Plugin diff --git a/content/telegraf/v1/input-plugins/nginx_sts/_index.md b/content/telegraf/v1/input-plugins/nginx_sts/_index.md index 2cc48fee4..cce6a5bfc 100644 --- a/content/telegraf/v1/input-plugins/nginx_sts/_index.md +++ b/content/telegraf/v1/input-plugins/nginx_sts/_index.md @@ -10,7 +10,7 @@ introduced: "v1.15.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/nginx_sts/README.md, Nginx Stream Server Traffic Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/nginx_sts/README.md, Nginx Stream Server Traffic Plugin Source --- # Nginx Stream Server Traffic Input Plugin diff --git a/content/telegraf/v1/input-plugins/nginx_upstream_check/_index.md b/content/telegraf/v1/input-plugins/nginx_upstream_check/_index.md index ea02244b2..d0ba48c4f 100644 --- a/content/telegraf/v1/input-plugins/nginx_upstream_check/_index.md +++ b/content/telegraf/v1/input-plugins/nginx_upstream_check/_index.md @@ -10,7 +10,7 @@ introduced: "v1.10.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/nginx_upstream_check/README.md, Nginx Upstream Check Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/nginx_upstream_check/README.md, Nginx Upstream Check Plugin Source --- # Nginx Upstream Check Input Plugin diff --git a/content/telegraf/v1/input-plugins/nginx_vts/_index.md b/content/telegraf/v1/input-plugins/nginx_vts/_index.md index 0d191fe00..dc2d5d9b8 100644 --- a/content/telegraf/v1/input-plugins/nginx_vts/_index.md +++ b/content/telegraf/v1/input-plugins/nginx_vts/_index.md @@ -10,7 +10,7 @@ introduced: "v1.9.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/nginx_vts/README.md, Nginx Virtual Host Traffic Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/nginx_vts/README.md, Nginx Virtual Host Traffic Plugin Source --- # Nginx Virtual Host Traffic Input Plugin diff --git a/content/telegraf/v1/input-plugins/nomad/_index.md b/content/telegraf/v1/input-plugins/nomad/_index.md index eee87daa3..e51189299 100644 --- a/content/telegraf/v1/input-plugins/nomad/_index.md +++ b/content/telegraf/v1/input-plugins/nomad/_index.md @@ -10,7 +10,7 @@ introduced: "v1.22.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/nomad/README.md, Hashicorp Nomad Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/nomad/README.md, Hashicorp Nomad Plugin Source --- # Hashicorp Nomad Input Plugin diff --git a/content/telegraf/v1/input-plugins/nsd/_index.md b/content/telegraf/v1/input-plugins/nsd/_index.md index 268534c91..0f8c89d6d 100644 --- a/content/telegraf/v1/input-plugins/nsd/_index.md +++ b/content/telegraf/v1/input-plugins/nsd/_index.md @@ -10,7 +10,7 @@ introduced: "v1.0.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/nsd/README.md, NLnet Labs Name Server Daemon Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/nsd/README.md, NLnet Labs Name Server Daemon Plugin Source --- # NLnet Labs Name Server Daemon Input Plugin diff --git a/content/telegraf/v1/input-plugins/nsdp/_index.md b/content/telegraf/v1/input-plugins/nsdp/_index.md index 759de59a0..5a2b8e48e 100644 --- a/content/telegraf/v1/input-plugins/nsdp/_index.md +++ b/content/telegraf/v1/input-plugins/nsdp/_index.md @@ -10,7 +10,7 @@ introduced: "v1.34.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/nsdp/README.md, Netgear Switch Discovery Protocol Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/nsdp/README.md, Netgear Switch Discovery Protocol Plugin Source --- # Netgear Switch Discovery Protocol Input Plugin diff --git a/content/telegraf/v1/input-plugins/nsq/_index.md b/content/telegraf/v1/input-plugins/nsq/_index.md index 7db090818..74a615db2 100644 --- a/content/telegraf/v1/input-plugins/nsq/_index.md +++ b/content/telegraf/v1/input-plugins/nsq/_index.md @@ -10,7 +10,7 @@ introduced: "v1.16.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/nsq/README.md, NSQ Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/nsq/README.md, NSQ Plugin Source --- # NSQ Input Plugin diff --git a/content/telegraf/v1/input-plugins/nsq_consumer/_index.md b/content/telegraf/v1/input-plugins/nsq_consumer/_index.md index e6ed062f2..747aa0f34 100644 --- a/content/telegraf/v1/input-plugins/nsq_consumer/_index.md +++ b/content/telegraf/v1/input-plugins/nsq_consumer/_index.md @@ -10,7 +10,7 @@ introduced: "v0.10.1" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/nsq_consumer/README.md, NSQ Consumer Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/nsq_consumer/README.md, NSQ Consumer Plugin Source --- # NSQ Consumer Input Plugin diff --git a/content/telegraf/v1/input-plugins/nstat/_index.md b/content/telegraf/v1/input-plugins/nstat/_index.md index 36e0c4b32..6a0d77cca 100644 --- a/content/telegraf/v1/input-plugins/nstat/_index.md +++ b/content/telegraf/v1/input-plugins/nstat/_index.md @@ -10,7 +10,7 @@ introduced: "v0.13.1" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/nstat/README.md, Kernel Network Statistics Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/nstat/README.md, Kernel Network Statistics Plugin Source --- # Kernel Network Statistics Input Plugin diff --git a/content/telegraf/v1/input-plugins/ntpq/_index.md b/content/telegraf/v1/input-plugins/ntpq/_index.md index 7bdd4a2a2..a4566b951 100644 --- a/content/telegraf/v1/input-plugins/ntpq/_index.md +++ b/content/telegraf/v1/input-plugins/ntpq/_index.md @@ -10,7 +10,7 @@ introduced: "v0.11.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/ntpq/README.md, Network Time Protocol Query Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/ntpq/README.md, Network Time Protocol Query Plugin Source --- # Network Time Protocol Query Input Plugin diff --git a/content/telegraf/v1/input-plugins/nvidia_smi/_index.md b/content/telegraf/v1/input-plugins/nvidia_smi/_index.md index f3aac9605..e70857716 100644 --- a/content/telegraf/v1/input-plugins/nvidia_smi/_index.md +++ b/content/telegraf/v1/input-plugins/nvidia_smi/_index.md @@ -10,7 +10,7 @@ introduced: "v1.7.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/nvidia_smi/README.md, Nvidia System Management Interface (SMI) Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/nvidia_smi/README.md, Nvidia System Management Interface (SMI) Plugin Source --- # Nvidia System Management Interface (SMI) Input Plugin diff --git a/content/telegraf/v1/input-plugins/opcua/_index.md b/content/telegraf/v1/input-plugins/opcua/_index.md index 7c0df1a9c..605d2cffa 100644 --- a/content/telegraf/v1/input-plugins/opcua/_index.md +++ b/content/telegraf/v1/input-plugins/opcua/_index.md @@ -10,7 +10,7 @@ introduced: "v1.16.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/opcua/README.md, OPC UA Client Reader Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/opcua/README.md, OPC UA Client Reader Plugin Source --- # OPC UA Client Reader Input Plugin diff --git a/content/telegraf/v1/input-plugins/opcua_listener/_index.md b/content/telegraf/v1/input-plugins/opcua_listener/_index.md index a105a7a88..1e56b8948 100644 --- a/content/telegraf/v1/input-plugins/opcua_listener/_index.md +++ b/content/telegraf/v1/input-plugins/opcua_listener/_index.md @@ -10,7 +10,7 @@ introduced: "v1.25.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/opcua_listener/README.md, OPC UA Client Listener Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/opcua_listener/README.md, OPC UA Client Listener Plugin Source --- # OPC UA Client Listener Input Plugin diff --git a/content/telegraf/v1/input-plugins/openldap/_index.md b/content/telegraf/v1/input-plugins/openldap/_index.md index 7d130c12a..eb6fad312 100644 --- a/content/telegraf/v1/input-plugins/openldap/_index.md +++ b/content/telegraf/v1/input-plugins/openldap/_index.md @@ -10,7 +10,7 @@ introduced: "v1.4.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/openldap/README.md, OpenLDAP Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/openldap/README.md, OpenLDAP Plugin Source --- # OpenLDAP Input Plugin diff --git a/content/telegraf/v1/input-plugins/openntpd/_index.md b/content/telegraf/v1/input-plugins/openntpd/_index.md index 67704ccb4..210e94594 100644 --- a/content/telegraf/v1/input-plugins/openntpd/_index.md +++ b/content/telegraf/v1/input-plugins/openntpd/_index.md @@ -10,7 +10,7 @@ introduced: "v1.12.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/openntpd/README.md, OpenNTPD Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/openntpd/README.md, OpenNTPD Plugin Source --- # OpenNTPD Input Plugin diff --git a/content/telegraf/v1/input-plugins/opensearch_query/_index.md b/content/telegraf/v1/input-plugins/opensearch_query/_index.md index 722b3aaa9..b8b659326 100644 --- a/content/telegraf/v1/input-plugins/opensearch_query/_index.md +++ b/content/telegraf/v1/input-plugins/opensearch_query/_index.md @@ -10,7 +10,7 @@ introduced: "v1.26.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/opensearch_query/README.md, OpenSearch Query Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/opensearch_query/README.md, OpenSearch Query Plugin Source --- # OpenSearch Query Input Plugin diff --git a/content/telegraf/v1/input-plugins/opensmtpd/_index.md b/content/telegraf/v1/input-plugins/opensmtpd/_index.md index faf082480..8bbcf0df8 100644 --- a/content/telegraf/v1/input-plugins/opensmtpd/_index.md +++ b/content/telegraf/v1/input-plugins/opensmtpd/_index.md @@ -10,7 +10,7 @@ introduced: "v1.5.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/opensmtpd/README.md, OpenSMTPD Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/opensmtpd/README.md, OpenSMTPD Plugin Source --- # OpenSMTPD Input Plugin diff --git a/content/telegraf/v1/input-plugins/openstack/_index.md b/content/telegraf/v1/input-plugins/openstack/_index.md index cb6ca4da8..bc30a93d0 100644 --- a/content/telegraf/v1/input-plugins/openstack/_index.md +++ b/content/telegraf/v1/input-plugins/openstack/_index.md @@ -10,7 +10,7 @@ introduced: "v1.21.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/openstack/README.md, OpenStack Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/openstack/README.md, OpenStack Plugin Source --- # OpenStack Input Plugin diff --git a/content/telegraf/v1/input-plugins/opentelemetry/_index.md b/content/telegraf/v1/input-plugins/opentelemetry/_index.md index 2c0b7d760..691ec6b78 100644 --- a/content/telegraf/v1/input-plugins/opentelemetry/_index.md +++ b/content/telegraf/v1/input-plugins/opentelemetry/_index.md @@ -10,7 +10,7 @@ introduced: "v1.19.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/opentelemetry/README.md, OpenTelemetry Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/opentelemetry/README.md, OpenTelemetry Plugin Source --- # OpenTelemetry Input Plugin @@ -19,9 +19,12 @@ This service plugin receives traces, metrics, logs and profiles from [OpenTelemetry](https://opentelemetry.io) clients and compatible agents via gRPC. > [!NOTE] -> Telegraf v1.32 through v1.35 support the Profiles signal using the v1 experimental API. -> Telegraf v1.36 supports the Profiles signal using the v1 development API before v0.1.0. -> Telegraf v1.37+ supports the Profiles signal using the v1 development API v0.1.0. +> Telegraf v1.32 through v1.35 support the Profiles signal using the v1 +> experimental API. +> Telegraf v1.36 supports the Profiles signal using the v1 development API +> before v0.1.0. +> Telegraf v1.37+ supports the Profiles signal using the v1 development API +> v0.1.0. **Introduced in:** Telegraf v1.19.0 **Tags:** logging, messaging diff --git a/content/telegraf/v1/input-plugins/openweathermap/_index.md b/content/telegraf/v1/input-plugins/openweathermap/_index.md index b9595da56..412908ee7 100644 --- a/content/telegraf/v1/input-plugins/openweathermap/_index.md +++ b/content/telegraf/v1/input-plugins/openweathermap/_index.md @@ -10,7 +10,7 @@ introduced: "v1.11.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/openweathermap/README.md, OpenWeatherMap Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/openweathermap/README.md, OpenWeatherMap Plugin Source --- # OpenWeatherMap Input Plugin diff --git a/content/telegraf/v1/input-plugins/p4runtime/_index.md b/content/telegraf/v1/input-plugins/p4runtime/_index.md index 3b830d127..0fac37015 100644 --- a/content/telegraf/v1/input-plugins/p4runtime/_index.md +++ b/content/telegraf/v1/input-plugins/p4runtime/_index.md @@ -10,7 +10,7 @@ introduced: "v1.26.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/p4runtime/README.md, P4 Runtime Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/p4runtime/README.md, P4 Runtime Plugin Source --- # P4 Runtime Input Plugin diff --git a/content/telegraf/v1/input-plugins/passenger/_index.md b/content/telegraf/v1/input-plugins/passenger/_index.md index 1892fd1d8..e8668fe8a 100644 --- a/content/telegraf/v1/input-plugins/passenger/_index.md +++ b/content/telegraf/v1/input-plugins/passenger/_index.md @@ -10,7 +10,7 @@ introduced: "v0.10.1" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/passenger/README.md, Passenger Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/passenger/README.md, Passenger Plugin Source --- # Passenger Input Plugin diff --git a/content/telegraf/v1/input-plugins/pf/_index.md b/content/telegraf/v1/input-plugins/pf/_index.md index 83faeedf1..664cf1c2b 100644 --- a/content/telegraf/v1/input-plugins/pf/_index.md +++ b/content/telegraf/v1/input-plugins/pf/_index.md @@ -10,7 +10,7 @@ introduced: "v1.5.0" os_support: "freebsd" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/pf/README.md, PF Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/pf/README.md, PF Plugin Source --- # PF Input Plugin diff --git a/content/telegraf/v1/input-plugins/pgbouncer/_index.md b/content/telegraf/v1/input-plugins/pgbouncer/_index.md index 07fbb9f8b..4a7ff2e8b 100644 --- a/content/telegraf/v1/input-plugins/pgbouncer/_index.md +++ b/content/telegraf/v1/input-plugins/pgbouncer/_index.md @@ -10,7 +10,7 @@ introduced: "v1.8.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/pgbouncer/README.md, PgBouncer Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/pgbouncer/README.md, PgBouncer Plugin Source --- # PgBouncer Input Plugin diff --git a/content/telegraf/v1/input-plugins/phpfpm/_index.md b/content/telegraf/v1/input-plugins/phpfpm/_index.md index 01136d463..8fc8cce95 100644 --- a/content/telegraf/v1/input-plugins/phpfpm/_index.md +++ b/content/telegraf/v1/input-plugins/phpfpm/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.10" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/phpfpm/README.md, PHP-FPM Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/phpfpm/README.md, PHP-FPM Plugin Source --- # PHP-FPM Input Plugin diff --git a/content/telegraf/v1/input-plugins/ping/_index.md b/content/telegraf/v1/input-plugins/ping/_index.md index 3ea03f36e..4333c9316 100644 --- a/content/telegraf/v1/input-plugins/ping/_index.md +++ b/content/telegraf/v1/input-plugins/ping/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.8" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/ping/README.md, Ping Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/ping/README.md, Ping Plugin Source --- # Ping Input Plugin diff --git a/content/telegraf/v1/input-plugins/postfix/_index.md b/content/telegraf/v1/input-plugins/postfix/_index.md index 62b6c1592..7a11a6a3e 100644 --- a/content/telegraf/v1/input-plugins/postfix/_index.md +++ b/content/telegraf/v1/input-plugins/postfix/_index.md @@ -10,7 +10,7 @@ introduced: "v1.5.0" os_support: "freebsd, linux, macos, solaris" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/postfix/README.md, Postfix Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/postfix/README.md, Postfix Plugin Source --- # Postfix Input Plugin diff --git a/content/telegraf/v1/input-plugins/postgresql/_index.md b/content/telegraf/v1/input-plugins/postgresql/_index.md index 97f04e137..7a6d13a09 100644 --- a/content/telegraf/v1/input-plugins/postgresql/_index.md +++ b/content/telegraf/v1/input-plugins/postgresql/_index.md @@ -10,7 +10,7 @@ introduced: "v0.10.3" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/postgresql/README.md, PostgreSQL Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/postgresql/README.md, PostgreSQL Plugin Source --- # PostgreSQL Input Plugin diff --git a/content/telegraf/v1/input-plugins/postgresql_extensible/_index.md b/content/telegraf/v1/input-plugins/postgresql_extensible/_index.md index e545d1d1e..8ed9b0b24 100644 --- a/content/telegraf/v1/input-plugins/postgresql_extensible/_index.md +++ b/content/telegraf/v1/input-plugins/postgresql_extensible/_index.md @@ -10,7 +10,7 @@ introduced: "v0.12.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/postgresql_extensible/README.md, PostgreSQL Extensible Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/postgresql_extensible/README.md, PostgreSQL Extensible Plugin Source --- # PostgreSQL Extensible Input Plugin diff --git a/content/telegraf/v1/input-plugins/powerdns/_index.md b/content/telegraf/v1/input-plugins/powerdns/_index.md index a6885542c..46fa89ce1 100644 --- a/content/telegraf/v1/input-plugins/powerdns/_index.md +++ b/content/telegraf/v1/input-plugins/powerdns/_index.md @@ -10,7 +10,7 @@ introduced: "v0.10.2" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/powerdns/README.md, PowerDNS Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/powerdns/README.md, PowerDNS Plugin Source --- # PowerDNS Input Plugin diff --git a/content/telegraf/v1/input-plugins/powerdns_recursor/_index.md b/content/telegraf/v1/input-plugins/powerdns_recursor/_index.md index d95310646..eeb940d32 100644 --- a/content/telegraf/v1/input-plugins/powerdns_recursor/_index.md +++ b/content/telegraf/v1/input-plugins/powerdns_recursor/_index.md @@ -10,7 +10,7 @@ introduced: "v1.11.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/powerdns_recursor/README.md, PowerDNS Recursor Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/powerdns_recursor/README.md, PowerDNS Recursor Plugin Source --- # PowerDNS Recursor Input Plugin diff --git a/content/telegraf/v1/input-plugins/processes/_index.md b/content/telegraf/v1/input-plugins/processes/_index.md index 3db6e0d5e..729a889b8 100644 --- a/content/telegraf/v1/input-plugins/processes/_index.md +++ b/content/telegraf/v1/input-plugins/processes/_index.md @@ -10,7 +10,7 @@ introduced: "v0.11.0" os_support: "freebsd, linux, macos" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/processes/README.md, Processes Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/processes/README.md, Processes Plugin Source --- # Processes Input Plugin diff --git a/content/telegraf/v1/input-plugins/procstat/_index.md b/content/telegraf/v1/input-plugins/procstat/_index.md index 5d8e000e7..dc3df482b 100644 --- a/content/telegraf/v1/input-plugins/procstat/_index.md +++ b/content/telegraf/v1/input-plugins/procstat/_index.md @@ -10,7 +10,7 @@ introduced: "v0.2.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/procstat/README.md, Procstat Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/procstat/README.md, Procstat Plugin Source --- # Procstat Input Plugin diff --git a/content/telegraf/v1/input-plugins/prometheus/_index.md b/content/telegraf/v1/input-plugins/prometheus/_index.md index b2966caec..c00869768 100644 --- a/content/telegraf/v1/input-plugins/prometheus/_index.md +++ b/content/telegraf/v1/input-plugins/prometheus/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.5" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/prometheus/README.md, Prometheus Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/prometheus/README.md, Prometheus Plugin Source --- # Prometheus Input Plugin diff --git a/content/telegraf/v1/input-plugins/proxmox/_index.md b/content/telegraf/v1/input-plugins/proxmox/_index.md index cd3cec783..021c04e3e 100644 --- a/content/telegraf/v1/input-plugins/proxmox/_index.md +++ b/content/telegraf/v1/input-plugins/proxmox/_index.md @@ -10,7 +10,7 @@ introduced: "v1.16.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/proxmox/README.md, Proxmox Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/proxmox/README.md, Proxmox Plugin Source --- # Proxmox Input Plugin diff --git a/content/telegraf/v1/input-plugins/puppetagent/_index.md b/content/telegraf/v1/input-plugins/puppetagent/_index.md index 876dedbf2..e3be6531c 100644 --- a/content/telegraf/v1/input-plugins/puppetagent/_index.md +++ b/content/telegraf/v1/input-plugins/puppetagent/_index.md @@ -10,7 +10,7 @@ introduced: "v0.2.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/puppetagent/README.md, Puppet Agent Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/puppetagent/README.md, Puppet Agent Plugin Source --- # Puppet Agent Input Plugin diff --git a/content/telegraf/v1/input-plugins/rabbitmq/_index.md b/content/telegraf/v1/input-plugins/rabbitmq/_index.md index 1f93189aa..2fe3394d9 100644 --- a/content/telegraf/v1/input-plugins/rabbitmq/_index.md +++ b/content/telegraf/v1/input-plugins/rabbitmq/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.5" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/rabbitmq/README.md, RabbitMQ Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/rabbitmq/README.md, RabbitMQ Plugin Source --- # RabbitMQ Input Plugin @@ -188,6 +188,8 @@ to use them. - node - durable - auto_delete + - type (queue type as returned by RabbitMQ, if empty it defaults to + "classic"; only included when include_queue_type_tag = true) - fields: - consumer_utilisation (float, percent) - consumers (int, int) diff --git a/content/telegraf/v1/input-plugins/radius/_index.md b/content/telegraf/v1/input-plugins/radius/_index.md index 0b78b8ecd..9e77a42fe 100644 --- a/content/telegraf/v1/input-plugins/radius/_index.md +++ b/content/telegraf/v1/input-plugins/radius/_index.md @@ -10,7 +10,7 @@ introduced: "v1.26.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/radius/README.md, Radius Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/radius/README.md, Radius Plugin Source --- # Radius Input Plugin diff --git a/content/telegraf/v1/input-plugins/raindrops/_index.md b/content/telegraf/v1/input-plugins/raindrops/_index.md index 259774eb6..c7a1fd142 100644 --- a/content/telegraf/v1/input-plugins/raindrops/_index.md +++ b/content/telegraf/v1/input-plugins/raindrops/_index.md @@ -10,7 +10,7 @@ introduced: "v0.10.3" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/raindrops/README.md, Raindrops Middleware Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/raindrops/README.md, Raindrops Middleware Plugin Source --- # Raindrops Middleware Input Plugin diff --git a/content/telegraf/v1/input-plugins/ras/_index.md b/content/telegraf/v1/input-plugins/ras/_index.md index ffaf927f5..453eb1d9c 100644 --- a/content/telegraf/v1/input-plugins/ras/_index.md +++ b/content/telegraf/v1/input-plugins/ras/_index.md @@ -10,7 +10,7 @@ introduced: "v1.16.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/ras/README.md, RAS Daemon Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/ras/README.md, RAS Daemon Plugin Source --- # RAS Daemon Input Plugin diff --git a/content/telegraf/v1/input-plugins/ravendb/_index.md b/content/telegraf/v1/input-plugins/ravendb/_index.md index 9c624e561..4dad1835c 100644 --- a/content/telegraf/v1/input-plugins/ravendb/_index.md +++ b/content/telegraf/v1/input-plugins/ravendb/_index.md @@ -10,7 +10,7 @@ introduced: "v1.18.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/ravendb/README.md, RavenDB Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/ravendb/README.md, RavenDB Plugin Source --- # RavenDB Input Plugin diff --git a/content/telegraf/v1/input-plugins/redfish/_index.md b/content/telegraf/v1/input-plugins/redfish/_index.md index 5517b344a..d9c5abc57 100644 --- a/content/telegraf/v1/input-plugins/redfish/_index.md +++ b/content/telegraf/v1/input-plugins/redfish/_index.md @@ -10,7 +10,7 @@ introduced: "v1.15.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/redfish/README.md, Redfish Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/redfish/README.md, Redfish Plugin Source --- # Redfish Input Plugin diff --git a/content/telegraf/v1/input-plugins/redis/_index.md b/content/telegraf/v1/input-plugins/redis/_index.md index 904076c4d..486f6a7b4 100644 --- a/content/telegraf/v1/input-plugins/redis/_index.md +++ b/content/telegraf/v1/input-plugins/redis/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.1" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/redis/README.md, Redis Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/redis/README.md, Redis Plugin Source --- # Redis Input Plugin diff --git a/content/telegraf/v1/input-plugins/redis_sentinel/_index.md b/content/telegraf/v1/input-plugins/redis_sentinel/_index.md index 104b5f3c5..5b7a5c32b 100644 --- a/content/telegraf/v1/input-plugins/redis_sentinel/_index.md +++ b/content/telegraf/v1/input-plugins/redis_sentinel/_index.md @@ -10,7 +10,7 @@ introduced: "v1.22.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/redis_sentinel/README.md, Redis Sentinel Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/redis_sentinel/README.md, Redis Sentinel Plugin Source --- # Redis Sentinel Input Plugin diff --git a/content/telegraf/v1/input-plugins/rethinkdb/_index.md b/content/telegraf/v1/input-plugins/rethinkdb/_index.md index 7a331ebba..bc711f8e9 100644 --- a/content/telegraf/v1/input-plugins/rethinkdb/_index.md +++ b/content/telegraf/v1/input-plugins/rethinkdb/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.3" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/rethinkdb/README.md, RethinkDB Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/rethinkdb/README.md, RethinkDB Plugin Source --- # RethinkDB Input Plugin diff --git a/content/telegraf/v1/input-plugins/riak/_index.md b/content/telegraf/v1/input-plugins/riak/_index.md index 4569eeace..b1dad01a6 100644 --- a/content/telegraf/v1/input-plugins/riak/_index.md +++ b/content/telegraf/v1/input-plugins/riak/_index.md @@ -10,7 +10,7 @@ introduced: "v0.10.4" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/riak/README.md, Riak Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/riak/README.md, Riak Plugin Source --- # Riak Input Plugin diff --git a/content/telegraf/v1/input-plugins/riemann_listener/_index.md b/content/telegraf/v1/input-plugins/riemann_listener/_index.md index 0c1568cc7..0cc9ce85a 100644 --- a/content/telegraf/v1/input-plugins/riemann_listener/_index.md +++ b/content/telegraf/v1/input-plugins/riemann_listener/_index.md @@ -10,7 +10,7 @@ introduced: "v1.17.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/riemann_listener/README.md, Riemann Listener Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/riemann_listener/README.md, Riemann Listener Plugin Source --- # Riemann Listener Input Plugin diff --git a/content/telegraf/v1/input-plugins/s7comm/_index.md b/content/telegraf/v1/input-plugins/s7comm/_index.md index b6d2937eb..335232fdc 100644 --- a/content/telegraf/v1/input-plugins/s7comm/_index.md +++ b/content/telegraf/v1/input-plugins/s7comm/_index.md @@ -10,7 +10,7 @@ introduced: "v1.28.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/s7comm/README.md, Siemens S7 Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/s7comm/README.md, Siemens S7 Plugin Source --- # Siemens S7 Input Plugin diff --git a/content/telegraf/v1/input-plugins/salesforce/_index.md b/content/telegraf/v1/input-plugins/salesforce/_index.md index 6975daf5c..3039b2078 100644 --- a/content/telegraf/v1/input-plugins/salesforce/_index.md +++ b/content/telegraf/v1/input-plugins/salesforce/_index.md @@ -10,7 +10,7 @@ introduced: "v1.4.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/salesforce/README.md, Salesforce Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/salesforce/README.md, Salesforce Plugin Source --- # Salesforce Input Plugin diff --git a/content/telegraf/v1/input-plugins/sensors/_index.md b/content/telegraf/v1/input-plugins/sensors/_index.md index 9d52918b0..6625f9f88 100644 --- a/content/telegraf/v1/input-plugins/sensors/_index.md +++ b/content/telegraf/v1/input-plugins/sensors/_index.md @@ -10,7 +10,7 @@ introduced: "v0.10.1" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/sensors/README.md, LM Sensors Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/sensors/README.md, LM Sensors Plugin Source --- # LM Sensors Input Plugin diff --git a/content/telegraf/v1/input-plugins/sflow/_index.md b/content/telegraf/v1/input-plugins/sflow/_index.md index b901e9af2..7fb486325 100644 --- a/content/telegraf/v1/input-plugins/sflow/_index.md +++ b/content/telegraf/v1/input-plugins/sflow/_index.md @@ -10,7 +10,7 @@ introduced: "v1.14.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/sflow/README.md, SFlow Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/sflow/README.md, SFlow Plugin Source --- # SFlow Input Plugin diff --git a/content/telegraf/v1/input-plugins/slab/_index.md b/content/telegraf/v1/input-plugins/slab/_index.md index abf256405..a3f8f47ec 100644 --- a/content/telegraf/v1/input-plugins/slab/_index.md +++ b/content/telegraf/v1/input-plugins/slab/_index.md @@ -10,7 +10,7 @@ introduced: "v1.23.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/slab/README.md, Slab Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/slab/README.md, Slab Plugin Source --- # Slab Input Plugin diff --git a/content/telegraf/v1/input-plugins/slurm/_index.md b/content/telegraf/v1/input-plugins/slurm/_index.md index 044ecaaef..3930c1d7a 100644 --- a/content/telegraf/v1/input-plugins/slurm/_index.md +++ b/content/telegraf/v1/input-plugins/slurm/_index.md @@ -10,7 +10,7 @@ introduced: "v1.32.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/slurm/README.md, SLURM Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/slurm/README.md, SLURM Plugin Source --- # SLURM Input Plugin diff --git a/content/telegraf/v1/input-plugins/smart/_index.md b/content/telegraf/v1/input-plugins/smart/_index.md index 57bcf2461..a05d6b535 100644 --- a/content/telegraf/v1/input-plugins/smart/_index.md +++ b/content/telegraf/v1/input-plugins/smart/_index.md @@ -10,7 +10,7 @@ introduced: "v1.5.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/smart/README.md, S.M.A.R.T. Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/smart/README.md, S.M.A.R.T. Plugin Source --- # S.M.A.R.T. Input Plugin diff --git a/content/telegraf/v1/input-plugins/smartctl/_index.md b/content/telegraf/v1/input-plugins/smartctl/_index.md index fdc68e3b5..3455f7c48 100644 --- a/content/telegraf/v1/input-plugins/smartctl/_index.md +++ b/content/telegraf/v1/input-plugins/smartctl/_index.md @@ -10,7 +10,7 @@ introduced: "v1.31.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/smartctl/README.md, smartctl JSON Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/smartctl/README.md, smartctl JSON Plugin Source --- # smartctl JSON Input Plugin diff --git a/content/telegraf/v1/input-plugins/snmp/_index.md b/content/telegraf/v1/input-plugins/snmp/_index.md index fb90508d9..ab00975f1 100644 --- a/content/telegraf/v1/input-plugins/snmp/_index.md +++ b/content/telegraf/v1/input-plugins/snmp/_index.md @@ -10,7 +10,7 @@ introduced: "v0.10.1" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/snmp/README.md, SNMP Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/snmp/README.md, SNMP Plugin Source --- # SNMP Input Plugin diff --git a/content/telegraf/v1/input-plugins/snmp_trap/_index.md b/content/telegraf/v1/input-plugins/snmp_trap/_index.md index 9cd6466c4..dff042e7c 100644 --- a/content/telegraf/v1/input-plugins/snmp_trap/_index.md +++ b/content/telegraf/v1/input-plugins/snmp_trap/_index.md @@ -10,7 +10,7 @@ introduced: "v1.13.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/snmp_trap/README.md, SNMP Trap Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/snmp_trap/README.md, SNMP Trap Plugin Source --- # SNMP Trap Input Plugin diff --git a/content/telegraf/v1/input-plugins/socket_listener/_index.md b/content/telegraf/v1/input-plugins/socket_listener/_index.md index c7d9e927c..ca2c2820e 100644 --- a/content/telegraf/v1/input-plugins/socket_listener/_index.md +++ b/content/telegraf/v1/input-plugins/socket_listener/_index.md @@ -10,7 +10,7 @@ introduced: "v1.3.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/socket_listener/README.md, Socket Listener Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/socket_listener/README.md, Socket Listener Plugin Source --- # Socket Listener Input Plugin diff --git a/content/telegraf/v1/input-plugins/socketstat/_index.md b/content/telegraf/v1/input-plugins/socketstat/_index.md index d23d52004..81ea6296e 100644 --- a/content/telegraf/v1/input-plugins/socketstat/_index.md +++ b/content/telegraf/v1/input-plugins/socketstat/_index.md @@ -10,7 +10,7 @@ introduced: "v1.22.0" os_support: "freebsd, linux, macos" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/socketstat/README.md, Socket Statistics Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/socketstat/README.md, Socket Statistics Plugin Source --- # Socket Statistics Input Plugin diff --git a/content/telegraf/v1/input-plugins/solr/_index.md b/content/telegraf/v1/input-plugins/solr/_index.md index 26af24001..a55f9509f 100644 --- a/content/telegraf/v1/input-plugins/solr/_index.md +++ b/content/telegraf/v1/input-plugins/solr/_index.md @@ -10,7 +10,7 @@ introduced: "v1.5.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/solr/README.md, Apache Solr Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/solr/README.md, Apache Solr Plugin Source --- # Apache Solr Input Plugin diff --git a/content/telegraf/v1/input-plugins/sql/_index.md b/content/telegraf/v1/input-plugins/sql/_index.md index 640985f8d..8d631556e 100644 --- a/content/telegraf/v1/input-plugins/sql/_index.md +++ b/content/telegraf/v1/input-plugins/sql/_index.md @@ -10,7 +10,7 @@ introduced: "v1.19.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/sql/README.md, SQL Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/sql/README.md, SQL Plugin Source --- # SQL Input Plugin diff --git a/content/telegraf/v1/input-plugins/sqlserver/_index.md b/content/telegraf/v1/input-plugins/sqlserver/_index.md index 50c6ca98a..790e4cde0 100644 --- a/content/telegraf/v1/input-plugins/sqlserver/_index.md +++ b/content/telegraf/v1/input-plugins/sqlserver/_index.md @@ -10,7 +10,7 @@ introduced: "v0.10.1" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/sqlserver/README.md, Microsoft SQL Server Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/sqlserver/README.md, Microsoft SQL Server Plugin Source --- # Microsoft SQL Server Input Plugin diff --git a/content/telegraf/v1/input-plugins/stackdriver/_index.md b/content/telegraf/v1/input-plugins/stackdriver/_index.md index dbce7ca77..f00fd975e 100644 --- a/content/telegraf/v1/input-plugins/stackdriver/_index.md +++ b/content/telegraf/v1/input-plugins/stackdriver/_index.md @@ -10,7 +10,7 @@ introduced: "v1.10.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/stackdriver/README.md, Stackdriver Google Cloud Monitoring Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/stackdriver/README.md, Stackdriver Google Cloud Monitoring Plugin Source --- # Stackdriver Google Cloud Monitoring Input Plugin diff --git a/content/telegraf/v1/input-plugins/statsd/_index.md b/content/telegraf/v1/input-plugins/statsd/_index.md index 8daf37957..b4d796095 100644 --- a/content/telegraf/v1/input-plugins/statsd/_index.md +++ b/content/telegraf/v1/input-plugins/statsd/_index.md @@ -10,7 +10,7 @@ introduced: "v0.2.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/statsd/README.md, StatsD Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/statsd/README.md, StatsD Plugin Source --- # StatsD Input Plugin diff --git a/content/telegraf/v1/input-plugins/supervisor/_index.md b/content/telegraf/v1/input-plugins/supervisor/_index.md index 4f75fbc77..aba6cd5fa 100644 --- a/content/telegraf/v1/input-plugins/supervisor/_index.md +++ b/content/telegraf/v1/input-plugins/supervisor/_index.md @@ -10,7 +10,7 @@ introduced: "v1.24.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/supervisor/README.md, Supervisor Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/supervisor/README.md, Supervisor Plugin Source --- # Supervisor Input Plugin diff --git a/content/telegraf/v1/input-plugins/suricata/_index.md b/content/telegraf/v1/input-plugins/suricata/_index.md index 43bcd35c4..e59771c75 100644 --- a/content/telegraf/v1/input-plugins/suricata/_index.md +++ b/content/telegraf/v1/input-plugins/suricata/_index.md @@ -10,7 +10,7 @@ introduced: "v1.13.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/suricata/README.md, Suricata Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/suricata/README.md, Suricata Plugin Source --- # Suricata Input Plugin diff --git a/content/telegraf/v1/input-plugins/swap/_index.md b/content/telegraf/v1/input-plugins/swap/_index.md index e11e62bba..0eb35a871 100644 --- a/content/telegraf/v1/input-plugins/swap/_index.md +++ b/content/telegraf/v1/input-plugins/swap/_index.md @@ -10,7 +10,7 @@ introduced: "v1.7.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/swap/README.md, Swap Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/swap/README.md, Swap Plugin Source --- # Swap Input Plugin diff --git a/content/telegraf/v1/input-plugins/synproxy/_index.md b/content/telegraf/v1/input-plugins/synproxy/_index.md index acdb2d8bf..4802d76e2 100644 --- a/content/telegraf/v1/input-plugins/synproxy/_index.md +++ b/content/telegraf/v1/input-plugins/synproxy/_index.md @@ -10,7 +10,7 @@ introduced: "v1.13.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/synproxy/README.md, Synproxy Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/synproxy/README.md, Synproxy Plugin Source --- # Synproxy Input Plugin diff --git a/content/telegraf/v1/input-plugins/syslog/_index.md b/content/telegraf/v1/input-plugins/syslog/_index.md index 55f9854dd..73dfe9e74 100644 --- a/content/telegraf/v1/input-plugins/syslog/_index.md +++ b/content/telegraf/v1/input-plugins/syslog/_index.md @@ -10,7 +10,7 @@ introduced: "v1.7.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/syslog/README.md, Syslog Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/syslog/README.md, Syslog Plugin Source --- # Syslog Input Plugin diff --git a/content/telegraf/v1/input-plugins/sysstat/_index.md b/content/telegraf/v1/input-plugins/sysstat/_index.md index 1cc82dc50..31f57fad6 100644 --- a/content/telegraf/v1/input-plugins/sysstat/_index.md +++ b/content/telegraf/v1/input-plugins/sysstat/_index.md @@ -10,7 +10,7 @@ introduced: "v0.12.1" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/sysstat/README.md, System Performance Statistics Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/sysstat/README.md, System Performance Statistics Plugin Source --- # System Performance Statistics Input Plugin diff --git a/content/telegraf/v1/input-plugins/system/_index.md b/content/telegraf/v1/input-plugins/system/_index.md index 287bf8c55..a59e75c1e 100644 --- a/content/telegraf/v1/input-plugins/system/_index.md +++ b/content/telegraf/v1/input-plugins/system/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.6" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/system/README.md, System Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/system/README.md, System Plugin Source --- # System Input Plugin diff --git a/content/telegraf/v1/input-plugins/systemd_units/_index.md b/content/telegraf/v1/input-plugins/systemd_units/_index.md index a48137373..2f9e308fa 100644 --- a/content/telegraf/v1/input-plugins/systemd_units/_index.md +++ b/content/telegraf/v1/input-plugins/systemd_units/_index.md @@ -10,7 +10,7 @@ introduced: "v1.13.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/systemd_units/README.md, Systemd-Units Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/systemd_units/README.md, Systemd-Units Plugin Source --- # Systemd-Units Input Plugin diff --git a/content/telegraf/v1/input-plugins/tacacs/_index.md b/content/telegraf/v1/input-plugins/tacacs/_index.md index 7b5f968f8..5a0098512 100644 --- a/content/telegraf/v1/input-plugins/tacacs/_index.md +++ b/content/telegraf/v1/input-plugins/tacacs/_index.md @@ -10,7 +10,7 @@ introduced: "v1.28.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/tacacs/README.md, Tacacs Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/tacacs/README.md, Tacacs Plugin Source --- # Tacacs Input Plugin diff --git a/content/telegraf/v1/input-plugins/tail/_index.md b/content/telegraf/v1/input-plugins/tail/_index.md index e96f24d95..a6336a8c7 100644 --- a/content/telegraf/v1/input-plugins/tail/_index.md +++ b/content/telegraf/v1/input-plugins/tail/_index.md @@ -10,7 +10,7 @@ introduced: "v1.1.2" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/tail/README.md, Tail Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/tail/README.md, Tail Plugin Source --- # Tail Input Plugin diff --git a/content/telegraf/v1/input-plugins/teamspeak/_index.md b/content/telegraf/v1/input-plugins/teamspeak/_index.md index 554ed145e..359ff04e9 100644 --- a/content/telegraf/v1/input-plugins/teamspeak/_index.md +++ b/content/telegraf/v1/input-plugins/teamspeak/_index.md @@ -10,7 +10,7 @@ introduced: "v1.5.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/teamspeak/README.md, Teamspeak Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/teamspeak/README.md, Teamspeak Plugin Source --- # Teamspeak Input Plugin diff --git a/content/telegraf/v1/input-plugins/temp/_index.md b/content/telegraf/v1/input-plugins/temp/_index.md index d35bc6f22..0adbf885e 100644 --- a/content/telegraf/v1/input-plugins/temp/_index.md +++ b/content/telegraf/v1/input-plugins/temp/_index.md @@ -10,7 +10,7 @@ introduced: "v1.8.0" os_support: "linux, macos, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/temp/README.md, Temperature Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/temp/README.md, Temperature Plugin Source --- # Temperature Input Plugin diff --git a/content/telegraf/v1/input-plugins/tengine/_index.md b/content/telegraf/v1/input-plugins/tengine/_index.md index 5418cf4bd..954fad2d3 100644 --- a/content/telegraf/v1/input-plugins/tengine/_index.md +++ b/content/telegraf/v1/input-plugins/tengine/_index.md @@ -10,7 +10,7 @@ introduced: "v1.8.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/tengine/README.md, Tengine Web Server Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/tengine/README.md, Tengine Web Server Plugin Source --- # Tengine Web Server Input Plugin diff --git a/content/telegraf/v1/input-plugins/tomcat/_index.md b/content/telegraf/v1/input-plugins/tomcat/_index.md index 0bb9df739..2985305fa 100644 --- a/content/telegraf/v1/input-plugins/tomcat/_index.md +++ b/content/telegraf/v1/input-plugins/tomcat/_index.md @@ -10,7 +10,7 @@ introduced: "v1.4.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/tomcat/README.md, Apache Tomcat Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/tomcat/README.md, Apache Tomcat Plugin Source --- # Apache Tomcat Input Plugin diff --git a/content/telegraf/v1/input-plugins/trig/_index.md b/content/telegraf/v1/input-plugins/trig/_index.md index 5586fc5a8..234b71c92 100644 --- a/content/telegraf/v1/input-plugins/trig/_index.md +++ b/content/telegraf/v1/input-plugins/trig/_index.md @@ -10,7 +10,7 @@ introduced: "v0.3.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/trig/README.md, Trig Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/trig/README.md, Trig Plugin Source --- # Trig Input Plugin diff --git a/content/telegraf/v1/input-plugins/turbostat/_index.md b/content/telegraf/v1/input-plugins/turbostat/_index.md index 49d26c86a..9b4a08029 100644 --- a/content/telegraf/v1/input-plugins/turbostat/_index.md +++ b/content/telegraf/v1/input-plugins/turbostat/_index.md @@ -10,7 +10,7 @@ introduced: "v1.36.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/turbostat/README.md, Turbostat Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/turbostat/README.md, Turbostat Plugin Source --- # Turbostat Input Plugin diff --git a/content/telegraf/v1/input-plugins/twemproxy/_index.md b/content/telegraf/v1/input-plugins/twemproxy/_index.md index bb1e762aa..db47648bf 100644 --- a/content/telegraf/v1/input-plugins/twemproxy/_index.md +++ b/content/telegraf/v1/input-plugins/twemproxy/_index.md @@ -10,7 +10,7 @@ introduced: "v0.3.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/twemproxy/README.md, Twemproxy Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/twemproxy/README.md, Twemproxy Plugin Source --- # Twemproxy Input Plugin diff --git a/content/telegraf/v1/input-plugins/unbound/_index.md b/content/telegraf/v1/input-plugins/unbound/_index.md index 1f6e5106f..11c5abf33 100644 --- a/content/telegraf/v1/input-plugins/unbound/_index.md +++ b/content/telegraf/v1/input-plugins/unbound/_index.md @@ -10,7 +10,7 @@ introduced: "v1.5.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/unbound/README.md, Unbound Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/unbound/README.md, Unbound Plugin Source --- # Unbound Input Plugin diff --git a/content/telegraf/v1/input-plugins/upsd/_index.md b/content/telegraf/v1/input-plugins/upsd/_index.md index ff3bfe1a3..48d923800 100644 --- a/content/telegraf/v1/input-plugins/upsd/_index.md +++ b/content/telegraf/v1/input-plugins/upsd/_index.md @@ -10,7 +10,7 @@ introduced: "v1.24.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/upsd/README.md, UPSD Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/upsd/README.md, UPSD Plugin Source --- # UPSD Input Plugin diff --git a/content/telegraf/v1/input-plugins/uwsgi/_index.md b/content/telegraf/v1/input-plugins/uwsgi/_index.md index 4bab4a989..8b08a4507 100644 --- a/content/telegraf/v1/input-plugins/uwsgi/_index.md +++ b/content/telegraf/v1/input-plugins/uwsgi/_index.md @@ -10,7 +10,7 @@ introduced: "v1.12.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/uwsgi/README.md, uWSGI Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/uwsgi/README.md, uWSGI Plugin Source --- # uWSGI Input Plugin diff --git a/content/telegraf/v1/input-plugins/varnish/_index.md b/content/telegraf/v1/input-plugins/varnish/_index.md index c09e319e6..259bb4e9f 100644 --- a/content/telegraf/v1/input-plugins/varnish/_index.md +++ b/content/telegraf/v1/input-plugins/varnish/_index.md @@ -10,7 +10,7 @@ introduced: "v0.13.1" os_support: "freebsd, linux, macos" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/varnish/README.md, Varnish Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/varnish/README.md, Varnish Plugin Source --- # Varnish Input Plugin diff --git a/content/telegraf/v1/input-plugins/vault/_index.md b/content/telegraf/v1/input-plugins/vault/_index.md index 873642b6c..338999185 100644 --- a/content/telegraf/v1/input-plugins/vault/_index.md +++ b/content/telegraf/v1/input-plugins/vault/_index.md @@ -10,7 +10,7 @@ introduced: "v1.22.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/vault/README.md, Hashicorp Vault Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/vault/README.md, Hashicorp Vault Plugin Source --- # Hashicorp Vault Input Plugin diff --git a/content/telegraf/v1/input-plugins/vsphere/_index.md b/content/telegraf/v1/input-plugins/vsphere/_index.md index be4ab90cf..169165ea9 100644 --- a/content/telegraf/v1/input-plugins/vsphere/_index.md +++ b/content/telegraf/v1/input-plugins/vsphere/_index.md @@ -10,7 +10,7 @@ introduced: "v1.8.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/vsphere/README.md, VMware vSphere Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/vsphere/README.md, VMware vSphere Plugin Source --- # VMware vSphere Input Plugin diff --git a/content/telegraf/v1/input-plugins/webhooks/_index.md b/content/telegraf/v1/input-plugins/webhooks/_index.md index ed40d9736..93d656c9e 100644 --- a/content/telegraf/v1/input-plugins/webhooks/_index.md +++ b/content/telegraf/v1/input-plugins/webhooks/_index.md @@ -10,7 +10,7 @@ introduced: "v1.0.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/webhooks/README.md, Webhooks Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/webhooks/README.md, Webhooks Plugin Source --- # Webhooks Input Plugin diff --git a/content/telegraf/v1/input-plugins/whois/_index.md b/content/telegraf/v1/input-plugins/whois/_index.md index 49e7e09aa..18bb64b5e 100644 --- a/content/telegraf/v1/input-plugins/whois/_index.md +++ b/content/telegraf/v1/input-plugins/whois/_index.md @@ -10,7 +10,7 @@ introduced: "v1.35.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/whois/README.md, WHOIS Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/whois/README.md, WHOIS Plugin Source --- # WHOIS Input Plugin diff --git a/content/telegraf/v1/input-plugins/win_eventlog/_index.md b/content/telegraf/v1/input-plugins/win_eventlog/_index.md index cac241c11..c440bcac6 100644 --- a/content/telegraf/v1/input-plugins/win_eventlog/_index.md +++ b/content/telegraf/v1/input-plugins/win_eventlog/_index.md @@ -10,7 +10,7 @@ introduced: "v1.16.0" os_support: "windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/win_eventlog/README.md, Windows Eventlog Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/win_eventlog/README.md, Windows Eventlog Plugin Source --- # Windows Eventlog Input Plugin diff --git a/content/telegraf/v1/input-plugins/win_perf_counters/_index.md b/content/telegraf/v1/input-plugins/win_perf_counters/_index.md index 799c61c0e..8c0d1b65a 100644 --- a/content/telegraf/v1/input-plugins/win_perf_counters/_index.md +++ b/content/telegraf/v1/input-plugins/win_perf_counters/_index.md @@ -10,7 +10,7 @@ introduced: "v0.10.2" os_support: "windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/win_perf_counters/README.md, Windows Performance Counters Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/win_perf_counters/README.md, Windows Performance Counters Plugin Source --- # Windows Performance Counters Input Plugin diff --git a/content/telegraf/v1/input-plugins/win_services/_index.md b/content/telegraf/v1/input-plugins/win_services/_index.md index fc6622f0a..5df95b5fc 100644 --- a/content/telegraf/v1/input-plugins/win_services/_index.md +++ b/content/telegraf/v1/input-plugins/win_services/_index.md @@ -10,7 +10,7 @@ introduced: "v1.4.0" os_support: "windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/win_services/README.md, Windows Services Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/win_services/README.md, Windows Services Plugin Source --- # Windows Services Input Plugin diff --git a/content/telegraf/v1/input-plugins/win_wmi/_index.md b/content/telegraf/v1/input-plugins/win_wmi/_index.md index 67905dc4e..fa1fc7f9f 100644 --- a/content/telegraf/v1/input-plugins/win_wmi/_index.md +++ b/content/telegraf/v1/input-plugins/win_wmi/_index.md @@ -10,7 +10,7 @@ introduced: "v1.26.0" os_support: "windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/win_wmi/README.md, Windows Management Instrumentation Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/win_wmi/README.md, Windows Management Instrumentation Plugin Source --- # Windows Management Instrumentation Input Plugin diff --git a/content/telegraf/v1/input-plugins/wireguard/_index.md b/content/telegraf/v1/input-plugins/wireguard/_index.md index 99359245d..36992a514 100644 --- a/content/telegraf/v1/input-plugins/wireguard/_index.md +++ b/content/telegraf/v1/input-plugins/wireguard/_index.md @@ -10,7 +10,7 @@ introduced: "v1.14.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/wireguard/README.md, Wireguard Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/wireguard/README.md, Wireguard Plugin Source --- # Wireguard Input Plugin diff --git a/content/telegraf/v1/input-plugins/wireless/_index.md b/content/telegraf/v1/input-plugins/wireless/_index.md index 74aeb5794..833eee43a 100644 --- a/content/telegraf/v1/input-plugins/wireless/_index.md +++ b/content/telegraf/v1/input-plugins/wireless/_index.md @@ -10,7 +10,7 @@ introduced: "v1.9.0" os_support: "linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/wireless/README.md, Wireless Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/wireless/README.md, Wireless Plugin Source --- # Wireless Input Plugin diff --git a/content/telegraf/v1/input-plugins/x509_cert/_index.md b/content/telegraf/v1/input-plugins/x509_cert/_index.md index ec28a65dc..5e7af3042 100644 --- a/content/telegraf/v1/input-plugins/x509_cert/_index.md +++ b/content/telegraf/v1/input-plugins/x509_cert/_index.md @@ -10,7 +10,7 @@ introduced: "v1.8.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/x509_cert/README.md, x509 Certificate Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/x509_cert/README.md, x509 Certificate Plugin Source --- # x509 Certificate Input Plugin diff --git a/content/telegraf/v1/input-plugins/xtremio/_index.md b/content/telegraf/v1/input-plugins/xtremio/_index.md index 8a257b788..1ddbf62fa 100644 --- a/content/telegraf/v1/input-plugins/xtremio/_index.md +++ b/content/telegraf/v1/input-plugins/xtremio/_index.md @@ -10,7 +10,7 @@ introduced: "v1.22.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/xtremio/README.md, Dell EMC XtremIO Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/xtremio/README.md, Dell EMC XtremIO Plugin Source --- # Dell EMC XtremIO Input Plugin diff --git a/content/telegraf/v1/input-plugins/zfs/_index.md b/content/telegraf/v1/input-plugins/zfs/_index.md index a2796c2ec..71a2bd6ef 100644 --- a/content/telegraf/v1/input-plugins/zfs/_index.md +++ b/content/telegraf/v1/input-plugins/zfs/_index.md @@ -10,7 +10,7 @@ introduced: "v0.2.1" os_support: "freebsd, linux" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/zfs/README.md, ZFS Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/zfs/README.md, ZFS Plugin Source --- # ZFS Input Plugin @@ -56,8 +56,28 @@ See the [CONFIGURATION.md](/telegraf/v1/configuration/#plugins) for more details ## By default, don't gather dataset stats # datasetMetrics = false + + ## Report fields as the type defined by ZFS (Linux only) + ## This is disabled for backward compatibility but is STRONGLY RECOMMENDED + ## to be enabled to avoid overflows. This requires UINT support on the output + ## for most fields. + ## useNativeTypes = false ``` +OpenZFS on Linux reports the type of fields especially for the dataset metrics. +By default this plugin will ignore the provided type and will report metrics as +signed 64-bit integers. + +It is **highly recommended** to use the reported type by setting +`useNativeTypes` to `true` for avoiding overflows of field values as most fields +are reported as **unsigned** 64-bit integers. Additionally, you must make sure +your output supports reporting unsigned values! + +> [!WARNING] +> Changing the setting for `useNativeTypes` will generate metrics with +> conflicting field types so you need to either migrate existing data or clear +> your database for e.g. InfluxDB outputs! + ## Metrics By default this plugin collects metrics about ZFS internals pool and dataset. diff --git a/content/telegraf/v1/input-plugins/zipkin/_index.md b/content/telegraf/v1/input-plugins/zipkin/_index.md index fb4ca0e9d..4e63417f7 100644 --- a/content/telegraf/v1/input-plugins/zipkin/_index.md +++ b/content/telegraf/v1/input-plugins/zipkin/_index.md @@ -10,7 +10,7 @@ introduced: "v1.4.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/zipkin/README.md, Zipkin Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/zipkin/README.md, Zipkin Plugin Source --- # Zipkin Input Plugin diff --git a/content/telegraf/v1/input-plugins/zookeeper/_index.md b/content/telegraf/v1/input-plugins/zookeeper/_index.md index a127e726a..dcaf77367 100644 --- a/content/telegraf/v1/input-plugins/zookeeper/_index.md +++ b/content/telegraf/v1/input-plugins/zookeeper/_index.md @@ -10,7 +10,7 @@ introduced: "v0.2.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/inputs/zookeeper/README.md, Apache Zookeeper Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/inputs/zookeeper/README.md, Apache Zookeeper Plugin Source --- # Apache Zookeeper Input Plugin diff --git a/content/telegraf/v1/output-plugins/amon/_index.md b/content/telegraf/v1/output-plugins/amon/_index.md index b93504f39..aaa87b3e9 100644 --- a/content/telegraf/v1/output-plugins/amon/_index.md +++ b/content/telegraf/v1/output-plugins/amon/_index.md @@ -10,7 +10,7 @@ introduced: "v0.2.1" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/amon/README.md, Amon Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/amon/README.md, Amon Plugin Source --- # Amon Output Plugin diff --git a/content/telegraf/v1/output-plugins/amqp/_index.md b/content/telegraf/v1/output-plugins/amqp/_index.md index 11964b20a..84e00de0a 100644 --- a/content/telegraf/v1/output-plugins/amqp/_index.md +++ b/content/telegraf/v1/output-plugins/amqp/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.9" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/amqp/README.md, AMQP Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/amqp/README.md, AMQP Plugin Source --- # AMQP Output Plugin diff --git a/content/telegraf/v1/output-plugins/application_insights/_index.md b/content/telegraf/v1/output-plugins/application_insights/_index.md index 178410834..4b1c0c879 100644 --- a/content/telegraf/v1/output-plugins/application_insights/_index.md +++ b/content/telegraf/v1/output-plugins/application_insights/_index.md @@ -10,7 +10,7 @@ introduced: "v1.7.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/application_insights/README.md, Azure Application Insights Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/application_insights/README.md, Azure Application Insights Plugin Source --- # Azure Application Insights Output Plugin diff --git a/content/telegraf/v1/output-plugins/azure_data_explorer/_index.md b/content/telegraf/v1/output-plugins/azure_data_explorer/_index.md index 406453e1f..c7008d2f8 100644 --- a/content/telegraf/v1/output-plugins/azure_data_explorer/_index.md +++ b/content/telegraf/v1/output-plugins/azure_data_explorer/_index.md @@ -10,7 +10,7 @@ introduced: "v1.20.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/azure_data_explorer/README.md, Azure Data Explorer Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/azure_data_explorer/README.md, Azure Data Explorer Plugin Source --- # Azure Data Explorer Output Plugin diff --git a/content/telegraf/v1/output-plugins/azure_monitor/_index.md b/content/telegraf/v1/output-plugins/azure_monitor/_index.md index e1e6c0d8c..ea4848275 100644 --- a/content/telegraf/v1/output-plugins/azure_monitor/_index.md +++ b/content/telegraf/v1/output-plugins/azure_monitor/_index.md @@ -10,7 +10,7 @@ introduced: "v1.8.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/azure_monitor/README.md, Azure Monitor Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/azure_monitor/README.md, Azure Monitor Plugin Source --- # Azure Monitor Output Plugin diff --git a/content/telegraf/v1/output-plugins/bigquery/_index.md b/content/telegraf/v1/output-plugins/bigquery/_index.md index a76a3d1c1..0692f4ed1 100644 --- a/content/telegraf/v1/output-plugins/bigquery/_index.md +++ b/content/telegraf/v1/output-plugins/bigquery/_index.md @@ -10,7 +10,7 @@ introduced: "v1.18.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/bigquery/README.md, Google BigQuery Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/bigquery/README.md, Google BigQuery Plugin Source --- # Google BigQuery Output Plugin diff --git a/content/telegraf/v1/output-plugins/clarify/_index.md b/content/telegraf/v1/output-plugins/clarify/_index.md index 062b1f333..06ee92a9d 100644 --- a/content/telegraf/v1/output-plugins/clarify/_index.md +++ b/content/telegraf/v1/output-plugins/clarify/_index.md @@ -10,7 +10,7 @@ introduced: "v1.27.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/clarify/README.md, Clarify Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/clarify/README.md, Clarify Plugin Source --- # Clarify Output Plugin diff --git a/content/telegraf/v1/output-plugins/cloud_pubsub/_index.md b/content/telegraf/v1/output-plugins/cloud_pubsub/_index.md index 1f603caaf..348be599b 100644 --- a/content/telegraf/v1/output-plugins/cloud_pubsub/_index.md +++ b/content/telegraf/v1/output-plugins/cloud_pubsub/_index.md @@ -10,7 +10,7 @@ introduced: "v1.10.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/cloud_pubsub/README.md, Google Cloud PubSub Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/cloud_pubsub/README.md, Google Cloud PubSub Plugin Source --- # Google Cloud PubSub Output Plugin diff --git a/content/telegraf/v1/output-plugins/cloudwatch/_index.md b/content/telegraf/v1/output-plugins/cloudwatch/_index.md index b7be69e34..9bc1c079f 100644 --- a/content/telegraf/v1/output-plugins/cloudwatch/_index.md +++ b/content/telegraf/v1/output-plugins/cloudwatch/_index.md @@ -10,7 +10,7 @@ introduced: "v0.10.1" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/cloudwatch/README.md, Amazon CloudWatch Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/cloudwatch/README.md, Amazon CloudWatch Plugin Source --- # Amazon CloudWatch Output Plugin diff --git a/content/telegraf/v1/output-plugins/cloudwatch_logs/_index.md b/content/telegraf/v1/output-plugins/cloudwatch_logs/_index.md index 61579d76c..3a51335ec 100644 --- a/content/telegraf/v1/output-plugins/cloudwatch_logs/_index.md +++ b/content/telegraf/v1/output-plugins/cloudwatch_logs/_index.md @@ -10,7 +10,7 @@ introduced: "v1.19.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/cloudwatch_logs/README.md, Amazon CloudWatch Logs Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/cloudwatch_logs/README.md, Amazon CloudWatch Logs Plugin Source --- # Amazon CloudWatch Logs Output Plugin diff --git a/content/telegraf/v1/output-plugins/cratedb/_index.md b/content/telegraf/v1/output-plugins/cratedb/_index.md index 5da4275e5..159a2de42 100644 --- a/content/telegraf/v1/output-plugins/cratedb/_index.md +++ b/content/telegraf/v1/output-plugins/cratedb/_index.md @@ -10,7 +10,7 @@ introduced: "v1.5.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/cratedb/README.md, CrateDB Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/cratedb/README.md, CrateDB Plugin Source --- # CrateDB Output Plugin diff --git a/content/telegraf/v1/output-plugins/datadog/_index.md b/content/telegraf/v1/output-plugins/datadog/_index.md index e550be1fe..9c478655f 100644 --- a/content/telegraf/v1/output-plugins/datadog/_index.md +++ b/content/telegraf/v1/output-plugins/datadog/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.6" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/datadog/README.md, Datadog Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/datadog/README.md, Datadog Plugin Source --- # Datadog Output Plugin diff --git a/content/telegraf/v1/output-plugins/discard/_index.md b/content/telegraf/v1/output-plugins/discard/_index.md index 3cff04fb6..cba613ae8 100644 --- a/content/telegraf/v1/output-plugins/discard/_index.md +++ b/content/telegraf/v1/output-plugins/discard/_index.md @@ -10,7 +10,7 @@ introduced: "v1.2.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/discard/README.md, Discard Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/discard/README.md, Discard Plugin Source --- # Discard Output Plugin diff --git a/content/telegraf/v1/output-plugins/dynatrace/_index.md b/content/telegraf/v1/output-plugins/dynatrace/_index.md index 3e0150a71..014a80272 100644 --- a/content/telegraf/v1/output-plugins/dynatrace/_index.md +++ b/content/telegraf/v1/output-plugins/dynatrace/_index.md @@ -10,7 +10,7 @@ introduced: "v1.16.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/dynatrace/README.md, Dynatrace Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/dynatrace/README.md, Dynatrace Plugin Source --- # Dynatrace Output Plugin diff --git a/content/telegraf/v1/output-plugins/elasticsearch/_index.md b/content/telegraf/v1/output-plugins/elasticsearch/_index.md index 7ac3fe7bb..ff487568e 100644 --- a/content/telegraf/v1/output-plugins/elasticsearch/_index.md +++ b/content/telegraf/v1/output-plugins/elasticsearch/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.5" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/elasticsearch/README.md, Elasticsearch Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/elasticsearch/README.md, Elasticsearch Plugin Source --- # Elasticsearch Output Plugin diff --git a/content/telegraf/v1/output-plugins/event_hubs/_index.md b/content/telegraf/v1/output-plugins/event_hubs/_index.md index ebb58b46b..f8b002522 100644 --- a/content/telegraf/v1/output-plugins/event_hubs/_index.md +++ b/content/telegraf/v1/output-plugins/event_hubs/_index.md @@ -10,7 +10,7 @@ introduced: "v1.21.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/event_hubs/README.md, Azure Event Hubs Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/event_hubs/README.md, Azure Event Hubs Plugin Source --- # Azure Event Hubs Output Plugin diff --git a/content/telegraf/v1/output-plugins/exec/_index.md b/content/telegraf/v1/output-plugins/exec/_index.md index 61356a74a..b31d161ec 100644 --- a/content/telegraf/v1/output-plugins/exec/_index.md +++ b/content/telegraf/v1/output-plugins/exec/_index.md @@ -10,7 +10,7 @@ introduced: "v1.12.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/exec/README.md, Executable Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/exec/README.md, Executable Plugin Source --- # Executable Output Plugin diff --git a/content/telegraf/v1/output-plugins/execd/_index.md b/content/telegraf/v1/output-plugins/execd/_index.md index 22b4e51bc..72b78b8c1 100644 --- a/content/telegraf/v1/output-plugins/execd/_index.md +++ b/content/telegraf/v1/output-plugins/execd/_index.md @@ -10,7 +10,7 @@ introduced: "v1.15.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/execd/README.md, Executable Daemon Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/execd/README.md, Executable Daemon Plugin Source --- # Executable Daemon Output Plugin diff --git a/content/telegraf/v1/output-plugins/file/_index.md b/content/telegraf/v1/output-plugins/file/_index.md index 00067b07c..d6e46ce72 100644 --- a/content/telegraf/v1/output-plugins/file/_index.md +++ b/content/telegraf/v1/output-plugins/file/_index.md @@ -10,7 +10,7 @@ introduced: "v0.10.3" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/file/README.md, File Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/file/README.md, File Plugin Source --- # File Output Plugin diff --git a/content/telegraf/v1/output-plugins/graphite/_index.md b/content/telegraf/v1/output-plugins/graphite/_index.md index 525bb7a59..8edf00571 100644 --- a/content/telegraf/v1/output-plugins/graphite/_index.md +++ b/content/telegraf/v1/output-plugins/graphite/_index.md @@ -10,7 +10,7 @@ introduced: "v0.10.1" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/graphite/README.md, Graphite Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/graphite/README.md, Graphite Plugin Source --- # Graphite Output Plugin diff --git a/content/telegraf/v1/output-plugins/graylog/_index.md b/content/telegraf/v1/output-plugins/graylog/_index.md index 75c4c0ac8..7ae1a83ee 100644 --- a/content/telegraf/v1/output-plugins/graylog/_index.md +++ b/content/telegraf/v1/output-plugins/graylog/_index.md @@ -10,7 +10,7 @@ introduced: "v1.0.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/graylog/README.md, Graylog Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/graylog/README.md, Graylog Plugin Source --- # Graylog Output Plugin diff --git a/content/telegraf/v1/output-plugins/groundwork/_index.md b/content/telegraf/v1/output-plugins/groundwork/_index.md index 0dc7bf417..39e72e805 100644 --- a/content/telegraf/v1/output-plugins/groundwork/_index.md +++ b/content/telegraf/v1/output-plugins/groundwork/_index.md @@ -10,7 +10,7 @@ introduced: "v1.21.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/groundwork/README.md, GroundWork Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/groundwork/README.md, GroundWork Plugin Source --- # GroundWork Output Plugin diff --git a/content/telegraf/v1/output-plugins/health/_index.md b/content/telegraf/v1/output-plugins/health/_index.md index 97b35fe55..410fc1751 100644 --- a/content/telegraf/v1/output-plugins/health/_index.md +++ b/content/telegraf/v1/output-plugins/health/_index.md @@ -10,7 +10,7 @@ introduced: "v1.11.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/health/README.md, Health Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/health/README.md, Health Plugin Source --- # Health Output Plugin diff --git a/content/telegraf/v1/output-plugins/http/_index.md b/content/telegraf/v1/output-plugins/http/_index.md index b6a3ba09e..6b8c6ae0c 100644 --- a/content/telegraf/v1/output-plugins/http/_index.md +++ b/content/telegraf/v1/output-plugins/http/_index.md @@ -10,7 +10,7 @@ introduced: "v1.7.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/http/README.md, HTTP Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/http/README.md, HTTP Plugin Source --- # HTTP Output Plugin diff --git a/content/telegraf/v1/output-plugins/influxdb/_index.md b/content/telegraf/v1/output-plugins/influxdb/_index.md index cb49dc8df..5a443e4e4 100644 --- a/content/telegraf/v1/output-plugins/influxdb/_index.md +++ b/content/telegraf/v1/output-plugins/influxdb/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.1" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/influxdb/README.md, InfluxDB v1.x Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/influxdb/README.md, InfluxDB v1.x Plugin Source --- # InfluxDB v1.x Output Plugin diff --git a/content/telegraf/v1/output-plugins/influxdb_v2/_index.md b/content/telegraf/v1/output-plugins/influxdb_v2/_index.md index 0b4f08b98..877a51516 100644 --- a/content/telegraf/v1/output-plugins/influxdb_v2/_index.md +++ b/content/telegraf/v1/output-plugins/influxdb_v2/_index.md @@ -10,7 +10,7 @@ introduced: "v1.8.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/influxdb_v2/README.md, InfluxDB v2.x Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/influxdb_v2/README.md, InfluxDB v2.x Plugin Source --- # InfluxDB v2.x Output Plugin diff --git a/content/telegraf/v1/output-plugins/inlong/_index.md b/content/telegraf/v1/output-plugins/inlong/_index.md index 8bc5de1dd..57e9af1a1 100644 --- a/content/telegraf/v1/output-plugins/inlong/_index.md +++ b/content/telegraf/v1/output-plugins/inlong/_index.md @@ -10,7 +10,7 @@ introduced: "v1.35.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/inlong/README.md, Inlong Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/inlong/README.md, Inlong Plugin Source --- # Inlong Output Plugin diff --git a/content/telegraf/v1/output-plugins/instrumental/_index.md b/content/telegraf/v1/output-plugins/instrumental/_index.md index 8a0462407..4829d9562 100644 --- a/content/telegraf/v1/output-plugins/instrumental/_index.md +++ b/content/telegraf/v1/output-plugins/instrumental/_index.md @@ -10,7 +10,7 @@ introduced: "v0.13.1" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/instrumental/README.md, Instrumental Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/instrumental/README.md, Instrumental Plugin Source --- # Instrumental Output Plugin diff --git a/content/telegraf/v1/output-plugins/iotdb/_index.md b/content/telegraf/v1/output-plugins/iotdb/_index.md index a543dd7eb..3c087dc8b 100644 --- a/content/telegraf/v1/output-plugins/iotdb/_index.md +++ b/content/telegraf/v1/output-plugins/iotdb/_index.md @@ -10,7 +10,7 @@ introduced: "v1.24.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/iotdb/README.md, Apache IoTDB Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/iotdb/README.md, Apache IoTDB Plugin Source --- # Apache IoTDB Output Plugin diff --git a/content/telegraf/v1/output-plugins/kafka/_index.md b/content/telegraf/v1/output-plugins/kafka/_index.md index c00e38d9c..6dd354296 100644 --- a/content/telegraf/v1/output-plugins/kafka/_index.md +++ b/content/telegraf/v1/output-plugins/kafka/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.7" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/kafka/README.md, Kafka Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/kafka/README.md, Kafka Plugin Source --- # Kafka Output Plugin diff --git a/content/telegraf/v1/output-plugins/kinesis/_index.md b/content/telegraf/v1/output-plugins/kinesis/_index.md index e7d3f5137..4733d0c16 100644 --- a/content/telegraf/v1/output-plugins/kinesis/_index.md +++ b/content/telegraf/v1/output-plugins/kinesis/_index.md @@ -10,7 +10,7 @@ introduced: "v0.2.5" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/kinesis/README.md, Amazon Kinesis Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/kinesis/README.md, Amazon Kinesis Plugin Source --- # Amazon Kinesis Output Plugin diff --git a/content/telegraf/v1/output-plugins/librato/_index.md b/content/telegraf/v1/output-plugins/librato/_index.md index ec0c05bbd..f9a40bdc0 100644 --- a/content/telegraf/v1/output-plugins/librato/_index.md +++ b/content/telegraf/v1/output-plugins/librato/_index.md @@ -10,7 +10,7 @@ introduced: "v0.2.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/librato/README.md, Librato Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/librato/README.md, Librato Plugin Source --- # Librato Output Plugin diff --git a/content/telegraf/v1/output-plugins/logzio/_index.md b/content/telegraf/v1/output-plugins/logzio/_index.md index 12925fb7b..2d3728934 100644 --- a/content/telegraf/v1/output-plugins/logzio/_index.md +++ b/content/telegraf/v1/output-plugins/logzio/_index.md @@ -10,7 +10,7 @@ introduced: "v1.17.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/logzio/README.md, Logz.io Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/logzio/README.md, Logz.io Plugin Source --- # Logz.io Output Plugin diff --git a/content/telegraf/v1/output-plugins/loki/_index.md b/content/telegraf/v1/output-plugins/loki/_index.md index 9d3c7a29f..d015fc7ac 100644 --- a/content/telegraf/v1/output-plugins/loki/_index.md +++ b/content/telegraf/v1/output-plugins/loki/_index.md @@ -10,7 +10,7 @@ introduced: "v1.18.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/loki/README.md, Grafana Loki Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/loki/README.md, Grafana Loki Plugin Source --- # Grafana Loki Output Plugin diff --git a/content/telegraf/v1/output-plugins/microsoft_fabric/_index.md b/content/telegraf/v1/output-plugins/microsoft_fabric/_index.md index 447a8a059..f901c40ee 100644 --- a/content/telegraf/v1/output-plugins/microsoft_fabric/_index.md +++ b/content/telegraf/v1/output-plugins/microsoft_fabric/_index.md @@ -10,7 +10,7 @@ introduced: "v1.35.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/microsoft_fabric/README.md, Microsoft Fabric Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/microsoft_fabric/README.md, Microsoft Fabric Plugin Source --- # Microsoft Fabric Output Plugin diff --git a/content/telegraf/v1/output-plugins/mongodb/_index.md b/content/telegraf/v1/output-plugins/mongodb/_index.md index 9376515e1..ebd677015 100644 --- a/content/telegraf/v1/output-plugins/mongodb/_index.md +++ b/content/telegraf/v1/output-plugins/mongodb/_index.md @@ -10,7 +10,7 @@ introduced: "v1.21.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/mongodb/README.md, MongoDB Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/mongodb/README.md, MongoDB Plugin Source --- # MongoDB Output Plugin diff --git a/content/telegraf/v1/output-plugins/mqtt/_index.md b/content/telegraf/v1/output-plugins/mqtt/_index.md index 35ad61524..ea6cdabc0 100644 --- a/content/telegraf/v1/output-plugins/mqtt/_index.md +++ b/content/telegraf/v1/output-plugins/mqtt/_index.md @@ -10,7 +10,7 @@ introduced: "v0.2.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/mqtt/README.md, MQTT Producer Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/mqtt/README.md, MQTT Producer Plugin Source --- # MQTT Producer Output Plugin diff --git a/content/telegraf/v1/output-plugins/nats/_index.md b/content/telegraf/v1/output-plugins/nats/_index.md index 4ee2e247d..4bd30182b 100644 --- a/content/telegraf/v1/output-plugins/nats/_index.md +++ b/content/telegraf/v1/output-plugins/nats/_index.md @@ -10,7 +10,7 @@ introduced: "v1.1.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/nats/README.md, NATS Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/nats/README.md, NATS Plugin Source --- # NATS Output Plugin diff --git a/content/telegraf/v1/output-plugins/nebius_cloud_monitoring/_index.md b/content/telegraf/v1/output-plugins/nebius_cloud_monitoring/_index.md index d2f0242ba..1de491ecd 100644 --- a/content/telegraf/v1/output-plugins/nebius_cloud_monitoring/_index.md +++ b/content/telegraf/v1/output-plugins/nebius_cloud_monitoring/_index.md @@ -10,7 +10,7 @@ introduced: "v1.27.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/nebius_cloud_monitoring/README.md, Nebius Cloud Monitoring Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/nebius_cloud_monitoring/README.md, Nebius Cloud Monitoring Plugin Source --- # Nebius Cloud Monitoring Output Plugin diff --git a/content/telegraf/v1/output-plugins/newrelic/_index.md b/content/telegraf/v1/output-plugins/newrelic/_index.md index cd13b2d7a..bb696d4e7 100644 --- a/content/telegraf/v1/output-plugins/newrelic/_index.md +++ b/content/telegraf/v1/output-plugins/newrelic/_index.md @@ -10,7 +10,7 @@ introduced: "v1.15.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/newrelic/README.md, New Relic Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/newrelic/README.md, New Relic Plugin Source --- # New Relic Output Plugin diff --git a/content/telegraf/v1/output-plugins/nsq/_index.md b/content/telegraf/v1/output-plugins/nsq/_index.md index c483ed8cb..f65dd8a48 100644 --- a/content/telegraf/v1/output-plugins/nsq/_index.md +++ b/content/telegraf/v1/output-plugins/nsq/_index.md @@ -10,7 +10,7 @@ introduced: "v0.2.1" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/nsq/README.md, NSQ Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/nsq/README.md, NSQ Plugin Source --- # NSQ Output Plugin diff --git a/content/telegraf/v1/output-plugins/opensearch/_index.md b/content/telegraf/v1/output-plugins/opensearch/_index.md index 7999c2bce..359df59d6 100644 --- a/content/telegraf/v1/output-plugins/opensearch/_index.md +++ b/content/telegraf/v1/output-plugins/opensearch/_index.md @@ -10,7 +10,7 @@ introduced: "v1.29.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/opensearch/README.md, OpenSearch Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/opensearch/README.md, OpenSearch Plugin Source --- # OpenSearch Output Plugin diff --git a/content/telegraf/v1/output-plugins/opentelemetry/_index.md b/content/telegraf/v1/output-plugins/opentelemetry/_index.md index c5c19ef1f..b77387834 100644 --- a/content/telegraf/v1/output-plugins/opentelemetry/_index.md +++ b/content/telegraf/v1/output-plugins/opentelemetry/_index.md @@ -10,7 +10,7 @@ introduced: "v1.20.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/opentelemetry/README.md, OpenTelemetry Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/opentelemetry/README.md, OpenTelemetry Plugin Source --- # OpenTelemetry Output Plugin diff --git a/content/telegraf/v1/output-plugins/opentsdb/_index.md b/content/telegraf/v1/output-plugins/opentsdb/_index.md index 76d051ca5..6d319ff96 100644 --- a/content/telegraf/v1/output-plugins/opentsdb/_index.md +++ b/content/telegraf/v1/output-plugins/opentsdb/_index.md @@ -10,7 +10,7 @@ introduced: "v0.1.9" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/opentsdb/README.md, OpenTSDB Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/opentsdb/README.md, OpenTSDB Plugin Source --- # OpenTSDB Output Plugin diff --git a/content/telegraf/v1/output-plugins/parquet/_index.md b/content/telegraf/v1/output-plugins/parquet/_index.md index e0f8659b4..f811a76b4 100644 --- a/content/telegraf/v1/output-plugins/parquet/_index.md +++ b/content/telegraf/v1/output-plugins/parquet/_index.md @@ -10,7 +10,7 @@ introduced: "v1.32.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/parquet/README.md, Parquet Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/parquet/README.md, Parquet Plugin Source --- # Parquet Output Plugin diff --git a/content/telegraf/v1/output-plugins/postgresql/_index.md b/content/telegraf/v1/output-plugins/postgresql/_index.md index 920bd4407..90f976717 100644 --- a/content/telegraf/v1/output-plugins/postgresql/_index.md +++ b/content/telegraf/v1/output-plugins/postgresql/_index.md @@ -10,7 +10,7 @@ introduced: "v1.24.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/postgresql/README.md, PostgreSQL Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/postgresql/README.md, PostgreSQL Plugin Source --- # PostgreSQL Output Plugin diff --git a/content/telegraf/v1/output-plugins/prometheus_client/_index.md b/content/telegraf/v1/output-plugins/prometheus_client/_index.md index 4a0fbe06f..f78ac4107 100644 --- a/content/telegraf/v1/output-plugins/prometheus_client/_index.md +++ b/content/telegraf/v1/output-plugins/prometheus_client/_index.md @@ -10,7 +10,7 @@ introduced: "v0.2.1" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/prometheus_client/README.md, Prometheus Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/prometheus_client/README.md, Prometheus Plugin Source --- # Prometheus Output Plugin diff --git a/content/telegraf/v1/output-plugins/quix/_index.md b/content/telegraf/v1/output-plugins/quix/_index.md index d55976528..650d92cff 100644 --- a/content/telegraf/v1/output-plugins/quix/_index.md +++ b/content/telegraf/v1/output-plugins/quix/_index.md @@ -10,7 +10,7 @@ introduced: "v1.33.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/quix/README.md, Quix Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/quix/README.md, Quix Plugin Source --- # Quix Output Plugin diff --git a/content/telegraf/v1/output-plugins/redistimeseries/_index.md b/content/telegraf/v1/output-plugins/redistimeseries/_index.md index 9c7cb7072..b5c72e55c 100644 --- a/content/telegraf/v1/output-plugins/redistimeseries/_index.md +++ b/content/telegraf/v1/output-plugins/redistimeseries/_index.md @@ -10,7 +10,7 @@ introduced: "v1.0.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/redistimeseries/README.md, Redis Time Series Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/redistimeseries/README.md, Redis Time Series Plugin Source --- # Redis Time Series Output Plugin diff --git a/content/telegraf/v1/output-plugins/remotefile/_index.md b/content/telegraf/v1/output-plugins/remotefile/_index.md index 0f138f898..1a7940517 100644 --- a/content/telegraf/v1/output-plugins/remotefile/_index.md +++ b/content/telegraf/v1/output-plugins/remotefile/_index.md @@ -10,7 +10,7 @@ introduced: "v1.32.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/remotefile/README.md, Remote File Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/remotefile/README.md, Remote File Plugin Source --- # Remote File Output Plugin diff --git a/content/telegraf/v1/output-plugins/riemann/_index.md b/content/telegraf/v1/output-plugins/riemann/_index.md index 35e6c15af..7e69201cf 100644 --- a/content/telegraf/v1/output-plugins/riemann/_index.md +++ b/content/telegraf/v1/output-plugins/riemann/_index.md @@ -10,7 +10,7 @@ introduced: "v1.3.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/riemann/README.md, Riemann Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/riemann/README.md, Riemann Plugin Source --- # Riemann Output Plugin diff --git a/content/telegraf/v1/output-plugins/sensu/_index.md b/content/telegraf/v1/output-plugins/sensu/_index.md index f1519b558..0555ba1eb 100644 --- a/content/telegraf/v1/output-plugins/sensu/_index.md +++ b/content/telegraf/v1/output-plugins/sensu/_index.md @@ -10,7 +10,7 @@ introduced: "v1.18.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/sensu/README.md, Sensu Go Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/sensu/README.md, Sensu Go Plugin Source --- # Sensu Go Output Plugin diff --git a/content/telegraf/v1/output-plugins/signalfx/_index.md b/content/telegraf/v1/output-plugins/signalfx/_index.md index 17739070f..b75b2a195 100644 --- a/content/telegraf/v1/output-plugins/signalfx/_index.md +++ b/content/telegraf/v1/output-plugins/signalfx/_index.md @@ -10,7 +10,7 @@ introduced: "v1.18.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/signalfx/README.md, SignalFx Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/signalfx/README.md, SignalFx Plugin Source --- # SignalFx Output Plugin diff --git a/content/telegraf/v1/output-plugins/socket_writer/_index.md b/content/telegraf/v1/output-plugins/socket_writer/_index.md index 86b1c5e21..236aba063 100644 --- a/content/telegraf/v1/output-plugins/socket_writer/_index.md +++ b/content/telegraf/v1/output-plugins/socket_writer/_index.md @@ -10,7 +10,7 @@ introduced: "v1.3.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/socket_writer/README.md, Socket Writer Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/socket_writer/README.md, Socket Writer Plugin Source --- # Socket Writer Output Plugin diff --git a/content/telegraf/v1/output-plugins/sql/_index.md b/content/telegraf/v1/output-plugins/sql/_index.md index 8a5ec6b10..d79d5304c 100644 --- a/content/telegraf/v1/output-plugins/sql/_index.md +++ b/content/telegraf/v1/output-plugins/sql/_index.md @@ -10,7 +10,7 @@ introduced: "v1.19.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/sql/README.md, SQL Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/sql/README.md, SQL Plugin Source --- # SQL Output Plugin diff --git a/content/telegraf/v1/output-plugins/stackdriver/_index.md b/content/telegraf/v1/output-plugins/stackdriver/_index.md index ee60a8438..71452046d 100644 --- a/content/telegraf/v1/output-plugins/stackdriver/_index.md +++ b/content/telegraf/v1/output-plugins/stackdriver/_index.md @@ -10,7 +10,7 @@ introduced: "v1.9.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/stackdriver/README.md, Google Cloud Monitoring Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/stackdriver/README.md, Google Cloud Monitoring Plugin Source --- # Google Cloud Monitoring Output Plugin diff --git a/content/telegraf/v1/output-plugins/stomp/_index.md b/content/telegraf/v1/output-plugins/stomp/_index.md index e7dda1193..202980efd 100644 --- a/content/telegraf/v1/output-plugins/stomp/_index.md +++ b/content/telegraf/v1/output-plugins/stomp/_index.md @@ -10,7 +10,7 @@ introduced: "v1.24.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/stomp/README.md, ActiveMQ STOMP Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/stomp/README.md, ActiveMQ STOMP Plugin Source --- # ActiveMQ STOMP Output Plugin diff --git a/content/telegraf/v1/output-plugins/sumologic/_index.md b/content/telegraf/v1/output-plugins/sumologic/_index.md index 06abb7023..68cedd40f 100644 --- a/content/telegraf/v1/output-plugins/sumologic/_index.md +++ b/content/telegraf/v1/output-plugins/sumologic/_index.md @@ -10,7 +10,7 @@ introduced: "v1.16.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/sumologic/README.md, Sumo Logic Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/sumologic/README.md, Sumo Logic Plugin Source --- # Sumo Logic Output Plugin diff --git a/content/telegraf/v1/output-plugins/syslog/_index.md b/content/telegraf/v1/output-plugins/syslog/_index.md index c9c52c0d7..ff0755dcf 100644 --- a/content/telegraf/v1/output-plugins/syslog/_index.md +++ b/content/telegraf/v1/output-plugins/syslog/_index.md @@ -10,7 +10,7 @@ introduced: "v1.11.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/syslog/README.md, Syslog Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/syslog/README.md, Syslog Plugin Source --- # Syslog Output Plugin diff --git a/content/telegraf/v1/output-plugins/timestream/_index.md b/content/telegraf/v1/output-plugins/timestream/_index.md index 42e80f89b..d935b0fc1 100644 --- a/content/telegraf/v1/output-plugins/timestream/_index.md +++ b/content/telegraf/v1/output-plugins/timestream/_index.md @@ -10,7 +10,7 @@ introduced: "v1.16.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/timestream/README.md, Amazon Timestream Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/timestream/README.md, Amazon Timestream Plugin Source --- # Amazon Timestream Output Plugin diff --git a/content/telegraf/v1/output-plugins/warp10/_index.md b/content/telegraf/v1/output-plugins/warp10/_index.md index d00585961..4fabb7282 100644 --- a/content/telegraf/v1/output-plugins/warp10/_index.md +++ b/content/telegraf/v1/output-plugins/warp10/_index.md @@ -10,7 +10,7 @@ introduced: "v1.14.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/warp10/README.md, Warp10 Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/warp10/README.md, Warp10 Plugin Source --- # Warp10 Output Plugin diff --git a/content/telegraf/v1/output-plugins/wavefront/_index.md b/content/telegraf/v1/output-plugins/wavefront/_index.md index 2caf13061..59abf52c9 100644 --- a/content/telegraf/v1/output-plugins/wavefront/_index.md +++ b/content/telegraf/v1/output-plugins/wavefront/_index.md @@ -10,7 +10,7 @@ introduced: "v1.5.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/wavefront/README.md, Wavefront Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/wavefront/README.md, Wavefront Plugin Source --- # Wavefront Output Plugin diff --git a/content/telegraf/v1/output-plugins/websocket/_index.md b/content/telegraf/v1/output-plugins/websocket/_index.md index 47b7ef152..86cdc0b0b 100644 --- a/content/telegraf/v1/output-plugins/websocket/_index.md +++ b/content/telegraf/v1/output-plugins/websocket/_index.md @@ -10,7 +10,7 @@ introduced: "v1.19.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/websocket/README.md, Websocket Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/websocket/README.md, Websocket Plugin Source --- # Websocket Output Plugin diff --git a/content/telegraf/v1/output-plugins/yandex_cloud_monitoring/_index.md b/content/telegraf/v1/output-plugins/yandex_cloud_monitoring/_index.md index d176f2eea..80b2e80d4 100644 --- a/content/telegraf/v1/output-plugins/yandex_cloud_monitoring/_index.md +++ b/content/telegraf/v1/output-plugins/yandex_cloud_monitoring/_index.md @@ -10,7 +10,7 @@ introduced: "v1.17.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/yandex_cloud_monitoring/README.md, Yandex Cloud Monitoring Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/yandex_cloud_monitoring/README.md, Yandex Cloud Monitoring Plugin Source --- # Yandex Cloud Monitoring Output Plugin diff --git a/content/telegraf/v1/output-plugins/zabbix/_index.md b/content/telegraf/v1/output-plugins/zabbix/_index.md index 2148deb1a..36cbdd803 100644 --- a/content/telegraf/v1/output-plugins/zabbix/_index.md +++ b/content/telegraf/v1/output-plugins/zabbix/_index.md @@ -10,7 +10,7 @@ introduced: "v1.30.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/outputs/zabbix/README.md, Zabbix Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/outputs/zabbix/README.md, Zabbix Plugin Source --- # Zabbix Output Plugin diff --git a/content/telegraf/v1/processor-plugins/aws_ec2/_index.md b/content/telegraf/v1/processor-plugins/aws_ec2/_index.md index e0a21c140..acfd690b7 100644 --- a/content/telegraf/v1/processor-plugins/aws_ec2/_index.md +++ b/content/telegraf/v1/processor-plugins/aws_ec2/_index.md @@ -10,7 +10,7 @@ introduced: "v1.18.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/aws_ec2/README.md, AWS EC2 Metadata Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/aws_ec2/README.md, AWS EC2 Metadata Plugin Source --- # AWS EC2 Metadata Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/batch/_index.md b/content/telegraf/v1/processor-plugins/batch/_index.md index e09474e74..2d439d4fb 100644 --- a/content/telegraf/v1/processor-plugins/batch/_index.md +++ b/content/telegraf/v1/processor-plugins/batch/_index.md @@ -10,7 +10,7 @@ introduced: "v1.33.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/batch/README.md, Batch Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/batch/README.md, Batch Plugin Source --- # Batch Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/clone/_index.md b/content/telegraf/v1/processor-plugins/clone/_index.md index d87a3d4e5..0aeaa4806 100644 --- a/content/telegraf/v1/processor-plugins/clone/_index.md +++ b/content/telegraf/v1/processor-plugins/clone/_index.md @@ -10,7 +10,7 @@ introduced: "v1.13.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/clone/README.md, Clone Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/clone/README.md, Clone Plugin Source --- # Clone Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/converter/_index.md b/content/telegraf/v1/processor-plugins/converter/_index.md index ed3cc06b8..caff6fe86 100644 --- a/content/telegraf/v1/processor-plugins/converter/_index.md +++ b/content/telegraf/v1/processor-plugins/converter/_index.md @@ -10,7 +10,7 @@ introduced: "v1.7.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/converter/README.md, Converter Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/converter/README.md, Converter Plugin Source --- # Converter Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/cumulative_sum/_index.md b/content/telegraf/v1/processor-plugins/cumulative_sum/_index.md index b88e9e341..bdef90fe0 100644 --- a/content/telegraf/v1/processor-plugins/cumulative_sum/_index.md +++ b/content/telegraf/v1/processor-plugins/cumulative_sum/_index.md @@ -10,7 +10,7 @@ introduced: "v1.35.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/cumulative_sum/README.md, Cumulative Sum Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/cumulative_sum/README.md, Cumulative Sum Plugin Source --- # Cumulative Sum Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/date/_index.md b/content/telegraf/v1/processor-plugins/date/_index.md index ef192621a..0c0194ef4 100644 --- a/content/telegraf/v1/processor-plugins/date/_index.md +++ b/content/telegraf/v1/processor-plugins/date/_index.md @@ -10,7 +10,7 @@ introduced: "v1.12.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/date/README.md, Date Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/date/README.md, Date Plugin Source --- # Date Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/dedup/_index.md b/content/telegraf/v1/processor-plugins/dedup/_index.md index f1d3d8278..d51be9076 100644 --- a/content/telegraf/v1/processor-plugins/dedup/_index.md +++ b/content/telegraf/v1/processor-plugins/dedup/_index.md @@ -10,7 +10,7 @@ introduced: "v1.14.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/dedup/README.md, Dedup Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/dedup/README.md, Dedup Plugin Source --- # Dedup Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/defaults/_index.md b/content/telegraf/v1/processor-plugins/defaults/_index.md index 87e1cda2a..92584b092 100644 --- a/content/telegraf/v1/processor-plugins/defaults/_index.md +++ b/content/telegraf/v1/processor-plugins/defaults/_index.md @@ -10,7 +10,7 @@ introduced: "v1.15.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/defaults/README.md, Defaults Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/defaults/README.md, Defaults Plugin Source --- # Defaults Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/enum/_index.md b/content/telegraf/v1/processor-plugins/enum/_index.md index 8ff10917e..a724fa066 100644 --- a/content/telegraf/v1/processor-plugins/enum/_index.md +++ b/content/telegraf/v1/processor-plugins/enum/_index.md @@ -10,7 +10,7 @@ introduced: "v1.8.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/enum/README.md, Enum Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/enum/README.md, Enum Plugin Source --- # Enum Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/execd/_index.md b/content/telegraf/v1/processor-plugins/execd/_index.md index 3a09602f3..871c082f9 100644 --- a/content/telegraf/v1/processor-plugins/execd/_index.md +++ b/content/telegraf/v1/processor-plugins/execd/_index.md @@ -10,7 +10,7 @@ introduced: "v1.15.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/execd/README.md, Execd Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/execd/README.md, Execd Plugin Source --- # Execd Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/filepath/_index.md b/content/telegraf/v1/processor-plugins/filepath/_index.md index 5fb09342e..a48c18f80 100644 --- a/content/telegraf/v1/processor-plugins/filepath/_index.md +++ b/content/telegraf/v1/processor-plugins/filepath/_index.md @@ -10,7 +10,7 @@ introduced: "v1.15.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/filepath/README.md, Filepath Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/filepath/README.md, Filepath Plugin Source --- # Filepath Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/filter/_index.md b/content/telegraf/v1/processor-plugins/filter/_index.md index b312f145b..ffea99476 100644 --- a/content/telegraf/v1/processor-plugins/filter/_index.md +++ b/content/telegraf/v1/processor-plugins/filter/_index.md @@ -10,7 +10,7 @@ introduced: "v1.29.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/filter/README.md, Filter Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/filter/README.md, Filter Plugin Source --- # Filter Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/ifname/_index.md b/content/telegraf/v1/processor-plugins/ifname/_index.md index 7f9a8ff16..496160e52 100644 --- a/content/telegraf/v1/processor-plugins/ifname/_index.md +++ b/content/telegraf/v1/processor-plugins/ifname/_index.md @@ -10,7 +10,7 @@ introduced: "v1.15.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/ifname/README.md, Network Interface Name Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/ifname/README.md, Network Interface Name Plugin Source --- # Network Interface Name Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/lookup/_index.md b/content/telegraf/v1/processor-plugins/lookup/_index.md index a0f1f0b4d..934709a92 100644 --- a/content/telegraf/v1/processor-plugins/lookup/_index.md +++ b/content/telegraf/v1/processor-plugins/lookup/_index.md @@ -10,7 +10,7 @@ introduced: "v1.15.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/lookup/README.md, Lookup Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/lookup/README.md, Lookup Plugin Source --- # Lookup Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/noise/_index.md b/content/telegraf/v1/processor-plugins/noise/_index.md index 7eb589495..75e6b68d6 100644 --- a/content/telegraf/v1/processor-plugins/noise/_index.md +++ b/content/telegraf/v1/processor-plugins/noise/_index.md @@ -10,7 +10,7 @@ introduced: "v1.22.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/noise/README.md, Noise Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/noise/README.md, Noise Plugin Source --- # Noise Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/override/_index.md b/content/telegraf/v1/processor-plugins/override/_index.md index 792c7d3df..80dc31253 100644 --- a/content/telegraf/v1/processor-plugins/override/_index.md +++ b/content/telegraf/v1/processor-plugins/override/_index.md @@ -10,7 +10,7 @@ introduced: "v1.6.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/override/README.md, Override Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/override/README.md, Override Plugin Source --- # Override Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/parser/_index.md b/content/telegraf/v1/processor-plugins/parser/_index.md index 549ae20fb..5e9190f8a 100644 --- a/content/telegraf/v1/processor-plugins/parser/_index.md +++ b/content/telegraf/v1/processor-plugins/parser/_index.md @@ -10,7 +10,7 @@ introduced: "v1.8.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/parser/README.md, Parser Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/parser/README.md, Parser Plugin Source --- # Parser Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/pivot/_index.md b/content/telegraf/v1/processor-plugins/pivot/_index.md index 1140bf3da..96c3decc9 100644 --- a/content/telegraf/v1/processor-plugins/pivot/_index.md +++ b/content/telegraf/v1/processor-plugins/pivot/_index.md @@ -10,7 +10,7 @@ introduced: "v1.12.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/pivot/README.md, Pivot Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/pivot/README.md, Pivot Plugin Source --- # Pivot Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/port_name/_index.md b/content/telegraf/v1/processor-plugins/port_name/_index.md index 0029e9d33..ec438c342 100644 --- a/content/telegraf/v1/processor-plugins/port_name/_index.md +++ b/content/telegraf/v1/processor-plugins/port_name/_index.md @@ -10,7 +10,7 @@ introduced: "v1.15.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/port_name/README.md, Port Name Lookup Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/port_name/README.md, Port Name Lookup Plugin Source --- # Port Name Lookup Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/printer/_index.md b/content/telegraf/v1/processor-plugins/printer/_index.md index 9fa740db6..cf0c97f01 100644 --- a/content/telegraf/v1/processor-plugins/printer/_index.md +++ b/content/telegraf/v1/processor-plugins/printer/_index.md @@ -10,7 +10,7 @@ introduced: "v1.1.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/printer/README.md, Printer Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/printer/README.md, Printer Plugin Source --- # Printer Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/regex/_index.md b/content/telegraf/v1/processor-plugins/regex/_index.md index 81f8d6cdc..e4c00ffc3 100644 --- a/content/telegraf/v1/processor-plugins/regex/_index.md +++ b/content/telegraf/v1/processor-plugins/regex/_index.md @@ -10,7 +10,7 @@ introduced: "v1.7.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/regex/README.md, Regex Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/regex/README.md, Regex Plugin Source --- # Regex Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/rename/_index.md b/content/telegraf/v1/processor-plugins/rename/_index.md index 2245f8851..71db4a08e 100644 --- a/content/telegraf/v1/processor-plugins/rename/_index.md +++ b/content/telegraf/v1/processor-plugins/rename/_index.md @@ -10,7 +10,7 @@ introduced: "v1.8.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/rename/README.md, Rename Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/rename/README.md, Rename Plugin Source --- # Rename Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/reverse_dns/_index.md b/content/telegraf/v1/processor-plugins/reverse_dns/_index.md index 0eef571c6..a9afe7c42 100644 --- a/content/telegraf/v1/processor-plugins/reverse_dns/_index.md +++ b/content/telegraf/v1/processor-plugins/reverse_dns/_index.md @@ -10,7 +10,7 @@ introduced: "v1.15.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/reverse_dns/README.md, Reverse DNS Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/reverse_dns/README.md, Reverse DNS Plugin Source --- # Reverse DNS Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/round/_index.md b/content/telegraf/v1/processor-plugins/round/_index.md index 3e96ea4e6..e16b3bfbb 100644 --- a/content/telegraf/v1/processor-plugins/round/_index.md +++ b/content/telegraf/v1/processor-plugins/round/_index.md @@ -10,7 +10,7 @@ introduced: "v1.36.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/round/README.md, Round Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/round/README.md, Round Plugin Source --- # Round Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/s2geo/_index.md b/content/telegraf/v1/processor-plugins/s2geo/_index.md index 6b5d673fc..31f002439 100644 --- a/content/telegraf/v1/processor-plugins/s2geo/_index.md +++ b/content/telegraf/v1/processor-plugins/s2geo/_index.md @@ -10,7 +10,7 @@ introduced: "v1.14.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/s2geo/README.md, S2 Geo Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/s2geo/README.md, S2 Geo Plugin Source --- # S2 Geo Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/scale/_index.md b/content/telegraf/v1/processor-plugins/scale/_index.md index 303511a08..c24c03afb 100644 --- a/content/telegraf/v1/processor-plugins/scale/_index.md +++ b/content/telegraf/v1/processor-plugins/scale/_index.md @@ -10,7 +10,7 @@ introduced: "v1.27.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/scale/README.md, Scale Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/scale/README.md, Scale Plugin Source --- # Scale Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/snmp_lookup/_index.md b/content/telegraf/v1/processor-plugins/snmp_lookup/_index.md index d57a56018..6615fe624 100644 --- a/content/telegraf/v1/processor-plugins/snmp_lookup/_index.md +++ b/content/telegraf/v1/processor-plugins/snmp_lookup/_index.md @@ -10,7 +10,7 @@ introduced: "v1.30.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/snmp_lookup/README.md, SNMP Lookup Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/snmp_lookup/README.md, SNMP Lookup Plugin Source --- # SNMP Lookup Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/split/_index.md b/content/telegraf/v1/processor-plugins/split/_index.md index 6a9179ee9..dc4fb2cf7 100644 --- a/content/telegraf/v1/processor-plugins/split/_index.md +++ b/content/telegraf/v1/processor-plugins/split/_index.md @@ -10,7 +10,7 @@ introduced: "v1.28.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/split/README.md, Split Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/split/README.md, Split Plugin Source --- # Split Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/starlark/_index.md b/content/telegraf/v1/processor-plugins/starlark/_index.md index 5b99f6bdd..a21e46083 100644 --- a/content/telegraf/v1/processor-plugins/starlark/_index.md +++ b/content/telegraf/v1/processor-plugins/starlark/_index.md @@ -10,7 +10,7 @@ introduced: "v1.15.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/starlark/README.md, Starlark Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/starlark/README.md, Starlark Plugin Source --- # Starlark Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/strings/_index.md b/content/telegraf/v1/processor-plugins/strings/_index.md index 0e093e36c..23ef72947 100644 --- a/content/telegraf/v1/processor-plugins/strings/_index.md +++ b/content/telegraf/v1/processor-plugins/strings/_index.md @@ -10,7 +10,7 @@ introduced: "v1.8.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/strings/README.md, Strings Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/strings/README.md, Strings Plugin Source --- # Strings Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/tag_limit/_index.md b/content/telegraf/v1/processor-plugins/tag_limit/_index.md index 620434ea2..b27259f7c 100644 --- a/content/telegraf/v1/processor-plugins/tag_limit/_index.md +++ b/content/telegraf/v1/processor-plugins/tag_limit/_index.md @@ -10,7 +10,7 @@ introduced: "v1.12.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/tag_limit/README.md, Tag Limit Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/tag_limit/README.md, Tag Limit Plugin Source --- # Tag Limit Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/template/_index.md b/content/telegraf/v1/processor-plugins/template/_index.md index d143e04a2..4ebbcc420 100644 --- a/content/telegraf/v1/processor-plugins/template/_index.md +++ b/content/telegraf/v1/processor-plugins/template/_index.md @@ -10,7 +10,7 @@ introduced: "v1.14.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/template/README.md, Template Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/template/README.md, Template Plugin Source --- # Template Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/timestamp/_index.md b/content/telegraf/v1/processor-plugins/timestamp/_index.md index 136accb2a..ebd0325d4 100644 --- a/content/telegraf/v1/processor-plugins/timestamp/_index.md +++ b/content/telegraf/v1/processor-plugins/timestamp/_index.md @@ -10,7 +10,7 @@ introduced: "v1.31.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/timestamp/README.md, Timestamp Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/timestamp/README.md, Timestamp Plugin Source --- # Timestamp Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/topk/_index.md b/content/telegraf/v1/processor-plugins/topk/_index.md index 0b5f5295c..4379a672c 100644 --- a/content/telegraf/v1/processor-plugins/topk/_index.md +++ b/content/telegraf/v1/processor-plugins/topk/_index.md @@ -10,7 +10,7 @@ introduced: "v1.7.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/topk/README.md, TopK Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/topk/README.md, TopK Plugin Source --- # TopK Processor Plugin diff --git a/content/telegraf/v1/processor-plugins/unpivot/_index.md b/content/telegraf/v1/processor-plugins/unpivot/_index.md index a22c488d5..805e2b8cd 100644 --- a/content/telegraf/v1/processor-plugins/unpivot/_index.md +++ b/content/telegraf/v1/processor-plugins/unpivot/_index.md @@ -10,7 +10,7 @@ introduced: "v1.12.0" os_support: "freebsd, linux, macos, solaris, windows" related: - /telegraf/v1/configure_plugins/ - - https://github.com/influxdata/telegraf/tree/v1.36.2/plugins/processors/unpivot/README.md, Unpivot Plugin Source + - https://github.com/influxdata/telegraf/tree/v1.36.3/plugins/processors/unpivot/README.md, Unpivot Plugin Source --- # Unpivot Processor Plugin diff --git a/content/telegraf/v1/release-notes.md b/content/telegraf/v1/release-notes.md index cf95e72ca..2b3a1be78 100644 --- a/content/telegraf/v1/release-notes.md +++ b/content/telegraf/v1/release-notes.md @@ -11,6 +11,83 @@ menu: weight: 60 --- +## v1.36.3 {date="2025-10-21"} + +### Bugfixes + +- [#17765](https://github.com/influxdata/telegraf/pull/17765) `inputs.chrony` Prevent race condition in concurrent gather calls +- [#17634](https://github.com/influxdata/telegraf/pull/17634) `inputs.docker` Fix incorrect CPU usage_percent for Podman containers +- [#17740](https://github.com/influxdata/telegraf/pull/17740) `inputs.kube_inventory` Prevent panic in endpoints' ready flag +- [#17483](https://github.com/influxdata/telegraf/pull/17483) `inputs.smart` Correct exit_status for active vs standby drives +- [#17617](https://github.com/influxdata/telegraf/pull/17617) `inputs.zfs` Parse field values according to provided type +- [#17787](https://github.com/influxdata/telegraf/pull/17787) `outputs.nats` Unwrap wrapped metrics to avoid panic on missing Field method +- [#17573](https://github.com/influxdata/telegraf/pull/17573) `parsers.csv` Support concurrent usage +- [#17738](https://github.com/influxdata/telegraf/pull/17738) `secretstores.systemd` Handle dash version separator correctly + +### Dependency Updates + +- [#17770](https://github.com/influxdata/telegraf/pull/17770) `deps` Bump cloud.google.com/go/bigquery from 1.70.0 to 1.71.0 +- [#17821](https://github.com/influxdata/telegraf/pull/17821) `deps` Bump cloud.google.com/go/monitoring from 1.24.2 to 1.24.3 +- [#17777](https://github.com/influxdata/telegraf/pull/17777) `deps` Bump cloud.google.com/go/pubsub/v2 from 2.0.0 to 2.2.0 +- [#17846](https://github.com/influxdata/telegraf/pull/17846) `deps` Bump cloud.google.com/go/pubsub/v2 from 2.2.0 to 2.2.1 +- [#17718](https://github.com/influxdata/telegraf/pull/17718) `deps` Bump cloud.google.com/go/storage from 1.56.2 to 1.57.0 +- [#17805](https://github.com/influxdata/telegraf/pull/17805) `deps` Bump github.com/Azure/azure-sdk-for-go/sdk/azidentity from 1.12.0 to 1.13.0 +- [#17784](https://github.com/influxdata/telegraf/pull/17784) `deps` Bump github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs from 1.4.0 to 2.0.0 +- [#17810](https://github.com/influxdata/telegraf/pull/17810) `deps` Bump github.com/Azure/azure-sdk-for-go/sdk/messaging/azeventhubs/v2 from 2.0.0 to 2.0.1 +- [#17804](https://github.com/influxdata/telegraf/pull/17804) `deps` Bump github.com/IBM/sarama from 1.46.1 to 1.46.2 +- [#17724](https://github.com/influxdata/telegraf/pull/17724) `deps` Bump github.com/SAP/go-hdb from 1.14.4 to 1.14.5 +- [#17808](https://github.com/influxdata/telegraf/pull/17808) `deps` Bump github.com/SAP/go-hdb from 1.14.5 to 1.14.6 +- [#17866](https://github.com/influxdata/telegraf/pull/17866) `deps` Bump github.com/SAP/go-hdb from 1.14.6 to 1.14.7 +- [#17822](https://github.com/influxdata/telegraf/pull/17822) `deps` Bump github.com/antchfx/xmlquery from 1.4.4 to 1.5.0 +- [#17868](https://github.com/influxdata/telegraf/pull/17868) `deps` Bump github.com/aws/aws-sdk-go-v2/config from 1.31.12 to 1.31.13 +- [#17730](https://github.com/influxdata/telegraf/pull/17730) `deps` Bump github.com/aws/aws-sdk-go-v2/config from 1.31.9 to 1.31.12 +- [#17719](https://github.com/influxdata/telegraf/pull/17719) `deps` Bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.50.1 to 1.51.1 +- [#17863](https://github.com/influxdata/telegraf/pull/17863) `deps` Bump github.com/aws/aws-sdk-go-v2/service/cloudwatch from 1.51.1 to 1.51.2 +- [#17716](https://github.com/influxdata/telegraf/pull/17716) `deps` Bump github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs from 1.58.0 to 1.58.2 +- [#17715](https://github.com/influxdata/telegraf/pull/17715) `deps` Bump github.com/aws/aws-sdk-go-v2/service/dynamodb from 1.50.3 to 1.50.5 +- [#17772](https://github.com/influxdata/telegraf/pull/17772) `deps` Bump github.com/aws/aws-sdk-go-v2/service/dynamodb from 1.50.5 to 1.51.0 +- [#17714](https://github.com/influxdata/telegraf/pull/17714) `deps` Bump github.com/aws/aws-sdk-go-v2/service/ec2 from 1.253.0 to 1.254.1 +- [#17814](https://github.com/influxdata/telegraf/pull/17814) `deps` Bump github.com/aws/aws-sdk-go-v2/service/ec2 from 1.254.1 to 1.255.0 +- [#17728](https://github.com/influxdata/telegraf/pull/17728) `deps` Bump github.com/aws/aws-sdk-go-v2/service/kinesis from 1.40.3 to 1.40.5 +- [#17848](https://github.com/influxdata/telegraf/pull/17848) `deps` Bump github.com/aws/aws-sdk-go-v2/service/kinesis from 1.40.5 to 1.40.6 +- [#17723](https://github.com/influxdata/telegraf/pull/17723) `deps` Bump github.com/aws/aws-sdk-go-v2/service/timestreamwrite from 1.35.3 to 1.35.5 +- [#17864](https://github.com/influxdata/telegraf/pull/17864) `deps` Bump github.com/aws/smithy-go from 1.23.0 to 1.23.1 +- [#17849](https://github.com/influxdata/telegraf/pull/17849) `deps` Bump github.com/bluenviron/gomavlib/v3 from 3.2.1 to 3.3.0 +- [#17774](https://github.com/influxdata/telegraf/pull/17774) `deps` Bump github.com/docker/docker from 28.4.0+incompatible to 28.5.0+incompatible +- [#17816](https://github.com/influxdata/telegraf/pull/17816) `deps` Bump github.com/docker/docker from 28.5.0+incompatible to 28.5.1+incompatible +- [#17769](https://github.com/influxdata/telegraf/pull/17769) `deps` Bump github.com/go-ldap/ldap/v3 from 3.4.11 to 3.4.12 +- [#17775](https://github.com/influxdata/telegraf/pull/17775) `deps` Bump github.com/go-logfmt/logfmt from 0.6.0 to 0.6.1 +- [#17727](https://github.com/influxdata/telegraf/pull/17727) `deps` Bump github.com/hashicorp/consul/api from 1.32.3 to 1.32.4 +- [#17862](https://github.com/influxdata/telegraf/pull/17862) `deps` Bump github.com/klauspost/compress from 1.18.0 to 1.18.1 +- [#17773](https://github.com/influxdata/telegraf/pull/17773) `deps` Bump github.com/leodido/go-syslog/v4 from 4.2.1-0.20250421191238-de2e76af1251 to 4.3.0 +- [#17729](https://github.com/influxdata/telegraf/pull/17729) `deps` Bump github.com/lxc/incus/v6 from 6.16.0 to 6.17.0 +- [#17860](https://github.com/influxdata/telegraf/pull/17860) `deps` Bump github.com/nats-io/nats-server/v2 from 2.12.0 to 2.12.1 +- [#17766](https://github.com/influxdata/telegraf/pull/17766) `deps` Bump github.com/nats-io/nats.go from 1.46.0 to 1.46.1 +- [#17851](https://github.com/influxdata/telegraf/pull/17851) `deps` Bump github.com/nats-io/nats.go from 1.46.1 to 1.47.0 +- [#17813](https://github.com/influxdata/telegraf/pull/17813) `deps` Bump github.com/prometheus/common from 0.66.1 to 0.67.1 +- [#17867](https://github.com/influxdata/telegraf/pull/17867) `deps` Bump github.com/prometheus/prometheus from 0.306.0 to 0.307.1 +- [#17861](https://github.com/influxdata/telegraf/pull/17861) `deps` Bump github.com/redis/go-redis/v9 from 9.14.0 to 9.14.1 +- [#17767](https://github.com/influxdata/telegraf/pull/17767) `deps` Bump github.com/shirou/gopsutil/v4 from 4.25.8 to 4.25.9 +- [#17725](https://github.com/influxdata/telegraf/pull/17725) `deps` Bump github.com/snowflakedb/gosnowflake from 0.0.0-20250911095445-20c4d105d9a0 to 1.17.0 +- [#17776](https://github.com/influxdata/telegraf/pull/17776) `deps` Bump go.opentelemetry.io/collector/pdata from 1.42.0 to 1.43.0 +- [#17817](https://github.com/influxdata/telegraf/pull/17817) `deps` Bump go.step.sm/crypto from 0.70.0 to 0.71.0 +- [#17857](https://github.com/influxdata/telegraf/pull/17857) `deps` Bump go.step.sm/crypto from 0.71.0 to 0.72.0 +- [#17820](https://github.com/influxdata/telegraf/pull/17820) `deps` Bump golang.org/x/crypto from 0.42.0 to 0.43.0 +- [#17806](https://github.com/influxdata/telegraf/pull/17806) `deps` Bump golang.org/x/mod from 0.28.0 to 0.29.0 +- [#17819](https://github.com/influxdata/telegraf/pull/17819) `deps` Bump golang.org/x/net from 0.44.0 to 0.46.0 +- [#17818](https://github.com/influxdata/telegraf/pull/17818) `deps` Bump golang.org/x/oauth2 from 0.31.0 to 0.32.0 +- [#17823](https://github.com/influxdata/telegraf/pull/17823) `deps` Bump golang.org/x/sys from 0.36.0 to 0.37.0 +- [#17717](https://github.com/influxdata/telegraf/pull/17717) `deps` Bump google.golang.org/api from 0.249.0 to 0.250.0 +- [#17778](https://github.com/influxdata/telegraf/pull/17778) `deps` Bump google.golang.org/api from 0.250.0 to 0.251.0 +- [#17807](https://github.com/influxdata/telegraf/pull/17807) `deps` Bump google.golang.org/api from 0.251.0 to 0.252.0 +- [#17771](https://github.com/influxdata/telegraf/pull/17771) `deps` Bump google.golang.org/grpc from 1.75.1 to 1.76.0 +- [#17768](https://github.com/influxdata/telegraf/pull/17768) `deps` Bump google.golang.org/protobuf from 1.36.9 to 1.36.10 +- [#17811](https://github.com/influxdata/telegraf/pull/17811) `deps` Bump modernc.org/sqlite from 1.39.0 to 1.39.1 +- [#17779](https://github.com/influxdata/telegraf/pull/17779) `deps` Bump super-linter/super-linter from 8.1.0 to 8.2.0 +- [#17853](https://github.com/influxdata/telegraf/pull/17853) `deps` Bump super-linter/super-linter from 8.2.0 to 8.2.1 +- [#17610](https://github.com/influxdata/telegraf/pull/17610) `deps` Switch to maintained yaml library +- [#17794](https://github.com/influxdata/telegraf/pull/17794) `deps` Update golangci-lint to 2.5.0 + ## v1.36.2 {date="2025-09-29"} ### Bugfixes diff --git a/data/products.yml b/data/products.yml index 641fa7c63..d8a0b833f 100644 --- a/data/products.yml +++ b/data/products.yml @@ -233,7 +233,7 @@ telegraf: versions: [v1] latest: v1.36 latest_patches: - v1: 1.36.2 + v1: 1.36.3 ai_sample_questions: - How do I install and configure Telegraf? - How do I write a custom Telegraf plugin? From a30345170c80553c3322557f3a875a56637249e2 Mon Sep 17 00:00:00 2001 From: Jason Stirnaman Date: Tue, 21 Oct 2025 13:14:31 -0500 Subject: [PATCH 26/49] Core and Ent3 performance tuning guide and configuration options (#6421) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(influxdb3): Core and Ent performance tuning guide:Add an admin/performance-tuning/ page with specific workload and capacity configurations.Part of #6403. * fix(influxdb3): product-specific link fragments for flags * fix(influxdb3): enterprise-specific link fragments * Apply suggestion from @jstirnaman * fix(influxdb3): duplicate licensing and resource limits sections- Remโ€ฆ (#6470) * fix(influxdb3): duplicate licensing and resource limits sections- Remove duplicate licensing section- Resolve resource limits duplicates, merging details into the Resource limits section. * fix(influxdb3): fix broken links and enterprise-only flags in config options - Comment out TOC links to undocumented datafusion-runtime-* dev flags - Wrap enterprise-only section references (#licensing, #resource-limits) in conditionals - Fix num-datafusion-threads incorrectly marked as enterprise-only - Move Resource Limits section heading outside enterprise wrapper Resolves broken fragment links for both Core and Enterprise builds. * feat(enterprise): add cluster management documentation (#6431) Add comprehensive guide for managing InfluxDB 3 Enterprise clusters including: - Node configuration and deployment - Cluster initialization and scaling - Node removal and replacement procedures - Best practices for production deployments * Fixes multiple influxdb3 config option issues: - Fixed option placement (global vs serve options) in performance-tuning.md - Fixed --datafusion-num-threads option name (was --num-datafusion-threads) - Fixed --parquet-mem-cache-size option name and defaults for Core - Commented out unreleased --compaction-row-limit option - Added v3.0.0 breaking changes to release notes - Updated config-options.md with correct defaults and value formats All changes verified against InfluxDB v3.5.0 release binaries and git history. * fix(influxdb3): config options in clustering.md - Correctly place server options - Comment out unreleased options --- .../core/admin/performance-tuning.md | 22 + .../influxdb3/enterprise/admin/clustering.md | 642 +++++++++++++ .../enterprise/admin/performance-tuning.md | 23 + .../influxdb3-admin/performance-tuning.md | 681 ++++++++++++++ .../shared/influxdb3-cli/config-options.md | 363 ++------ .../_index.md | 7 + install_influxdb3.sh | 845 ++++++++++++++++++ 7 files changed, 2304 insertions(+), 279 deletions(-) create mode 100644 content/influxdb3/core/admin/performance-tuning.md create mode 100644 content/influxdb3/enterprise/admin/clustering.md create mode 100644 content/influxdb3/enterprise/admin/performance-tuning.md create mode 100644 content/shared/influxdb3-admin/performance-tuning.md create mode 100644 install_influxdb3.sh diff --git a/content/influxdb3/core/admin/performance-tuning.md b/content/influxdb3/core/admin/performance-tuning.md new file mode 100644 index 000000000..9fdf857bd --- /dev/null +++ b/content/influxdb3/core/admin/performance-tuning.md @@ -0,0 +1,22 @@ +--- +title: Performance tuning +seotitle: InfluxDB 3 Core performance tuning and optimization +description: > + Optimize {{% product-name %}} performance by tuning thread allocation, + memory settings, and other configuration options for your specific workload. +weight: 205 +menu: + influxdb3_core: + parent: Administer InfluxDB + name: Performance tuning +related: + - /influxdb3/core/reference/internals/runtime-architecture/ + - /influxdb3/core/reference/config-options/ + - /influxdb3/core/admin/query-system-data/ +source: /shared/influxdb3-admin/performance-tuning.md +--- + + \ No newline at end of file diff --git a/content/influxdb3/enterprise/admin/clustering.md b/content/influxdb3/enterprise/admin/clustering.md new file mode 100644 index 000000000..1dac71a11 --- /dev/null +++ b/content/influxdb3/enterprise/admin/clustering.md @@ -0,0 +1,642 @@ +--- +title: Configure specialized cluster nodes +seotitle: Configure InfluxDB 3 Enterprise cluster nodes for optimal performance +description: > + Learn how to configure specialized nodes in your InfluxDB 3 Enterprise cluster + for ingest, query, compaction, and processing workloads with optimal thread allocation. +menu: + influxdb3_enterprise: + parent: Administer InfluxDB + name: Configure specialized cluster nodes +weight: 100 +related: + - /influxdb3/enterprise/admin/performance-tuning/ + - /influxdb3/enterprise/reference/internals/runtime-architecture/ + - /influxdb3/enterprise/reference/config-options/ + - /influxdb3/enterprise/admin/query-system-data/ +influxdb3/enterprise/tags: [clustering, performance, tuning, ingest, threads] +--- + +Optimize performance for specific workloads in your {{% product-name %}} cluster +by configuring specialized nodes in distributed deployments. +Assign specific modes and thread allocations to nodes to maximize +cluster efficiency. + +- [Specialize nodes for specific workloads](#specialize-nodes-for-specific-workloads) +- [Configure node modes](#configure-node-modes) +- [Allocate threads by node type](#allocate-threads-by-node-type) +- [Configure ingest nodes](#configure-ingest-nodes) +- [Configure query nodes](#configure-query-nodes) +- [Configure compactor nodes](#configure-compactor-nodes) +- [Configure process nodes](#configure-process-nodes) +- [Multi-mode configurations](#multi-mode-configurations) +- [Cluster architecture examples](#cluster-architecture-examples) +- [Scale your cluster](#scale-your-cluster) +- [Monitor performance](#monitor-performance) +- [Troubleshoot node configurations](#troubleshoot-node-configurations) +- [Best practices](#best-practices) +- [Migrate to specialized nodes](#migrate-to-specialized-nodes) +- [Manage configurations](#manage-configurations) + + +## Specialize nodes for specific workloads + +In an {{% product-name %}} cluster, you can dedicate nodes to specific tasks: + +- **Ingest nodes**: Optimized for high-throughput data ingestion +- **Query nodes**: Maximized for complex analytical queries +- **Compactor nodes**: Dedicated to data compaction and optimization +- **Process nodes**: Focused on data processing and transformations +- **All-in-one nodes**: Balanced for mixed workloads + +## Configure node modes + +Pass the `--mode` parameter when starting the node to specify its capabilities: + +```bash +# Single mode +influxdb3 serve --mode=ingest + +# Multiple modes +influxdb3 serve --mode=ingest,query + +# All modes (default) +influxdb3 serve --mode=all +``` + +Available modes: +- `all`: All capabilities enabled (default) +- `ingest`: Data ingestion and line protocol parsing +- `query`: Query execution and data retrieval +- `compact`: Background compaction and optimization +- `process`: Data processing and transformations + +## Allocate threads by node type + +### Critical concept: Thread pools + +Every node has two thread pools that must be properly configured: + +1. **IO threads**: Parse line protocol, handle HTTP requests +2. **DataFusion threads**: Execute queries, create data snapshots (convert [WAL data](/influxdb3/enterprise/reference/internals/durability/#write-ahead-log-wal) to Parquet files), perform compaction + +> [!Note] +> Even specialized nodes need both thread types. Ingest nodes use DataFusion threads +> for creating data snapshots that convert [WAL data](/influxdb3/enterprise/reference/internals/durability/#write-ahead-log-wal) to Parquet files, and query nodes use IO threads for handling requests. + +## Configure ingest nodes + +Ingest nodes handle high-volume data writes and require significant IO thread allocation +for line protocol parsing. + +### Example medium ingester (32 cores) + +```bash +influxdb3 \ + --num-io-threads=12 \ + serve \ + --num-cores=32 \ + --datafusion-num-threads=20 \ + --exec-mem-pool-bytes=60% \ + --mode=ingest \ + --node-id=ingester-01 +``` + +**Configuration rationale:** +- **12 IO threads**: Handle multiple concurrent writers (Telegraf agents, applications) +- **20 DataFusion threads**: Required for data snapshot operations that convert buffered writes to Parquet files +- **60% memory pool**: Balance between write buffers and data snapshot operations + +### Monitor ingest performance + +Key metrics for ingest nodes: + +```bash +# Monitor IO thread utilization +top -H -p $(pgrep influxdb3) | grep io_worker + +# Check write request counts by endpoint +curl -s http://localhost:8181/metrics | grep 'http_requests_total.*write' + +# Check overall HTTP request metrics +curl -s http://localhost:8181/metrics | grep 'http_requests_total' + +# Monitor WAL size +du -sh /path/to/data/wal/ +``` + +> [!Important] +> #### Scale IO threads with concurrent writers +> +> If you see only 2 CPU cores at 100% on a large ingester, increase +> `--num-io-threads`. +> Each concurrent writer can utilize approximately one IO thread. + +## Configure query nodes + +Query nodes execute complex analytical queries and need maximum DataFusion threads. + +### Analytical query node (64 cores) + + + +```bash +influxdb3 \ + --num-io-threads=4 \ + serve \ + --num-cores=64 \ + --datafusion-num-threads=60 \ + --exec-mem-pool-bytes=90% \ + --parquet-mem-cache-size=8GB \ + --mode=query \ + --node-id=query-01 \ + --cluster-id=prod-cluster +``` + +**Configuration rationale:** +- **4 IO threads**: Minimal, just for HTTP request handling +- **60 DataFusion threads**: Maximum parallelism for query execution +- **90% memory pool**: Maximize memory for complex aggregations +- **8 GB Parquet cache**: Keep frequently accessed data in memory + +### Real-time query node (32 cores) + +```bash +influxdb3 \ + --num-io-threads=6 \ + serve \ + --num-cores=32 \ + --datafusion-num-threads=26 \ + --exec-mem-pool-bytes=80% \ + --parquet-mem-cache-size=4GB \ + --mode=query \ + --node-id=query-02 +``` + +### Optimize query settings + +You can configure `datafusion` properties for additional tuning of query nodes: + +```bash +influxdb3 serve \ + --datafusion-config "datafusion.execution.batch_size:16384,datafusion.execution.target_partitions:60" \ + --mode=query +``` + +## Configure compactor nodes + +Compactor nodes optimize stored data through background compaction processes. + +### Dedicated compactor (32 cores) + +```bash +influxdb3 \ + --num-io-threads=2 \ + serve \ + --num-cores=32 \ + --datafusion-num-threads=30 \ + --compaction-gen2-duration=24h \ + --compaction-check-interval=5m \ + --mode=compact \ + --node-id=compactor-01 \ + --cluster-id=prod-cluster + +# Note: --compaction-row-limit option is not yet released in v3.5.0 +# Uncomment when available in a future release: +# --compaction-row-limit=2000000 \ +``` + +**Configuration rationale:** +- **2 IO threads**: Minimal, compaction is DataFusion-intensive +- **30 DataFusion threads**: Maximum threads for sort/merge operations +- **24h gen2 duration**: Time-based compaction strategy + +### Tune compaction parameters + +You can adjust compaction strategies to balance performance and resource usage: + +```bash +# Configure compaction strategy +--compaction-multipliers=4,8,16 \ +--compaction-max-num-files-per-plan=100 \ +--compaction-cleanup-wait=10m +``` + +## Configure process nodes + +Process nodes handle data transformations and processing plugins. + +### Processing node (16 cores) + +```bash +influxdb3 \ + --num-io-threads=4 \ + serve \ + --num-cores=16 \ + --datafusion-num-threads=12 \ + --plugin-dir=/path/to/plugins \ + --mode=process \ + --node-id=processor-01 \ + --cluster-id=prod-cluster +``` + +## Multi-mode configurations + +Some deployments benefit from nodes handling multiple responsibilities. + +### Ingest + Query node (48 cores) + +```bash +influxdb3 \ + --num-io-threads=12 \ + serve \ + --num-cores=48 \ + --datafusion-num-threads=36 \ + --exec-mem-pool-bytes=75% \ + --mode=ingest,query \ + --node-id=hybrid-01 +``` + +### Query + Compact node (32 cores) + +```bash +influxdb3 \ + --num-io-threads=4 \ + serve \ + --num-cores=32 \ + --datafusion-num-threads=28 \ + --mode=query,compact \ + --node-id=qc-01 +``` + +## Cluster architecture examples + +### Small cluster (3 nodes) + +```yaml +# Node 1: All-in-one primary +mode: all +cores: 32 +io_threads: 8 +datafusion_threads: 24 + +# Node 2: All-in-one secondary +mode: all +cores: 32 +io_threads: 8 +datafusion_threads: 24 + +# Node 3: All-in-one tertiary +mode: all +cores: 32 +io_threads: 8 +datafusion_threads: 24 +``` + +### Medium cluster (6 nodes) + +```yaml +# Nodes 1-2: Ingesters +mode: ingest +cores: 48 +io_threads: 16 +datafusion_threads: 32 + +# Nodes 3-4: Query nodes +mode: query +cores: 48 +io_threads: 4 +datafusion_threads: 44 + +# Nodes 5-6: Compactor + Process +mode: compact,process +cores: 32 +io_threads: 4 +datafusion_threads: 28 +``` + +### Large cluster (12+ nodes) + +```yaml +# Nodes 1-4: High-throughput ingesters +mode: ingest +cores: 96 +io_threads: 20 +datafusion_threads: 76 + +# Nodes 5-8: Query nodes +mode: query +cores: 64 +io_threads: 4 +datafusion_threads: 60 + +# Nodes 9-10: Dedicated compactors +mode: compact +cores: 32 +io_threads: 2 +datafusion_threads: 30 + +# Nodes 11-12: Process nodes +mode: process +cores: 32 +io_threads: 6 +datafusion_threads: 26 +``` + +## Scale your cluster + +### Vertical scaling limitations + +{{< product-name >}} uses a shared-nothing architecture where ingest nodes handle all writes. To maximize ingest performance: + +- **Scale IO threads with concurrent writers**: Each concurrent writer can utilize approximately one IO thread for line protocol parsing +- **Use high-core machines**: Line protocol parsing is CPU-intensive and benefits from more cores +- **Deploy multiple ingest nodes**: Run several ingest nodes behind a load balancer to distribute write load +- **Optimize batch sizes**: Configure clients to send larger batches to reduce per-request overhead + +### Scale queries horizontally + +Query nodes can scale horizontally since they all access the same object store: + +```bash +# Add query nodes as needed +for i in {1..10}; do + influxdb3 \ + --num-io-threads=4 \ + serve \ + --num-cores=32 \ + --datafusion-num-threads=28 \ + --mode=query \ + --node-id=query-$i & +done +``` + +## Monitor performance + +### Node-specific metrics + +Monitor specialized nodes differently based on their role: + +#### Ingest nodes + +```sql +-- Monitor write activity through parquet file creation +SELECT + table_name, + count(*) as files_created, + sum(row_count) as total_rows, + sum(size_bytes) as total_bytes +FROM system.parquet_files +WHERE max_time > extract(epoch from now() - INTERVAL '5 minutes') * 1000000000 +GROUP BY table_name; +``` + +#### Query nodes +```sql +-- Monitor query performance +SELECT + count(*) as query_count, + avg(execute_duration) as avg_execute_time, + max(max_memory) as max_memory_bytes +FROM system.queries +WHERE issue_time > now() - INTERVAL '5 minutes' + AND success = true; +``` + +#### Compactor nodes +```sql +-- Monitor compaction progress +SELECT + event_type, + event_status, + count(*) as event_count, + avg(event_duration) as avg_duration +FROM system.compaction_events +WHERE event_time > now() - INTERVAL '1 hour' +GROUP BY event_type, event_status +ORDER BY event_count DESC; +``` + +### Monitor cluster-wide metrics + +```bash +# Check node health via HTTP endpoints +for node in ingester-01:8181 query-01:8181 compactor-01:8181; do + echo "Node: $node" + curl -s "http://$node/health" +done + +# Monitor metrics from each node +for node in ingester-01:8181 query-01:8181 compactor-01:8181; do + echo "=== Metrics from $node ===" + curl -s "http://$node/metrics" | grep -E "(cpu_usage|memory_usage|http_requests_total)" +done + +# Query system tables for cluster-wide monitoring +curl -X POST "http://query-01:8181/api/v3/query_sql" \ + -H "Content-Type: application/json" \ + -H "Authorization: Bearer YOUR_TOKEN" \ + -d '{ + "q": "SELECT * FROM system.queries WHERE issue_time > now() - INTERVAL '\''5 minutes'\'' ORDER BY issue_time DESC LIMIT 10", + "db": "sensors" + }' +``` + +> [!Tip] +> ### Extend monitoring with plugins +> +> Enhance your cluster monitoring capabilities using the InfluxDB 3 processing engine. The [InfluxDB 3 plugins library](https://github.com/influxdata/influxdb3_plugins) includes several monitoring and alerting plugins: +> +> - **System metrics collection**: Collect CPU, memory, disk, and network statistics +> - **Threshold monitoring**: Monitor metrics with configurable thresholds and alerting +> - **Multi-channel notifications**: Send alerts via Slack, Discord, SMS, WhatsApp, and webhooks +> - **Anomaly detection**: Identify unusual patterns in your data +> - **Deadman checks**: Detect missing data streams +> +> For complete plugin documentation and setup instructions, see [Process data in InfluxDB 3 Enterprise](/influxdb3/enterprise/get-started/process/). + +### Monitor and respond to performance issues + +Use the [monitoring queries](#monitor-cluster-wide-metrics) to identify the following patterns and their solutions: + +#### High CPU with low throughput (Ingest nodes) + +**Detection query:** +```sql +-- Check for high failed query rate indicating parsing issues +SELECT + count(*) as total_queries, + sum(CASE WHEN success = true THEN 1 ELSE 0 END) as successful_queries, + sum(CASE WHEN success = false THEN 1 ELSE 0 END) as failed_queries +FROM system.queries +WHERE issue_time > now() - INTERVAL '5 minutes'; +``` + +**Symptoms:** +- Only 2 CPU cores at 100% on large machines +- High write latency despite available resources +- Failed queries due to parsing timeouts + +**Solution:** Increase IO threads (see [Ingest node issues](#ingest-node-issues)) + +#### Memory pressure alerts (Query nodes) + +**Detection query:** +```sql +-- Monitor queries with high memory usage or failures +SELECT + avg(max_memory) as avg_memory_bytes, + max(max_memory) as peak_memory_bytes, + sum(CASE WHEN success = false THEN 1 ELSE 0 END) as failed_queries +FROM system.queries +WHERE issue_time > now() - INTERVAL '5 minutes' + AND query_type = 'sql'; +``` + +**Symptoms:** +- Queries failing with out-of-memory errors +- High memory usage approaching pool limits +- Slow query execution times + +**Solution:** Increase memory pool or optimize queries (see [Query node issues](#query-node-issues)) + +#### Compaction falling behind (Compactor nodes) + +**Detection query:** +```sql +-- Check compaction event frequency and success rate +SELECT + event_type, + count(*) as event_count, + sum(CASE WHEN event_status = 'success' THEN 1 ELSE 0 END) as successful_events +FROM system.compaction_events +WHERE event_time > now() - INTERVAL '1 hour' +GROUP BY event_type; +``` + +**Symptoms:** +- Decreasing compaction event frequency +- Growing number of small Parquet files +- Increasing query times due to file fragmentation + +**Solution:** Add compactor nodes or increase DataFusion threads (see [Compactor node issues](#compactor-node-issues)) + +## Troubleshoot node configurations + +### Ingest node issues + +**Problem**: Low throughput despite available CPU +```bash +# Check: Are only 2 cores busy? +top -H -p $(pgrep influxdb3) + +# Solution: Increase IO threads +--num-io-threads=16 +``` + +**Problem**: Data snapshot creation affecting ingest +```bash +# Check: DataFusion threads at 100% during data snapshots to Parquet +# Solution: Reserve more DataFusion threads for snapshot operations +--datafusion-num-threads=40 +``` + +### Query node issues + +**Problem**: Slow queries despite resources +```bash +# Check: Memory pressure +free -h + +# Solution: Increase memory pool +--exec-mem-pool-bytes=90% +``` + +**Problem**: Poor cache hit rates +```bash +# Solution: Increase Parquet cache +--parquet-mem-cache-size=10GB +``` + +### Compactor node issues + +**Problem**: Compaction falling behind +```bash +# Check: Compaction queue length +# Solution: Add more compactor nodes or increase threads +--datafusion-num-threads=30 +``` + +## Best practices + +1. **Start with monitoring**: Understand bottlenecks before specializing nodes +2. **Test mode combinations**: Some workloads benefit from multi-mode nodes +3. **Plan for failure**: Ensure redundancy in critical node types +4. **Document your topology**: Keep clear records of node configurations +5. **Regular rebalancing**: Adjust thread allocation as workloads evolve +6. **Capacity planning**: Monitor trends and scale proactively + +## Migrate to specialized nodes + +### From all-in-one to specialized + +```bash +# Phase 1: Baseline (all nodes identical) +all nodes: --mode=all --num-io-threads=8 + +# Phase 2: Identify workload patterns +# Monitor which nodes handle most writes vs queries + +# Phase 3: Gradual specialization +node1: --mode=ingest,query --num-io-threads=12 +node2: --mode=query,compact --num-io-threads=4 + +# Phase 4: Full specialization +node1: --mode=ingest --num-io-threads=16 +node2: --mode=query --num-io-threads=4 +node3: --mode=compact --num-io-threads=2 +``` + +## Manage configurations + +### Use configuration files + +Create node-specific configuration files: + +```toml +# ingester.toml +node-id = "ingester-01" +cluster-id = "prod" +mode = "ingest" +num-cores = 96 +num-io-threads = 20 +datafusion-num-threads = 76 + +# query.toml +node-id = "query-01" +cluster-id = "prod" +mode = "query" +num-cores = 64 +num-io-threads = 4 +datafusion-num-threads = 60 +``` + +Launch with configuration: +```bash +influxdb3 serve --config ingester.toml +``` + +### Configure using environment variables + +```bash +# Set environment variables for node type +export INFLUXDB3_ENTERPRISE_MODE=ingest +export INFLUXDB3_NUM_IO_THREADS=20 +export INFLUXDB3_DATAFUSION_NUM_THREADS=76 + +influxdb3 serve --node-id=$HOSTNAME --cluster-id=prod +``` diff --git a/content/influxdb3/enterprise/admin/performance-tuning.md b/content/influxdb3/enterprise/admin/performance-tuning.md new file mode 100644 index 000000000..17f9ce30f --- /dev/null +++ b/content/influxdb3/enterprise/admin/performance-tuning.md @@ -0,0 +1,23 @@ +--- +title: Performance tuning +seotitle: InfluxDB 3 Enterprise performance tuning and optimization +description: > + Optimize {{% product-name %}} performance by tuning thread allocation, + memory settings, and other configuration options for your specific workload. +weight: 205 +menu: + influxdb3_enterprise: + parent: Administer InfluxDB + name: Performance tuning +related: + - /influxdb3/enterprise/reference/internals/runtime-architecture/ + - /influxdb3/enterprise/reference/config-options/ + - /influxdb3/enterprise/admin/clustering/ + - /influxdb3/enterprise/admin/query-system-data/ +source: /shared/influxdb3-admin/performance-tuning.md +--- + + \ No newline at end of file diff --git a/content/shared/influxdb3-admin/performance-tuning.md b/content/shared/influxdb3-admin/performance-tuning.md new file mode 100644 index 000000000..3ed16c6e6 --- /dev/null +++ b/content/shared/influxdb3-admin/performance-tuning.md @@ -0,0 +1,681 @@ +Configure thread allocation, memory settings, and other parameters to optimize {{% product-name %}} performance +based on your workload characteristics. + +- [Best practices](#best-practices) +- [General monitoring principles](#general-monitoring-principles) +- [Essential settings for performance](#essential-settings-for-performance) +- [Common performance issues](#common-performance-issues) +- [Configuration examples by workload](#configuration-examples-by-workload) +- [Thread allocation details](#thread-allocation-details) +{{% show-in "enterprise" %}} +- [Enterprise mode-specific tuning](#enterprise-mode-specific-tuning) +{{% /show-in %}} +- [Memory tuning](#memory-tuning) +- [Advanced tuning options](#advanced-tuning-options) +- [Monitoring and validation](#monitoring-and-validation) +- [Common performance issues](#common-performance-issues-1) + +## Best practices + +1. **Start with monitoring**: Understand your current bottlenecks before tuning +2. **Change one parameter at a time**: Isolate the impact of each change +3. **Test with production-like workloads**: Use realistic data and query patterns +4. **Document your configuration**: Keep track of what works for your workload +5. **Plan for growth**: Leave headroom for traffic increases +6. **Regular review**: Periodically reassess as workloads evolve + +## General monitoring principles + +Before tuning performance, establish baseline metrics to identify bottlenecks: + +### Key metrics to monitor + +1. **CPU usage per core** + - Monitor individual core utilization to identify thread pool imbalances + - Watch for cores at 100% while others are idle (indicates thread allocation issues) + - Use `top -H` or `htop` to view per-thread CPU usage + +2. **Memory consumption** + - Track heap usage vs available RAM + - Monitor query execution memory pool utilization + - Watch for OOM errors or excessive swapping + +3. **IO and network** + - Measure write throughput (points/second) + - Track query response times + - Monitor object store latency for cloud deployments + - Check disk IO wait times with `iostat` + +### Establish baselines + +```bash +# Monitor CPU per thread +top -H -p $(pgrep influxdb3) + +# Track memory usage +free -h +watch -n 1 "free -h" + +# Check IO wait +iostat -x 1 +``` + +> [!Tip] +> For comprehensive metrics monitoring, see [Monitor metrics](/influxdb3/version/admin/monitor-metrics/). + +## Essential settings for performance + +{{% show-in "enterprise" %}} +Use the following to tune performance in _all-in-one_ deployments: + +> [!Note] +> For specialized cluster nodes (ingest-only, query-only, etc.), see [Configure specialized cluster nodes](/influxdb3/version/admin/clustering/) for mode-specific optimizations. +{{% /show-in %}} + +### Thread allocation (--num-io-threads{{% show-in "enterprise" %}}, --datafusion-num-threads{{% /show-in %}}) + +**IO threads** handle HTTP requests and line protocol parsing. **Default: 2** (often insufficient). +{{% show-in "enterprise" %}}**DataFusion threads** process queries and snapshots.{{% /show-in %}} + +> [!Note] +> {{% product-name %}} automatically allocates remaining cores to DataFusion after reserving IO threads. You can configure both thread pools explicitly by setting the `--num-io-threads` and `--datafusion-num-threads` options. + +{{% show-in "core" %}} +```bash +# Write-heavy: More IO threads +influxdb3 --num-io-threads=12 serve \ + --node-id=node0 \ + --object-store=file --data-dir=~/.influxdb3 + +# Query-heavy: Fewer IO threads +influxdb3 --num-io-threads=4 serve \ + --node-id=node0 \ + --object-store=file --data-dir=~/.influxdb3 +``` +{{% /show-in %}} + +{{% show-in "enterprise" %}} +```bash +# Write-heavy: More IO threads, adequate DataFusion +influxdb3 --num-io-threads=12 serve \ + --datafusion-num-threads=20 \ + --node-id=node0 --cluster-id=cluster0 \ + --object-store=file --data-dir=~/.influxdb3 + +# Query-heavy: Fewer IO threads, more DataFusion +influxdb3 --num-io-threads=4 serve \ + --datafusion-num-threads=28 \ + --node-id=node0 --cluster-id=cluster0 \ + --object-store=file --data-dir=~/.influxdb3 +``` +{{% /show-in %}} + +> [!Warning] +> #### Increase IO threads for concurrent writers +> +> If you have multiple concurrent writers (for example, Telegraf agents), the default of 2 IO threads can bottleneck write performance. + +### Memory pool (--exec-mem-pool-bytes) + +Controls memory for query execution. +Default: {{% show-in "core" %}}70%{{% /show-in %}}{{% show-in "enterprise" %}}20%{{% /show-in %}} of RAM. + +{{% show-in "core" %}} +```bash +# Increase for query-heavy workloads +influxdb3 --exec-mem-pool-bytes=90% serve \ + --node-id=node0 \ + --object-store=file --data-dir=~/.influxdb3 + +# Decrease if experiencing memory pressure +influxdb3 --exec-mem-pool-bytes=60% serve \ + --node-id=node0 \ + --object-store=file --data-dir=~/.influxdb3 +``` +{{% /show-in %}} + +{{% show-in "enterprise" %}} +```bash +# Increase for query-heavy workloads +influxdb3 --exec-mem-pool-bytes=90% serve \ + --node-id=node0 --cluster-id=cluster0 \ + --object-store=file --data-dir=~/.influxdb3 + +# Decrease if experiencing memory pressure +influxdb3 --exec-mem-pool-bytes=60% serve \ + --node-id=node0 --cluster-id=cluster0 \ + --object-store=file --data-dir=~/.influxdb3 +``` +{{% /show-in %}} + +### Parquet cache (--parquet-mem-cache-size) + +Caches frequently accessed data files in memory. + +{{% show-in "core" %}} +```bash +# Enable caching for better query performance +influxdb3 serve \ + --parquet-mem-cache-size=4096 \ + --node-id=node0 \ + --object-store=file --data-dir=~/.influxdb3 +``` +{{% /show-in %}} + +{{% show-in "enterprise" %}} +```bash +# Enable caching for better query performance +influxdb3 --parquet-mem-cache-size=4GB serve \ + --node-id=node0 --cluster-id=cluster0 \ + --object-store=file --data-dir=~/.influxdb3 +``` +{{% /show-in %}} + +### WAL flush interval (--wal-flush-interval) + +Controls write latency vs throughput. Default: 1s. + +{{% show-in "core" %}} +```bash +# Reduce latency for real-time data +influxdb3 --wal-flush-interval=100ms serve \ + --node-id=node0 \ + --object-store=file --data-dir=~/.influxdb3 +``` +{{% /show-in %}} + +{{% show-in "enterprise" %}} +```bash +# Reduce latency for real-time data +influxdb3 --wal-flush-interval=100ms serve \ + --node-id=node0 --cluster-id=cluster0 \ + --object-store=file --data-dir=~/.influxdb3 +``` +{{% /show-in %}} + +## Common performance issues + +### High write latency + +**Symptoms:** Increasing write response times, timeouts, points dropped + +**Solutions:** +1. Increase [IO threads](#thread-allocation-num-io-threads{{% show-in "enterprise" %}}-datafusion-num-threads{{% /show-in %}}) (default is only 2) +2. Reduce [WAL flush interval](#wal-flush-interval-wal-flush-interval) (from 1s to 100ms) +3. Check disk IO performance + +### Slow query performance + +**Symptoms:** Long execution times, high memory usage, query timeouts + +**Solutions:** +1. {{% show-in "enterprise" %}}Increase [DataFusion threads](#thread-allocation-num-io-threads-datafusion-num-threads) +2. {{% /show-in %}}Increase [execution memory pool](#memory-pool-exec-mem-pool-bytes) (to 90%) +3. Enable [Parquet caching](#parquet-cache-parquet-mem-cache-size) + +### Memory pressure + +**Symptoms:** OOM errors, swapping, high memory usage + +**Solutions:** +1. Reduce [execution memory pool](#memory-pool-exec-mem-pool-bytes) (to 60%) +2. Lower snapshot threshold (`--force-snapshot-mem-threshold=70%`) + +### CPU bottlenecks + +**Symptoms:** 100% CPU utilization, uneven thread usage (only 2 cores for writes) + +**Solutions:** +1. Rebalance [thread allocation](#thread-allocation-num-io-threads{{% show-in "enterprise" %}}-datafusion-num-threads{{% /show-in %}}) +2. Check if only 2 cores are used for write parsing (increase IO threads) + +> [!Important] +> #### "My ingesters are only using 2 cores" +> +> Increase `--num-io-threads` to 8-16+ for ingest nodes.{{% show-in "enterprise" %}} For dedicated ingest nodes with `--mode=ingest`, see [Configure ingest nodes](/influxdb3/version/admin/clustering/#configure-ingest-nodes).{{% /show-in %}} + +## Configuration examples by workload + +### Write-heavy workloads (>100k points/second) + +{{% show-in "core" %}} +```bash +# 32-core system, high ingest rate +influxdb3 --num-io-threads=12 \ + --exec-mem-pool-bytes=80% \ + --wal-flush-interval=100ms \ + serve \ + --node-id=node0 \ + --object-store=file \ + --data-dir=~/.influxdb3 +``` +{{% /show-in %}} + +{{% show-in "enterprise" %}} +```bash +# 32-core system, high ingest rate +influxdb3 --num-io-threads=12 serve \ + --datafusion-num-threads=20 \ + --exec-mem-pool-bytes=80% \ + --wal-flush-interval=100ms \ + --node-id=node0 \ + --cluster-id=cluster0 \ + --object-store=file \ + --data-dir=~/.influxdb3 +``` +{{% /show-in %}} + +### Query-heavy workloads (complex analytics) + +{{% show-in "core" %}} +```bash +# 32-core system, analytical queries +influxdb3 --num-io-threads=4 serve \ + --exec-mem-pool-bytes=90% \ + --parquet-mem-cache-size=2048 \ + --node-id=node0 \ + --object-store=file \ + --data-dir=~/.influxdb3 +``` +{{% /show-in %}} + +{{% show-in "enterprise" %}} +```bash +# 32-core system, analytical queries +influxdb3 --num-io-threads=4 serve \ + --datafusion-num-threads=28 \ + --exec-mem-pool-bytes=90% \ + --parquet-mem-cache-size=2GB \ + --node-id=node0 \ + --cluster-id=cluster0 \ + --object-store=file \ + --data-dir=~/.influxdb3 +``` +{{% /show-in %}} + +### Mixed workloads (real-time dashboards) + +{{% show-in "core" %}} +```bash +# 32-core system, balanced operations +influxdb3 --num-io-threads=8 serve \ + --exec-mem-pool-bytes=70% \ + --parquet-mem-cache-size=1024 \ + --node-id=node0 \ + --object-store=file \ + --data-dir=~/.influxdb3 +``` +{{% /show-in %}} + +{{% show-in "enterprise" %}} +```bash +# 32-core system, balanced operations +influxdb3 --num-io-threads=8 serve \ + --datafusion-num-threads=24 \ + --exec-mem-pool-bytes=70% \ + --parquet-mem-cache-size=1GB \ + --node-id=node0 \ + --cluster-id=cluster0 \ + --object-store=file \ + --data-dir=~/.influxdb3 +``` +{{% /show-in %}} + +## Thread allocation details + +### Calculate optimal thread counts + +Use this formula as a starting point: + +``` +Total cores = N +Concurrent writers = W +Query complexity factor = Q (1-10, where 10 is most complex) + +IO threads = min(W + 2, N * 0.4) +DataFusion threads = N - IO threads +``` + +### Example configurations by system size + +#### Small system (4 cores, 16 GB RAM) + +{{% show-in "core" %}} +```bash +# Balanced configuration +influxdb3 --num-io-threads=2 serve \ + --exec-mem-pool-bytes=10GB \ + --parquet-mem-cache-size=500 \ + --node-id=node0 \ + --object-store=file \ + --data-dir=~/.influxdb3 +``` +{{% /show-in %}} + +{{% show-in "enterprise" %}} +```bash +# Balanced configuration +influxdb3 --num-io-threads=2 \ + --exec-mem-pool-bytes=10GB \ + --parquet-mem-cache-size=500MB \ + serve \ + --node-id=node0 \ + --cluster-id=cluster0 \ + --object-store=file \ + --data-dir=~/.influxdb3 +``` +{{% /show-in %}} + +#### Medium system (16 cores, 64 GB RAM) + +{{% show-in "core" %}} +```bash +# Write-optimized configuration +influxdb3 --num-io-threads=6 serve \ + --exec-mem-pool-bytes=45GB \ + --parquet-mem-cache-size=2048 \ + --node-id=node0 \ + --object-store=file \ + --data-dir=~/.influxdb3 +``` +{{% /show-in %}} + +{{% show-in "enterprise" %}} +```bash +# Write-optimized configuration +influxdb3 --num-io-threads=6 serve \ + --datafusion-num-threads=10 \ + --exec-mem-pool-bytes=45GB \ + --parquet-mem-cache-size=2GB \ + --node-id=node0 \ + --cluster-id=cluster0 \ + --object-store=file \ + --data-dir=~/.influxdb3 +``` +{{% /show-in %}} + +#### Large system (64 cores, 256 GB RAM) + +{{% show-in "core" %}} +```bash +# Query-optimized configuration +influxdb3 --num-io-threads=8 serve \ + --exec-mem-pool-bytes=200GB \ + --parquet-mem-cache-size=10240 \ + --object-store-connection-limit=200 \ + --node-id=node0 \ + --object-store=file \ + --data-dir=~/.influxdb3 +``` +{{% /show-in %}} + +{{% show-in "enterprise" %}} +```bash +# Query-optimized configuration +influxdb3 --num-io-threads=8 serve \ + --datafusion-num-threads=56 \ + --exec-mem-pool-bytes=200GB \ + --parquet-mem-cache-size=10GB \ + --object-store-connection-limit=200 \ + --node-id=node0 \ + --cluster-id=cluster0 \ + --object-store=file \ + --data-dir=~/.influxdb3 +``` +{{% /show-in %}} + +{{% show-in "enterprise" %}} +## Enterprise mode-specific tuning + +### Ingest mode optimization + +Dedicated ingest nodes require significant IO threads: + +```bash +# High-throughput ingester (96 cores) +influxdb3 --num-io-threads=24 serve \ + --mode=ingest \ + --num-cores=96 \ + --datafusion-num-threads=72 \ + --force-snapshot-mem-threshold=90% \ + --node-id=ingester0 \ + --cluster-id=cluster0 \ + --object-store=file \ + --data-dir=~/.influxdb3 +``` + +> [!Warning] +> Without explicitly setting `--num-io-threads`, a 96-core ingester uses only 2 cores +> for parsing line protocol, wasting 94% of available CPU for ingest operations. + +### Query mode optimization + +Query nodes should maximize DataFusion threads: + +```bash +# Query-optimized node (64 cores) +influxdb3 --num-io-threads=4 serve \ + --mode=query \ + --num-cores=64 \ + --datafusion-num-threads=60 \ + --exec-mem-pool-bytes=90% \ + --parquet-mem-cache-size=4GB \ + --node-id=query0 \ + --cluster-id=cluster0 \ + --object-store=file \ + --data-dir=~/.influxdb3 +``` + +### Compactor mode optimization + +Compaction is DataFusion-intensive: + +```bash +# Dedicated compactor (32 cores) +influxdb3 --num-io-threads=2 serve \ + --mode=compact \ + --num-cores=32 \ + --datafusion-num-threads=30 \ + --node-id=compactor0 \ + --cluster-id=cluster0 \ + --object-store=file \ + --data-dir=~/.influxdb3 + +# Note: --compaction-row-limit option is not yet released in v3.5.0 +# Uncomment when available in a future release: +# --compaction-row-limit=1000000 \ +``` +{{% /show-in %}} + +## Memory tuning + +### Execution memory pool + +Configure the query execution memory pool: + +```bash +# Absolute value in bytes +--exec-mem-pool-bytes=8589934592 # 8GB + +# Percentage of available RAM +--exec-mem-pool-bytes=80% # 80% of system RAM +``` + +**Guidelines:** +- **Write-heavy**: 60-70% (leave room for OS cache) +- **Query-heavy**: 80-90% (maximize query memory) +- **Mixed**: 70% (balanced approach) + +### Parquet cache configuration + +Cache frequently accessed Parquet files: + +```bash +# Set cache size +--parquet-mem-cache-size=2147483648 # 2GB + +# Configure cache behavior +--parquet-mem-cache-prune-interval=1m \ +--parquet-mem-cache-prune-percentage=20 +``` + +### WAL and snapshot tuning + +Control memory pressure from write buffers: + +```bash +# Force snapshot when memory usage exceeds threshold +--force-snapshot-mem-threshold=80% + +# Configure WAL rotation +--wal-flush-interval=10s \ +--wal-snapshot-size=100MB +``` + +## Advanced tuning options + +{{% show-in "enterprise" %}} +### Specialized cluster nodes + +For performance optimizations using dedicated ingest, query, compaction, or processing nodes, see [Configure specialized cluster nodes](/influxdb3/version/admin/clustering/). +{{% /show-in %}} + +For less common performance optimizations and detailed configuration options, see: + +### DataFusion engine tuning + + + + + +Advanced DataFusion runtime parameters: +- [`--datafusion-config`](/influxdb3/version/reference/cli/influxdb3/serve/#datafusion-config) + +### HTTP and network tuning + +Request size and network optimization: +- [`--max-http-request-size`](/influxdb3/version/reference/cli/influxdb3/serve/#max-http-request-size) - For large batches (default: 10 MB) +- [`--http-bind`](/influxdb3/version/reference/cli/influxdb3/serve/#http-bind) - Bind address + +### Object store optimization + +Performance tuning for cloud object stores: +- [`--object-store-connection-limit`](/influxdb3/version/reference/cli/influxdb3/serve/#object-store-connection-limit) - Connection pool size +- [`--object-store-max-retries`](/influxdb3/version/reference/cli/influxdb3/serve/#object-store-max-retries) - Retry configuration +- [`--object-store-http2-only`](/influxdb3/version/reference/cli/influxdb3/serve/#object-store-http2-only) - Force HTTP/2 + +### Complete configuration reference + +For all available configuration options, see: +- [CLI serve command reference](/influxdb3/version/reference/cli/influxdb3/serve/) +- [Configuration options](/influxdb3/version/reference/config-options/) + +## Monitoring and validation + +### Monitor thread utilization + +```bash +# Linux: View per-thread CPU usage +top -H -p $(pgrep influxdb3) + +# Monitor specific threads +watch -n 1 "ps -eLf | grep influxdb3 | head -20" +``` + +### Check performance metrics + +Monitor key indicators: + +```sql +-- Query system.threads table (Enterprise) +SELECT * FROM system.threads +WHERE cpu_usage > 90 +ORDER BY cpu_usage DESC; + +-- Check write throughput +SELECT + count(*) as points_written, + max(timestamp) - min(timestamp) as time_range +FROM your_measurement +WHERE timestamp > now() - INTERVAL '1 minute'; +``` + +### Validate configuration + +Verify your tuning changes: + +```bash +# Check effective configuration +influxdb3 serve --help-all | grep -E "num-io-threads|num-datafusion-threads" + +# Monitor memory usage +free -h +watch -n 1 "free -h" + +# Check IO wait +iostat -x 1 +``` + +## Common performance issues + +### High write latency + +**Symptoms:** +- Increasing write response times +- Timeouts from write clients +- Points dropped or rejected + +**Solutions:** +1. Increase IO threads: `--num-io-threads=16` +2. Reduce batch sizes in writers +3. Increase WAL flush frequency +4. Check disk IO performance + +### Slow query performance + +**Symptoms:** +- Long query execution times +- High memory usage during queries +- Query timeouts + +**Solutions:** +{{% show-in "core" %}}1. Increase execution memory pool: `--exec-mem-pool-bytes=90%` +2. Enable Parquet caching: `--parquet-mem-cache-size=4GB` +3. Optimize query patterns (smaller time ranges, fewer fields){{% /show-in %}} +{{% show-in "enterprise" %}}1. Increase DataFusion threads: `--datafusion-num-threads=30` +2. Increase execution memory pool: `--exec-mem-pool-bytes=90%` +3. Enable Parquet caching: `--parquet-mem-cache-size=4GB` +4. Optimize query patterns (smaller time ranges, fewer fields){{% /show-in %}} + +### Memory pressure + +**Symptoms:** +- Out of memory errors +- Frequent garbage collection +- System swapping + +**Solutions:** +1. Reduce execution memory pool: `--exec-mem-pool-bytes=60%` +2. Lower snapshot threshold: `--force-snapshot-mem-threshold=70%` +3. Decrease cache sizes +4. Add more RAM or reduce workload + +### CPU bottlenecks + +**Symptoms:** +- 100% CPU utilization +- Uneven thread pool usage +- Performance plateaus + +**Solutions:** +1. Rebalance thread allocation based on workload +2. Add more CPU cores +3. Optimize client batching +4. {{% show-in "enterprise" %}}Distribute workload across specialized nodes{{% /show-in %}} \ No newline at end of file diff --git a/content/shared/influxdb3-cli/config-options.md b/content/shared/influxdb3-cli/config-options.md index 2eca2caa8..47e75c8f4 100644 --- a/content/shared/influxdb3-cli/config-options.md +++ b/content/shared/influxdb3-cli/config-options.md @@ -68,14 +68,20 @@ The following options apply to the `influxdb3` CLI globally and must be specifie Sets the number of threads allocated to the IO runtime thread pool. IO threads handle HTTP request serving, line protocol parsing, and file operations. > [!Important] -> This is a **global option** that must be specified before the `serve` command. +> `--num-io-threads` is a **global option** that must be specified before the `serve` command. + +{{% show-in "enterprise" %}} +**Default:** `2` +{{% /show-in %}} ```bash # Set IO threads (global option before serve) influxdb3 --num-io-threads=8 serve --node-id=node0 --object-store=file ``` +{{% show-in "enterprise" %}} For detailed information about thread allocation, see the [Resource Limits](#resource-limits) section. +{{% /show-in %}} | influxdb3 option | Environment variable | | :--------------- | :------------------------- | @@ -86,145 +92,28 @@ For detailed information about thread allocation, see the [Resource Limits](#res ## Server configuration options - [General](#general) -{{% show-in "enterprise" %}} - [cluster-id](#cluster-id){{% /show-in %}} - - [data-dir](#data-dir) -{{% show-in "enterprise" %}} - [mode](#mode){{% /show-in %}} - - [node-id](#node-id) -{{% show-in "enterprise" %}} - [node-id-from-env](#node-id-from-env){{% /show-in %}} - - [object-store](#object-store) -{{% show-in "enterprise" %}} - - [num-cores](#num-cores) - - [num-database-limit](#num-database-limit) - - [num-table-limit](#num-table-limit) - - [num-total-columns-per-table-limit](#num-total-columns-per-table-limit) -- [Licensing](#licensing) - - [license-email](#license-email) - - [license-file](#license-file) - - [license-type](#license-type){{% /show-in %}} +{{% show-in "enterprise" %}}- [Licensing](#licensing){{% /show-in %}} - [Security](#security) - - [tls-key](#tls-key) - - [tls-cert](#tls-cert) - - [tls-minimum-versions](#tls-minimum-version) - - [without-auth](#without-auth) - - [disable-authz](#disable-authz) - - [admin-token-recovery-http-bind](#admin-token-recovery-http-bind) - - [admin-token-file](#admin-token-file) - {{% show-in "enterprise" %}}- [permission-tokens-file](#permission-tokens-file){{% /show-in %}} - [AWS](#aws) - - [aws-access-key-id](#aws-access-key-id) - - [aws-secret-access-key](#aws-secret-access-key) - - [aws-default-region](#aws-default-region) - - [aws-endpoint](#aws-endpoint) - - [aws-session-token](#aws-session-token) - - [aws-allow-http](#aws-allow-http) - - [aws-skip-signature](#aws-skip-signature) - - [aws-credentials-file](#aws-credentials-file) - [Google Cloud Service](#google-cloud-service) - - [google-service-account](#google-service-account) - [Microsoft Azure](#microsoft-azure) - - [azure-storage-account](#azure-storage-account) - - [azure-storage-access-key](#azure-storage-access-key) - - [azure-endpoint](#azure-endpoint) - - [azure-allow-http](#azure-allow-http) - [Object Storage](#object-storage) - - [bucket](#bucket) - - [object-store-connection-limit](#object-store-connection-limit) - - [object-store-http2-only](#object-store-http2-only) - - [object-store-http2-max-frame-size](#object-store-http2-max-frame-size) - - [object-store-max-retries](#object-store-max-retries) - - [object-store-retry-timeout](#object-store-retry-timeout) - - [object-store-cache-endpoint](#object-store-cache-endpoint) - [Logs](#logs) - - [log-filter](#log-filter) - - [log-destination](#log-destination) - - [log-format](#log-format) - - [query-log-size](#query-log-size) - [Traces](#traces) - - [traces-exporter](#traces-exporter) - - [traces-exporter-jaeger-agent-host](#traces-exporter-jaeger-agent-host) - - [traces-exporter-jaeger-agent-port](#traces-exporter-jaeger-agent-port) - - [traces-exporter-jaeger-service-name](#traces-exporter-jaeger-service-name) - - [traces-exporter-jaeger-trace-context-header-name](#traces-exporter-jaeger-trace-context-header-name) - - [traces-jaeger-debug-name](#traces-jaeger-debug-name) - - [traces-jaeger-tags](#traces-jaeger-tags) - - [traces-jaeger-max-msgs-per-second](#traces-jaeger-max-msgs-per-second) - [DataFusion](#datafusion) - - [datafusion-num-threads](#datafusion-num-threads) - - - [datafusion-max-parquet-fanout](#datafusion-max-parquet-fanout) - - [datafusion-use-cached-parquet-loader](#datafusion-use-cached-parquet-loader) - - [datafusion-config](#datafusion-config) - [HTTP](#http) - - [max-http-request-size](#max-http-request-size) - - [http-bind](#http-bind) - [Memory](#memory) - - [exec-mem-pool-bytes](#exec-mem-pool-bytes) - - [force-snapshot-mem-threshold](#force-snapshot-mem-threshold) - [Write-Ahead Log (WAL)](#write-ahead-log-wal) - - [wal-flush-interval](#wal-flush-interval) - - [wal-snapshot-size](#wal-snapshot-size) - - [wal-max-write-buffer-size](#wal-max-write-buffer-size) - - [snapshotted-wal-files-to-keep](#snapshotted-wal-files-to-keep) - - [wal-replay-fail-on-error](#wal-replay-fail-on-error) - - [wal-replay-concurrency-limit](#wal-replay-concurrency-limit) - [Compaction](#compaction) -{{% show-in "enterprise" %}} - [compaction-row-limit](#compaction-row-limit) - - [compaction-max-num-files-per-plan](#compaction-max-num-files-per-plan) - - [compaction-gen2-duration](#compaction-gen2-duration) - - [compaction-multipliers](#compaction-multipliers) - - [compaction-cleanup-wait](#compaction-cleanup-wait) - - [compaction-check-interval](#compaction-check-interval){{% /show-in %}} - - [gen1-duration](#gen1-duration) - [Caching](#caching) - - [preemptive-cache-age](#preemptive-cache-age) - - [parquet-mem-cache-size](#parquet-mem-cache-size) - - [parquet-mem-cache-prune-percentage](#parquet-mem-cache-prune-percentage) - - [parquet-mem-cache-prune-interval](#parquet-mem-cache-prune-interval) - - [parquet-mem-cache-query-path-duration](#parquet-mem-cache-query-path-duration) - - [disable-parquet-mem-cache](#disable-parquet-mem-cache) - - [table-index-cache-max-entries](#table-index-cache-max-entries) - - [table-index-cache-concurrency-limit](#table-index-cache-concurrency-limit) -{{% show-in "enterprise" %}} - [last-value-cache-disable-from-history](#last-value-cache-disable-from-history){{% /show-in %}} - - [last-cache-eviction-interval](#last-cache-eviction-interval) -{{% show-in "enterprise" %}} - [distinct-value-cache-disable-from-history](#distinct-value-cache-disable-from-history){{% /show-in %}} - - [distinct-cache-eviction-interval](#distinct-cache-eviction-interval) - - [query-file-limit](#query-file-limit) - [Processing Engine](#processing-engine) - - [plugin-dir](#plugin-dir) - - [plugin-repo](#plugin-repo) - - [virtual-env-location](#virtual-env-location) - - [package-manager](#package-manager) {{% show-in "enterprise" %}} - [Cluster Management](#cluster-management) - - [replication-interval](#replication-interval) - - [catalog-sync-interval](#catalog-sync-interval) - - [wait-for-running-ingestor](#wait-for-running-ingestor) -- [Resource Limits](#resource-limits) - - [num-cores](#num-cores) - - [num-database-limit](#num-database-limit) - - [num-table-limit](#num-table-limit) - - [num-total-columns-per-table-limit](#num-total-columns-per-table-limit) {{% /show-in %}} +- [Resource Limits](#resource-limits) - [Data Lifecycle Management](#data-lifecycle-management) - - [gen1-lookback-duration](#gen1-lookback-duration) - - [retention-check-interval](#retention-check-interval) - - [delete-grace-period](#delete-grace-period) - - [hard-delete-default-duration](#hard-delete-default-duration) - [Telemetry](#telemetry) - - [telemetry-disable-upload](#telemetry-disable-upload) - - [telemetry-endpoint](#telemetry-endpoint) - [TCP Listeners](#tcp-listeners) - - [tcp-listener-file-path](#tcp-listener-file-path) - - [admin-token-recovery-tcp-listener-file-path](#admin-token-recovery-tcp-listener-file-path) --- @@ -302,13 +191,13 @@ You can specify multiple modes using a comma-delimited list (for example, `inges **Example configurations:** ```bash # High-throughput ingest node (32 cores) -influxdb3 --num-io-threads=12 serve --mode=ingest --num-datafusion-threads=20 +influxdb3 --num-io-threads=12 serve --mode=ingest --datafusion-num-threads=20 # Query-optimized node (32 cores) -influxdb3 --num-io-threads=4 serve --mode=query --num-datafusion-threads=28 +influxdb3 --num-io-threads=4 serve --mode=query --datafusion-num-threads=28 # Balanced all-in-one (32 cores) -influxdb3 --num-io-threads=6 serve --mode=all --num-datafusion-threads=26 +influxdb3 --num-io-threads=6 serve --mode=all --datafusion-num-threads=26 ``` | influxdb3 serve option | Environment variable | @@ -370,58 +259,6 @@ This option supports the following values: | :--------------------- | :----------------------- | | `--object-store` | `INFLUXDB3_OBJECT_STORE` | -{{% show-in "enterprise" %}} ---- - -#### num-cores - -Limits the total number of CPU cores that can be used by the server. -Default is determined by your {{% product-name %}} license: - -- **Trial**: up to 256 cores -- **At-Home**: 2 cores -- **Commercial**: per contract - -| influxdb3 serve option | Environment variable | -| :--------------------- | :--------------------------------- | -| `--num-cores` | `INFLUXDB3_ENTERPRISE_NUM_CORES` | - -For more information about licensing, see [Manage license](/influxdb3/enterprise/admin/license). - ---- - -#### num-database-limit - -Limits the total number of active databases. -Default is {{% influxdb3/limit "database" %}}. - -| influxdb3 serve option | Environment variable | -| :---------------------- | :---------------------------------------- | -| `--num-database-limit` | `INFLUXDB3_ENTERPRISE_NUM_DATABASE_LIMIT` | - ---- - -#### num-table-limit - -Limits the total number of active tables across all databases. -Default is {{% influxdb3/limit "table" %}}. - -| influxdb3 serve option | Environment variable | -| :--------------------- | :------------------------------------- | -| `--num-table-limit` | `INFLUXDB3_ENTERPRISE_NUM_TABLE_LIMIT` | - ---- - -#### num-total-columns-per-table-limit - -Limits the total number of columns per table. -Default is {{% influxdb3/limit "column" %}}. - -| influxdb3 serve option | Environment variable | -| :------------------------------------ | :------------------------------------------------------- | -| `--num-total-columns-per-table-limit` | `INFLUXDB3_ENTERPRISE_NUM_TOTAL_COLUMNS_PER_TABLE_LIMIT` | -{{% /show-in %}} - --- {{% show-in "enterprise" %}} @@ -600,7 +437,7 @@ influxdb3 create token --admin \ ```bash { placeholders="./path/to/admin-token.json" } -# Generate and admin token offline +# Generate an admin token offline influxdb3 create token \ --admin \ --name "example-admin-token" \ @@ -676,7 +513,7 @@ influxdb3 create token \ ```bash { placeholders="./path/to/tokens.json" } -# Generate and admin token offline +# Generate an admin token offline influxdb3 create token \ --name "example-token" \ --permission "db:db1,db2:read,write" \ @@ -693,49 +530,6 @@ influxdb3 serve --permission-tokens-file ./path/to/tokens.json --- {{% /show-in %}} -{{% show-in "enterprise" %}} -### Licensing - -#### license-email - -Specifies the email address to associate with your {{< product-name >}} license -and automatically responds to the interactive email prompt when the server starts. -This option is mutually exclusive with [license-file](#license-file). - -| influxdb3 serve option | Environment variable | -| :--------------------- | :----------------------------------- | -| `--license-email` | `INFLUXDB3_ENTERPRISE_LICENSE_EMAIL` | - ---- - -#### license-file - -Specifies the path to a license file for {{< product-name >}}. When provided, the license -file's contents are used instead of requesting a new license. -This option is mutually exclusive with [license-email](#license-email). - -| influxdb3 serve option | Environment variable | -| :--------------------- | :----------------------------------- | -| `--license-file` | `INFLUXDB3_ENTERPRISE_LICENSE_FILE` | - ---- - -#### license-type - -Specifies the type of {{% product-name %}} license to use and bypasses the -interactive license prompt. Provide one of the following license types: - -- `home` -- `trial` -- `commercial` - -| influxdb3 serve option | Environment variable | -| :--------------------- | :----------------------------------- | -| `--license-type` | `INFLUXDB3_ENTERPRISE_LICENSE_TYPE` | - ---- -{{% /show-in %}} - ### AWS - [aws-access-key-id](#aws-access-key-id) @@ -1178,17 +972,19 @@ Specifies the maximum number of messages sent to a Jaeger service per second. ### DataFusion - [datafusion-num-threads](#datafusion-num-threads) -- [datafusion-runtime-type](#datafusion-runtime-type) -- [datafusion-runtime-disable-lifo-slot](#datafusion-runtime-disable-lifo-slot) -- [datafusion-runtime-event-interval](#datafusion-runtime-event-interval) -- [datafusion-runtime-global-queue-interval](#datafusion-runtime-global-queue-interval) -- [datafusion-runtime-max-blocking-threads](#datafusion-runtime-max-blocking-threads) -- [datafusion-runtime-max-io-events-per-tick](#datafusion-runtime-max-io-events-per-tick) -- [datafusion-runtime-thread-keep-alive](#datafusion-runtime-thread-keep-alive) -- [datafusion-runtime-thread-priority](#datafusion-runtime-thread-priority) - [datafusion-max-parquet-fanout](#datafusion-max-parquet-fanout) - [datafusion-use-cached-parquet-loader](#datafusion-use-cached-parquet-loader) - [datafusion-config](#datafusion-config) + #### datafusion-num-threads @@ -1200,28 +996,6 @@ Sets the maximum number of DataFusion runtime threads to use. --- - - ---- - #### datafusion-max-parquet-fanout When multiple parquet files are required in a sorted way @@ -1411,7 +1185,7 @@ The default is dynamically determined. ### Compaction {{% show-in "enterprise" %}} -- [compaction-row-limit](#compaction-row-limit) + - [compaction-max-num-files-per-plan](#compaction-max-num-files-per-plan) - [compaction-gen2-duration](#compaction-gen2-duration) - [compaction-multipliers](#compaction-multipliers) @@ -1421,8 +1195,11 @@ The default is dynamically determined. - [gen1-duration](#gen1-duration) {{% show-in "enterprise" %}} + #### compaction-max-num-files-per-plan @@ -1550,15 +1328,20 @@ Specifies the interval to prefetch into the Parquet cache during compaction. #### parquet-mem-cache-size -Specifies the size of the in-memory Parquet cache{{% show-in "core" %}} in megabytes (MB){{% /show-in %}}{{% show-in "enterprise" %}} in megabytes or percentage of total available memory{{% /show-in %}}. +Specifies the size of the in-memory Parquet cache. Accepts values in megabytes (as an integer) or as a percentage of total available memory (for example, `20%`, `4096`). -{{% show-in "core" %}}**Default:** `1000`{{% /show-in %}} -{{% show-in "enterprise" %}}**Default:** `20%`{{% /show-in %}} +**Default:** `20%` + +> [!Note] +> #### Breaking change in v3.0.0 +> +> In v3.0.0, `--parquet-mem-cache-size-mb` was replaced with `--parquet-mem-cache-size`. +> The new option accepts both megabytes (integer) and percentage values. +> The default changed from `1000` MB to `20%` of total available memory. | influxdb3 serve option | Environment variable | | :---------------------------- | :---------------------------------- | -{{% show-in "core" %}}| `--parquet-mem-cache-size-mb` | `INFLUXDB3_PARQUET_MEM_CACHE_SIZE_MB` |{{% /show-in %}} -{{% show-in "enterprise" %}}| `--parquet-mem-cache-size` | `INFLUXDB3_PARQUET_MEM_CACHE_SIZE` |{{% /show-in %}} +| `--parquet-mem-cache-size` | `INFLUXDB3_PARQUET_MEM_CACHE_SIZE` | #### parquet-mem-cache-prune-percentage @@ -1862,22 +1645,33 @@ Specifies how long to wait for a running ingestor during startup. | :------------------------------- | :------------------------------------------------ | | `--wait-for-running-ingestor` | `INFLUXDB3_ENTERPRISE_WAIT_FOR_RUNNING_INGESTOR` | +{{% /show-in %}} + --- ### Resource Limits - +{{% show-in "enterprise" %}} - [num-cores](#num-cores) -{{% show-in "enterprise" %}}- [num-datafusion-threads](#num-datafusion-threads){{% /show-in %}} +{{% /show-in %}} +- [datafusion-num-threads](#datafusion-num-threads) - _[num-io-threads](#num-io-threads) - See [Global configuration options](#global-configuration-options)_ +{{% show-in "enterprise" %}} - [num-database-limit](#num-database-limit) - [num-table-limit](#num-table-limit) - [num-total-columns-per-table-limit](#num-total-columns-per-table-limit) #### num-cores - -{{% show-in "enterprise" %}} Limits the number of CPU cores that the InfluxDB 3 Enterprise process can use when running on systems where resources are shared. + +**Default:** All available cores on the system + +Maximum cores allowed is determined by your {{% product-name %}} license: + +- **Trial**: up to 256 cores +- **At-Home**: 2 cores +- **Commercial**: per contract + When specified, InfluxDB automatically assigns the number of DataFusion threads and IO threads based on the core count. **Default thread assignment logic when `num-cores` is set:** @@ -1885,37 +1679,42 @@ When specified, InfluxDB automatically assigns the number of DataFusion threads - **3 cores**: 1 IO thread, 2 DataFusion threads - **4+ cores**: 2 IO threads, (n-2) DataFusion threads +This automatic allocation applies when you don't explicitly set [`--num-io-threads`](#num-io-threads) and [`--datafusion-num-threads`](#datafusion-num-threads). + > [!Note] -> You can override the automatic thread assignment by explicitly setting [`--num-io-threads`](#num-io-threads) (global option) -> and [`--num-datafusion-threads`](#num-datafusion-threads). +> You can override the automatic thread assignment by explicitly setting [`--num-io-threads`](#num-io-threads) +> and [`--datafusion-num-threads`](#datafusion-num-threads). > This is particularly important for specialized > workloads like [ingest mode](#mode) where you may need more IO threads than the default allocation. **Constraints:** - Must be at least 2 - Cannot exceed the number of cores available on the system -- Total thread count from `--num-io-threads` (global option) and `--num-datafusion-threads` cannot exceed the `num-cores` value +- Total thread count from `--num-io-threads` (global option) and `--datafusion-num-threads` cannot exceed the `num-cores` value | influxdb3 serve option | Environment variable | | :--------------------- | :-------------------------------- | | `--num-cores` | `INFLUXDB3_ENTERPRISE_NUM_CORES` | {{% /show-in %}} -{{% show-in "enterprise" %}} +#### datafusion-num-threads -> [!Note] -> The [`--num-io-threads`](#num-io-threads) option is a global flag. ---- - -#### num-datafusion-threads - -Sets the number of threads allocated to the DataFusion runtime thread pool. DataFusion threads handle: +Sets the number of threads allocated to the DataFusion runtime thread pool. +DataFusion threads handle: - Query execution and processing - Data aggregation and transformation - Snapshot creation (sort/dedupe operations) - Parquet file generation -**Default behavior:** +{{% show-in "core" %}} +**Default:** All available cores minus IO threads + +> [!Note] +> DataFusion threads are used for both query processing and snapshot operations. +{{% /show-in %}} + +{{% show-in "enterprise" %}} +**Default:** - If not specified and `--num-cores` is not set: All available cores minus IO threads - If not specified and `--num-cores` is set: Automatically determined based on core count (see [`--num-cores`](#num-cores)) @@ -1923,19 +1722,23 @@ Sets the number of threads allocated to the DataFusion runtime thread pool. Data > DataFusion threads are used for both query processing and snapshot operations. > Even ingest-only nodes use DataFusion threads during WAL snapshot creation. -**Constraints:** -- When used with `--num-cores`, the sum of `--num-io-threads` and `--num-datafusion-threads` cannot exceed the `num-cores` value +**Constraints:** When used with `--num-cores`, the sum of `--num-io-threads` and `--datafusion-num-threads` cannot exceed the `num-cores` value +{{% /show-in %}} | influxdb3 serve option | Environment variable | | :----------------------------- | :-------------------------------------- | -| `--num-datafusion-threads` | `INFLUXDB3_NUM_DATAFUSION_THREADS` | -{{% /show-in %}} +| `--datafusion-num-threads` | `INFLUXDB3_DATAFUSION_NUM_THREADS` | +> [!Note] +> [`--num-io-threads`](#num-io-threads) is a [global configuration option](#global-configuration-options). + +{{% show-in "enterprise" %}} --- #### num-database-limit -Sets the maximum number of databases that can be created. +Limits the total number of active databases. +Default is {{% influxdb3/limit "database" %}}. | influxdb3 serve option | Environment variable | | :------------------------ | :---------------------------------------- | @@ -1945,7 +1748,8 @@ Sets the maximum number of databases that can be created. #### num-table-limit -Defines the maximum number of tables that can be created across all databases. +Limits the total number of active tables across all databases. +Default is {{% influxdb3/limit "table" %}}. | influxdb3 serve option | Environment variable | | :---------------------- | :------------------------------------- | @@ -1955,7 +1759,8 @@ Defines the maximum number of tables that can be created across all databases. #### num-total-columns-per-table-limit -Sets the maximum number of columns allowed per table. +Limits the total number of columns per table. +Default is {{% influxdb3/limit "column" %}}. | influxdb3 serve option | Environment variable | | :--------------------------------------- | :---------------------------------------------------------- | diff --git a/content/shared/v3-core-enterprise-release-notes/_index.md b/content/shared/v3-core-enterprise-release-notes/_index.md index ab3d0eed4..56260b275 100644 --- a/content/shared/v3-core-enterprise-release-notes/_index.md +++ b/content/shared/v3-core-enterprise-release-notes/_index.md @@ -417,6 +417,13 @@ All Core updates are included in Enterprise. Additional Enterprise-specific feat ### Core +#### Breaking Changes + +- **Parquet cache configuration**: Replaced `--parquet-mem-cache-size-mb` option with `--parquet-mem-cache-size`. The new option accepts values in megabytes (as an integer) or as a percentage of total available memory (for example, `20%`). The default value changed from `1000` MB to `20%` of total available memory. The environment variable `INFLUXDB3_PARQUET_MEM_CACHE_SIZE_MB` was replaced with `INFLUXDB3_PARQUET_MEM_CACHE_SIZE`. ([#26023](https://github.com/influxdata/influxdb/pull/26023)) +- **Memory settings updates**: + - Force snapshot memory threshold now defaults to `50%` of available memory + - DataFusion execution memory pool now defaults to `20%` of available memory + #### General Updates - Performance and reliability improvements. diff --git a/install_influxdb3.sh b/install_influxdb3.sh new file mode 100644 index 000000000..590ce3f9f --- /dev/null +++ b/install_influxdb3.sh @@ -0,0 +1,845 @@ +#!/bin/sh -e + +# ==========================Script Config========================== + +readonly GREEN='\033[0;32m' +readonly BLUE='\033[0;34m' +readonly BOLD='\033[1m' +readonly BOLDGREEN='\033[1;32m' +readonly DIM='\033[2m' +readonly NC='\033[0m' # No Color + +# No diagnostics for: 'printf "...${FOO}"' +# shellcheck disable=SC2059 + +ARCHITECTURE=$(uname -m) +ARTIFACT="" +OS="" +INSTALL_LOC=~/.influxdb +BINARY_NAME="influxdb3" +PORT=8181 + +# Set the default (latest) version here. Users may specify a version using the +# --version arg (handled below) +INFLUXDB_VERSION="3.5.0" +EDITION="Core" +EDITION_TAG="core" + + +# Parse command line arguments +while [ $# -gt 0 ]; do + case "$1" in + --version) + INFLUXDB_VERSION="$2" + shift 2 + ;; + enterprise) + EDITION="Enterprise" + EDITION_TAG="enterprise" + shift 1 + ;; + *) + echo "Usage: $0 [enterprise] [--version VERSION]" + echo " enterprise: Install the Enterprise edition (optional)" + echo " --version VERSION: Specify InfluxDB version (default: $INFLUXDB_VERSION)" + exit 1 + ;; + esac +done + + + +# ==========================Detect OS/Architecture========================== + +case "$(uname -s)" in + Linux*) OS="Linux";; + Darwin*) OS="Darwin";; + *) OS="UNKNOWN";; +esac + +if [ "${OS}" = "Linux" ]; then + # ldd is a shell script but on some systems (eg Ubuntu) security hardening + # prevents it from running when invoked directly. Since we only want to + # use '--verbose', find the path to ldd, then invoke under sh to bypass ldd + # hardening. + if [ "${ARCHITECTURE}" = "x86_64" ] || [ "${ARCHITECTURE}" = "amd64" ]; then + ARTIFACT="linux_amd64" + elif [ "${ARCHITECTURE}" = "aarch64" ] || [ "${ARCHITECTURE}" = "arm64" ]; then + ARTIFACT="linux_arm64" + fi +elif [ "${OS}" = "Darwin" ]; then + if [ "${ARCHITECTURE}" = "x86_64" ]; then + printf "Intel Mac support is coming soon!\n" + printf "Visit our public Discord at \033[4;94mhttps://discord.gg/az4jPm8x${NC} for additional guidance.\n" + printf "View alternative binaries on our Getting Started guide at \033[4;94mhttps://docs.influxdata.com/influxdb3/${EDITION_TAG}/${NC}.\n" + exit 1 + else + ARTIFACT="darwin_arm64" + fi +fi + +# Exit if unsupported system +[ -n "${ARTIFACT}" ] || { + printf "Unfortunately this script doesn't support your '${OS}' | '${ARCHITECTURE}' setup, or was unable to identify it correctly.\n" + printf "Visit our public Discord at \033[4;94mhttps://discord.gg/az4jPm8x${NC} for additional guidance.\n" + printf "View alternative binaries on our Getting Started guide at \033[4;94mhttps://docs.influxdata.com/influxdb3/${EDITION_TAG}/${NC}.\n" + exit 1 +} + +URL="https://dl.influxdata.com/influxdb/releases/influxdb3-${EDITION_TAG}-${INFLUXDB_VERSION}_${ARTIFACT}.tar.gz" + + + +# ==========================Reusable Script Functions ========================== + +# Function to find available port +find_available_port() { + show_progress="${1:-true}" + lsof_exec=$(command -v lsof) && { + while [ -n "$lsof_exec" ] && lsof -i:"$PORT" -t >/dev/null 2>&1; do + if [ "$show_progress" = "true" ]; then + printf "โ”œโ”€${DIM} Port %s is in use. Finding new port.${NC}\n" "$PORT" + fi + PORT=$((PORT + 1)) + if [ "$PORT" -gt 32767 ]; then + printf "โ””โ”€${DIM} Could not find an available port. Aborting.${NC}\n" + exit 1 + fi + if ! "$lsof_exec" -i:"$PORT" -t >/dev/null 2>&1; then + if [ "$show_progress" = "true" ]; then + printf "โ””โ”€${DIM} Found an available port: %s${NC}\n" "$PORT" + fi + break + fi + done + } +} + +# Function to set up Quick Start defaults for both Core and Enterprise +setup_quick_start_defaults() { + edition="${1:-core}" + + NODE_ID="node0" + STORAGE_TYPE="File Storage" + STORAGE_PATH="$HOME/.influxdb/data" + PLUGIN_PATH="$HOME/.influxdb/plugins" + STORAGE_FLAGS="--object-store=file --data-dir ${STORAGE_PATH} --plugin-dir ${PLUGIN_PATH}" + STORAGE_FLAGS_ECHO="--object-store=file --data-dir ${STORAGE_PATH} --plugin-dir ${PLUGIN_PATH}" + START_SERVICE="y" # Always set for Quick Start + + # Enterprise-specific settings + if [ "$edition" = "enterprise" ]; then + CLUSTER_ID="cluster0" + LICENSE_FILE_PATH="${STORAGE_PATH}/${CLUSTER_ID}/trial_or_home_license" + fi + + # Create directories + mkdir -p "${STORAGE_PATH}" + mkdir -p "${PLUGIN_PATH}" +} + +# Function to configure AWS S3 storage +configure_aws_s3_storage() { + echo + printf "${BOLD}AWS S3 Configuration${NC}\n" + printf "โ”œโ”€ Enter AWS Access Key ID: " + read -r AWS_KEY + + printf "โ”œโ”€ Enter AWS Secret Access Key: " + stty -echo + read -r AWS_SECRET + stty echo + + echo + printf "โ”œโ”€ Enter S3 Bucket: " + read -r AWS_BUCKET + + printf "โ””โ”€ Enter AWS Region (default: us-east-1): " + read -r AWS_REGION + AWS_REGION=${AWS_REGION:-"us-east-1"} + + STORAGE_FLAGS="--object-store=s3 --bucket=${AWS_BUCKET}" + if [ -n "$AWS_REGION" ]; then + STORAGE_FLAGS="$STORAGE_FLAGS --aws-default-region=${AWS_REGION}" + fi + STORAGE_FLAGS="$STORAGE_FLAGS --aws-access-key-id=${AWS_KEY}" + STORAGE_FLAGS_ECHO="$STORAGE_FLAGS --aws-secret-access-key=..." + STORAGE_FLAGS="$STORAGE_FLAGS --aws-secret-access-key=${AWS_SECRET}" +} + +# Function to configure Azure storage +configure_azure_storage() { + echo + printf "${BOLD}Azure Storage Configuration${NC}\n" + printf "โ”œโ”€ Enter Storage Account Name: " + read -r AZURE_ACCOUNT + + printf "โ””โ”€ Enter Storage Access Key: " + stty -echo + read -r AZURE_KEY + stty echo + + echo + STORAGE_FLAGS="--object-store=azure --azure-storage-account=${AZURE_ACCOUNT}" + STORAGE_FLAGS_ECHO="$STORAGE_FLAGS --azure-storage-access-key=..." + STORAGE_FLAGS="$STORAGE_FLAGS --azure-storage-access-key=${AZURE_KEY}" +} + +# Function to configure Google Cloud storage +configure_google_cloud_storage() { + echo + printf "${BOLD}Google Cloud Storage Configuration${NC}\n" + printf "โ””โ”€ Enter path to service account JSON file: " + read -r GOOGLE_SA + STORAGE_FLAGS="--object-store=google --google-service-account=${GOOGLE_SA}" + STORAGE_FLAGS_ECHO="$STORAGE_FLAGS" +} + +# Function to set up license for Enterprise Quick Start +setup_license_for_quick_start() { + # Check if license file exists + if [ -f "$LICENSE_FILE_PATH" ]; then + printf "${DIM}Found existing license file, using it for quick start.${NC}\n" + LICENSE_TYPE="" + LICENSE_EMAIL="" + LICENSE_DESC="Existing" + else + # Prompt for license type and email only + echo + printf "${BOLD}License Setup Required${NC}\n" + printf "1) ${GREEN}Trial${NC} ${DIM}- Full features for 30 days (up to 256 cores)${NC}\n" + printf "2) ${GREEN}Home${NC} ${DIM}- Free for non-commercial use (max 2 cores, single node)${NC}\n" + echo + printf "Enter choice (1-2): " + read -r LICENSE_CHOICE + + case "${LICENSE_CHOICE:-1}" in + 1) + LICENSE_TYPE="trial" + LICENSE_DESC="Trial" + ;; + 2) + LICENSE_TYPE="home" + LICENSE_DESC="Home" + ;; + *) + LICENSE_TYPE="trial" + LICENSE_DESC="Trial" + ;; + esac + + printf "Enter your email: " + read -r LICENSE_EMAIL + while [ -z "$LICENSE_EMAIL" ]; do + printf "Email is required. Enter your email: " + read -r LICENSE_EMAIL + done + fi +} + +# Function to prompt for storage configuration +prompt_storage_configuration() { + # Prompt for storage solution + echo + printf "${BOLD}Select Your Storage Solution${NC}\n" + printf "โ”œโ”€ 1) File storage (Persistent)\n" + printf "โ”œโ”€ 2) Object storage (Persistent)\n" + printf "โ”œโ”€ 3) In-memory storage (Non-persistent)\n" + printf "โ””โ”€ Enter your choice (1-3): " + read -r STORAGE_CHOICE + + case "$STORAGE_CHOICE" in + 1) + STORAGE_TYPE="File Storage" + echo + printf "Enter storage path (default: %s/data): " "${INSTALL_LOC}" + read -r STORAGE_PATH + STORAGE_PATH=${STORAGE_PATH:-"$INSTALL_LOC/data"} + STORAGE_FLAGS="--object-store=file --data-dir ${STORAGE_PATH}" + STORAGE_FLAGS_ECHO="$STORAGE_FLAGS" + ;; + 2) + STORAGE_TYPE="Object Storage" + echo + printf "${BOLD}Select Cloud Provider${NC}\n" + printf "โ”œโ”€ 1) Amazon S3\n" + printf "โ”œโ”€ 2) Azure Storage\n" + printf "โ”œโ”€ 3) Google Cloud Storage\n" + printf "โ””โ”€ Enter your choice (1-3): " + read -r CLOUD_CHOICE + + case $CLOUD_CHOICE in + 1) # AWS S3 + configure_aws_s3_storage + ;; + + 2) # Azure Storage + configure_azure_storage + ;; + + 3) # Google Cloud Storage + configure_google_cloud_storage + ;; + + *) + printf "Invalid cloud provider choice. Defaulting to file storage.\n" + STORAGE_TYPE="File Storage" + STORAGE_FLAGS="--object-store=file --data-dir $INSTALL_LOC/data" + STORAGE_FLAGS_ECHO="$STORAGE_FLAGS" + ;; + esac + ;; + 3) + STORAGE_TYPE="memory" + STORAGE_FLAGS="--object-store=memory" + STORAGE_FLAGS_ECHO="$STORAGE_FLAGS" + ;; + + *) + printf "Invalid choice. Defaulting to file storage.\n" + STORAGE_TYPE="File Storage" + STORAGE_FLAGS="--object-store=file --data-dir $INSTALL_LOC/data" + STORAGE_FLAGS_ECHO="$STORAGE_FLAGS" + ;; + esac +} + +# Function to perform health check on server +perform_server_health_check() { + timeout_seconds="${1:-30}" + is_enterprise="${2:-false}" + + SUCCESS=0 + EMAIL_MESSAGE_SHOWN=false + + for i in $(seq 1 "$timeout_seconds"); do + # on systems without a usable lsof, sleep a second to see if the pid is + # still there to give influxdb a chance to error out in case an already + # running influxdb is running on this port + if [ -z "$lsof_exec" ]; then + sleep 1 + fi + + if ! kill -0 "$PID" 2>/dev/null ; then + if [ "$is_enterprise" = "true" ]; then + printf "โ””โ”€${DIM} Server process stopped unexpectedly${NC}\n" + fi + break + fi + + if curl --max-time 1 -s "http://localhost:$PORT/health" >/dev/null 2>&1; then + printf "\n${BOLDGREEN}โœ“ InfluxDB 3 ${EDITION} is now installed and running on port %s. Nice!${NC}\n" "$PORT" + SUCCESS=1 + break + fi + + # Show email verification message after 10 seconds for Enterprise + if [ "$is_enterprise" = "true" ] && [ "$i" -eq 10 ] && [ "$EMAIL_MESSAGE_SHOWN" = "false" ]; then + printf "โ”œโ”€${DIM} Checking license activation - please verify your email${NC}\n" + EMAIL_MESSAGE_SHOWN=true + fi + + # Show progress updates every 15 seconds after initial grace period + if [ "$is_enterprise" = "true" ] && [ "$i" -gt 5 ] && [ $((i % 15)) -eq 0 ]; then + printf "โ”œโ”€${DIM} Waiting for license verification (%s/%ss)${NC}\n" "$i" "$timeout_seconds" + fi + + sleep 1 + done + + if [ $SUCCESS -eq 0 ]; then + if [ "$is_enterprise" = "true" ]; then + printf "โ””โ”€${BOLD} ERROR: InfluxDB Enterprise failed to start within %s seconds${NC}\n" "$timeout_seconds" + if [ "$show_progress" = "true" ]; then + printf " This may be due to:\n" + printf " โ”œโ”€ Email verification required (check your email)\n" + printf " โ”œโ”€ Network connectivity issues during license retrieval\n" + printf " โ”œโ”€ Invalid license type or email format\n" + printf " โ”œโ”€ Port %s already in use\n" "$PORT" + printf " โ””โ”€ Server startup issues\n" + else + if [ -n "$LICENSE_TYPE" ]; then + printf " โ”œโ”€ Check your email for license verification if required\n" + fi + printf " โ”œโ”€ Network connectivity issues\n" + printf " โ””โ”€ Port %s conflicts\n" "$PORT" + fi + + # Kill the background process if it's still running + if kill -0 "$PID" 2>/dev/null; then + printf " Stopping background server process...\n" + kill "$PID" 2>/dev/null + fi + else + printf "โ””โ”€${BOLD} ERROR: InfluxDB failed to start; check permissions or other potential issues.${NC}\n" + exit 1 + fi + fi +} + +# Function to display Enterprise server command +display_enterprise_server_command() { + is_quick_start="${1:-false}" + + if [ "$is_quick_start" = "true" ]; then + # Quick Start format + printf "โ””โ”€${DIM} Command: ${NC}\n" + printf "${DIM} influxdb3 serve \\\\${NC}\n" + printf "${DIM} --cluster-id=%s \\\\${NC}\n" "$CLUSTER_ID" + printf "${DIM} --node-id=%s \\\\${NC}\n" "$NODE_ID" + if [ -n "$LICENSE_TYPE" ] && [ -n "$LICENSE_EMAIL" ]; then + printf "${DIM} --license-type=%s \\\\${NC}\n" "$LICENSE_TYPE" + printf "${DIM} --license-email=%s \\\\${NC}\n" "$LICENSE_EMAIL" + fi + printf "${DIM} --http-bind=0.0.0.0:%s \\\\${NC}\n" "$PORT" + printf "${DIM} %s${NC}\n" "$STORAGE_FLAGS_ECHO" + echo + else + # Custom configuration format + printf "โ”‚\n" + printf "โ”œโ”€ Running serve command:\n" + printf "โ”œโ”€${DIM} influxdb3 serve \\\\${NC}\n" + printf "โ”œโ”€${DIM} --cluster-id='%s' \\\\${NC}\n" "$CLUSTER_ID" + printf "โ”œโ”€${DIM} --node-id='%s' \\\\${NC}\n" "$NODE_ID" + printf "โ”œโ”€${DIM} --license-type='%s' \\\\${NC}\n" "$LICENSE_TYPE" + printf "โ”œโ”€${DIM} --license-email='%s' \\\\${NC}\n" "$LICENSE_EMAIL" + printf "โ”œโ”€${DIM} --http-bind='0.0.0.0:%s' \\\\${NC}\n" "$PORT" + printf "โ”œโ”€${DIM} %s${NC}\n" "$STORAGE_FLAGS_ECHO" + printf "โ”‚\n" + fi +} + + + +# =========================Installation========================== + +# Attempt to clear screen and show welcome message +clear 2>/dev/null || true # clear isn't available everywhere +printf "โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”\n" +printf "โ”‚ ${BOLD}Welcome to InfluxDB!${NC} We'll make this quick. โ”‚\n" +printf "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n" + +echo +printf "${BOLD}Select Installation Type${NC}\n" +echo +printf "1) ${GREEN}Docker Image${NC} ${DIM}(The official Docker image)${NC}\n" +printf "2) ${GREEN}Simple Download${NC} ${DIM}(No dependencies required)${NC}\n" +echo +printf "Enter your choice (1-2): " +read -r INSTALL_TYPE + +case "$INSTALL_TYPE" in + 1) + printf "\n\n${BOLD}Download and Tag Docker Image${NC}\n" + printf "โ”œโ”€ ${DIM}docker pull influxdb:${EDITION_TAG}${NC}\n" + printf "โ””โ”€ ${DIM}docker tag influxdb:${EDITION_TAG} influxdb3-${EDITION_TAG}${NC}\n\n" + if ! docker pull "influxdb:3-${EDITION_TAG}"; then + printf "โ””โ”€ Error: Failed to download Docker image.\n" + exit 1 + fi + docker tag influxdb:3-${EDITION_TAG} influxdb3-${EDITION_TAG} + # Exit script after Docker installation + echo + printf "${BOLDGREEN}โœ“ InfluxDB 3 ${EDITION} successfully pulled. Nice!${NC}\n\n" + printf "${BOLD}NEXT STEPS${NC}\n" + printf "1) Run the Docker image:\n" + printf " โ””โ”€ ${BOLD}docker run -it -p 8181:8181 --name influxdb3-container \\" + printf "\n --volume ~/.influxdb3_data:/.data --volume ~/.influxdb3_plugins:/plugins influxdb:3-${EDITION_TAG} \\" + printf "\n influxdb3 serve" + if [ "${EDITION}" = "Enterprise" ]; then + printf " --cluster-id c0" + fi + printf " --node-id node0 --object-store file --data-dir /.data --plugin-dir /plugins${NC}\n\n" + printf "2) ${NC}Create a token: ${BOLD}docker exec -it influxdb3-container influxdb3 create token --admin${NC} \n\n" + printf "3) Begin writing data! Learn more at https://docs.influxdata.com/influxdb3/${EDITION_TAG}/get-started/write/\n\n" + printf "โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”\n" + printf "โ”‚ Looking to use a UI for querying, plugins, management, and more? โ”‚\n" + printf "โ”‚ Get InfluxDB 3 Explorer at ${BLUE}https://docs.influxdata.com/influxdb3/explorer/#quick-start${NC} โ”‚\n" + printf "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n\n" + exit 0 + ;; + 2) + printf "\n\n" + ;; + *) + printf "Invalid choice. Defaulting to binary installation.\n\n" + ;; +esac + +# attempt to find the user's shell config +shellrc= +if [ -n "$SHELL" ]; then + tmp=~/.$(basename "$SHELL")rc + if [ -e "$tmp" ]; then + shellrc="$tmp" + fi +fi + +printf "${BOLD}Downloading InfluxDB 3 %s to %s${NC}\n" "$EDITION" "$INSTALL_LOC" +printf "โ”œโ”€${DIM} mkdir -p '%s'${NC}\n" "$INSTALL_LOC" +mkdir -p "$INSTALL_LOC" +printf "โ””โ”€${DIM} curl -sSL '%s' -o '%s/influxdb3-${EDITION_TAG}.tar.gz'${NC}\n" "${URL}" "$INSTALL_LOC" +curl -sSL "${URL}" -o "$INSTALL_LOC/influxdb3-${EDITION_TAG}.tar.gz" + +echo +printf "${BOLD}Verifying '%s/influxdb3-${EDITION_TAG}.tar.gz'${NC}\n" "$INSTALL_LOC" +printf "โ””โ”€${DIM} curl -sSL '%s.sha256' -o '%s/influxdb3-${EDITION_TAG}.tar.gz.sha256'${NC}\n" "${URL}" "$INSTALL_LOC" +curl -sSL "${URL}.sha256" -o "$INSTALL_LOC/influxdb3-${EDITION_TAG}.tar.gz.sha256" +dl_sha=$(cut -d ' ' -f 1 "$INSTALL_LOC/influxdb3-${EDITION_TAG}.tar.gz.sha256" | grep -E '^[0-9a-f]{64}$') +if [ -z "$dl_sha" ]; then + printf "Could not find properly formatted SHA256 in '%s/influxdb3-${EDITION_TAG}.tar.gz.sha256'. Aborting.\n" "$INSTALL_LOC" + exit 1 +fi + +ch_sha= +if [ "${OS}" = "Darwin" ]; then + printf "โ””โ”€${DIM} shasum -a 256 '%s/influxdb3-${EDITION_TAG}.tar.gz'" "$INSTALL_LOC" + ch_sha=$(shasum -a 256 "$INSTALL_LOC/influxdb3-${EDITION_TAG}.tar.gz" | cut -d ' ' -f 1) +else + printf "โ””โ”€${DIM} sha256sum '%s/influxdb3-${EDITION_TAG}.tar.gz'" "$INSTALL_LOC" + ch_sha=$(sha256sum "$INSTALL_LOC/influxdb3-${EDITION_TAG}.tar.gz" | cut -d ' ' -f 1) +fi +if [ "$ch_sha" = "$dl_sha" ]; then + printf " (OK: %s = %s)${NC}\n" "$ch_sha" "$dl_sha" +else + printf " (ERROR: %s != %s). Aborting.${NC}\n" "$ch_sha" "$dl_sha" + exit 1 +fi +printf "โ””โ”€${DIM} rm '%s/influxdb3-${EDITION_TAG}.tar.gz.sha256'${NC}\n" "$INSTALL_LOC" +rm "$INSTALL_LOC/influxdb3-${EDITION_TAG}.tar.gz.sha256" + +echo +printf "${BOLD}Extracting and Processing${NC}\n" + +# some tarballs have a leading component, check for that +TAR_LEVEL=0 +if tar -tf "$INSTALL_LOC/influxdb3-${EDITION_TAG}.tar.gz" | grep -q '[a-zA-Z0-9]/influxdb3$' ; then + TAR_LEVEL=1 +fi +printf "โ”œโ”€${DIM} tar -xf '%s/influxdb3-${EDITION_TAG}.tar.gz' --strip-components=${TAR_LEVEL} -C '%s'${NC}\n" "$INSTALL_LOC" "$INSTALL_LOC" +tar -xf "$INSTALL_LOC/influxdb3-${EDITION_TAG}.tar.gz" --strip-components="${TAR_LEVEL}" -C "$INSTALL_LOC" + +printf "โ””โ”€${DIM} rm '%s/influxdb3-${EDITION_TAG}.tar.gz'${NC}\n" "$INSTALL_LOC" +rm "$INSTALL_LOC/influxdb3-${EDITION_TAG}.tar.gz" + +if [ -n "$shellrc" ] && ! grep -q "export PATH=.*$INSTALL_LOC" "$shellrc"; then + echo + printf "${BOLD}Adding InfluxDB to '%s'${NC}\n" "$shellrc" + printf "โ””โ”€${DIM} export PATH=\"\$PATH:%s/\" >> '%s'${NC}\n" "$INSTALL_LOC" "$shellrc" + echo "export PATH=\"\$PATH:$INSTALL_LOC/\"" >> "$shellrc" +fi + +if [ "${EDITION}" = "Core" ]; then + # Prompt user for startup options + echo + printf "${BOLD}What would you like to do next?${NC}\n" + printf "1) ${GREEN}Quick Start${NC} ${DIM}(recommended; data stored at %s/data)${NC}\n" "${INSTALL_LOC}" + printf "2) ${GREEN}Custom Configuration${NC} ${DIM}(configure all options manually)${NC}\n" + printf "3) ${GREEN}Skip startup${NC} ${DIM}(install only)${NC}\n" + echo + printf "Enter your choice (1-3): " + read -r STARTUP_CHOICE + STARTUP_CHOICE=${STARTUP_CHOICE:-1} + + case "$STARTUP_CHOICE" in + 1) + # Quick Start - use defaults + setup_quick_start_defaults core + ;; + 2) + # Custom Configuration - existing detailed flow + START_SERVICE="y" + ;; + 3) + # Skip startup + START_SERVICE="n" + ;; + *) + printf "Invalid choice. Using Quick Start (option 1).\n" + setup_quick_start_defaults core + ;; + esac + + if [ "$START_SERVICE" = "y" ] && [ "$STARTUP_CHOICE" = "2" ]; then + # Prompt for Node ID + echo + printf "${BOLD}Enter Your Node ID${NC}\n" + printf "โ”œโ”€ A Node ID is a unique, uneditable identifier for a service.\n" + printf "โ””โ”€ Enter a Node ID (default: node0): " + read -r NODE_ID + NODE_ID=${NODE_ID:-node0} + + # Prompt for storage solution + prompt_storage_configuration + + # Ensure port is available; if not, find a new one. + find_available_port + + # Start and give up to 30 seconds to respond + echo + + # Create logs directory and generate timestamped log filename + mkdir -p "$INSTALL_LOC/logs" + LOG_FILE="$INSTALL_LOC/logs/$(date +%Y%m%d_%H%M%S).log" + + printf "${BOLD}Starting InfluxDB${NC}\n" + printf "โ”œโ”€${DIM} Node ID: %s${NC}\n" "$NODE_ID" + printf "โ”œโ”€${DIM} Storage: %s${NC}\n" "$STORAGE_TYPE" + printf "โ”œโ”€${DIM} Logs: %s${NC}\n" "$LOG_FILE" + printf "โ”œโ”€${DIM} influxdb3 serve \\\\${NC}\n" + printf "โ”œโ”€${DIM} --node-id='%s' \\\\${NC}\n" "$NODE_ID" + printf "โ”œโ”€${DIM} --http-bind='0.0.0.0:%s' \\\\${NC}\n" "$PORT" + printf "โ””โ”€${DIM} %s${NC}\n" "$STORAGE_FLAGS_ECHO" + + "$INSTALL_LOC/$BINARY_NAME" serve --node-id="$NODE_ID" --http-bind="0.0.0.0:$PORT" $STORAGE_FLAGS >> "$LOG_FILE" 2>&1 & + PID="$!" + + perform_server_health_check 30 + + elif [ "$START_SERVICE" = "y" ] && [ "$STARTUP_CHOICE" = "1" ]; then + # Quick Start flow - minimal output, just start the server + echo + printf "${BOLD}Starting InfluxDB (Quick Start)${NC}\n" + printf "โ”œโ”€${DIM} Node ID: %s${NC}\n" "$NODE_ID" + printf "โ”œโ”€${DIM} Storage: %s/data${NC}\n" "${INSTALL_LOC}" + printf "โ”œโ”€${DIM} Plugins: %s/plugins${NC}\n" "${INSTALL_LOC}" + printf "โ”œโ”€${DIM} Logs: %s/logs/$(date +%Y%m%d_%H%M%S).log${NC}\n" "${INSTALL_LOC}" + + # Ensure port is available; if not, find a new one. + ORIGINAL_PORT="$PORT" + find_available_port false + + # Show port result + if [ "$PORT" != "$ORIGINAL_PORT" ]; then + printf "โ”œโ”€${DIM} Found available port: %s (%s-%s in use)${NC}\n" "$PORT" "$ORIGINAL_PORT" "$((PORT - 1))" + fi + + # Show the command being executed + printf "โ””โ”€${DIM} Command:${NC}\n" + printf "${DIM} influxdb3 serve \\\\${NC}\n" + printf "${DIM} --node-id=%s \\\\${NC}\n" "$NODE_ID" + printf "${DIM} --http-bind=0.0.0.0:%s \\\\${NC}\n" "$PORT" + printf "${DIM} %s${NC}\n\n" "$STORAGE_FLAGS_ECHO" + + # Create logs directory and generate timestamped log filename + mkdir -p "$INSTALL_LOC/logs" + LOG_FILE="$INSTALL_LOC/logs/$(date +%Y%m%d_%H%M%S).log" + + # Start server in background + "$INSTALL_LOC/$BINARY_NAME" serve --node-id="$NODE_ID" --http-bind="0.0.0.0:$PORT" $STORAGE_FLAGS >> "$LOG_FILE" 2>&1 & + PID="$!" + + perform_server_health_check 30 + + else + echo + printf "${BOLDGREEN}โœ“ InfluxDB 3 ${EDITION} is now installed. Nice!${NC}\n" + fi +else + # Enterprise startup options + echo + printf "${BOLD}What would you like to do next?${NC}\n" + printf "1) ${GREEN}Quick Start${NC} ${DIM}(recommended; data stored at %s/data)${NC}\n" "${INSTALL_LOC}" + printf "2) ${GREEN}Custom Configuration${NC} ${DIM}(configure all options manually)${NC}\n" + printf "3) ${GREEN}Skip startup${NC} ${DIM}(install only)${NC}\n" + echo + printf "Enter your choice (1-3): " + read -r STARTUP_CHOICE + STARTUP_CHOICE=${STARTUP_CHOICE:-1} + + case "$STARTUP_CHOICE" in + 1) + # Quick Start - use defaults and check for existing license + setup_quick_start_defaults enterprise + setup_license_for_quick_start + + STORAGE_FLAGS="--object-store=file --data-dir ${STORAGE_PATH} --plugin-dir ${PLUGIN_PATH}" + STORAGE_FLAGS_ECHO="--object-store=file --data-dir ${STORAGE_PATH} --plugin-dir ${PLUGIN_PATH}" + START_SERVICE="y" + ;; + 2) + # Custom Configuration - existing detailed flow + START_SERVICE="y" + ;; + 3) + # Skip startup + START_SERVICE="n" + ;; + *) + printf "Invalid choice. Using Quick Start (option 1).\n" + # Same as option 1 + setup_quick_start_defaults enterprise + setup_license_for_quick_start + + STORAGE_FLAGS="--object-store=file --data-dir ${STORAGE_PATH} --plugin-dir ${PLUGIN_PATH}" + STORAGE_FLAGS_ECHO="--object-store=file --data-dir ${STORAGE_PATH} --plugin-dir ${PLUGIN_PATH}" + START_SERVICE="y" + ;; + esac + + if [ "$START_SERVICE" = "y" ] && [ "$STARTUP_CHOICE" = "1" ]; then + # Enterprise Quick Start flow + echo + printf "${BOLD}Starting InfluxDB Enterprise (Quick Start)${NC}\n" + printf "โ”œโ”€${DIM} Cluster ID: %s${NC}\n" "$CLUSTER_ID" + printf "โ”œโ”€${DIM} Node ID: %s${NC}\n" "$NODE_ID" + if [ -n "$LICENSE_TYPE" ]; then + printf "โ”œโ”€${DIM} License Type: %s${NC}\n" "$LICENSE_DESC" + fi + if [ -n "$LICENSE_EMAIL" ]; then + printf "โ”œโ”€${DIM} Email: %s${NC}\n" "$LICENSE_EMAIL" + fi + printf "โ”œโ”€${DIM} Storage: %s/data${NC}\n" "${INSTALL_LOC}" + printf "โ”œโ”€${DIM} Plugins: %s/plugins${NC}\n" "${INSTALL_LOC}" + + # Create logs directory and generate timestamped log filename + mkdir -p "$INSTALL_LOC/logs" + LOG_FILE="$INSTALL_LOC/logs/$(date +%Y%m%d_%H%M%S).log" + printf "โ”œโ”€${DIM} Logs: %s${NC}\n" "$LOG_FILE" + + # Ensure port is available; if not, find a new one. + ORIGINAL_PORT="$PORT" + find_available_port false + + # Show port result + if [ "$PORT" != "$ORIGINAL_PORT" ]; then + printf "โ”œโ”€${DIM} Found available port: %s (%s-%s in use)${NC}\n" "$PORT" "$ORIGINAL_PORT" "$((PORT - 1))" + fi + + # Show the command being executed + display_enterprise_server_command true + + # Start server in background with or without license flags + if [ -n "$LICENSE_TYPE" ] && [ -n "$LICENSE_EMAIL" ]; then + # New license needed + "$INSTALL_LOC/$BINARY_NAME" serve --cluster-id="$CLUSTER_ID" --node-id="$NODE_ID" --license-type="$LICENSE_TYPE" --license-email="$LICENSE_EMAIL" --http-bind="0.0.0.0:$PORT" $STORAGE_FLAGS >> "$LOG_FILE" 2>&1 & + else + # Existing license file + "$INSTALL_LOC/$BINARY_NAME" serve --cluster-id="$CLUSTER_ID" --node-id="$NODE_ID" --http-bind="0.0.0.0:$PORT" $STORAGE_FLAGS >> "$LOG_FILE" 2>&1 & + fi + PID="$!" + + printf "โ”œโ”€${DIM} Server started in background (PID: %s)${NC}\n" "$PID" + + perform_server_health_check 90 true + + elif [ "$START_SERVICE" = "y" ] && [ "$STARTUP_CHOICE" = "2" ]; then + # Enterprise Custom Start flow + echo + # Prompt for Cluster ID + printf "${BOLD}Enter Your Cluster ID${NC}\n" + printf "โ”œโ”€ A Cluster ID determines part of the storage path hierarchy.\n" + printf "โ”œโ”€ All nodes within the same cluster share this identifier.\n" + printf "โ””โ”€ Enter a Cluster ID (default: cluster0): " + read -r CLUSTER_ID + CLUSTER_ID=${CLUSTER_ID:-cluster0} + + # Prompt for Node ID + echo + printf "${BOLD}Enter Your Node ID${NC}\n" + printf "โ”œโ”€ A Node ID distinguishes individual server instances within the cluster.\n" + printf "โ””โ”€ Enter a Node ID (default: node0): " + read -r NODE_ID + NODE_ID=${NODE_ID:-node0} + + # Prompt for license type + echo + printf "${BOLD}Select Your License Type${NC}\n" + printf "โ”œโ”€ 1) Trial - Full features for 30 days (up to 256 cores)\n" + printf "โ”œโ”€ 2) Home - Free for non-commercial use (max 2 cores, single node)\n" + printf "โ””โ”€ Enter your choice (1-2): " + read -r LICENSE_CHOICE + + case "$LICENSE_CHOICE" in + 1) + LICENSE_TYPE="trial" + LICENSE_DESC="Trial" + ;; + 2) + LICENSE_TYPE="home" + LICENSE_DESC="Home" + ;; + *) + printf "Invalid choice. Defaulting to trial.\n" + LICENSE_TYPE="trial" + LICENSE_DESC="Trial" + ;; + esac + + # Prompt for email + echo + printf "${BOLD}Enter Your Email Address${NC}\n" + printf "โ”œโ”€ Required for license verification and activation\n" + printf "โ”œโ”€ You may need to check your email for verification\n" + printf "โ””โ”€ Email: " + read -r LICENSE_EMAIL + + while [ -z "$LICENSE_EMAIL" ]; do + printf "โ”œโ”€ Email address is required. Please enter your email: " + read -r LICENSE_EMAIL + done + + # Prompt for storage solution + prompt_storage_configuration + + # Ensure port is available; if not, find a new one. + find_available_port + + # Start Enterprise in background with licensing and give up to 90 seconds to respond (licensing takes longer) + echo + printf "${BOLD}Starting InfluxDB Enterprise${NC}\n" + printf "โ”œโ”€${DIM} Cluster ID: %s${NC}\n" "$CLUSTER_ID" + printf "โ”œโ”€${DIM} Node ID: %s${NC}\n" "$NODE_ID" + printf "โ”œโ”€${DIM} License Type: %s${NC}\n" "$LICENSE_DESC" + printf "โ”œโ”€${DIM} Email: %s${NC}\n" "$LICENSE_EMAIL" + printf "โ”œโ”€${DIM} Storage: %s${NC}\n" "$STORAGE_TYPE" + + # Create logs directory and generate timestamped log filename + mkdir -p "$INSTALL_LOC/logs" + LOG_FILE="$INSTALL_LOC/logs/$(date +%Y%m%d_%H%M%S).log" + printf "โ”œโ”€${DIM} Logs: %s${NC}\n" "$LOG_FILE" + + display_enterprise_server_command false + + # Start server in background + "$INSTALL_LOC/$BINARY_NAME" serve --cluster-id="$CLUSTER_ID" --node-id="$NODE_ID" --license-type="$LICENSE_TYPE" --license-email="$LICENSE_EMAIL" --http-bind="0.0.0.0:$PORT" $STORAGE_FLAGS >> "$LOG_FILE" 2>&1 & + PID="$!" + + printf "โ”œโ”€${DIM} Server started in background (PID: %s)${NC}\n" "$PID" + + perform_server_health_check 90 true + + else + echo + printf "${BOLDGREEN}โœ“ InfluxDB 3 ${EDITION} is now installed. Nice!${NC}\n" + fi +fi + +### SUCCESS INFORMATION ### +echo +if [ "${EDITION}" = "Enterprise" ] && [ "$SUCCESS" -eq 0 ] 2>/dev/null; then + printf "${BOLD}Server startup failed${NC} - troubleshooting options:\n" + printf "โ”œโ”€ ${BOLD}Check email verification:${NC} Look for verification email and click the link\n" + printf "โ”œโ”€ ${BOLD}Manual startup:${NC} Try running the server manually to see detailed logs:\n" + printf " influxdb3 serve \\\\\n" + printf " --cluster-id=%s \\\\\n" "${CLUSTER_ID:-cluster0}" + printf " --node-id=%s \\\\\n" "${NODE_ID:-node0}" + printf " --license-type=%s \\\\\n" "${LICENSE_TYPE:-trial}" + printf " --license-email=%s \\\\\n" "${LICENSE_EMAIL:-your@email.com}" + printf " %s\n" "${STORAGE_FLAGS_ECHO:-"--object-store=file --data-dir $INSTALL_LOC/data --plugin-dir $INSTALL_LOC/plugins"}" + printf "โ””โ”€ ${BOLD}Common issues:${NC} Network connectivity, invalid email format, port conflicts\n" +else + printf "${BOLD}Next Steps${NC}\n" + if [ -n "$shellrc" ]; then + printf "โ”œโ”€ Run ${BOLD}source '%s'${NC}, then access InfluxDB with ${BOLD}influxdb3${NC} command.\n" "$shellrc" + else + printf "โ”œโ”€ Access InfluxDB with the ${BOLD}influxdb3${NC} command.\n" + fi + printf "โ”œโ”€ Create admin token: ${BOLD}influxdb3 create token --admin${NC}\n" + printf "โ””โ”€ Begin writing data! Learn more at https://docs.influxdata.com/influxdb3/${EDITION_TAG}/get-started/write/\n\n" +fi + +printf "โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”\n" +printf "โ”‚ Looking to use a UI for querying, plugins, management, and more? โ”‚\n" +printf "โ”‚ Get InfluxDB 3 Explorer at ${BLUE}https://docs.influxdata.com/influxdb3/explorer/#quick-start${NC} โ”‚\n" +printf "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜\n\n" \ No newline at end of file From 17558b820790d8605ef836f7508a0bd851b4df46 Mon Sep 17 00:00:00 2001 From: Jason Stirnaman Date: Tue, 21 Oct 2025 21:10:27 -0500 Subject: [PATCH 27/49] Jts 6477 fix writelp precision (#6478) * docs(influxdb3): update write endpoint recommendations and add Telegraf guidance - Update write endpoint recommendations for Core/Enterprise - Add Telegraf output plugin guidance (v1.x and v2.x) - Improve introductory content and formatting - Change Note to Tip for write endpoint recommendations - Add italics to v1/v2 for clarity * docs(influxdb3): add precision parameter comparison and format details - Add precision comparison table across v1, v2, v3 write APIs - Document auto precision detection with exponential notation (5e9, 5e12, 5e15) - Add tabbed code examples for different precision values - Update OpenAPI specs with long-form precision values only (auto, nanosecond, microsecond, millisecond, second) - Add timestamp conversion details for internal storage - Use long-form precision values in all examples Note: Currently /api/v3/write_lp only supports long forms despite source code indicating short form support. Related to #6472 - precision parameter behavior may have bugs --- api-docs/influxdb3/core/v3/ref.yml | 48 +++++++++-- api-docs/influxdb3/enterprise/v3/ref.yml | 48 +++++++++-- .../shared/influxdb3-write-guides/_index.md | 52 ++++++++++-- .../influxdb3-write-guides/http-api/_index.md | 20 ++++- .../http-api/compatibility-apis.md | 16 ++++ .../http-api/v3-write-lp.md | 82 ++++++++++++++++--- 6 files changed, 235 insertions(+), 31 deletions(-) diff --git a/api-docs/influxdb3/core/v3/ref.yml b/api-docs/influxdb3/core/v3/ref.yml index 3d21dff42..65522f750 100644 --- a/api-docs/influxdb3/core/v3/ref.yml +++ b/api-docs/influxdb3/core/v3/ref.yml @@ -204,7 +204,28 @@ tags: - name: Token description: Manage tokens for authentication and authorization - name: Write data - description: Write data to InfluxDB 3 + description: | + Write data to InfluxDB 3 using line protocol format. + + #### Timestamp precision across write APIs + + InfluxDB 3 provides multiple write endpoints for compatibility with different InfluxDB versions. + The following table compares timestamp precision support across v1, v2, and v3 write APIs: + + | Precision | v1 (`/write`) | v2 (`/api/v2/write`) | v3 (`/api/v3/write_lp`) | + |-----------|---------------|----------------------|-------------------------| + | **Auto detection** | โŒ No | โŒ No | โœ… `auto` (default) | + | **Seconds** | โœ… `s` | โœ… `s` | โœ… `second` | + | **Milliseconds** | โœ… `ms` | โœ… `ms` | โœ… `millisecond` | + | **Microseconds** | โœ… `u` or `ยต` | โœ… `us` | โœ… `microsecond` | + | **Nanoseconds** | โœ… `ns` | โœ… `ns` | โœ… `nanosecond` | + | **Minutes** | โœ… `m` | โŒ No | โŒ No | + | **Hours** | โœ… `h` | โŒ No | โŒ No | + | **Default** | Nanosecond | Nanosecond | **Auto** (guessed) | + + **Note:** A bug currently prevents abbreviated precision values (`ns`, `n`, `us`, `u`, `ms`, `s`) from working with the `/api/v3/write_lp` endpoint. Use the full names (`nanosecond`, `microsecond`, `millisecond`, `second`) instead. Abbreviated values will be supported in a future release. + + All timestamps are stored internally as nanoseconds. paths: /write: post: @@ -430,11 +451,21 @@ paths: Use query parameters to specify options for writing data. #### Features - + - **Partial writes**: Use `accept_partial=true` to allow partial success when some lines in a batch fail - - **Asynchronous writes**: Use `no_sync=true` to skip waiting for WAL synchronization, allowing faster response times but sacrificing durability guarantees + - **Asynchronous writes**: Use `no_sync=true` to skip waiting for WAL synchronization, allowing faster response times but sacrificing durability guarantees - **Flexible precision**: Automatic timestamp precision detection with `precision=auto` (default) + #### Auto precision detection + + When you use `precision=auto` or omit the precision parameter, InfluxDB 3 automatically detects + the timestamp precision based on the magnitude of the timestamp value: + + - Timestamps < 5e9 โ†’ Second precision (multiplied by 1,000,000,000 to convert to nanoseconds) + - Timestamps < 5e12 โ†’ Millisecond precision (multiplied by 1,000,000) + - Timestamps < 5e15 โ†’ Microsecond precision (multiplied by 1,000) + - Larger timestamps โ†’ Nanosecond precision (no conversion needed) + #### Related - [Use the InfluxDB v3 write_lp API to write data](/influxdb3/core/write-data/http-api/v3-write-lp/) @@ -1911,13 +1942,20 @@ components: PrecisionWrite: enum: - auto + - nanosecond + - microsecond - millisecond - second - - microsecond - - nanosecond type: string description: | The precision for unix timestamps in the line protocol batch. + + Supported values: + - `auto` (default): Automatically detects precision based on timestamp magnitude + - `nanosecond`: Nanoseconds + - `microsecond`: Microseconds + - `millisecond`: Milliseconds + - `second`: Seconds QueryRequestObject: type: object properties: diff --git a/api-docs/influxdb3/enterprise/v3/ref.yml b/api-docs/influxdb3/enterprise/v3/ref.yml index 7a1094d87..33cb1cfca 100644 --- a/api-docs/influxdb3/enterprise/v3/ref.yml +++ b/api-docs/influxdb3/enterprise/v3/ref.yml @@ -204,7 +204,28 @@ tags: - name: Token description: Manage tokens for authentication and authorization - name: Write data - description: Write data to InfluxDB 3 + description: | + Write data to InfluxDB 3 using line protocol format. + + #### Timestamp precision across write APIs + + InfluxDB 3 provides multiple write endpoints for compatibility with different InfluxDB versions. + The following table compares timestamp precision support across v1, v2, and v3 write APIs: + + | Precision | v1 (`/write`) | v2 (`/api/v2/write`) | v3 (`/api/v3/write_lp`) | + |-----------|---------------|----------------------|-------------------------| + | **Auto detection** | โŒ No | โŒ No | โœ… `auto` (default) | + | **Seconds** | โœ… `s` | โœ… `s` | โœ… `second` | + | **Milliseconds** | โœ… `ms` | โœ… `ms` | โœ… `millisecond` | + | **Microseconds** | โœ… `u` or `ยต` | โœ… `us` | โœ… `microsecond` | + | **Nanoseconds** | โœ… `ns` | โœ… `ns` | โœ… `nanosecond` | + | **Minutes** | โœ… `m` | โŒ No | โŒ No | + | **Hours** | โœ… `h` | โŒ No | โŒ No | + | **Default** | Nanosecond | Nanosecond | **Auto** (guessed) | + + **Note:** A bug currently prevents abbreviated precision values (`ns`, `n`, `us`, `u`, `ms`, `s`) from working with the `/api/v3/write_lp` endpoint. Use the full names (`nanosecond`, `microsecond`, `millisecond`, `second`) instead. Abbreviated values will be supported in a future release. + + All timestamps are stored internally as nanoseconds. paths: /write: post: @@ -430,11 +451,21 @@ paths: Use query parameters to specify options for writing data. #### Features - + - **Partial writes**: Use `accept_partial=true` to allow partial success when some lines in a batch fail - - **Asynchronous writes**: Use `no_sync=true` to skip waiting for WAL synchronization, allowing faster response times but sacrificing durability guarantees + - **Asynchronous writes**: Use `no_sync=true` to skip waiting for WAL synchronization, allowing faster response times but sacrificing durability guarantees - **Flexible precision**: Automatic timestamp precision detection with `precision=auto` (default) + #### Auto precision detection + + When you use `precision=auto` or omit the precision parameter, InfluxDB 3 automatically detects + the timestamp precision based on the magnitude of the timestamp value: + + - Timestamps < 5e9 โ†’ Second precision (multiplied by 1,000,000,000 to convert to nanoseconds) + - Timestamps < 5e12 โ†’ Millisecond precision (multiplied by 1,000,000) + - Timestamps < 5e15 โ†’ Microsecond precision (multiplied by 1,000) + - Larger timestamps โ†’ Nanosecond precision (no conversion needed) + #### Related - [Use the InfluxDB v3 write_lp API to write data](/influxdb3/enterprise/write-data/http-api/v3-write-lp/) @@ -2043,13 +2074,20 @@ components: PrecisionWrite: enum: - auto + - nanosecond + - microsecond - millisecond - second - - microsecond - - nanosecond type: string description: | The precision for unix timestamps in the line protocol batch. + + Supported values: + - `auto` (default): Automatically detects precision based on timestamp magnitude + - `nanosecond`: Nanoseconds + - `microsecond`: Microseconds + - `millisecond`: Milliseconds + - `second`: Seconds QueryRequestObject: type: object properties: diff --git a/content/shared/influxdb3-write-guides/_index.md b/content/shared/influxdb3-write-guides/_index.md index eb743e572..5882872c6 100644 --- a/content/shared/influxdb3-write-guides/_index.md +++ b/content/shared/influxdb3-write-guides/_index.md @@ -1,29 +1,63 @@ -Use tools like the `influxctl` CLI, Telegraf, and InfluxDB client libraries to -to write time series data to {{< product-name >}}. [Line protocol](#line-protocol) -is the text-based format used to write data to InfluxDB. There are tools -available to covert other formats (for exampleโ€”[CSV](/influxdb3/version/write-data/use-telegraf/csv/)) -to line protocol. +Use tools like the {{% show-in "cloud-dedicated,clustered" %}}`influxctl`{{% /show-in %}}{{% show-in "cloud-serverless" %}}`influx`{{% /show-in %}}{{% show-in "core,enterprise" %}}`influxdb3`{{% /show-in %}} + CLI, Telegraf, and InfluxDB client libraries +to write time series data to {{< product-name >}}. +[line protocol](#line-protocol) +is the text-based format used to write data to InfluxDB. +> [!Tip] +> Tools are available to convert other formats (for exampleโ€”[CSV](/influxdb3/version/write-data/use-telegraf/csv/)) to line protocol. + +{{% show-in "core,enterprise" %}} +- [Choose the write endpoint for your workload](#choose-the-write-endpoint-for-your-workload) + - [Timestamp precision across write APIs](#timestamp-precision-across-write-apis) +{{% /show-in %}} - [Line protocol](#line-protocol) - [Line protocol elements](#line-protocol-elements) - [Write data to InfluxDB](#write-data-to-influxdb) {{< children type="anchored-list" >}} {{% show-in "core,enterprise" %}} -> [!Note] -> + +> [!Tip] > #### Choose the write endpoint for your workload > > When creating new write workloads, use the > [InfluxDB HTTP API `/api/v3/write_lp` endpoint](influxdb3/version/write-data/http-api/v3-write-lp/) > and [client libraries](/influxdb3/version/write-data/client-libraries/). > -> When bringing existing v1 write workloads, use the {{% product-name %}} +> When bringing existing _v1_ write workloads, use the {{% product-name %}} > HTTP API [`/write` endpoint](/influxdb3/core/api/v3/#operation/PostV1Write). > -> When bringing existing v2 write workloads, use the {{% product-name %}} +> When bringing existing _v2_ write workloads, use the {{% product-name %}} > HTTP API [`/api/v2/write` endpoint]([/influxdb3/version/api/v3/#operation/PostV1Write](/influxdb3/version/api/v3/#operation/PostV2Write)). +> +> **For Telegraf**, use the InfluxDB v1.x [`outputs.influxdb`](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb/README.md) or v2.x [`outputs.influxdb_v2`](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb_v2/README.md) output plugins. +> See how to [use Telegraf to write data](/influxdb3/version/write-data/use-telegraf/). + +## Timestamp precision across write APIs + +{{% product-name %}} provides multiple write endpoints for compatibility with different InfluxDB versions. +The following table compares timestamp precision support across v1, v2, and v3 write APIs: + +| Precision | v1 (`/write`) | v2 (`/api/v2/write`) | v3 (`/api/v3/write_lp`) | +|-----------|---------------|----------------------|-------------------------| +| **Auto detection** | โŒ No | โŒ No | โœ… `auto` (default) | +| **Seconds** | โœ… `s` | โœ… `s` | โœ… `second` | +| **Milliseconds** | โœ… `ms` | โœ… `ms` | โœ… `millisecond` | +| **Microseconds** | โœ… `u` or `ยต` | โœ… `us` | โœ… `microsecond` | +| **Nanoseconds** | โœ… `ns` | โœ… `ns` | โœ… `nanosecond` | +| **Minutes** | โœ… `m` | โŒ No | โŒ No | +| **Hours** | โœ… `h` | โŒ No | โŒ No | +| **Default** | Nanosecond | Nanosecond | **Auto** (guessed) | + +> [!Note] +> A bug currently prevents abbreviated precision values (`ns`, `n`, `us`, `u`, `ms`, `s`) from working with the `/api/v3/write_lp` endpoint. Use the full names (`nanosecond`, `microsecond`, `millisecond`, `second`) instead. Abbreviated values will be supported in a future release. + +- All write endpoints accept timestamps in line protocol format. +- {{% product-name %}} multiplies timestamps by the appropriate precision value to convert them to nanoseconds for internal storage. +- All timestamps are stored internally as nanoseconds regardless of the precision specified when writing. + {{% /show-in %}} {{% hide-in "core,enterprise" %}} diff --git a/content/shared/influxdb3-write-guides/http-api/_index.md b/content/shared/influxdb3-write-guides/http-api/_index.md index 6122cf589..044a90e7e 100644 --- a/content/shared/influxdb3-write-guides/http-api/_index.md +++ b/content/shared/influxdb3-write-guides/http-api/_index.md @@ -1,4 +1,22 @@ Use the InfluxDB HTTP API to write data to {{< product-name >}}. -There are different APIs you can use depending on your integration method. +Different APIs are available depending on your integration method. + +{{% show-in "core,enterprise" %}} +> [!Tip] +> #### Choose the write endpoint for your workload +> +> When creating new write workloads, use the +> [InfluxDB HTTP API `/api/v3/write_lp` endpoint](influxdb3/version/write-data/http-api/v3-write-lp/) +> and [client libraries](/influxdb3/version/write-data/client-libraries/). +> +> When bringing existing _v1_ write workloads, use the {{% product-name %}} +> HTTP API [`/write` endpoint](/influxdb3/core/api/v3/#operation/PostV1Write). +> +> When bringing existing _v2_ write workloads, use the {{% product-name %}} +> HTTP API [`/api/v2/write` endpoint]([/influxdb3/version/api/v3/#operation/PostV1Write](/influxdb3/version/api/v3/#operation/PostV2Write)). +> +> **For Telegraf**, use the InfluxDB v1.x [`outputs.influxdb`](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb/README.md) or v2.x [`outputs.influxdb_v2`](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb_v2/README.md) output plugins. +> See how to [use Telegraf to write data](/influxdb3/version/write-data/use-telegraf/). +{{% /show-in %}} {{< children >}} diff --git a/content/shared/influxdb3-write-guides/http-api/compatibility-apis.md b/content/shared/influxdb3-write-guides/http-api/compatibility-apis.md index 5f7b82102..6a7f0d586 100644 --- a/content/shared/influxdb3-write-guides/http-api/compatibility-apis.md +++ b/content/shared/influxdb3-write-guides/http-api/compatibility-apis.md @@ -5,6 +5,22 @@ The `/api/v2/write` (v2-compatible) and `/write` (v1-compatible) HTTP API endpoints work with InfluxDB [client libraries](/influxdb3/version/reference/client-libraries/), [Telegraf](/telegraf/v1/), and third-party integrations to write points as line protocol data to {{% product-name %}}. +> [!Tip] +> #### Choose the write endpoint for your workload +> +> When creating new write workloads, use the +> [InfluxDB HTTP API `/api/v3/write_lp` endpoint](influxdb3/version/write-data/http-api/v3-write-lp/) +> and [client libraries](/influxdb3/version/write-data/client-libraries/). +> +> When bringing existing v1 write workloads, use the {{% product-name %}} +> HTTP API [`/write` endpoint](/influxdb3/core/api/v3/#operation/PostV1Write). +> +> When bringing existing v2 write workloads, use the {{% product-name %}} +> HTTP API [`/api/v2/write` endpoint]([/influxdb3/version/api/v3/#operation/PostV1Write](/influxdb3/version/api/v3/#operation/PostV2Write)). +> +> **For Telegraf**, use the InfluxDB v1.x [`outputs.influxdb`](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb/README.md) or v2.x [`outputs.influxdb_v2`](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb_v2/README.md) output plugins. +> See how to [use Telegraf to write data](/influxdb3/version/write-data/use-telegraf/). + > [!Note] > #### Compatibility APIs differ from native APIs > diff --git a/content/shared/influxdb3-write-guides/http-api/v3-write-lp.md b/content/shared/influxdb3-write-guides/http-api/v3-write-lp.md index 477b3bb2a..df392f582 100644 --- a/content/shared/influxdb3-write-guides/http-api/v3-write-lp.md +++ b/content/shared/influxdb3-write-guides/http-api/v3-write-lp.md @@ -3,24 +3,84 @@ Use the `/api/v3/write_lp` endpoint to write data to {{% product-name %}}. This endpoint accepts the same [line protocol](/influxdb3/version/reference/line-protocol/) syntax as previous versions of InfluxDB, and supports the following: -##### Query parameters +## Query parameters - `?accept_partial=`: Accept or reject partial writes (default is `true`). - `?no_sync=`: Control when writes are acknowledged: - `no_sync=true`: Acknowledges writes before WAL persistence completes. - `no_sync=false`: Acknowledges writes after WAL persistence completes (default). - `?precision=`: Specify the precision of the timestamp. - By default, {{% product-name %}} uses the timestamp magnitude to auto-detect the precision. + By default, {{% product-name %}} uses the timestamp magnitude to auto-detect the precision (`auto`). To avoid any ambiguity, you can specify the precision of timestamps in your data. - - The {{< product-name >}} `/api/v3/write_lp` API endpoint supports the following timestamp precisions: - - - `ns` (nanoseconds) - - `us` (microseconds) - - `ms` (milliseconds) - - `s` (seconds) -##### Request body + The {{< product-name >}} `/api/v3/write_lp` API endpoint supports the following timestamp precisions: + + - `auto` (automatic detection, default) + - `nanosecond` (nanoseconds) + - `microsecond` (microseconds) + - `millisecond` (milliseconds) + - `second` (seconds) + +> [!Note] +> A bug currently prevents abbreviated precision values (`ns`, `n`, `us`, `u`, `ms`, `s`) from working with the `/api/v3/write_lp` endpoint. Use the full names (`nanosecond`, `microsecond`, `millisecond`, `second`) instead. Abbreviated values will be supported in a future release. + +### Auto precision detection + +When you use `precision=auto` (or omit the parameter), {{% product-name %}} automatically detects the timestamp precision based on the magnitude of the timestamp value: + +- Timestamps < 5e9 โ†’ Second precision (multiplied by 1,000,000,000 to convert to nanoseconds) +- Timestamps < 5e12 โ†’ Millisecond precision (multiplied by 1,000,000) +- Timestamps < 5e15 โ†’ Microsecond precision (multiplied by 1,000) +- Larger timestamps โ†’ Nanosecond precision (no conversion needed) + +### Precision examples + +The following examples show how to write data with different timestamp precisions: + +{{< code-tabs-wrapper >}} +{{% code-tabs %}} +[Auto (default)](#) +[Nanoseconds](#) +[Milliseconds](#) +[Seconds](#) +{{% /code-tabs %}} +{{% code-tab-content %}} +```bash +# Auto precision (default) - timestamp magnitude determines precision +curl "http://{{< influxdb/host >}}/api/v3/write_lp?db=sensors" \ + --header "Authorization: Bearer DATABASE_TOKEN" \ + --data-raw "cpu,host=server1 usage=50.0 1708976567" +``` + +The timestamp `1708976567` is automatically detected as seconds. +{{% /code-tab-content %}} +{{% code-tab-content %}} +```bash +# Explicit nanosecond precision +curl "http://{{< influxdb/host >}}/api/v3/write_lp?db=sensors&precision=nanosecond" \ + --header "Authorization: Bearer DATABASE_TOKEN" \ + --data-raw "cpu,host=server1 usage=50.0 1708976567000000000" +``` +{{% /code-tab-content %}} +{{% code-tab-content %}} +```bash +# Millisecond precision +curl "http://{{< influxdb/host >}}/api/v3/write_lp?db=sensors&precision=millisecond" \ + --header "Authorization: Bearer DATABASE_TOKEN" \ + --data-raw "cpu,host=server1 usage=50.0 1708976567000" +``` +{{% /code-tab-content %}} +{{% code-tab-content %}} +```bash +# Second precision +curl "http://{{< influxdb/host >}}/api/v3/write_lp?db=sensors&precision=second" \ + --header "Authorization: Bearer DATABASE_TOKEN" \ + --data-raw "cpu,host=server1 usage=50.0 1708976567" +``` +{{% /code-tab-content %}} +{{< /code-tabs-wrapper >}} + +## Request body - Line protocol @@ -31,7 +91,7 @@ the {{< influxdb3/home-sample-link >}}, but you can use any HTTP client._ {{% influxdb/custom-timestamps %}} ```bash -curl -v "http://{{< influxdb/host >}}/api/v3/write_lp?db=sensors&precision=s" \ +curl -v "http://{{< influxdb/host >}}/api/v3/write_lp?db=sensors&precision=second" \ --data-raw "home,room=Living\ Room temp=21.1,hum=35.9,co=0i 1735545600 home,room=Kitchen temp=21.0,hum=35.9,co=0i 1735545600 home,room=Living\ Room temp=21.4,hum=35.9,co=0i 1735549200 From 61269f3823988fae2d7e8c7456fdd465062786fb Mon Sep 17 00:00:00 2001 From: Jason Stirnaman Date: Wed, 22 Oct 2025 00:50:02 -0500 Subject: [PATCH 28/49] fix(influxdb3): (#6479) - malformed link - update broken link fragements - link to plugin docs at /telegraf instead of GitHub\ - Remove language fragments from tabs --- .../guides/api-compatibility/v1/_index.md | 10 +++--- .../write-data/csv/telegraf.md | 4 +-- .../use-telegraf/configure/_index.md | 4 +-- .../guides/api-compatibility/v1/_index.md | 34 +++++++++---------- .../write-data/api/v1-http.md | 34 +++++++++---------- .../write-data/csv/telegraf.md | 4 +-- .../use-telegraf/configure/_index.md | 2 +- .../guides/api-compatibility/v1/_index.md | 10 +++--- .../clustered/write-data/csv/telegraf.md | 4 +-- .../use-telegraf/configure/_index.md | 4 +-- .../shared/influxdb3-write-guides/_index.md | 6 ++-- .../influxdb3-write-guides/http-api/_index.md | 6 ++-- .../http-api/compatibility-apis.md | 12 +++---- .../use-telegraf/configure.md | 6 ++-- .../use-telegraf/csv.md | 2 +- .../use-telegraf/dual-write.md | 4 +-- 16 files changed, 73 insertions(+), 73 deletions(-) diff --git a/content/influxdb3/cloud-dedicated/guides/api-compatibility/v1/_index.md b/content/influxdb3/cloud-dedicated/guides/api-compatibility/v1/_index.md index 8861c1bdb..0a8264bca 100644 --- a/content/influxdb3/cloud-dedicated/guides/api-compatibility/v1/_index.md +++ b/content/influxdb3/cloud-dedicated/guides/api-compatibility/v1/_index.md @@ -78,7 +78,7 @@ username and password to authenticate database reads and writes by passing a When authenticating requests to the v1 API `/write` and `/query` endpoints, {{% product-name %}} checks that the `password` (`p`) value is an authorized [database token](/influxdb3/cloud-dedicated/admin/tokens/#database-tokens). {{% product-name %}} ignores the `username` (`u`) parameter in the request. -Use one of the following authentication schemes with clients that support Basic authentication or query parameters (that don't support [token authentication](#authenticate-with-a-token)): +Use one of the following authentication schemes with clients that support Basic authentication or query parameters (that don't support [token authentication](#authenticate-with-a-token-scheme)): - [Basic authentication](#basic-authentication) - [Query string authentication](#query-string-authentication) @@ -260,7 +260,7 @@ Write data with your existing workloads that already use the InfluxDB v1 or v1.x {{% api-endpoint endpoint="https://{{< influxdb/host >}}/write" method="post" %}} -- [`/api/v2/write` parameters](#v1-api-write-parameters) +- [`/write` parameters](#v1-api-write-parameters) - [Tools for writing to the v1 API](#tools-for-writing-to-the-v1-api) #### v1 API /write parameters @@ -302,7 +302,7 @@ The following tools work with the {{% product-name %}} `/write` endpoint: #### Telegraf If you have existing v1 workloads that use Telegraf, -you can use the [InfluxDB v1.x `influxdb` Telegraf output plugin](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb/README.md) to write data. +you can use the [InfluxDB v1.x `influxdb` Telegraf output plugin](/telegraf/v1/output-plugins/influxdb/) to write data. > [!Note] > See how to [use Telegraf and the v2 API](/influxdb3/cloud-dedicated/write-data/use-telegraf/) for new workloads that don't already use the v1 API. @@ -344,7 +344,7 @@ Replace the following: `influx_uint_support`: supported in InfluxDB 3. -For more plugin options, see [`influxdb`](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb/README.md) on GitHub. +For more plugin options, see [`influxdb`](/telegraf/v1/output-plugins/influxdb/) on GitHub. #### Interactive clients @@ -355,7 +355,7 @@ Include the following in your request: - A `db` query string parameter with the name of the database to write to. - A request body that contains a string of data in [line protocol](/influxdb3/cloud-dedicated/reference/syntax/line-protocol/) syntax. - A [database token](/influxdb3/cloud-dedicated/admin/tokens/#database-tokens) in - one of the following authentication schemes: [Basic authentication](#basic-authentication), [query string authentication](#query-string-authentication), or [token authentication](#authenticate-with-a-token). + one of the following authentication schemes: [Basic authentication](#basic-authentication), [query string authentication](#query-string-authentication), or [token authentication](#authenticate-with-a-token-scheme). - Optional [parameters](#v1-api-write-parameters). The following example shows how to use the **cURL** command line tool and the {{% product-name %}} v1 API to write line protocol data to a database: diff --git a/content/influxdb3/cloud-dedicated/write-data/csv/telegraf.md b/content/influxdb3/cloud-dedicated/write-data/csv/telegraf.md index 729840361..509c2daea 100644 --- a/content/influxdb3/cloud-dedicated/write-data/csv/telegraf.md +++ b/content/influxdb3/cloud-dedicated/write-data/csv/telegraf.md @@ -69,7 +69,7 @@ metrics from different sources and writes them to specified destinations. ## Configure Telegraf to write to InfluxDB To send data to {{< product-name >}}, enable the -[`influxdb_v2` output plugin](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb_v2/README.md) +[`influxdb_v2` output plugin](/telegraf/v1/output-plugins/influxdb_v2/) in the `telegraf.conf`. {{% code-placeholders "DATABASE_NAME" %}} @@ -145,4 +145,4 @@ The preceding examples describe Telegraf configurations necessary for writing to The output plugin provides several other options for configuring the Telegraf client: - `influx_uint_support`: supported by the InfluxDB 3 storage engine. -- See [`influxdb_v2` plugin options](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb_v2/README.md) on GitHub. +- See [`influxdb_v2` plugin options](/telegraf/v1/output-plugins/influxdb_v2/) on GitHub. diff --git a/content/influxdb3/cloud-dedicated/write-data/use-telegraf/configure/_index.md b/content/influxdb3/cloud-dedicated/write-data/use-telegraf/configure/_index.md index 3f7181e7d..a9e4b7b59 100644 --- a/content/influxdb3/cloud-dedicated/write-data/use-telegraf/configure/_index.md +++ b/content/influxdb3/cloud-dedicated/write-data/use-telegraf/configure/_index.md @@ -67,7 +67,7 @@ To add any of the available [Telegraf plugins](/telegraf/v1/plugins/), follow th ### Enable and configure the InfluxDB v2 output plugin To send data to {{< product-name >}}, enable the -[`influxdb_v2` output plugin](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb_v2/README.md) +[`influxdb_v2` output plugin](/telegraf/v1/output-plugins/influxdb_v2/) in the `telegraf.conf`. {{% code-placeholders "DATABASE_NAME" %}} @@ -124,7 +124,7 @@ The name of the {{% product-name %}} database to write data to. `influx_uint_support`: supported in InfluxDB 3. -For more plugin options, see [`influxdb`](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb/README.md) on GitHub. +For more plugin options, see [`influxdb`](/telegraf/v1/output-plugins/influxdb/) on GitHub. ## Start Telegraf diff --git a/content/influxdb3/cloud-serverless/guides/api-compatibility/v1/_index.md b/content/influxdb3/cloud-serverless/guides/api-compatibility/v1/_index.md index 88d24f7a8..be12caec2 100644 --- a/content/influxdb3/cloud-serverless/guides/api-compatibility/v1/_index.md +++ b/content/influxdb3/cloud-serverless/guides/api-compatibility/v1/_index.md @@ -64,7 +64,7 @@ username and password to authenticate bucket reads and writes by passing an [API When authenticating requests to the v1 API `/write` and `/query` endpoints, {{% product-name %}} checks that the `password` (`p`) value is an authorized [API token](/influxdb3/cloud-serverless/admin/tokens/). {{% product-name %}} ignores the `username` (`u`) parameter in the request. -Use one of the following authentication schemes with clients that support Basic authentication or query parameters (that don't support [token authentication](#authenticate-with-a-token)): +Use one of the following authentication schemes with clients that support Basic authentication or query parameters (that don't support [token authentication](#authenticate-with-a-token-scheme)): - [Basic authentication](#basic-authentication) - [Query string authentication](#query-string-authentication) @@ -144,8 +144,8 @@ curl --get "https://{{< influxdb/host >}}/query" \ Replace the following: -- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: the [database](#map-databases-and-retention-policies-to-buckets) -- {{% code-placeholder-key %}}`RETENTION_POLICY`{{% /code-placeholder-key %}}: the [retention policy](#map-databases-and-retention-policies-to-buckets) +- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: the [database](#map-v1-databases-and-retention-policies-to-buckets) +- {{% code-placeholder-key %}}`RETENTION_POLICY`{{% /code-placeholder-key %}}: the [retention policy](#map-v1-databases-and-retention-policies-to-buckets) - {{% code-placeholder-key %}}`API_TOKEN`{{% /code-placeholder-key %}}: a [token](/influxdb3/cloud-serverless/admin/tokens/) with sufficient permissions to the mapped bucket ### Authenticate with a token scheme @@ -187,8 +187,8 @@ influx bucket delete -n DATABASE_NAME/RETENTION_POLICY_NAME Replace the following: -- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: the [database](#map-databases-and-retention-policies-to-buckets) -- {{% code-placeholder-key %}}`RETENTION_POLICY`{{% /code-placeholder-key %}}: the [retention policy](#map-databases-and-retention-policies-to-buckets) +- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: the [database](#map-v1-databases-and-retention-policies-to-buckets) +- {{% code-placeholder-key %}}`RETENTION_POLICY`{{% /code-placeholder-key %}}: the [retention policy](#map-v1-databases-and-retention-policies-to-buckets) - {{% code-placeholder-key %}}`API_TOKEN`{{% /code-placeholder-key %}}: a [token](/influxdb3/cloud-serverless/admin/tokens/) with sufficient permissions to the mapped bucket ## Responses @@ -228,7 +228,7 @@ Response body messages may differ across {{% product-name %}} v1 API, v2 API, In ``` The `?precision=` parameter contains an unknown value. - Provide a [timestamp precision](#timestamp-precision). + Provide a [timestamp precision]/influxdb3/cloud-serverless/reference/glossary/#timestamp-precision). ## Map v1 databases and retention policies to buckets @@ -336,7 +336,7 @@ Include the following: {{< req type="key" >}} -- {{< req "\*" >}} a [token](/influxdb3/cloud-serverless/admin/tokens/) that has the [necessary permissions](#authorization). +- {{< req "\*" >}} a [token](/influxdb3/cloud-serverless/admin/tokens/) that has the necessary permissions to the mapped bucket. - {{< req "\*" >}} the **database name** to map - {{< req "\*" >}} the **retention policy** name to map - {{< req "\*" >}} the [bucket ID](/influxdb3/cloud-serverless/admin/buckets/view-buckets/#view-buckets-in-the-influxdb-ui) to map to @@ -376,7 +376,7 @@ influx v1 dbrp delete --id $test_dbrp Replace the following: -- {{% code-placeholder-key %}}`API_TOKEN`{{% /code-placeholder-key %}}: a [token](/influxdb3/cloud-serverless/admin/tokens/) that has the [necessary permissions](#authorization) +- {{% code-placeholder-key %}}`API_TOKEN`{{% /code-placeholder-key %}}: a [token](/influxdb3/cloud-serverless/admin/tokens/) that has the necessary permissions to the mapped bucket - {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: the database name to map to the bucket - {{% code-placeholder-key %}}`RETENTION_POLICY_NAME`{{% /code-placeholder-key %}}: the retention policy name to map to the bucket - {{% code-placeholder-key %}}`BUCKET_ID`{{% /code-placeholder-key %}}: the [bucket ID](/influxdb3/cloud-serverless/admin/buckets/view-buckets/) to map to @@ -395,7 +395,7 @@ Include the following: - **Request method:** `POST` - **Headers:** - - **Authorization:** `Token` scheme with a [token](/influxdb3/cloud-serverless/admin/tokens/) that has the [necessary permissions](#authorization) + - **Authorization:** `Token` scheme with a [token](/influxdb3/cloud-serverless/admin/tokens/) that has the necessary permissions to the mapped bucket - **Content-type:** `application/json` - **Request body:** JSON object with the following fields: @@ -485,7 +485,7 @@ Include the following: - **Request method:** `GET` - **Headers:** - - **Authorization:** `Token` scheme with your [token](/influxdb3/cloud-serverless/admin/tokens/) that has the [necessary permissions](#authorization) + - **Authorization:** `Token` scheme with your [token](/influxdb3/cloud-serverless/admin/tokens/) that has the necessary permissions to the mapped bucket - **Query parameters:** {{< req type="key" >}} - {{< req "\*" >}} **orgID:** your [organization ID](/influxdb3/cloud-serverless/admin/organizations/view-orgs/#view-your-organization-id) @@ -545,7 +545,7 @@ Use the [`influx v1 dbrp update` command](/influxdb3/cloud-serverless/reference/ to update a DBRP mapping. Include the following: -- a [token](/influxdb3/cloud-serverless/admin/tokens/) that has the [necessary permissions](#authorization) +- a [token](/influxdb3/cloud-serverless/admin/tokens/) that has the necessary permissions to the mapped bucket - **DBRP mapping ID** to update - Optional: **Retention policy** name to update to - Optional: **Default flag** to set the retention policy as the [default DBRP mapping](#default-dbrp) for the database name. @@ -577,7 +577,7 @@ influx v1 dbrp update \ Replace the following: -- {{% code-placeholder-key %}}`API_TOKEN`{{% /code-placeholder-key %}}: a [token](/influxdb3/cloud-serverless/admin/tokens/) that has the [necessary permissions](#authorization) +- {{% code-placeholder-key %}}`API_TOKEN`{{% /code-placeholder-key %}}: a [token](/influxdb3/cloud-serverless/admin/tokens/) that has the necessary permissions to the mapped bucket - {{% code-placeholder-key %}}`DBRP_ID`{{% /code-placeholder-key %}}: the DBRP ID to update - {{% code-placeholder-key %}}`RETENTION_POLICY_NAME`{{% /code-placeholder-key %}}: a retention policy name to map to the bucket @@ -596,7 +596,7 @@ Include the following: - **Request method:** `PATCH` - **Headers:** - - {{< req "\*" >}} the **Authorization:** `Token` scheme with a [token](/influxdb3/cloud-serverless/admin/tokens/) that has the [necessary permissions](#authorization) + - {{< req "\*" >}} the **Authorization:** `Token` scheme with a [token](/influxdb3/cloud-serverless/admin/tokens/) that has the necessary permissions to the mapped bucket - **Path parameters:** - {{< req "\*" >}} **id:** the DBRP mapping ID to update - **Query parameters:** @@ -622,7 +622,7 @@ curl --request PATCH \ Replace the following: -- {{% code-placeholder-key %}}`API_TOKEN`{{% /code-placeholder-key %}}: a [token](/influxdb3/cloud-serverless/admin/tokens/) that has the [necessary permissions](#authorization) +- {{% code-placeholder-key %}}`API_TOKEN`{{% /code-placeholder-key %}}: a [token](/influxdb3/cloud-serverless/admin/tokens/) that has the necessary permissions to the mapped bucket - {{% code-placeholder-key %}}`DBRP_ID`{{% /code-placeholder-key %}}: the DBRP ID to update - {{% code-placeholder-key %}}`RETENTION_POLICY_NAME`{{% /code-placeholder-key %}}: a retention policy name to map to the bucket @@ -648,7 +648,7 @@ Include the following: {{< req type="key" >}} -- {{< req "\*" >}} a [token](/influxdb3/cloud-serverless/admin/tokens/) that has the [necessary permissions](#authorization) +- {{< req "\*" >}} a [token](/influxdb3/cloud-serverless/admin/tokens/) that has the necessary permissions to the mapped bucket - {{< req "\*" >}} **DBRP mapping ID** to delete @@ -689,7 +689,7 @@ Include the following: - **Request method:** `DELETE` - **Headers:** - - {{< req "\*" >}} the **Authorization:** `Token` scheme with a [token](/influxdb3/cloud-serverless/admin/tokens/) that has the [necessary permissions](#authorization) + - {{< req "\*" >}} the **Authorization:** `Token` scheme with a [token](/influxdb3/cloud-serverless/admin/tokens/) that has the necessary permissions to the mapped bucket - **Path parameters:** - {{< req "\*" >}} **id:** DBRP mapping ID to update - **Query parameters:** @@ -708,7 +708,7 @@ curl --request DELETE \ Replace the following: -- {{% code-placeholder-key %}}`API_TOKEN`{{% /code-placeholder-key %}}: a [token](/influxdb3/cloud-serverless/admin/tokens/) that has the [necessary permissions](#authorization) +- {{% code-placeholder-key %}}`API_TOKEN`{{% /code-placeholder-key %}}: a [token](/influxdb3/cloud-serverless/admin/tokens/) that has the necessary permissions to the mapped bucket - {{% code-placeholder-key %}}`DBRP_ID`{{% /code-placeholder-key %}}: the DBRP ID to update - {{% code-placeholder-key %}}`ORG_ID`{{% /code-placeholder-key %}}: the [organization ID](/influxdb3/cloud-serverless/admin/organizations/view-orgs/#view-your-organization-id) diff --git a/content/influxdb3/cloud-serverless/write-data/api/v1-http.md b/content/influxdb3/cloud-serverless/write-data/api/v1-http.md index 0f0088dd9..fd3393215 100644 --- a/content/influxdb3/cloud-serverless/write-data/api/v1-http.md +++ b/content/influxdb3/cloud-serverless/write-data/api/v1-http.md @@ -26,18 +26,18 @@ list_code_example: | Use the InfluxDB v1 HTTP API `/write` endpoint and InfluxQL to write data stored in {{< product-name >}}. The `/write` endpoint provides compatibility for InfluxDB 1.x workloads that you bring to InfluxDB 3. -_The v1 write and query APIs require [mapping databases and retention policies to buckets](#map-databases-and-retention-policies-to-buckets)._ +_The v1 write and query APIs require [mapping databases and retention policies to buckets](#map-v1-databases-and-retention-policies-to-buckets)._ -- [Map databases and retention policies to buckets](#map-databases-and-retention-policies-to-buckets) +- [Map v1 databases and retention policies to buckets](#map-v1-databases-and-retention-policies-to-buckets) - [Autogenerate a bucket and DBRP mapping](#autogenerate-a-bucket-and-dbrp-mapping) - [Create a bucket and DBRP mapping](#create-a-bucket-and-dbrp-mapping) - [Write to the v1 HTTP `/write` endpoint](#write-to-the-v1-http-write-endpoint) - - [Parameters](#parameters) + - [Parameters](#v1-api-write-parameters) - [Data](#data) - [Authorization](#authorization) - [Tools for writing to the v1 API](#tools-for-writing-to-the-v1-api) -## Map databases and retention policies to buckets +## Map v1 databases and retention policies to buckets The v1 write and query APIs require mapping databases and retention policies to buckets. @@ -53,7 +53,7 @@ To let InfluxDB autogenerate a bucket and an associated DBRP mapping, pass the f If no bucket exists with the name `DATABASE_NAME/RETENTION_POLICY_NAME`, InfluxDB creates a bucket and a DBRP before writing the data to the bucket. -To learn more about DBRP mapping, see the [v1 API compatibility guide](/influxdb3/cloud-serverless/guides/api-compatibility/v1/#map-v1-databases-and-retention-policies-to-buckets). +To learn more about DBRP mapping, see the [v1 API compatibility guide](#map-v1-databases-and-retention-policies-to-buckets). ### Create a bucket and DBRP mapping @@ -69,19 +69,19 @@ If the `db=DATABASE_NAME` and `rp=RETENTION_POLICY` parameters in your `/write` {{% api-endpoint endpoint="https://{{< influxdb/host >}}/write" method="post" %}} -- [`/api/v2/write` parameters](#v1-api-write-parameters) +- [`/write` parameters](#v1-api-write-parameters) - [Tools for writing to the v1 API](#tools-for-writing-to-the-v1-api) -### Parameters +### v1 API /write parameters For {{% product-name %}} v1 API `/write` requests, set parameters as listed in the following table: Parameter | Allowed in | Ignored | Value -----------------------|--------------|--------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- `consistency` | Query string | Ignored | N/A -`db` {{% req " \*" %}} | Query string | Honored | Database (see how to [map databases and retention policies to buckets](#map-databases-and-retention-policies-to-buckets)) +`db` {{% req " \*" %}} | Query string | Honored | Database (see how to [map databases and retention policies to buckets](#map-v1-databases-and-retention-policies-to-buckets)) `precision` | Query string | Honored | [Timestamp precision](#timestamp-precision) -`rp` | Query string | Honored | Retention policy (see how to [map databases and retention policies to buckets](#map-databases-and-retention-policies-to-buckets)) +`rp` | Query string | Honored | Retention policy (see how to [map databases and retention policies to buckets](#map-v1-databases-and-retention-policies-to-buckets)) [`Authorization` header or `u` and `p`](#authorization) | | | [Token](#authorization) {{% caption %}}{{% req " \*" %}} = {{% req "Required" %}}{{% /caption %}} @@ -121,7 +121,7 @@ The following tools work with the {{% product-name %}} `/write` endpoint: #### Telegraf If you have existing v1 workloads that use Telegraf, -you can use the [InfluxDB v1.x `influxdb` Telegraf output plugin](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb/README.md) to write data. +you can use the [InfluxDB v1.x `influxdb` Telegraf output plugin](/telegraf/v1/output-plugins/influxdb/) to write data. > [!Note] > See how to [use Telegraf and the v2 API](/influxdb3/cloud-serverless/write-data/use-telegraf/) for new workloads that don't already use the v1 API. @@ -154,15 +154,15 @@ To configure the v1.x output plugin for writing to {{% product-name %}}, add the Replace the following: -- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: the [database](#map-databases-and-retention-policies-to-buckets) -- {{% code-placeholder-key %}}`RETENTION_POLICY`{{% /code-placeholder-key %}}: the [retention policy](#map-databases-and-retention-policies-to-buckets) +- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: the [database](#map-v1-databases-and-retention-policies-to-buckets) +- {{% code-placeholder-key %}}`RETENTION_POLICY`{{% /code-placeholder-key %}}: the [retention policy](#map-v1-databases-and-retention-policies-to-buckets) - {{% code-placeholder-key %}}`API_TOKEN`{{% /code-placeholder-key %}}: a [token](/influxdb3/cloud-serverless/admin/tokens/) with sufficient permissions to the mapped bucket ##### Other Telegraf configuration options `influx_uint_support`: supported in InfluxDB 3. -For more plugin options, see [`influxdb`](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb/README.md) on GitHub. +For more plugin options, see [`influxdb`](/telegraf/v1/output-plugins/influxdb/) on GitHub. #### Interactive clients @@ -212,8 +212,8 @@ curl -i "https://{{< influxdb/host >}}/write?db=DATABASE_NAME&rp=RETENTION_POLIC Replace the following: -- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: the [database](#map-databases-and-retention-policies-to-buckets) -- {{% code-placeholder-key %}}`RETENTION_POLICY`{{% /code-placeholder-key %}}: the [retention policy](#map-databases-and-retention-policies-to-buckets) +- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: the [database](#map-v1-databases-and-retention-policies-to-buckets) +- {{% code-placeholder-key %}}`RETENTION_POLICY`{{% /code-placeholder-key %}}: the [retention policy](#map-v1-databases-and-retention-policies-to-buckets) - {{% code-placeholder-key %}}`API_TOKEN`{{% /code-placeholder-key %}}: a [token](/influxdb3/cloud-serverless/admin/tokens/) with sufficient permissions to the mapped bucket #### v1 influx CLI (not supported) @@ -287,6 +287,6 @@ client = InfluxDBClient( Replace the following: -- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: the [database](#map-databases-and-retention-policies-to-buckets) -- {{% code-placeholder-key %}}`RETENTION_POLICY`{{% /code-placeholder-key %}}: the [retention policy](#map-databases-and-retention-policies-to-buckets) +- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: the [database](#map-v1-databases-and-retention-policies-to-buckets) +- {{% code-placeholder-key %}}`RETENTION_POLICY`{{% /code-placeholder-key %}}: the [retention policy](#map-v1-databases-and-retention-policies-to-buckets) - {{% code-placeholder-key %}}`API_TOKEN`{{% /code-placeholder-key %}}: a [token](/influxdb3/cloud-serverless/admin/tokens/) with sufficient permissions to the specified bucket diff --git a/content/influxdb3/cloud-serverless/write-data/csv/telegraf.md b/content/influxdb3/cloud-serverless/write-data/csv/telegraf.md index 4081bd21b..c2ed95914 100644 --- a/content/influxdb3/cloud-serverless/write-data/csv/telegraf.md +++ b/content/influxdb3/cloud-serverless/write-data/csv/telegraf.md @@ -69,7 +69,7 @@ metrics from different sources and writes them to specified destinations. ## Configure Telegraf to write to InfluxDB To send data to {{< product-name >}}, enable the -[`influxdb_v2` output plugin](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb_v2/README.md) +[`influxdb_v2` output plugin](/telegraf/v1/output-plugins/influxdb_v2/) in the `telegraf.conf`. {{% code-placeholders "BUCKET_NAME" %}} @@ -145,4 +145,4 @@ The preceding examples describe Telegraf configurations necessary for writing to The output plugin provides several other options for configuring the Telegraf client: - `influx_uint_support`: supported by the InfluxDB 3 storage engine. -- See [`influxdb_v2` plugin options](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb_v2/README.md) on GitHub. \ No newline at end of file +- See [`influxdb_v2` plugin options](/telegraf/v1/output-plugins/influxdb_v2/) on GitHub. \ No newline at end of file diff --git a/content/influxdb3/cloud-serverless/write-data/use-telegraf/configure/_index.md b/content/influxdb3/cloud-serverless/write-data/use-telegraf/configure/_index.md index 2e45a57e0..927925883 100644 --- a/content/influxdb3/cloud-serverless/write-data/use-telegraf/configure/_index.md +++ b/content/influxdb3/cloud-serverless/write-data/use-telegraf/configure/_index.md @@ -66,7 +66,7 @@ To add any of the available [Telegraf plugins](/telegraf/v1/plugins/), follow th ### Enable and configure the InfluxDB v2 output plugin To send data to {{< product-name >}}, enable the -[`influxdb_v2` output plugin](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb_v2/README.md) +[`influxdb_v2` output plugin](/telegraf/v1/output-plugins/influxdb_v2/) in the `telegraf.conf`. {{% code-placeholders "BUCKET_NAME" %}} diff --git a/content/influxdb3/clustered/guides/api-compatibility/v1/_index.md b/content/influxdb3/clustered/guides/api-compatibility/v1/_index.md index 924dc2845..62c2ba811 100644 --- a/content/influxdb3/clustered/guides/api-compatibility/v1/_index.md +++ b/content/influxdb3/clustered/guides/api-compatibility/v1/_index.md @@ -76,7 +76,7 @@ username and password to authenticate database reads and writes by passing a [da When authenticating requests to the v1 API `/write` and `/query` endpoints, {{% product-name %}} checks that the `password` (`p`) value is an authorized [database token](/influxdb3/clustered/admin/tokens/#database-tokens). {{% product-name %}} ignores the `username` (`u`) parameter in the request. -Use one of the following authentication schemes with clients that support Basic authentication or query parameters (that don't support [token authentication](#authenticate-with-a-token)): +Use one of the following authentication schemes with clients that support Basic authentication or query parameters (that don't support [token authentication](#authenticate-with-a-token-scheme)): - [Basic authentication](#basic-authentication) - [Query string authentication](#query-string-authentication) @@ -246,7 +246,7 @@ Write data with your existing workloads that already use the InfluxDB v1 or v1.x {{% api-endpoint endpoint="https://{{< influxdb/host >}}/write" method="post" %}} -- [`/api/v2/write` parameters](#v1-api-write-parameters) +- [`/write` parameters](#v1-api-write-parameters) - [Tools for writing to the v1 API](#tools-for-writing-to-the-v1-api) #### v1 API /write parameters @@ -288,7 +288,7 @@ The following tools work with the {{% product-name %}} `/write` endpoint: #### Telegraf If you have existing v1 workloads that use Telegraf, -you can use the [InfluxDB v1.x `influxdb` Telegraf output plugin](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb/README.md) to write data. +you can use the [InfluxDB v1.x `influxdb` Telegraf output plugin](/telegraf/v1/output-plugins/influxdb/) to write data. > [!Note] > See how to [use Telegraf and the v2 API](/influxdb3/clustered/write-data/use-telegraf/) for new workloads that don't already use the v1 API. @@ -328,7 +328,7 @@ Replace the following: `influx_uint_support`: supported in InfluxDB 3. -For more plugin options, see [`influxdb`](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb/README.md) on GitHub. +For more plugin options, see [`influxdb`](/telegraf/v1/output-plugins/influxdb/) on GitHub. #### Interactive clients @@ -338,7 +338,7 @@ Include the following in your request: - A `db` query string parameter with the name of the database to write to. - A request body that contains a string of data in [line protocol](/influxdb3/clustered/reference/syntax/line-protocol/) syntax. -- A [database token](/influxdb3/clustered/admin/tokens/#database-tokens) in one of the following authentication schemes: [Basic authentication](#basic-authentication), [query string authentication](#query-string-authentication), or [token authentication](#authenticate-with-a-token). +- A [database token](/influxdb3/clustered/admin/tokens/#database-tokens) in one of the following authentication schemes: [Basic authentication](#basic-authentication), [query string authentication](#query-string-authentication), or [token authentication](#authenticate-with-a-token-scheme). - Optional [parameters](#v1-api-write-parameters). The following example shows how to use the **cURL** command line tool and the {{% product-name %}} v1 API to write line protocol data to a database: diff --git a/content/influxdb3/clustered/write-data/csv/telegraf.md b/content/influxdb3/clustered/write-data/csv/telegraf.md index 5977d929e..ced0fb91e 100644 --- a/content/influxdb3/clustered/write-data/csv/telegraf.md +++ b/content/influxdb3/clustered/write-data/csv/telegraf.md @@ -69,7 +69,7 @@ metrics from different sources and writes them to specified destinations. ## Configure Telegraf to write to InfluxDB To send data to {{< product-name >}}, enable the -[`influxdb_v2` output plugin](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb_v2/README.md) +[`influxdb_v2` output plugin](/telegraf/v1/output-plugins/influxdb_v2/) in the `telegraf.conf`. {{% code-placeholders "DATABASE_NAME" %}} @@ -145,4 +145,4 @@ The preceding examples describe Telegraf configurations necessary for writing to The output plugin provides several other options for configuring the Telegraf client: - `influx_uint_support`: supported by the InfluxDB 3 storage engine. -- See [`influxdb_v2` plugin options](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb_v2/README.md) on GitHub. +- See [`influxdb_v2` plugin options](/telegraf/v1/output-plugins/influxdb_v2/) on GitHub. diff --git a/content/influxdb3/clustered/write-data/use-telegraf/configure/_index.md b/content/influxdb3/clustered/write-data/use-telegraf/configure/_index.md index f6d3c681e..534e2aa25 100644 --- a/content/influxdb3/clustered/write-data/use-telegraf/configure/_index.md +++ b/content/influxdb3/clustered/write-data/use-telegraf/configure/_index.md @@ -67,7 +67,7 @@ To add any of the available [Telegraf plugins](/telegraf/v1/plugins/), follow th ### Enable and configure the InfluxDB v2 output plugin To send data to {{< product-name >}}, enable the -[`influxdb_v2` output plugin](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb_v2/README.md) +[`influxdb_v2` output plugin](/telegraf/v1/output-plugins/influxdb_v2/) in the `telegraf.conf`. {{% code-placeholders "DATABASE_NAME" %}} @@ -121,7 +121,7 @@ The name of the {{% product-name %}} database to write data to. `influx_uint_support`: supported in InfluxDB 3. -For more plugin options, see [`influxdb`](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb/README.md) on GitHub. +For more plugin options, see [`influxdb`](/telegraf/v1/output-plugins/influxdb/) on GitHub. ## Start Telegraf diff --git a/content/shared/influxdb3-write-guides/_index.md b/content/shared/influxdb3-write-guides/_index.md index 5882872c6..87dcd4fe3 100644 --- a/content/shared/influxdb3-write-guides/_index.md +++ b/content/shared/influxdb3-write-guides/_index.md @@ -23,16 +23,16 @@ is the text-based format used to write data to InfluxDB. > #### Choose the write endpoint for your workload > > When creating new write workloads, use the -> [InfluxDB HTTP API `/api/v3/write_lp` endpoint](influxdb3/version/write-data/http-api/v3-write-lp/) +> [InfluxDB HTTP API `/api/v3/write_lp` endpoint](/influxdb3/version/write-data/http-api/v3-write-lp/) > and [client libraries](/influxdb3/version/write-data/client-libraries/). > > When bringing existing _v1_ write workloads, use the {{% product-name %}} > HTTP API [`/write` endpoint](/influxdb3/core/api/v3/#operation/PostV1Write). > > When bringing existing _v2_ write workloads, use the {{% product-name %}} -> HTTP API [`/api/v2/write` endpoint]([/influxdb3/version/api/v3/#operation/PostV1Write](/influxdb3/version/api/v3/#operation/PostV2Write)). +> HTTP API [`/api/v2/write` endpoint](/influxdb3/version/api/v3/#operation/PostV2Write). > -> **For Telegraf**, use the InfluxDB v1.x [`outputs.influxdb`](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb/README.md) or v2.x [`outputs.influxdb_v2`](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb_v2/README.md) output plugins. +> **For Telegraf**, use the InfluxDB v1.x [`outputs.influxdb`](/telegraf/v1/output-plugins/influxdb/) or v2.x [`outputs.influxdb_v2`](/telegraf/v1/output-plugins/influxdb_v2/) output plugins. > See how to [use Telegraf to write data](/influxdb3/version/write-data/use-telegraf/). ## Timestamp precision across write APIs diff --git a/content/shared/influxdb3-write-guides/http-api/_index.md b/content/shared/influxdb3-write-guides/http-api/_index.md index 044a90e7e..454185b6b 100644 --- a/content/shared/influxdb3-write-guides/http-api/_index.md +++ b/content/shared/influxdb3-write-guides/http-api/_index.md @@ -6,16 +6,16 @@ Different APIs are available depending on your integration method. > #### Choose the write endpoint for your workload > > When creating new write workloads, use the -> [InfluxDB HTTP API `/api/v3/write_lp` endpoint](influxdb3/version/write-data/http-api/v3-write-lp/) +> [InfluxDB HTTP API `/api/v3/write_lp` endpoint](/influxdb3/version/write-data/http-api/v3-write-lp/) > and [client libraries](/influxdb3/version/write-data/client-libraries/). > > When bringing existing _v1_ write workloads, use the {{% product-name %}} > HTTP API [`/write` endpoint](/influxdb3/core/api/v3/#operation/PostV1Write). > > When bringing existing _v2_ write workloads, use the {{% product-name %}} -> HTTP API [`/api/v2/write` endpoint]([/influxdb3/version/api/v3/#operation/PostV1Write](/influxdb3/version/api/v3/#operation/PostV2Write)). +> HTTP API [`/api/v2/write` endpoint](/influxdb3/version/api/v3/#operation/PostV2Write). > -> **For Telegraf**, use the InfluxDB v1.x [`outputs.influxdb`](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb/README.md) or v2.x [`outputs.influxdb_v2`](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb_v2/README.md) output plugins. +> **For Telegraf**, use the InfluxDB v1.x [`outputs.influxdb`](/telegraf/v1/output-plugins/influxdb/) or v2.x [`outputs.influxdb_v2`](/telegraf/v1/output-plugins/influxdb_v2/) output plugins. > See how to [use Telegraf to write data](/influxdb3/version/write-data/use-telegraf/). {{% /show-in %}} diff --git a/content/shared/influxdb3-write-guides/http-api/compatibility-apis.md b/content/shared/influxdb3-write-guides/http-api/compatibility-apis.md index 6a7f0d586..dbd292032 100644 --- a/content/shared/influxdb3-write-guides/http-api/compatibility-apis.md +++ b/content/shared/influxdb3-write-guides/http-api/compatibility-apis.md @@ -9,16 +9,16 @@ to write points as line protocol data to {{% product-name %}}. > #### Choose the write endpoint for your workload > > When creating new write workloads, use the -> [InfluxDB HTTP API `/api/v3/write_lp` endpoint](influxdb3/version/write-data/http-api/v3-write-lp/) +> [InfluxDB HTTP API `/api/v3/write_lp` endpoint](/influxdb3/version/write-data/http-api/v3-write-lp/) > and [client libraries](/influxdb3/version/write-data/client-libraries/). > > When bringing existing v1 write workloads, use the {{% product-name %}} > HTTP API [`/write` endpoint](/influxdb3/core/api/v3/#operation/PostV1Write). > > When bringing existing v2 write workloads, use the {{% product-name %}} -> HTTP API [`/api/v2/write` endpoint]([/influxdb3/version/api/v3/#operation/PostV1Write](/influxdb3/version/api/v3/#operation/PostV2Write)). +> HTTP API [`/api/v2/write` endpoint](/influxdb3/version/api/v3/#operation/PostV2Write). > -> **For Telegraf**, use the InfluxDB v1.x [`outputs.influxdb`](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb/README.md) or v2.x [`outputs.influxdb_v2`](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb_v2/README.md) output plugins. +> **For Telegraf**, use the InfluxDB v1.x [`outputs.influxdb`](/telegraf/v1/output-plugins/influxdb/) or v2.x [`outputs.influxdb_v2`](/telegraf/v1/output-plugins/influxdb_v2/) output plugins. > See how to [use Telegraf to write data](/influxdb3/version/write-data/use-telegraf/). > [!Note] @@ -267,8 +267,8 @@ v1 client libraries send data in [line protocol](/influxdb3/version/reference/sy {{< tabs-wrapper >}} {{% tabs %}} -[Node.js](#nodejs) -[Python](#python) +[Node.js](#) +[Python](#) {{% /tabs %}} {{% tab-content %}} @@ -327,7 +327,7 @@ For more information about using v2 client libraries, see [v2 client libraries]( ## Telegraf configuration If you have existing v1 workloads that use Telegraf, -you can use the [InfluxDB v1.x `influxdb` Telegraf output plugin](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb/README.md) to write data. +you can use the [InfluxDB v1.x `influxdb` Telegraf output plugin](/telegraf/v1/output-plugins/influxdb/) to write data. The following table shows `outputs.influxdb` plugin parameters and values for writing to the {{< product-name >}} v1 API: diff --git a/content/shared/influxdb3-write-guides/use-telegraf/configure.md b/content/shared/influxdb3-write-guides/use-telegraf/configure.md index 0e04adaac..afaafa1e3 100644 --- a/content/shared/influxdb3-write-guides/use-telegraf/configure.md +++ b/content/shared/influxdb3-write-guides/use-telegraf/configure.md @@ -1,5 +1,5 @@ -Use the Telegraf [`influxdb_v2` output plugin](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb_v2/README.md) +Use the Telegraf [`influxdb_v2` output plugin](/telegraf/v1/output-plugins/influxdb_v2/) to collect and write metrics to {{< product-name >}}. This plugin uses the InfluxDB v2 HTTP API write endpoint available with {{% product-name %}}. @@ -47,7 +47,7 @@ the steps below. ### Enable and configure the InfluxDB v2 output plugin To send data to {{< product-name >}}, enable the -[`influxdb_v2` output plugin](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb_v2/README.md) +[`influxdb_v2` output plugin](/telegraf/v1/output-plugins/influxdb_v2/) in the `telegraf.conf`. {{% code-placeholders "AUTH_TOKEN|DATABASE_NAME" %}} @@ -113,7 +113,7 @@ The name of the {{% product-name %}} database to write data to. ### Other Telegraf configuration options For more plugin configuration options, see the -[`influxdb_v2` output plugin README](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb_v2/README.md) +[`influxdb_v2` output plugin README](/telegraf/v1/output-plugins/influxdb_v2/) on GitHub. ## Start Telegraf diff --git a/content/shared/influxdb3-write-guides/use-telegraf/csv.md b/content/shared/influxdb3-write-guides/use-telegraf/csv.md index 41967996a..39cd6fbfd 100644 --- a/content/shared/influxdb3-write-guides/use-telegraf/csv.md +++ b/content/shared/influxdb3-write-guides/use-telegraf/csv.md @@ -123,5 +123,5 @@ CSV data to {{% product-name %}}. The preceding examples describe Telegraf configurations necessary for writing to {{% product-name %}}. The `influxdb_v2` output plugin provides several other configuration options. For more information, see the -[`influxdb_v2` plugin options](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb_v2/README.md) +[`influxdb_v2` plugin options](/telegraf/v1/output-plugins/influxdb_v2/) on GitHub. diff --git a/content/shared/influxdb3-write-guides/use-telegraf/dual-write.md b/content/shared/influxdb3-write-guides/use-telegraf/dual-write.md index 71f3fa52d..0ac15391c 100644 --- a/content/shared/influxdb3-write-guides/use-telegraf/dual-write.md +++ b/content/shared/influxdb3-write-guides/use-telegraf/dual-write.md @@ -44,8 +44,8 @@ Specifically, it uses the following: ``` Telegraf lets you dual write data to any version of InfluxDB using the -[`influxdb` (InfluxDB v1)](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb/README.md) -and [`influxdb_v2` output plugins](https://github.com/influxdata/telegraf/blob/master/plugins/outputs/influxdb_v2/README.md). +[`influxdb` (InfluxDB v1)](/telegraf/v1/output-plugins/influxdb/ +and [`influxdb_v2` output plugins](/telegraf/v1/output-plugins/influxdb_v2/). A single Telegraf agent sends identical data sets to all target outputs. You cannot filter data based on the output. From c248d9f5887546d3c263a289440755ca52ec5c43 Mon Sep 17 00:00:00 2001 From: epgif Date: Thu, 23 Oct 2025 15:03:26 -0500 Subject: [PATCH 29/49] fix: Update system_metrics path (#6481) Move from 'examples' to 'influxdata' in influxdata/influxdb3_plugins#17 --- content/shared/influxdb3-cli/create/trigger.md | 2 +- content/shared/influxdb3-plugins/_index.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/content/shared/influxdb3-cli/create/trigger.md b/content/shared/influxdb3-cli/create/trigger.md index ca3c39a99..13b5aaa55 100644 --- a/content/shared/influxdb3-cli/create/trigger.md +++ b/content/shared/influxdb3-cli/create/trigger.md @@ -38,7 +38,7 @@ influxdb3 create trigger [OPTIONS] \ | | `--help-all` | Print detailed help information | If you want to use a plugin from the [Plugin Library](https://github.com/influxdata/influxdb3_plugins) repo, use the URL path with `gh:` specified as the prefix. -For example, to use the [System Metrics](https://github.com/influxdata/influxdb3_plugins/blob/main/examples/schedule/system_metrics/system_metrics.py) plugin, the plugin filename is `gh:examples/schedule/system_metrics/system_metrics.py`. +For example, to use the [System Metrics](https://github.com/influxdata/influxdb3_plugins/blob/main/influxdata/system_metrics/system_metrics.py) plugin, the plugin filename is `gh:influxdata/system_metrics/system_metrics.py`. ### Option environment variables diff --git a/content/shared/influxdb3-plugins/_index.md b/content/shared/influxdb3-plugins/_index.md index 145a34bfd..754115f31 100644 --- a/content/shared/influxdb3-plugins/_index.md +++ b/content/shared/influxdb3-plugins/_index.md @@ -131,7 +131,7 @@ Clone the `influxdata/influxdb3_plugins` repository and copy plugins to your con git clone https://github.com/influxdata/influxdb3_plugins.git # Copy a plugin to your configured plugin directory -cp influxdb3_plugins/examples/schedule/system_metrics/system_metrics.py /path/to/plugins/ +cp influxdb3_plugins/influxdata/system_metrics/system_metrics.py /path/to/plugins/ ``` ##### Option 2: Reference plugins directly from GitHub @@ -142,7 +142,7 @@ Skip downloading plugins by referencing them directly from GitHub using the `gh: # Create a trigger using a plugin from GitHub influxdb3 create trigger \ --trigger-spec "every:1m" \ - --plugin-filename "gh:examples/schedule/system_metrics/system_metrics.py" \ + --plugin-filename "gh:influxdata/system_metrics/system_metrics.py" \ --database my_database \ system_metrics ``` From 872f07593d5751600de6606af269055af39191eb Mon Sep 17 00:00:00 2001 From: Gary Fowler <97983559+garylfowler@users.noreply.github.com> Date: Fri, 24 Oct 2025 02:14:26 -1000 Subject: [PATCH 30/49] Update InfluxDB Enterprise introduction content (#6484) Removed sign-up instructions for InfluxDB Enterprise. --- content/enterprise_influxdb/v1/_index.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/content/enterprise_influxdb/v1/_index.md b/content/enterprise_influxdb/v1/_index.md index 8ed0e8d53..cf695b761 100644 --- a/content/enterprise_influxdb/v1/_index.md +++ b/content/enterprise_influxdb/v1/_index.md @@ -12,9 +12,6 @@ weight: 1 InfluxDB Enterprise provides a time series database designed to handle high write and query loads and offers highly scalable clusters on your infrastructure with a management UI. Use for DevOps monitoring, IoT sensor data, and real-time analytics. Check out the key features that make InfluxDB Enterprise a great choice for working with time series data. -If you're interested in working with InfluxDB Enterprise, visit -[InfluxPortal](https://portal.influxdata.com/) to sign up, get a license key, -and get started! ## Key features From f9435b0cf86944799de2a3700871857fe2a60342 Mon Sep 17 00:00:00 2001 From: Jason Stirnaman Date: Fri, 24 Oct 2025 12:52:47 -0500 Subject: [PATCH 31/49] =?UTF-8?q?chore(enterprise=5Finfluxdb):=20specify?= =?UTF-8?q?=20Enterprise=20v1=20and=20remove=20new=20sign=E2=80=A6=20(#648?= =?UTF-8?q?5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(enterprise_influxdb): specify Enterprise v1 and remove new signup notes: - Removes instructions for new signups at portal.influxdata (at Marketing's request) - Uses Enterprise v1 in titles and descriptions - Updates title metadata template to use InfluxDB Enterprise v1 - Updates products.yml to use InfluxDB Enterprise v1 - Removes unused enterprise-name/-link shortcodes I chose InfluxDB Enterprise v1 over InfluxDB v1 Enterprise due to recent usage patterns and because it's compatible with uses like "InfluxDB Enterprise 1.11.x" without being redundant. * Apply suggestion from @jstirnaman * Apply suggestion from @jstirnaman * Apply suggestion from @jstirnaman --- DOCS-SHORTCODES.md | 19 ------------------- PLATFORM_REFERENCE.md | 2 +- content/enterprise_influxdb/v1/_index.md | 4 ++-- .../v1/about-the-project/_index.md | 2 +- .../v1/about-the-project/release-notes.md | 2 +- .../v1/administration/_index.md | 2 +- .../v1/administration/backup-and-restore.md | 2 +- .../configure/anti-entropy/_index.md | 2 +- .../anti-entropy/anti-entropy-api.md | 2 +- .../configure/config-data-nodes.md | 4 ++-- .../configure/config-meta-nodes.md | 4 ++-- .../administration/configure/configuration.md | 4 ++-- .../v1/administration/configure/ports.md | 2 +- .../configure/security/enable_tls.md | 2 +- .../administration/configure/security/ldap.md | 2 +- .../administration/manage/clusters/_index.md | 4 ++-- .../manage/clusters/add-nodes.md | 2 +- .../manage/clusters/rebalance.md | 4 ++-- .../manage/clusters/replacing-nodes.md | 4 ++-- .../v1/administration/manage/node-labels.md | 2 +- .../v1/administration/manage/renaming.md | 2 +- .../manage/users-and-permissions/_index.md | 2 +- .../authorization-api.md | 4 ++-- .../fine-grained-authorization.md | 2 +- .../introduction-to-auth.md | 4 ++-- .../v1/administration/monitor/_index.md | 2 +- .../v1/administration/monitor/logs.md | 2 +- .../monitor/monitor-with-oss.md | 4 ++-- .../v1/administration/renew-license.md | 2 +- .../v1/administration/upgrading.md | 2 +- .../enterprise_influxdb/v1/concepts/_index.md | 2 +- .../v1/concepts/clustering.md | 4 ++-- .../v1/concepts/file-system-layout.md | 2 +- .../concepts/influxdb-enterprise-startup.md | 8 ++++---- .../enterprise_influxdb/v1/features/_index.md | 2 +- .../v1/features/clustering-features.md | 4 ++-- content/enterprise_influxdb/v1/flux/_index.md | 4 ++-- .../enterprise_influxdb/v1/guides/_index.md | 2 +- .../v1/guides/authenticate.md | 2 +- .../v1/guides/hardware_sizing.md | 2 +- .../v1/guides/migration.md | 4 ++-- .../v1/introduction/_index.md | 2 +- .../v1/introduction/download.md | 9 ++++----- .../v1/introduction/getting-started.md | 2 +- .../v1/introduction/installation/_index.md | 2 +- .../installation/data_node_installation.md | 2 +- .../installation/docker/_index.md | 5 ++--- .../docker/docker-troubleshooting.md | 4 ++-- .../installation/fips-compliant.md | 4 ++-- .../installation/meta_node_installation.md | 2 +- .../installation/single-server.md | 4 ++-- .../introduction/installation_requirements.md | 4 ++-- .../v1/reference/hardware_sizing.md | 2 +- .../enterprise_influxdb/v1/tools/_index.md | 6 +++--- .../enterprise_influxdb/v1/tools/grafana.md | 5 ++--- .../v1/tools/influxd-ctl/_index.md | 2 +- .../v1/tools/influxd-ctl/add-data.md | 2 +- .../v1/tools/influxd-ctl/add-meta.md | 2 +- .../v1/tools/influxd-ctl/backup.md | 2 +- .../tools/influxd-ctl/ldap/sample-config.md | 2 +- .../v1/tools/influxd-ctl/show.md | 2 +- .../v1/troubleshooting/_index.md | 2 +- .../frequently-asked-questions.md | 2 +- content/platform/_index.md | 2 +- data/products.yml | 2 +- layouts/partials/header/title.html | 2 ++ layouts/shortcodes/enterprise-link.html | 1 - layouts/shortcodes/enterprise-name.html | 6 ------ 68 files changed, 94 insertions(+), 121 deletions(-) delete mode 100644 layouts/shortcodes/enterprise-link.html delete mode 100644 layouts/shortcodes/enterprise-name.html diff --git a/DOCS-SHORTCODES.md b/DOCS-SHORTCODES.md index 7c7ab9320..2218a72e4 100644 --- a/DOCS-SHORTCODES.md +++ b/DOCS-SHORTCODES.md @@ -113,25 +113,6 @@ Display the short version name (part of the key used in `products.yml`) from the {{% product-key %}} ``` -### Enterprise name - -The name used to refer to InfluxData's enterprise offering is subject to change. To facilitate easy updates in the future, use the `enterprise-name` shortcode when referencing the enterprise product. This shortcode accepts a `"short"` parameter which uses the "short-name". - -```md -This is content that references {{< enterprise-name >}}. -This is content that references {{< enterprise-name "short" >}}. -``` - -Product names are stored in `data/products.yml`. - -### Enterprise link - -References to InfluxDB Enterprise are often accompanied with a link to a page where visitors can get more information about the Enterprise offering. This link is subject to change. Use the `enterprise-link` shortcode when including links to more information about InfluxDB Enterprise. - -```md -Find more info [here][{{< enterprise-link >}}] -``` - ## Version Information ### Latest patch version diff --git a/PLATFORM_REFERENCE.md b/PLATFORM_REFERENCE.md index 56dd14857..a0fc31afe 100644 --- a/PLATFORM_REFERENCE.md +++ b/PLATFORM_REFERENCE.md @@ -13,7 +13,7 @@ InfluxDB OSS v1: - Query languages: InfluxQL and Flux - Clients: Telegraf, influx CLI, v1/v2 client libraries -InfluxDB Enterprise: +InfluxDB Enterprise v1: - Documentation: https://docs.influxdata.com/enterprise_influxdb/v1.12/ - Query languages: InfluxQL and Flux - Clients: Telegraf, influx CLI, v1/v2 client libraries diff --git a/content/enterprise_influxdb/v1/_index.md b/content/enterprise_influxdb/v1/_index.md index cf695b761..af6e6fade 100644 --- a/content/enterprise_influxdb/v1/_index.md +++ b/content/enterprise_influxdb/v1/_index.md @@ -1,7 +1,7 @@ --- -title: InfluxDB Enterprise documentation +title: InfluxDB Enterprise v1 documentation description: > - Documentation for InfluxDB Enterprise, which adds clustering, high availability, fine-grained authorization, and more to InfluxDB OSS. + Documentation for InfluxDB Enterprise v1, which adds clustering, high availability, fine-grained authorization, and more to InfluxDB OSS. aliases: - /enterprise/v1.11/ menu: diff --git a/content/enterprise_influxdb/v1/about-the-project/_index.md b/content/enterprise_influxdb/v1/about-the-project/_index.md index 35ba30c2d..5c5e05ca8 100644 --- a/content/enterprise_influxdb/v1/about-the-project/_index.md +++ b/content/enterprise_influxdb/v1/about-the-project/_index.md @@ -1,7 +1,7 @@ --- title: About the project description: > - Release notes, licenses, and third-party software details for InfluxDB Enterprise. + Release notes, licenses, and third-party software details for InfluxDB Enterprise v1. menu: enterprise_influxdb_v1_ref: weight: 10 diff --git a/content/enterprise_influxdb/v1/about-the-project/release-notes.md b/content/enterprise_influxdb/v1/about-the-project/release-notes.md index b40257a9a..d7c5a22cc 100644 --- a/content/enterprise_influxdb/v1/about-the-project/release-notes.md +++ b/content/enterprise_influxdb/v1/about-the-project/release-notes.md @@ -1,7 +1,7 @@ --- title: InfluxDB Enterprise v1 release notes description: > - Important changes and what's new in each version InfluxDB Enterprise. + Important changes and what's new in each version InfluxDB Enterprise v1. menu: enterprise_influxdb_v1_ref: name: Release notes diff --git a/content/enterprise_influxdb/v1/administration/_index.md b/content/enterprise_influxdb/v1/administration/_index.md index bad057dbf..b02f736bf 100644 --- a/content/enterprise_influxdb/v1/administration/_index.md +++ b/content/enterprise_influxdb/v1/administration/_index.md @@ -1,5 +1,5 @@ --- -title: Administer InfluxDB Enterprise +title: Administer InfluxDB Enterprise v1 description: Configuration, security, and logging in InfluxDB enterprise. menu: enterprise_influxdb_v1: diff --git a/content/enterprise_influxdb/v1/administration/backup-and-restore.md b/content/enterprise_influxdb/v1/administration/backup-and-restore.md index 613f7c679..84f4cf3f1 100644 --- a/content/enterprise_influxdb/v1/administration/backup-and-restore.md +++ b/content/enterprise_influxdb/v1/administration/backup-and-restore.md @@ -1,7 +1,7 @@ --- title: Back up and restore description: > - Back up and restore InfluxDB enterprise clusters to prevent data loss. + Back up and restore InfluxDB Enterprise v1 clusters to prevent data loss. aliases: - /enterprise/v1.10/guides/backup-and-restore/ menu: diff --git a/content/enterprise_influxdb/v1/administration/configure/anti-entropy/_index.md b/content/enterprise_influxdb/v1/administration/configure/anti-entropy/_index.md index 8c3fcefe2..053be97be 100644 --- a/content/enterprise_influxdb/v1/administration/configure/anti-entropy/_index.md +++ b/content/enterprise_influxdb/v1/administration/configure/anti-entropy/_index.md @@ -1,5 +1,5 @@ --- -title: Use Anti-Entropy service in InfluxDB Enterprise +title: Use Anti-Entropy service in InfluxDB Enterprise v1 description: The Anti-Entropy service monitors and repairs shards in InfluxDB. aliases: - /enterprise_influxdb/v1/guides/Anti-Entropy/ diff --git a/content/enterprise_influxdb/v1/administration/configure/anti-entropy/anti-entropy-api.md b/content/enterprise_influxdb/v1/administration/configure/anti-entropy/anti-entropy-api.md index e8e8c8ae0..28bf8d869 100644 --- a/content/enterprise_influxdb/v1/administration/configure/anti-entropy/anti-entropy-api.md +++ b/content/enterprise_influxdb/v1/administration/configure/anti-entropy/anti-entropy-api.md @@ -1,7 +1,7 @@ --- title: InfluxDB Anti-Entropy API description: > - Monitor and repair shards on InfluxDB Enterprise data nodes the InfluxDB Anti-Entropy API. + Monitor and repair shards on InfluxDB Enterprise v1 data nodes the InfluxDB Anti-Entropy API. menu: enterprise_influxdb_v1: name: Anti-entropy API diff --git a/content/enterprise_influxdb/v1/administration/configure/config-data-nodes.md b/content/enterprise_influxdb/v1/administration/configure/config-data-nodes.md index 8e73f7e6d..2e4bffb03 100644 --- a/content/enterprise_influxdb/v1/administration/configure/config-data-nodes.md +++ b/content/enterprise_influxdb/v1/administration/configure/config-data-nodes.md @@ -1,7 +1,7 @@ --- -title: Configure InfluxDB Enterprise data nodes +title: Configure InfluxDB Enterprise v1 data nodes description: > - Configure InfluxDB Enterprise data node settings and environmental variables. + Configure InfluxDB Enterprise v1 data node settings and environmental variables. menu: enterprise_influxdb_v1: name: Configure data nodes diff --git a/content/enterprise_influxdb/v1/administration/configure/config-meta-nodes.md b/content/enterprise_influxdb/v1/administration/configure/config-meta-nodes.md index 25d83327c..372f999a0 100644 --- a/content/enterprise_influxdb/v1/administration/configure/config-meta-nodes.md +++ b/content/enterprise_influxdb/v1/administration/configure/config-meta-nodes.md @@ -1,7 +1,7 @@ --- -title: Configure InfluxDB Enterprise meta nodes +title: Configure InfluxDB Enterprise v1 meta nodes description: > - Configure InfluxDB Enterprise data node settings and environmental variables. + Configure InfluxDB Enterprise v1 data node settings and environmental variables. menu: enterprise_influxdb_v1: name: Configure meta nodes diff --git a/content/enterprise_influxdb/v1/administration/configure/configuration.md b/content/enterprise_influxdb/v1/administration/configure/configuration.md index 0bff07477..e8b2aff4f 100644 --- a/content/enterprise_influxdb/v1/administration/configure/configuration.md +++ b/content/enterprise_influxdb/v1/administration/configure/configuration.md @@ -1,7 +1,7 @@ --- -title: Configure InfluxDB Enterprise clusters +title: Configure InfluxDB Enterprise v1 clusters description: > - Learn about global options, meta node options, data node options and other InfluxDB Enterprise configuration settings, including + Learn about global options, meta node options, data node options and other InfluxDB Enterprise v1 configuration settings, including aliases: - /enterprise/v1.10/administration/configuration/ - /enterprise_influxdb/v1/administration/configuration/ diff --git a/content/enterprise_influxdb/v1/administration/configure/ports.md b/content/enterprise_influxdb/v1/administration/configure/ports.md index 3afef122d..3a32bd33e 100644 --- a/content/enterprise_influxdb/v1/administration/configure/ports.md +++ b/content/enterprise_influxdb/v1/administration/configure/ports.md @@ -1,5 +1,5 @@ --- -title: Configure TCP and UDP ports used in InfluxDB Enterprise +title: Configure TCP and UDP ports used in InfluxDB Enterprise v1 description: Configure TCP and UDP ports in InfluxDB Enterprise. menu: enterprise_influxdb_v1: diff --git a/content/enterprise_influxdb/v1/administration/configure/security/enable_tls.md b/content/enterprise_influxdb/v1/administration/configure/security/enable_tls.md index cface4733..feca683c4 100644 --- a/content/enterprise_influxdb/v1/administration/configure/security/enable_tls.md +++ b/content/enterprise_influxdb/v1/administration/configure/security/enable_tls.md @@ -1,7 +1,7 @@ --- title: Configure HTTPS over TLS description: > - Enabling HTTPS over TLS encrypts the communication between clients and the InfluxDB Enterprise server, and between nodes in the cluster. + Enabling HTTPS over TLS encrypts the communication between clients and the InfluxDB Enterprise v1 server, and between nodes in the cluster. menu: enterprise_influxdb_v1: name: Configure TLS for cluster diff --git a/content/enterprise_influxdb/v1/administration/configure/security/ldap.md b/content/enterprise_influxdb/v1/administration/configure/security/ldap.md index c966f0e1f..f5926fb01 100644 --- a/content/enterprise_influxdb/v1/administration/configure/security/ldap.md +++ b/content/enterprise_influxdb/v1/administration/configure/security/ldap.md @@ -1,7 +1,7 @@ --- title: Configure LDAP authentication description: > - Configure LDAP authentication in InfluxDB Enterprise and test LDAP connectivity. + Configure LDAP authentication in InfluxDB Enterprise v1 and test LDAP connectivity. menu: enterprise_influxdb_v1: name: Configure LDAP authentication diff --git a/content/enterprise_influxdb/v1/administration/manage/clusters/_index.md b/content/enterprise_influxdb/v1/administration/manage/clusters/_index.md index 8a6e001ea..48624665c 100644 --- a/content/enterprise_influxdb/v1/administration/manage/clusters/_index.md +++ b/content/enterprise_influxdb/v1/administration/manage/clusters/_index.md @@ -1,7 +1,7 @@ --- -title: Manage InfluxDB Enterprise clusters +title: Manage InfluxDB Enterprise v1 clusters description: > - Use the `influxd-ctl` and `influx` command line tools to manage InfluxDB Enterprise clusters and data. + Use the `influxd-ctl` and `influx` command line tools to manage InfluxDB Enterprise v1 clusters and data. aliases: - /enterprise/v1.8/features/cluster-commands/ - /enterprise_influxdb/v1/features/cluster-commands/ diff --git a/content/enterprise_influxdb/v1/administration/manage/clusters/add-nodes.md b/content/enterprise_influxdb/v1/administration/manage/clusters/add-nodes.md index 3b86df64d..e063f185e 100644 --- a/content/enterprise_influxdb/v1/administration/manage/clusters/add-nodes.md +++ b/content/enterprise_influxdb/v1/administration/manage/clusters/add-nodes.md @@ -1,6 +1,6 @@ --- title: Add node to existing cluster -description: Add nodes to an existing InfluxDB Enterprise cluster. +description: Add nodes to an existing InfluxDB Enterprise v1 cluster. aliases: menu: enterprise_influxdb_v1: diff --git a/content/enterprise_influxdb/v1/administration/manage/clusters/rebalance.md b/content/enterprise_influxdb/v1/administration/manage/clusters/rebalance.md index 9715aed7d..020133649 100644 --- a/content/enterprise_influxdb/v1/administration/manage/clusters/rebalance.md +++ b/content/enterprise_influxdb/v1/administration/manage/clusters/rebalance.md @@ -1,6 +1,6 @@ --- -title: Rebalance InfluxDB Enterprise clusters -description: Manually rebalance an InfluxDB Enterprise cluster. +title: Rebalance InfluxDB Enterprise v1 clusters +description: Manually rebalance an InfluxDB Enterprise v1 cluster. aliases: - /enterprise_influxdb/v1/guides/rebalance/ - /enterprise_influxdb/v1/guides/rebalance/ diff --git a/content/enterprise_influxdb/v1/administration/manage/clusters/replacing-nodes.md b/content/enterprise_influxdb/v1/administration/manage/clusters/replacing-nodes.md index 0001f4de9..467050fab 100644 --- a/content/enterprise_influxdb/v1/administration/manage/clusters/replacing-nodes.md +++ b/content/enterprise_influxdb/v1/administration/manage/clusters/replacing-nodes.md @@ -1,6 +1,6 @@ --- -title: Replace InfluxDB Enterprise cluster meta nodes and data nodes -description: Replace meta and data nodes in an InfluxDB Enterprise cluster. +title: Replace InfluxDB Enterprise v1 cluster meta nodes and data nodes +description: Replace meta and data nodes in an InfluxDB Enterprise v1 cluster. aliases: - /enterprise_influxdb/v1/guides/replacing-nodes/ menu: diff --git a/content/enterprise_influxdb/v1/administration/manage/node-labels.md b/content/enterprise_influxdb/v1/administration/manage/node-labels.md index 714f4d16b..2cfed2886 100644 --- a/content/enterprise_influxdb/v1/administration/manage/node-labels.md +++ b/content/enterprise_influxdb/v1/administration/manage/node-labels.md @@ -1,7 +1,7 @@ --- title: Manage node labels description: > - Assign user-defined labels to nodes in your InfluxDB Enterprise cluster. + Assign user-defined labels to nodes in your InfluxDB Enterprise v1 cluster. menu: enterprise_influxdb_v1: name: Manage node labels diff --git a/content/enterprise_influxdb/v1/administration/manage/renaming.md b/content/enterprise_influxdb/v1/administration/manage/renaming.md index 14ca02181..996548d62 100644 --- a/content/enterprise_influxdb/v1/administration/manage/renaming.md +++ b/content/enterprise_influxdb/v1/administration/manage/renaming.md @@ -1,5 +1,5 @@ --- -title: Rename hosts in InfluxDB Enterprise +title: Rename hosts in InfluxDB Enterprise v1 description: Rename a host within your InfluxDB Enterprise instance. aliases: - /enterprise_influxdb/v1/administration/renaming/ diff --git a/content/enterprise_influxdb/v1/administration/manage/users-and-permissions/_index.md b/content/enterprise_influxdb/v1/administration/manage/users-and-permissions/_index.md index 74a0959cc..3a43623e5 100644 --- a/content/enterprise_influxdb/v1/administration/manage/users-and-permissions/_index.md +++ b/content/enterprise_influxdb/v1/administration/manage/users-and-permissions/_index.md @@ -1,6 +1,6 @@ --- title: Manage users and permissions -description: Manage authorization in InfluxDB Enterprise clusters with users, roles, and permissions. +description: Manage authorization in InfluxDB Enterprise v1 clusters with users, roles, and permissions. menu: enterprise_influxdb_v1: name: Manage users and permissions diff --git a/content/enterprise_influxdb/v1/administration/manage/users-and-permissions/authorization-api.md b/content/enterprise_influxdb/v1/administration/manage/users-and-permissions/authorization-api.md index 6488f54af..0faef4ccb 100644 --- a/content/enterprise_influxdb/v1/administration/manage/users-and-permissions/authorization-api.md +++ b/content/enterprise_influxdb/v1/administration/manage/users-and-permissions/authorization-api.md @@ -1,7 +1,7 @@ --- -title: Manage authorization with the InfluxDB Enterprise Meta API +title: Manage authorization with the InfluxDB Enterprise v1 Meta API description: > - Manage users and permissions with the InfluxDB Enterprise Meta API. + Manage users and permissions with the InfluxDB Enterprise v1 Meta API. menu: enterprise_influxdb_v1: name: Manage authorization with the API diff --git a/content/enterprise_influxdb/v1/administration/manage/users-and-permissions/fine-grained-authorization.md b/content/enterprise_influxdb/v1/administration/manage/users-and-permissions/fine-grained-authorization.md index 3da69d0ba..420922b92 100644 --- a/content/enterprise_influxdb/v1/administration/manage/users-and-permissions/fine-grained-authorization.md +++ b/content/enterprise_influxdb/v1/administration/manage/users-and-permissions/fine-grained-authorization.md @@ -1,7 +1,7 @@ --- title: Manage fine-grained authorization description: > - Fine-grained authorization (FGA) in InfluxDB Enterprise controls user access at the database, measurement, and series levels. + Fine-grained authorization (FGA) in InfluxDB Enterprise v1 controls user access at the database, measurement, and series levels. menu: enterprise_influxdb_v1: parent: Manage users and permissions diff --git a/content/enterprise_influxdb/v1/administration/manage/users-and-permissions/introduction-to-auth.md b/content/enterprise_influxdb/v1/administration/manage/users-and-permissions/introduction-to-auth.md index ee8a0dce5..8fb1b45d8 100644 --- a/content/enterprise_influxdb/v1/administration/manage/users-and-permissions/introduction-to-auth.md +++ b/content/enterprise_influxdb/v1/administration/manage/users-and-permissions/introduction-to-auth.md @@ -1,7 +1,7 @@ --- -title: Introduction to authorization in InfluxDB Enterprise +title: Introduction to authorization in InfluxDB Enterprise v1 description: > - Learn the basics of managing users and permissions in InfluxDB Enterprise. + Learn the basics of managing users and permissions in InfluxDB Enterprise v1. menu: enterprise_influxdb_v1: name: Introduction to authorization diff --git a/content/enterprise_influxdb/v1/administration/monitor/_index.md b/content/enterprise_influxdb/v1/administration/monitor/_index.md index b7f6f044d..ea71007be 100644 --- a/content/enterprise_influxdb/v1/administration/monitor/_index.md +++ b/content/enterprise_influxdb/v1/administration/monitor/_index.md @@ -1,5 +1,5 @@ --- -title: Monitor InfluxDB Enterprise +title: Monitor InfluxDB Enterprise v1 description: Monitor InfluxDB Enterprise with InfluxDB Cloud or OSS. menu: enterprise_influxdb_v1: diff --git a/content/enterprise_influxdb/v1/administration/monitor/logs.md b/content/enterprise_influxdb/v1/administration/monitor/logs.md index 871de19ab..1967a0ae5 100644 --- a/content/enterprise_influxdb/v1/administration/monitor/logs.md +++ b/content/enterprise_influxdb/v1/administration/monitor/logs.md @@ -1,5 +1,5 @@ --- -title: Log and trace InfluxDB Enterprise operations +title: Log and trace InfluxDB Enterprise v1 operations description: > Learn about logging locations, redirecting HTTP request logging, structured logging, and tracing. menu: diff --git a/content/enterprise_influxdb/v1/administration/monitor/monitor-with-oss.md b/content/enterprise_influxdb/v1/administration/monitor/monitor-with-oss.md index a31686894..605144cb8 100644 --- a/content/enterprise_influxdb/v1/administration/monitor/monitor-with-oss.md +++ b/content/enterprise_influxdb/v1/administration/monitor/monitor-with-oss.md @@ -1,7 +1,7 @@ --- -title: Monitor InfluxDB Enterprise with InfluxDB OSS +title: Monitor InfluxDB Enterprise v1 with InfluxDB OSS description: > - Monitor your InfluxDB Enterprise instance using InfluxDB OSS and + Monitor your InfluxDB Enterprise v1 instance using InfluxDB OSS and a pre-built InfluxDB template. menu: enterprise_influxdb_v1: diff --git a/content/enterprise_influxdb/v1/administration/renew-license.md b/content/enterprise_influxdb/v1/administration/renew-license.md index 4b70abb0b..6af112b44 100644 --- a/content/enterprise_influxdb/v1/administration/renew-license.md +++ b/content/enterprise_influxdb/v1/administration/renew-license.md @@ -1,7 +1,7 @@ --- title: Renew or update a license key or file description: > - Renew or update a license key or file for your InfluxDB enterprise cluster. + Renew or update a license key or file for your InfluxDB Enterprise v1 cluster. menu: enterprise_influxdb_v1: name: Renew a license diff --git a/content/enterprise_influxdb/v1/administration/upgrading.md b/content/enterprise_influxdb/v1/administration/upgrading.md index 398a78b19..c814ba238 100644 --- a/content/enterprise_influxdb/v1/administration/upgrading.md +++ b/content/enterprise_influxdb/v1/administration/upgrading.md @@ -1,5 +1,5 @@ --- -title: Upgrade InfluxDB Enterprise clusters +title: Upgrade InfluxDB Enterprise v1 clusters description: Upgrade to the latest version of InfluxDB Enterprise. aliases: - /enterprise/v1.10/administration/upgrading/ diff --git a/content/enterprise_influxdb/v1/concepts/_index.md b/content/enterprise_influxdb/v1/concepts/_index.md index 6b8039489..bad5770de 100644 --- a/content/enterprise_influxdb/v1/concepts/_index.md +++ b/content/enterprise_influxdb/v1/concepts/_index.md @@ -1,5 +1,5 @@ --- -title: InfluxDB Enterprise concepts +title: InfluxDB Enterprise v1 concepts description: Clustering and other key concepts in InfluxDB Enterprise. aliases: - /enterprise/v1.10/concepts/ diff --git a/content/enterprise_influxdb/v1/concepts/clustering.md b/content/enterprise_influxdb/v1/concepts/clustering.md index 71f16d750..59831ef5c 100644 --- a/content/enterprise_influxdb/v1/concepts/clustering.md +++ b/content/enterprise_influxdb/v1/concepts/clustering.md @@ -1,7 +1,7 @@ --- -title: Clustering in InfluxDB Enterprise +title: Clustering in InfluxDB Enterprise v1 description: > - Learn how meta nodes and data nodes interact in InfluxDB Enterprise. + Learn how meta nodes and data nodes interact in InfluxDB Enterprise v1. aliases: - /enterprise/v1.10/concepts/clustering/ - /enterprise_influxdb/v1/high_availability/clusters/ diff --git a/content/enterprise_influxdb/v1/concepts/file-system-layout.md b/content/enterprise_influxdb/v1/concepts/file-system-layout.md index 3c16a928b..7d9c629b1 100644 --- a/content/enterprise_influxdb/v1/concepts/file-system-layout.md +++ b/content/enterprise_influxdb/v1/concepts/file-system-layout.md @@ -1,7 +1,7 @@ --- title: InfluxDB file system layout description: > - The InfluxDB Enterprise file system layout depends on the operating system, package manager, + The InfluxDB Enterprise v1 file system layout depends on the operating system, package manager, or containerization platform used to install InfluxDB. weight: 102 menu: diff --git a/content/enterprise_influxdb/v1/concepts/influxdb-enterprise-startup.md b/content/enterprise_influxdb/v1/concepts/influxdb-enterprise-startup.md index 7e071a4ea..f242ec7e0 100644 --- a/content/enterprise_influxdb/v1/concepts/influxdb-enterprise-startup.md +++ b/content/enterprise_influxdb/v1/concepts/influxdb-enterprise-startup.md @@ -1,7 +1,7 @@ --- -title: InfluxDB Enterprise startup process +title: InfluxDB Enterprise v1 startup process description: > - On startup, InfluxDB Enterprise starts all subsystems and services in a deterministic order. + On startup, InfluxDB Enterprise v1 starts all subsystems and services in a deterministic order. menu: enterprise_influxdb_v1: weight: 10 @@ -51,8 +51,8 @@ The Monitor service provides statistical and diagnostic information to InfluxDB This information helps with database troubleshooting and performance analysis. ### Cluster -The Cluster service provides implementations of InfluxDB OSS v1.8 interfaces -that operate on an InfluxDB Enterprise v1.8 cluster. +The Cluster service provides implementations of InfluxDB OSS v1.x interfaces +that operate on an InfluxDB Enterprise v1 cluster. ### Precreator The Precreator service creates shards before they are needed. diff --git a/content/enterprise_influxdb/v1/features/_index.md b/content/enterprise_influxdb/v1/features/_index.md index cd398a4ec..fbdc08f90 100644 --- a/content/enterprise_influxdb/v1/features/_index.md +++ b/content/enterprise_influxdb/v1/features/_index.md @@ -1,5 +1,5 @@ --- -title: InfluxDB Enterprise features +title: InfluxDB Enterprise v1 features description: Users, clustering, and other InfluxDB Enterprise features. aliases: - /enterprise/v1.8/features/ diff --git a/content/enterprise_influxdb/v1/features/clustering-features.md b/content/enterprise_influxdb/v1/features/clustering-features.md index d96159c45..a9f4ca8ca 100644 --- a/content/enterprise_influxdb/v1/features/clustering-features.md +++ b/content/enterprise_influxdb/v1/features/clustering-features.md @@ -1,6 +1,6 @@ --- -title: InfluxDB Enterprise cluster features -description: Overview of features related to InfluxDB Enterprise clustering. +title: InfluxDB Enterprise v1 cluster features +description: Overview of features related to InfluxDB Enterprise v1 clustering. aliases: - /enterprise/v1.8/features/clustering-features/ menu: diff --git a/content/enterprise_influxdb/v1/flux/_index.md b/content/enterprise_influxdb/v1/flux/_index.md index 78a98bb2c..941f53d9b 100644 --- a/content/enterprise_influxdb/v1/flux/_index.md +++ b/content/enterprise_influxdb/v1/flux/_index.md @@ -11,8 +11,8 @@ menu: Flux is a functional data scripting language designed for querying, analyzing, and acting on time series data. Its takes the power of [InfluxQL](/enterprise_influxdb/v1/query_language/spec/) and the functionality of [TICKscript](/kapacitor/v1/reference/tick/introduction/) and combines them into a single, unified syntax. -> Flux v0.65 is production-ready and included with **InfluxDB Enterprise v1.8+. -> The InfluxDB v1.8 implementation of Flux is read-only and does not support +> Flux v0.65 is production-ready and included with **InfluxDB v1 Enterprise. +> The InfluxDB v1.8+ implementation of Flux is read-only and does not support > writing data back to InfluxDB. ## Flux design principles diff --git a/content/enterprise_influxdb/v1/guides/_index.md b/content/enterprise_influxdb/v1/guides/_index.md index 448dda270..c830b6577 100644 --- a/content/enterprise_influxdb/v1/guides/_index.md +++ b/content/enterprise_influxdb/v1/guides/_index.md @@ -1,5 +1,5 @@ --- -title: InfluxDB Enterprise guides +title: InfluxDB Enterprise v1 guides description: Step-by-step guides for using InfluxDB Enterprise. aliases: - /enterprise/v1.8/guides/ diff --git a/content/enterprise_influxdb/v1/guides/authenticate.md b/content/enterprise_influxdb/v1/guides/authenticate.md index 3696526ff..403cff722 100644 --- a/content/enterprise_influxdb/v1/guides/authenticate.md +++ b/content/enterprise_influxdb/v1/guides/authenticate.md @@ -1,5 +1,5 @@ --- -title: Authenticate requests to InfluxDB Enterprise +title: Authenticate requests to InfluxDB Enterprise v1 description: > Calculate percentages using basic math operators available in InfluxQL or Flux. This guide walks through use cases and examples of calculating percentages from two values in a single query. diff --git a/content/enterprise_influxdb/v1/guides/hardware_sizing.md b/content/enterprise_influxdb/v1/guides/hardware_sizing.md index 6f6336705..4f8c1b71d 100644 --- a/content/enterprise_influxdb/v1/guides/hardware_sizing.md +++ b/content/enterprise_influxdb/v1/guides/hardware_sizing.md @@ -1,7 +1,7 @@ --- title: Hardware sizing guidelines Description: > - Review configuration and hardware guidelines for InfluxDB OSS (open source) and InfluxDB Enterprise. + Review configuration and hardware guidelines for InfluxDB OSS (open source) and InfluxDB Enterprise v1. menu: enterprise_influxdb_v1: weight: 40 diff --git a/content/enterprise_influxdb/v1/guides/migration.md b/content/enterprise_influxdb/v1/guides/migration.md index fd40035e4..0ff72c7a3 100644 --- a/content/enterprise_influxdb/v1/guides/migration.md +++ b/content/enterprise_influxdb/v1/guides/migration.md @@ -1,7 +1,7 @@ --- -title: Migrate InfluxDB OSS instances to InfluxDB Enterprise clusters +title: Migrate InfluxDB OSS instances to InfluxDB Enterprise v1 clusters description: > - Migrate a running instance of InfluxDB open source (OSS) to an InfluxDB Enterprise cluster. + Migrate a running instance of InfluxDB open source (OSS) to an InfluxDB Enterprise v1 cluster. aliases: - /enterprise/v1.10/guides/migration/ menu: diff --git a/content/enterprise_influxdb/v1/introduction/_index.md b/content/enterprise_influxdb/v1/introduction/_index.md index 4952629fb..c303eaa31 100644 --- a/content/enterprise_influxdb/v1/introduction/_index.md +++ b/content/enterprise_influxdb/v1/introduction/_index.md @@ -1,5 +1,5 @@ --- -title: Introducing InfluxDB Enterprise +title: Introducing InfluxDB Enterprise v1 description: Tasks required to get up and running with InfluxDB Enterprise. aliases: - /enterprise/v1.8/introduction/ diff --git a/content/enterprise_influxdb/v1/introduction/download.md b/content/enterprise_influxdb/v1/introduction/download.md index e6eb82dc3..f6b85ab16 100644 --- a/content/enterprise_influxdb/v1/introduction/download.md +++ b/content/enterprise_influxdb/v1/introduction/download.md @@ -1,6 +1,6 @@ --- -title: InfluxDB Enterprise downloads -description: Download InfluxDB Enterprise. +title: InfluxDB Enterprise v1 downloads +description: Download InfluxDB Enterprise v1. aliases: - /enterprise/v1.8/introduction/download/ @@ -12,10 +12,9 @@ menu: --- You must have a valid license to run InfluxDB Enterprise. -You may obtain a 14-day demo license via the [InfluxDB Enterprise portal](https://portal.influxdata.com/users/new). -If you have purchased a license or already obtained a demo license, -log in to the [InfluxDB Enterprise portal](https://portal.influxdata.com/users/sign_in) +If you have purchased an InfluxDB v1 Enterprise license or already obtained a demo license, +log in to the [InfluxDB v1 Enterprise portal](https://portal.influxdata.com/users/sign_in) to get your license key and download URLs. See the [installation documentation](/enterprise_influxdb/v1/introduction/installation/) diff --git a/content/enterprise_influxdb/v1/introduction/getting-started.md b/content/enterprise_influxdb/v1/introduction/getting-started.md index 68cc1bb8d..9bcce78da 100644 --- a/content/enterprise_influxdb/v1/introduction/getting-started.md +++ b/content/enterprise_influxdb/v1/introduction/getting-started.md @@ -1,5 +1,5 @@ --- -title: Getting started with InfluxDB Enterprise +title: Getting started with InfluxDB Enterprise v1 description: Set up your cluster as a data source in Chronograf. aliases: - /enterprise_influxdb/v1/introduction/getting_started/ diff --git a/content/enterprise_influxdb/v1/introduction/installation/_index.md b/content/enterprise_influxdb/v1/introduction/installation/_index.md index 772703fbf..44ce9d9bd 100644 --- a/content/enterprise_influxdb/v1/introduction/installation/_index.md +++ b/content/enterprise_influxdb/v1/introduction/installation/_index.md @@ -1,5 +1,5 @@ --- -title: Install an InfluxDB Enterprise cluster +title: Install an InfluxDB Enterprise v1 cluster description: Install InfluxDB Enterprise in your own on-premise environment. aliases: - /enterprise_influxdb/v1/installation/ diff --git a/content/enterprise_influxdb/v1/introduction/installation/data_node_installation.md b/content/enterprise_influxdb/v1/introduction/installation/data_node_installation.md index 08aeb0437..f66841b1b 100644 --- a/content/enterprise_influxdb/v1/introduction/installation/data_node_installation.md +++ b/content/enterprise_influxdb/v1/introduction/installation/data_node_installation.md @@ -1,5 +1,5 @@ --- -title: Install InfluxDB Enterprise data nodes +title: Install InfluxDB Enterprise v1 data nodes aliases: - /enterprise_influxdb/v1/installation/data_node_installation/ - /enterprise_influxdb/v1/introduction/install-and-deploy/installation/data_node_installation/ diff --git a/content/enterprise_influxdb/v1/introduction/installation/docker/_index.md b/content/enterprise_influxdb/v1/introduction/installation/docker/_index.md index a1c6c40be..5022cf317 100644 --- a/content/enterprise_influxdb/v1/introduction/installation/docker/_index.md +++ b/content/enterprise_influxdb/v1/introduction/installation/docker/_index.md @@ -1,6 +1,6 @@ --- -title: Install and run InfluxDB v1 Enterprise with Docker -description: Install and run InfluxDB v1 Enterprise using Docker images for meta nodes and data nodes. +title: Install and run InfluxDB Enterprise v1 with Docker +description: Install and run InfluxDB Enterprise v1 using Docker images for meta nodes and data nodes. menu: enterprise_influxdb_v1: name: Install with Docker @@ -21,7 +21,6 @@ Using Docker allows you to quickly set up and run InfluxDB Enterprise clusters w > [!Important] > #### Enterprise license required > You must have a valid license to run InfluxDB Enterprise. -> Contact for licensing information or obtain a 14-day demo license via the [InfluxDB Enterprise portal](https://portal.influxdata.com/users/new). - [Docker image variants](#docker-image-variants) - [Requirements](#requirements) diff --git a/content/enterprise_influxdb/v1/introduction/installation/docker/docker-troubleshooting.md b/content/enterprise_influxdb/v1/introduction/installation/docker/docker-troubleshooting.md index 959a84ea4..aeb7c6a5c 100644 --- a/content/enterprise_influxdb/v1/introduction/installation/docker/docker-troubleshooting.md +++ b/content/enterprise_influxdb/v1/introduction/installation/docker/docker-troubleshooting.md @@ -1,6 +1,6 @@ --- -title: Docker troubleshooting for InfluxDB v1 Enterprise -description: Common Docker-specific issues and solutions for InfluxDB v1 Enterprise deployments. +title: Docker troubleshooting for InfluxDB Enterprise v1 +description: Common Docker-specific issues and solutions for InfluxDB Enterprise v1 deployments. menu: enterprise_influxdb_v1: name: Docker troubleshooting diff --git a/content/enterprise_influxdb/v1/introduction/installation/fips-compliant.md b/content/enterprise_influxdb/v1/introduction/installation/fips-compliant.md index 51be4070c..d8e8efc71 100644 --- a/content/enterprise_influxdb/v1/introduction/installation/fips-compliant.md +++ b/content/enterprise_influxdb/v1/introduction/installation/fips-compliant.md @@ -1,7 +1,7 @@ --- -title: FIPS-compliant InfluxDB Enterprise builds +title: FIPS-compliant InfluxDB Enterprise v1 builds description: > - InfluxDB Enterprise 1.11+ provides builds that are compliant with + InfluxDB Enterprise v1.11+ provides builds that are compliant with [Federal Information Processing Standards (FIPS)](https://www.nist.gov/standardsgov/compliance-faqs-federal-information-processing-standards-fips). menu: enterprise_influxdb_v1: diff --git a/content/enterprise_influxdb/v1/introduction/installation/meta_node_installation.md b/content/enterprise_influxdb/v1/introduction/installation/meta_node_installation.md index 7e627b448..92655c0b3 100644 --- a/content/enterprise_influxdb/v1/introduction/installation/meta_node_installation.md +++ b/content/enterprise_influxdb/v1/introduction/installation/meta_node_installation.md @@ -1,5 +1,5 @@ --- -title: Install InfluxDB Enterprise meta nodes +title: Install InfluxDB Enterprise v1 meta nodes aliases: - /enterprise_influxdb/v1/installation/meta_node_installation/ - /enterprise_influxdb/v1/introduction/install-and-deploy/installation/meta_node_installation/ diff --git a/content/enterprise_influxdb/v1/introduction/installation/single-server.md b/content/enterprise_influxdb/v1/introduction/installation/single-server.md index 0b3ef3554..96b1cd5ba 100644 --- a/content/enterprise_influxdb/v1/introduction/installation/single-server.md +++ b/content/enterprise_influxdb/v1/introduction/installation/single-server.md @@ -1,7 +1,7 @@ --- -title: Install InfluxDB Enterprise on a single server +title: Install InfluxDB Enterprise v1 on a single server description: > - Learn how to install and run InfluxDB Enterprise on a single server. + Learn how to install and run InfluxDB Enterprise v1 on a single server. menu: enterprise_influxdb_v1: name: Install on a single server diff --git a/content/enterprise_influxdb/v1/introduction/installation_requirements.md b/content/enterprise_influxdb/v1/introduction/installation_requirements.md index 966e0287a..fab26dad6 100644 --- a/content/enterprise_influxdb/v1/introduction/installation_requirements.md +++ b/content/enterprise_influxdb/v1/introduction/installation_requirements.md @@ -12,9 +12,9 @@ menu: parent: Introduction --- -Review the installation requirements below, and then check out available options to [install and deploy InfluxDB Enterprise](/enterprise_influxdb/v1/introduction/installation/). For an overview of the architecture and concepts in an InfluxDB Enterprise cluster, review [Clustering in InfluxDB Enterprise](/enterprise_influxdb/v1/concepts/clustering/). +Review the installation requirements below, and then check out available options to [install and deploy InfluxDB v1 Enterprise](/enterprise_influxdb/v1/introduction/installation/). For an overview of the architecture and concepts in an InfluxDB Enterprise cluster, review [Clustering in InfluxDB v1 Enterprise](/enterprise_influxdb/v1/concepts/clustering/). -## Requirements for InfluxDB Enterprise clusters +## Requirements for InfluxDB Enterprise v1 clusters InfluxDB Enterprise clusters require a license. To use a license key, all nodes in the cluster must be able to contact https://portal.influxdata.com via port `80` or port `443`. If nodes in the cluster cannot communicate with https://portal.influxdata.com, you must use the `license-path` configuration setting. For more information, see [Enterprise license settings](/enterprise_influxdb/v1/administration/config-data-nodes/#enterprise-license-settings). diff --git a/content/enterprise_influxdb/v1/reference/hardware_sizing.md b/content/enterprise_influxdb/v1/reference/hardware_sizing.md index 4adc42885..ddb6a2215 100644 --- a/content/enterprise_influxdb/v1/reference/hardware_sizing.md +++ b/content/enterprise_influxdb/v1/reference/hardware_sizing.md @@ -2,7 +2,7 @@ draft: true title: Hardware sizing guidelines Description: > - Review configuration and hardware guidelines for InfluxDB OSS (open source) and InfluxDB Enterprise. + Review configuration and hardware guidelines for InfluxDB OSS (open source) and InfluxDB Enterprise v1. menu: enterprise_influxdb_1_10_ref weight: 40 aliases: diff --git a/content/enterprise_influxdb/v1/tools/_index.md b/content/enterprise_influxdb/v1/tools/_index.md index 08d66c4b6..d18ac1050 100644 --- a/content/enterprise_influxdb/v1/tools/_index.md +++ b/content/enterprise_influxdb/v1/tools/_index.md @@ -1,7 +1,7 @@ --- -title: InfluxDB Enterprise tools +title: InfluxDB Enterprise v1 tools description: > - Learn more about available tools for working with InfluxDB Enterprise. + Learn more about available tools for working with InfluxDB Enterprise v1. menu: enterprise_influxdb_v1: name: Tools @@ -22,5 +22,5 @@ Use the following tools to work with InfluxDB Enterprise: {{< children >}} ## InfluxDB open source tools -Tools built for InfluxDB OSS v1.8 also work with InfluxDB Enterprise v1.8. +Tools built for InfluxDB OSS v1.8+ also work with InfluxDB v1 Enterprise. For more information, see [InfluxDB tools](/enterprise_influxdb/v1/tools/). diff --git a/content/enterprise_influxdb/v1/tools/grafana.md b/content/enterprise_influxdb/v1/tools/grafana.md index fba4a8810..312626c89 100644 --- a/content/enterprise_influxdb/v1/tools/grafana.md +++ b/content/enterprise_influxdb/v1/tools/grafana.md @@ -1,8 +1,7 @@ --- -title: Use Grafana with InfluxDB Enterprise -seotitle: Use Grafana with InfluxDB Enterprise v1.8 +title: Use Grafana with InfluxDB Enterprise v1 description: > - Configure Grafana to query and visualize data from InfluxDB Enterprise v1.8. + Configure Grafana to query and visualize data from InfluxDB Enterprise v1. menu: enterprise_influxdb_v1: name: Grafana diff --git a/content/enterprise_influxdb/v1/tools/influxd-ctl/_index.md b/content/enterprise_influxdb/v1/tools/influxd-ctl/_index.md index 2250518d1..8462fe1e3 100644 --- a/content/enterprise_influxdb/v1/tools/influxd-ctl/_index.md +++ b/content/enterprise_influxdb/v1/tools/influxd-ctl/_index.md @@ -1,7 +1,7 @@ --- title: influxd-ctl CLI description: > - Use the `influxd-ctl` CLI to manage your InfluxDB Enterprise cluster. + Use the `influxd-ctl` CLI to manage your InfluxDB Enterprise v1 cluster. menu: enterprise_influxdb_v1: weight: 11 diff --git a/content/enterprise_influxdb/v1/tools/influxd-ctl/add-data.md b/content/enterprise_influxdb/v1/tools/influxd-ctl/add-data.md index 7f44c9a14..50384388c 100644 --- a/content/enterprise_influxdb/v1/tools/influxd-ctl/add-data.md +++ b/content/enterprise_influxdb/v1/tools/influxd-ctl/add-data.md @@ -1,7 +1,7 @@ --- title: influxd-ctl add-data description: > - The `influxd-ctl add-data` command adds a data node to an InfluxDB Enterprise cluster. + The `influxd-ctl add-data` command adds a data node to an InfluxDB Enterprise v1 cluster. menu: enterprise_influxdb_v1: parent: influxd-ctl diff --git a/content/enterprise_influxdb/v1/tools/influxd-ctl/add-meta.md b/content/enterprise_influxdb/v1/tools/influxd-ctl/add-meta.md index 120ac96ca..349af486a 100644 --- a/content/enterprise_influxdb/v1/tools/influxd-ctl/add-meta.md +++ b/content/enterprise_influxdb/v1/tools/influxd-ctl/add-meta.md @@ -1,7 +1,7 @@ --- title: influxd-ctl add-meta description: > - The `influxd-ctl add-meta` command adds a meta node to an InfluxDB Enterprise cluster. + The `influxd-ctl add-meta` command adds a meta node to an InfluxDB Enterprise v1 cluster. menu: enterprise_influxdb_v1: parent: influxd-ctl diff --git a/content/enterprise_influxdb/v1/tools/influxd-ctl/backup.md b/content/enterprise_influxdb/v1/tools/influxd-ctl/backup.md index 21f4146b7..0c3e06469 100644 --- a/content/enterprise_influxdb/v1/tools/influxd-ctl/backup.md +++ b/content/enterprise_influxdb/v1/tools/influxd-ctl/backup.md @@ -1,7 +1,7 @@ --- title: influxd-ctl backup description: > - The `influxd-ctl backup` command backs up an InfluxDB Enterprise cluster's + The `influxd-ctl backup` command backs up an InfluxDB Enterprise v1 cluster's [metastore](/enterprise_influxdb/v1/concepts/glossary/#metastore) and [shard](/enterprise_influxdb/v1/concepts/glossary/#shard) data at that point in time and stores the copy in the specified directory. diff --git a/content/enterprise_influxdb/v1/tools/influxd-ctl/ldap/sample-config.md b/content/enterprise_influxdb/v1/tools/influxd-ctl/ldap/sample-config.md index 6ba8f548b..1602024e4 100644 --- a/content/enterprise_influxdb/v1/tools/influxd-ctl/ldap/sample-config.md +++ b/content/enterprise_influxdb/v1/tools/influxd-ctl/ldap/sample-config.md @@ -1,7 +1,7 @@ --- title: influxd-ctl ldap sample-config description: > - The `influxd-ctl ldap sample-config` command prints a sample InfluxDB Enterprise + The `influxd-ctl ldap sample-config` command prints a sample InfluxDB Enterprise v1 LDAP configuration to stdout. menu: enterprise_influxdb_v1: diff --git a/content/enterprise_influxdb/v1/tools/influxd-ctl/show.md b/content/enterprise_influxdb/v1/tools/influxd-ctl/show.md index 85f4baf8a..fcbd4bafd 100644 --- a/content/enterprise_influxdb/v1/tools/influxd-ctl/show.md +++ b/content/enterprise_influxdb/v1/tools/influxd-ctl/show.md @@ -1,7 +1,7 @@ --- title: influxd-ctl show description: > - The `influxd-ctl show` command lists all nodes in an InfluxDB Enterprise cluster. + The `influxd-ctl show` command lists all nodes in an InfluxDB Enterprise v1 cluster. menu: enterprise_influxdb_v1: parent: influxd-ctl diff --git a/content/enterprise_influxdb/v1/troubleshooting/_index.md b/content/enterprise_influxdb/v1/troubleshooting/_index.md index 3d3120f2c..847a829b0 100644 --- a/content/enterprise_influxdb/v1/troubleshooting/_index.md +++ b/content/enterprise_influxdb/v1/troubleshooting/_index.md @@ -1,5 +1,5 @@ --- -title: Troubleshoot InfluxDB Enterprise +title: Troubleshoot InfluxDB Enterprise v1 description: Troubleshoot InfluxDB Enterprise. aliases: - /enterprise/v1.8/troubleshooting/ diff --git a/content/enterprise_influxdb/v1/troubleshooting/frequently-asked-questions.md b/content/enterprise_influxdb/v1/troubleshooting/frequently-asked-questions.md index 1bdaeb897..abbf5b558 100644 --- a/content/enterprise_influxdb/v1/troubleshooting/frequently-asked-questions.md +++ b/content/enterprise_influxdb/v1/troubleshooting/frequently-asked-questions.md @@ -1,5 +1,5 @@ --- -title: InfluxDB Enterprise frequently asked questions +title: InfluxDB Enterprise v1 frequently asked questions description: Common issues with InfluxDB Enterprise. aliases: - /enterprise_influxdb/v1/troubleshooting/frequently_encountered_issues/ diff --git a/content/platform/_index.md b/content/platform/_index.md index 8779e3854..4d988f806 100644 --- a/content/platform/_index.md +++ b/content/platform/_index.md @@ -29,7 +29,7 @@ weight: 1 - [InfluxDB 3 Core](/influxdb3/core/): open source time series database with object storage support and built-in data processing capabilities - [InfluxDB 3 Enterprise](/influxdb3/enterprise/): extends **Core** with clustering, high availability, and advanced security features -- [InfluxDB Clustered 3](/influxdb3/clustered/): a highly available InfluxDB 3 cluster hosted and managed on your own infrastructure +- [InfluxDB Clustered](/influxdb3/clustered/): a highly available InfluxDB 3 cluster hosted and managed using Kubernetes on your own infrastructure ### Hosted diff --git a/data/products.yml b/data/products.yml index d8a0b833f..9889169fa 100644 --- a/data/products.yml +++ b/data/products.yml @@ -268,7 +268,7 @@ kapacitor: - How do I create tasks using InfluxDB 3 Core? enterprise_influxdb: - name: "InfluxDB Enterprise" + name: "InfluxDB Enterprise v1" namespace: enterprise_influxdb menu_category: self-managed list_order: 5 diff --git a/layouts/partials/header/title.html b/layouts/partials/header/title.html index 8383be7e5..e8d6fe4a6 100644 --- a/layouts/partials/header/title.html +++ b/layouts/partials/header/title.html @@ -36,6 +36,8 @@ {{ $scratch.Set "siteTitle" (print "InfluxDB 3 Enterprise Documentation") }} {{ else if eq $currentVersion nil}} {{ $scratch.Set "siteTitle" (print (index .Site.Data.products $product).name " Documentation") }} +{{ else if and (eq $product "enterprise_influxdb") (in $currentVersion "v1")}} + {{ $scratch.Set "siteTitle" "InfluxDB Enterprise v1 Documentation" }} {{ else }} {{ with (index .Site.Data.products $product).altname }} {{ $scratch.Set "siteTitle" (print . " Documentation") }} diff --git a/layouts/shortcodes/enterprise-link.html b/layouts/shortcodes/enterprise-link.html deleted file mode 100644 index b1b18c290..000000000 --- a/layouts/shortcodes/enterprise-link.html +++ /dev/null @@ -1 +0,0 @@ -{{- .Site.Data.products.enterprise.link -}} diff --git a/layouts/shortcodes/enterprise-name.html b/layouts/shortcodes/enterprise-name.html deleted file mode 100644 index 29dd5af9b..000000000 --- a/layouts/shortcodes/enterprise-name.html +++ /dev/null @@ -1,6 +0,0 @@ -{{ $length := .Get 0 | default "long" }} -{{- if eq $length "long" }} - {{- .Site.Data.products.enterprise.name -}} -{{ else if eq $length "short" }} - {{- .Site.Data.products.enterprise.shortname -}} -{{ end -}} From a584807f1fc05ffbf37fb8e2429f8d274e5142e3 Mon Sep 17 00:00:00 2001 From: Jason Stirnaman Date: Sat, 25 Oct 2025 07:42:53 -0500 Subject: [PATCH 32/49] =?UTF-8?q?feat(influxdb3):=20Core/Enterprise:=20Upg?= =?UTF-8?q?rade=20instance=20or=20cluster:-=20Addre=E2=80=A6=20(#6483)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(influxdb3): Core/Enterprise: Upgrade instance or cluster:- Addresses recent internal requests for upgrade steps- Provide examples for Core or Enterprise single node (instance)- Provide steps recommended by Engineering and examples- Link from related pages * Apply suggestion from @sanderson Co-authored-by: Scott Anderson * Apply suggestion from @sanderson Co-authored-by: Scott Anderson * Apply suggestion from @sanderson Co-authored-by: Scott Anderson * Apply suggestion from @sanderson Co-authored-by: Scott Anderson * Apply suggestion from @sanderson Co-authored-by: Scott Anderson * docs(enterprise): clarify catalog version constraints for v3.3.x to v3.4.x upgrade - Specify that catalog modification constraint applies when upgrading from v3.3.x (or earlier) to v3.4.x - Add troubleshooting section noting that different version transitions may have different constraints - Direct users to check release notes for version-specific upgrade requirements Resolves review comment from hiltontj about catalog version boundaries. --------- Co-authored-by: Scott Anderson --- content/influxdb3/core/admin/upgrade.md | 19 + content/influxdb3/core/install.md | 4 +- content/influxdb3/enterprise/admin/upgrade.md | 21 + .../enterprise/get-started/multi-server.md | 2 + .../influxdb3/enterprise/install/_index.md | 4 +- .../enterprise/reference/internals/_index.md | 2 +- content/shared/influxdb3-admin/upgrade.md | 367 ++++++++++++++++++ content/shared/influxdb3/install.md | 4 + 8 files changed, 420 insertions(+), 3 deletions(-) create mode 100644 content/influxdb3/core/admin/upgrade.md create mode 100644 content/influxdb3/enterprise/admin/upgrade.md create mode 100644 content/shared/influxdb3-admin/upgrade.md diff --git a/content/influxdb3/core/admin/upgrade.md b/content/influxdb3/core/admin/upgrade.md new file mode 100644 index 000000000..818391d02 --- /dev/null +++ b/content/influxdb3/core/admin/upgrade.md @@ -0,0 +1,19 @@ +--- +title: Upgrade InfluxDB +description: > + Learn how to upgrade your {{% product-name %}} instance. +menu: + influxdb3_core: + name: Upgrade InfluxDB + parent: Administer InfluxDB +weight: 205 +influxdb3/core/tags: [upgrade, administration, catalog] +related: + - /influxdb3/core/admin/backup-restore/ + - /influxdb3/core/install/ + - /influxdb3/core/reference/config-options/ + - /influxdb3/core/admin/databases/ +source: /shared/influxdb3-admin/upgrade.md +--- + + diff --git a/content/influxdb3/core/install.md b/content/influxdb3/core/install.md index d5f092485..b9f1ec198 100644 --- a/content/influxdb3/core/install.md +++ b/content/influxdb3/core/install.md @@ -1,5 +1,5 @@ --- -title: Install {{< product-name >}} +title: Install InfluxDB 3 Core description: Download and install {{< product-name >}}. menu: influxdb3_core: @@ -9,6 +9,8 @@ influxdb3/core/tags: [install] source: /shared/influxdb3/install.md alt_links: v1: /influxdb/v1/introduction/install/ +related: + - /influxdb3/core/admin/upgrade/ --- diff --git a/content/influxdb3/enterprise/admin/upgrade.md b/content/influxdb3/enterprise/admin/upgrade.md new file mode 100644 index 000000000..b3f07ff06 --- /dev/null +++ b/content/influxdb3/enterprise/admin/upgrade.md @@ -0,0 +1,21 @@ +--- +title: Upgrade InfluxDB +description: > + Learn how to upgrade your {{% product-name %}} cluster across multiple versions, including + rolling upgrades, catalog version constraints, and recommended upgrade order + for different node modes. +menu: + influxdb3_enterprise: + name: Upgrade InfluxDB + parent: Administer InfluxDB +weight: 205 +influxdb3/enterprise/tags: [upgrade, administration, catalog] +related: + - /influxdb3/enterprise/admin/backup-restore/ + - /influxdb3/enterprise/install/ + - /influxdb3/enterprise/reference/config-options/ + - /influxdb3/enterprise/admin/databases/ +source: /shared/influxdb3-admin/upgrade.md +--- + + \ No newline at end of file diff --git a/content/influxdb3/enterprise/get-started/multi-server.md b/content/influxdb3/enterprise/get-started/multi-server.md index edeb42910..69e237a8f 100644 --- a/content/influxdb3/enterprise/get-started/multi-server.md +++ b/content/influxdb3/enterprise/get-started/multi-server.md @@ -11,6 +11,8 @@ menu: identifier: gs-multi-node-cluster weight: 102 influxdb3/enterprise/tags: [cluster, multi-node, multi-server] +related: + - /influxdb3/enterprise/admin/upgrade/ --- Create a multi-node {{% product-name %}} cluster for high availability, performance, and workload isolation. diff --git a/content/influxdb3/enterprise/install/_index.md b/content/influxdb3/enterprise/install/_index.md index ecf3f1d73..4b638f948 100644 --- a/content/influxdb3/enterprise/install/_index.md +++ b/content/influxdb3/enterprise/install/_index.md @@ -1,11 +1,13 @@ --- -title: Install {{< product-name >}} +title: Install InfluxDB 3 Enterprise description: Download and install {{< product-name >}}. menu: influxdb3_enterprise: name: Install InfluxDB 3 Enterprise weight: 2 influxdb3/enterprise/tags: [install] +related: + - /influxdb3/enterprise/admin/upgrade/ source: /shared/influxdb3/install.md alt_links: v1: /influxdb/v1/introduction/install/ diff --git a/content/influxdb3/enterprise/reference/internals/_index.md b/content/influxdb3/enterprise/reference/internals/_index.md index ed98f0368..50949aabb 100644 --- a/content/influxdb3/enterprise/reference/internals/_index.md +++ b/content/influxdb3/enterprise/reference/internals/_index.md @@ -12,5 +12,5 @@ source: /shared/influxdb3-internals-reference/_index.md + +``` +influxdb3 {{% latest-patch %}} +``` + +> [!Tip] +> ### Verify your InfluxDB version +> +> Before and after upgrading, verify the {{% product-name %}} version running on your instance. + +## Upgrade an InfluxDB 3 instance + +{{< tabs-wrapper >}} +{{% tabs %}} +[Install script](#) +[systemctl](#) +[Docker](#) +[Docker Compose](#) +[Windows](#) +{{% /tabs %}} +{{% tab-content %}} +```bash +curl -O https://www.influxdata.com/d/install_influxdb3.sh \ +&& sh install_influxdb3.sh {{< product-key >}} +``` +{{% /tab-content %}} +{{% tab-content %}} +```bash +# 1. Download the new version +curl -L https://dl.influxdata.com/influxdb/releases/influxdb3-{{< product-key >}}-{{< latest-patch >}}_linux_amd64.tar.gz \ + -o influxdb3-{{< product-key >}}.tar.gz + +# 2. Extract the archive +tar xvzf influxdb3-{{< product-key >}}.tar.gz + +# 3. Stop the service +sudo systemctl stop influxdb3 + +# 4. Install the new binary +sudo cp influxdb3 /usr/local/bin/ + +# 5. Start the service +sudo systemctl start influxdb3 +``` +{{% /tab-content %}} +{{% tab-content %}} +```bash { placeholders="CONTAINER_NAME" } +docker stop CONTAINER_NAME +docker pull influxdb:{{< product-key >}} +docker start CONTAINER_NAME +``` + +Replace the following: + +- {{% code-placeholder-key %}}`CONTAINER_NAME`{{% /code-placeholder-key %}}: The name of your {{% product-name %}} container + +{{% /tab-content %}} +{{% tab-content %}} +```bash +docker compose down +docker compose pull +docker compose up -d +``` +{{% /tab-content %}} +{{% tab-content %}} +```powershell +# Download the latest Windows binary +Invoke-WebRequest ` + -Uri "https://dl.influxdata.com/influxdb/releases/influxdb3-{{< product-key >}}-{{< latest-patch >}}-windows_amd64.zip" ` + -OutFile "influxdb3-{{< product-key >}}.zip" + +# Extract the binary +Expand-Archive -Path influxdb3-{{< product-key >}}.zip -DestinationPath . -Force + +# Stop the service, replace the binary, and start the service +Stop-Service influxdb3 +Copy-Item -Path "influxdb3.exe" -Destination "C:\Program Files\InfluxData\influxdb3\" -Force +Start-Service influxdb3 +``` +{{% /tab-content %}} +{{< /tabs-wrapper >}} + +{{% show-in "enterprise" %}} + +## Upgrade a multi-node cluster + +Upgrade {{% product-name %}} instances to newer versions using rolling upgrades to minimize downtime. +When upgrading multi-node clusters, you need to understand catalog version constraints and the recommended upgrade order for different node modes. + +- [Upgrade a single {{% product-name %}} instance](#upgrade-a-single--product-name--instance) +- [Upgrade a multi-node cluster](#upgrade-a-multi-node-cluster) + - [Before you upgrade](#before-you-upgrade) + - [Multi-node upgrade procedure](#multi-node-upgrade-procedure) + - [Upgrade constraints](#upgrade-constraints) + - [Troubleshooting](#troubleshooting) + +### Catalog version compatibility + +{{% product-name %}} uses a catalog to track metadata about tables, tags, and fields. +Some versions introduce catalog version updates that affect how nodes can interoperate during rolling upgrades. + +> [!Important] +> #### Important version transitions +> +> - **3.4.x**: Introduced a catalog version update that requires all nodes to upgrade before catalog modifications can resume. +> - **3.2.x to 3.5.x**: Nodes running 3.2.1 can temporarily coexist with nodes running 3.5.0, but catalog modifications are blocked until all nodes complete the upgrade. + +During a rolling upgrade across a catalog version boundary, nodes running older versions cannot modify the catalog. +This affects writes that add new tables, tags, or fields, but allows writes to existing tables, tags, and fields. + + + +### Multi-node upgrade procedure + +Follow these steps to upgrade your {{% product-name %}} deployment with minimal downtime. + +#### Recommended node upgrade order + +The order in which you upgrade nodes affects the availability of catalog modifications during the upgrade. +Different node modes have different impacts on catalog updates: + +- **Ingest nodes**: Primarily update the catalog when accepting writes that add new tables, tags, or fields via line protocol. +- **Query nodes**: Can accept API requests that update the catalog (for example, `influxdb3 create table`), but less frequently than ingest nodes. +- **Compactor nodes**: Rarely modify the catalog during normal operation. +- **Process nodes**: Process data without modifying the catalog structure. + +**Recommended upgrade order:** + +1. **Ingest nodes**: Upgrade ingest nodes first to restore catalog modification capability as quickly as possible. + If you have multiple ingest nodes and can route traffic while one is down, upgrade them sequentially. +2. **Query nodes**: Upgrade query nodes after upgrading all ingest nodes. +3. **Compactor nodes**: Upgrade compactor nodes last, as they have minimal impact on catalog modifications. +4. **Process nodes**: Can be upgraded at any time, as they don't modify the catalog. + +#### Perform a rolling upgrade + +Follow these steps to upgrade each node in your deployment: + +{{< tabs-wrapper >}} +{{% tabs %}} +[systemctl](#) +[Docker](#) +[Docker Compose](#) +{{% /tabs %}} +{{% tab-content %}} + +```bash +# 1. Stop the service +sudo systemctl stop influxdb3 + +# 2. Install the new version +# Follow the installation instructions for your platform: +# https://docs.influxdata.com/influxdb3/enterprise/install/ + +# 3. Start the service +sudo systemctl start influxdb3 + +# 4. Verify the version +influxdb3 --version + +# 5. Check the node's health +influxdb3 query \ + --database _internal \ + --token ADMIN_TOKEN \ + "SELECT * FROM system.queries LIMIT 5" +``` + +Replace the following: + +- {{% code-placeholder-key %}}`ADMIN_TOKEN`{{% /code-placeholder-key %}}: An admin token + +{{% /tab-content %}} +{{% tab-content %}} + +```bash { placeholders="CONTAINER_NAME|NODE_ID|CLUSTER_ID|OBJECT_STORE_TYPE|ADMIN_TOKEN" } +# 1. Stop the container +docker stop CONTAINER_NAME + +# 2. Pull the latest image +docker pull influxdb:enterprise + +# 3. Start the container with the new image +# IMPORTANT: Adjust the docker run command to match your existing +# container configuration, including environment variables, volume mounts, +# object store settings, and network settings. +docker run -d \ + --name CONTAINER_NAME \ + -p 8181:8181 \ + -e INFLUXDB3_ENTERPRISE_LICENSE_EMAIL=your-email@example.com \ + -v ~/.influxdb3/data:/var/lib/influxdb3/data \ + influxdb:enterprise \ + influxdb3 serve \ + --node-id NODE_ID \ + --cluster-id CLUSTER_ID \ + --object-store OBJECT_STORE_TYPE \ + --data-dir /var/lib/influxdb3/data + +# 4. Verify the version +docker exec CONTAINER_NAME influxdb3 --version + +# 5. Check the node's health +docker exec CONTAINER_NAME influxdb3 query \ + --database _internal \ + --token ADMIN_TOKEN \ + "SELECT * FROM system.queries LIMIT 5" +``` + +Replace the following: + +- {{% code-placeholder-key %}}`CONTAINER_NAME`{{% /code-placeholder-key %}}: The name of your {{% product-name %}} container +- {{% code-placeholder-key %}}`NODE_ID`{{% /code-placeholder-key %}}: The node identifier for this instance +- {{% code-placeholder-key %}}`CLUSTER_ID`{{% /code-placeholder-key %}}: The cluster identifier for your deployment +- {{% code-placeholder-key %}}`OBJECT_STORE_TYPE`{{% /code-placeholder-key %}}: The object store type (for example, `file`, `s3`, `azure`, or `google`) +- {{% code-placeholder-key %}}`ADMIN_TOKEN`{{% /code-placeholder-key %}}: An admin token + +> [!Note] +> #### Use the influxdb:enterprise image tag +> +> The `influxdb:enterprise` tag always points to the latest InfluxDB 3 Enterprise release. +> Use `docker pull influxdb:enterprise` to pull the latest version, or specify a version tag directly (for example, `influxdb:{{< latest-patch >}}-enterprise`) to upgrade to a specific version. + +> [!Important] +> If you use a cloud object store (S3, Azure, or Google Cloud), include the appropriate credentials and bucket configuration in the `docker run` command. + +{{% /tab-content %}} +{{% tab-content %}} + +```bash { placeholders="ADMIN_TOKEN" } +# 1. Stop the services +docker compose down + +# 2. Update the image in your compose.yaml file +# Change the image version to: influxdb:enterprise + +# 3. Start the services with the new image +docker compose up -d + +# 4. Verify the version +docker compose exec influxdb3 influxdb3 --version + +# 5. Check the node's health +docker compose exec influxdb3 influxdb3 query \ + --database _internal \ + --token ADMIN_TOKEN \ + "SELECT * FROM system.queries LIMIT 5" +``` + +Replace the following: + +- {{% code-placeholder-key %}}`ADMIN_TOKEN`{{% /code-placeholder-key %}}: An admin token + +> [!Note] +> #### Use the influxdb:enterprise image tag +> +> The `influxdb:enterprise` tag always points to the latest InfluxDB 3 Enterprise release. +> Update the `image:` field in your `compose.yaml` to `influxdb:enterprise` to pull the latest version, or specify a version tag directly (for example, `influxdb:{{< latest-patch >}}-enterprise`) to upgrade to a specific version. +{{% /tab-content %}} +{{< /tabs-wrapper >}} + +**Repeat these steps** for each remaining node in the recommended order. + +### Rolling upgrade constraints + +Understand the constraints that apply during rolling upgrades to avoid unexpected write failures. + +#### Writes during catalog version transitions + +When upgrading from v3.3.x (or earlier) to v3.4.x, nodes running older versions cannot modify the catalog during the rolling upgrade. + +**Behavior by write type:** + +- **Writes to existing measurements, tags, and fields**: Succeed on all nodes, regardless of version. +- **Writes that add new measurements, tags, or fields**: Fail on nodes running older versions until those nodes are upgraded. + +For example, if you're upgrading from 3.2.1 to 3.5.0: + +- An ingest node running 3.2.1 can write data to existing measurements. +- An ingest node running 3.2.1 cannot write data that adds new measurements, tags, or fields. +- After upgrading the ingest node to 3.5.0, it can write data that adds new measurements, tags, or fields. + +When a node running an older version receives a write that attempts to add a new +measurement, the write fails with an error similar to: + + + +``` +Error: Catalog modification failed: node is running an older version +``` + +### Troubleshooting cluster upgrades + +#### Writes fail during upgrade + +If writes fail during a rolling upgrade, verify that you're not attempting to add new measurements, tags, or fields to nodes running older versions. + +1. **Check the write payload** to determine if it adds new measurements, tags, or fields +2. **Verify the node version** that received the write +3. **Route writes to upgraded nodes** or wait until all nodes complete the upgrade before adding new measurements, tags, or fields + +#### Upgrade order issues + +If you upgrade nodes out of the [recommended order](#recommended-node-upgrade-order), you may experience longer periods where catalog modifications are blocked. + +#### Version compatibility problems + +If nodes fail to communicate after an upgrade, verify that all nodes are running compatible versions. + +1. **Connect to each node** and [verify the version](#verify-your-current-version) +2. Review the [release notes](/influxdb3/enterprise/reference/release-notes/) for your target version to identify any breaking changes or compatibility requirements. + +#### Catalog version constraints + +Different version transitions may have different catalog version constraints. +The v3.3.x โ†’ v3.4.x transition has specific constraints, but other version transitions may differ. + +**Before upgrading**, review the [release notes](/influxdb3/enterprise/reference/release-notes/) for your target version to understand: + +- Whether the upgrade crosses a catalog version boundary +- How long catalog modifications may be blocked during the upgrade +- Any special upgrade procedures or constraints + +{{% /show-in %}} \ No newline at end of file diff --git a/content/shared/influxdb3/install.md b/content/shared/influxdb3/install.md index 6523e8a47..55f63e35e 100644 --- a/content/shared/influxdb3/install.md +++ b/content/shared/influxdb3/install.md @@ -8,8 +8,12 @@ {{% show-in "enterprise" %}} > [!Note] +> #### Multi-node cluster setup > For information about setting up a multi-node {{% product-name %}} cluster, > see [Create a multi-node cluster](/influxdb3/enterprise/get-started/multi-server/) in the Get started guide. +> +> For steps to upgrade an existing InfluxDB 3 Enterprise cluster, +> see [Upgrade InfluxDB](/influxdb3/enterprise/admin/upgrade/). {{% /show-in %}} ## System Requirements From 5169477f52a6477dccc49c0012cd41d2316e76db Mon Sep 17 00:00:00 2001 From: peterbarnett03 Date: Mon, 27 Oct 2025 11:34:36 -0400 Subject: [PATCH 33/49] fix: Add '--database' flag to update database commands (#6491) Had user feedback and have validated the flag is needed. --- content/shared/influxdb3-cli/update/database/_index.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/content/shared/influxdb3-cli/update/database/_index.md b/content/shared/influxdb3-cli/update/database/_index.md index d73b9ea15..4ae057a37 100644 --- a/content/shared/influxdb3-cli/update/database/_index.md +++ b/content/shared/influxdb3-cli/update/database/_index.md @@ -80,7 +80,7 @@ Updates a database retention period to 30 days. ```bash{placeholders="DATABASE_NAME|AUTH_TOKEN"} -influxdb3 update database --retention-period 30d DATABASE_NAME +influxdb3 update database --retention-period 30d --database DATABASE_NAME ``` ### Clear a database retention period @@ -90,7 +90,7 @@ Removes the retention period from a database by setting it to `none`. ```bash{placeholders="DATABASE_NAME|AUTH_TOKEN"} -influxdb3 update database --retention-period none DATABASE_NAME +influxdb3 update database --retention-period none --database DATABASE_NAME ``` ### Update a database with authentication @@ -100,7 +100,7 @@ Updates a database using an authentication token. ```bash{placeholders="DATABASE_NAME|AUTH_TOKEN"} -influxdb3 update database --token AUTH_TOKEN --retention-period 7d DATABASE_NAME +influxdb3 update database --token AUTH_TOKEN --retention-period 7d --database DATABASE_NAME ``` -{{% /show-in %}} \ No newline at end of file +{{% /show-in %}} From a43a880f2f301ee42408988faad84945c22526a3 Mon Sep 17 00:00:00 2001 From: Scott Anderson Date: Mon, 27 Oct 2025 19:19:00 -0400 Subject: [PATCH 34/49] hotfix: Add support for .msi and .pqx file types --- deploy/edge.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/deploy/edge.js b/deploy/edge.js index ffd6961d5..28fc5c151 100644 --- a/deploy/edge.js +++ b/deploy/edge.js @@ -74,8 +74,10 @@ exports.handler = (event, context, callback) => { '.md': true, '.md5': true, '.markdown': true, + '.msi': true, '.otf': true, '.png': true, + '.pqx': true, '.rb': true, '.sha256': true, '.svg': true, From e3bfd39489b43bd9583e337d305ee85d360fd458 Mon Sep 17 00:00:00 2001 From: Jason Stirnaman Date: Mon, 27 Oct 2025 20:59:08 -0400 Subject: [PATCH 35/49] chore(instructions): Agents file initial commit (#6492) --- AGENTS.md | 232 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 232 insertions(+) create mode 100644 AGENTS.md diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 000000000..dba21ffa6 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,232 @@ +# InfluxData Documentation (docs-v2) + +> **For AI agents working with the InfluxData documentation repository** + +## Project Overview + +This repository powers [docs.influxdata.com](https://docs.influxdata.com), a Hugo-based static documentation site covering InfluxDB 3, InfluxDB v2/v1, Telegraf, and related products. + +**Key Characteristics:** +- **Scale**: 5,359+ pages +- **Build time**: ~75 seconds (NEVER cancel Hugo builds) +- **Tech stack**: Hugo, Node.js, Docker, Vale, Pytest, Cypress +- **Test time**: 15-45 minutes for full code block tests + +## Quick Commands + +| Task | Command | Time | +|------|---------|------| +| Install dependencies | `CYPRESS_INSTALL_BINARY=0 yarn install` | ~4s | +| Build site | `npx hugo --quiet` | ~75s | +| Dev server | `npx hugo server` | ~92s | +| Test code blocks | `yarn test:codeblocks:all` | 15-45m | +| Lint | `yarn lint` | ~1m | + +## Repository Structure + +``` +docs-v2/ +โ”œโ”€โ”€ content/ # Documentation content +โ”‚ โ”œโ”€โ”€ influxdb3/ # InfluxDB 3 (core, enterprise, cloud-*) +โ”‚ โ”œโ”€โ”€ influxdb/ # InfluxDB v2 and v1 +โ”‚ โ”œโ”€โ”€ enterprise_influxdb/ # InfluxDB Enterprise v1 +โ”‚ โ”œโ”€โ”€ telegraf/ # Telegraf docs +โ”‚ โ”œโ”€โ”€ shared/ # Shared content across products +โ”‚ โ””โ”€โ”€ example.md # Shortcode testing playground +โ”œโ”€โ”€ layouts/ # Hugo templates and shortcodes +โ”œโ”€โ”€ assets/ # JS, CSS, TypeScript +โ”œโ”€โ”€ api-docs/ # OpenAPI specifications +โ”œโ”€โ”€ data/ # YAML/JSON data files +โ”œโ”€โ”€ public/ # Build output (gitignored, ~529MB) +โ””โ”€โ”€ .github/ + โ””โ”€โ”€ copilot-instructions.md # Primary AI instructions +``` + +**Content Paths**: See [copilot-instructions.md](.github/copilot-instructions.md#content-organization) + +## Common Workflows + +### Editing a page in your browser + +1. Navigate to the desired page on [docs.influxdata.com](https://docs.influxdata.com) +2. Click the "Edit this page" link at the bottom +3. Make changes in the GitHub web editor +4. Commit changes via a pull request + +### Creating/Editing Content Manually + +**Frontmatter** (page metadata): +```yaml +title: Page Title # Required - becomes h1 +description: Brief desc # Required - for SEO +menu: + influxdb_2_0: + name: Nav Label # Optional - nav display name + parent: Parent Node # Optional - for nesting +weight: 1 # Required - sort order +``` + +**Shared Content** (avoid duplication): +```yaml +source: /shared/path/to/content.md +``` + +Shared content files (`/shared/path/to/content.md`): +- Don't store frontmatter +- Can use `{{% show-in %}}`, `{{% hide-in %}}`, and the `version` keyword (`/influxdb3/version/content.md`) + +**Common Shortcodes**: +- Callouts: `> [!Note]`, `> [!Warning]`, `> [!Important]`, `> [!Tip]` +- Tabs: `{{< tabs-wrapper >}}` + `{{% tabs %}}` + `{{% tab-content %}}` +- Required: `{{< req >}}` or `{{< req type="key" >}}` +- Code placeholders: `{ placeholders="" }` + +**๐Ÿ“– Complete Reference**: [DOCS-SHORTCODES.md](DOCS-SHORTCODES.md) | [DOCS-FRONTMATTER.md](DOCS-FRONTMATTER.md) + +### Testing Changes + +**Always test before committing**: +```bash +# Verify server renders (check 200 status) +curl -s -o /dev/null -w "%{http_code}" http://localhost:1313/influxdb3/core/ + +# Test specific content +yarn test:links content/influxdb3/core/**/*.md + +# Run style linting +docker compose run -T vale content/**/*.md +``` + +**๐Ÿ“– Complete Reference**: [DOCS-TESTING.md](DOCS-TESTING.md) + +### Committing Changes + +**Commit Message Format**: +``` +type(scope): description + +Examples: +- fix(enterprise): correct Docker environment variable +- feat(influxdb3): add new plugin documentation +- docs(core): update configuration examples +``` + +**Types**: `fix`, `feat`, `style`, `refactor`, `test`, `chore` + +**Scopes**: `enterprise`, `influxdb3`, `core`, `cloud`, `telegraf`, etc. + +**Pre-commit hooks** run automatically (Vale, Prettier, tests). Skip with: +```bash +git commit -m "message" --no-verify +``` + +**๐Ÿ“– Complete Reference**: [DOCS-CONTRIBUTING.md](DOCS-CONTRIBUTING.md#commit-guidelines) + +## Key Patterns + +### Content Organization + +- **Product versions**: Managed in `/data/products.yml` +- **Semantic line feeds**: One sentence per line for better diffs +- **Heading hierarchy**: Use h2-h6 only (h1 auto-generated from frontmatter) +- **Image naming**: `project/version-context-description.png` + +### Code Examples + +**Testable code blocks** (pytest): +```python +print("Hello, world!") +``` + + + +``` +Hello, world! +``` + +**Language identifiers**: Use `python` not `py`, `bash` not `sh` (for pytest collection) + +### API Documentation + +- **Location**: `/api-docs/` directory +- **Format**: OpenAPI 3.0 YAML +- **Generation**: Uses Redoc + custom processing +- **๐Ÿ“– Workflow**: [api-docs/README.md](api-docs/README.md) + +### JavaScript/TypeScript + +- **Entry point**: `assets/js/main.js` +- **Pattern**: Component-based with `data-component` attributes +- **Debugging**: Source maps or debug helpers available +- **๐Ÿ“– Details**: [DOCS-CONTRIBUTING.md](DOCS-CONTRIBUTING.md#javascript-in-the-documentation-ui) + +## Important Constraints + +### Performance +- **NEVER cancel Hugo builds** - they take ~75s normally +- **NEVER cancel test runs** - code block tests take 15-45 minutes +- **Set timeouts**: Hugo (180s+), tests (30+ minutes) + +### Style Guidelines +- Use Google Developer Documentation style +- Active voice, present tense, second person for instructions +- No emojis unless explicitly requested +- Use long options in CLI examples (`--option` vs `-o`) +- Format code blocks within 80 characters + +### Network Restrictions +Some operations may fail in restricted environments: +- Docker builds requiring external repos +- `docker compose up local-dev` (Alpine packages) +- Cypress installation (use `CYPRESS_INSTALL_BINARY=0`) + +## Documentation References + +| Document | Purpose | +|----------|---------| +| [DOCS-CONTRIBUTING.md](DOCS-CONTRIBUTING.md) | Contribution workflow, style guidelines | +| [DOCS-TESTING.md](DOCS-TESTING.md) | Testing procedures (code blocks, links, linting) | +| [DOCS-SHORTCODES.md](DOCS-SHORTCODES.md) | Complete shortcode reference | +| [DOCS-FRONTMATTER.md](DOCS-FRONTMATTER.md) | Complete frontmatter field reference | +| [.github/copilot-instructions.md](.github/copilot-instructions.md) | Primary AI assistant instructions | +| [api-docs/README.md](api-docs/README.md) | API documentation workflow | +| [content/example.md](content/example.md) | Live shortcode examples for testing | + +## Specialized Topics + +### Working with Specific Products + +| Product | Content Path | Special Notes | +|---------|-------------|---------------| +| InfluxDB 3 Core | `/content/influxdb3/core/` | Latest architecture | +| InfluxDB 3 Enterprise | `/content/influxdb3/enterprise/` | Core + licensed features, clustered | +| InfluxDB Cloud Dedicated | `/content/influxdb3/cloud-dedicated/`, `/content/influxdb3/cloud-serverless/` | Managed and distributed | +| InfluxDB Clustered | `/content/influxdb3/clustered/` | Self-managed and distributed | +| InfluxDB Cloud | `/content/influxdb/cloud/` | Legacy but active | +| InfluxDB v2 | `/content/influxdb/v2/` | Legacy but active | +| InfluxDB Enterprise v1 | `/content/enterprise_influxdb/v1/` | Legacy but active enterprise, clustered | + +### Advanced Tasks + +- **Vale configuration**: `.ci/vale/styles/` for custom rules +- **Link checking**: Uses custom `link-checker` binary +- **Docker testing**: `compose.yaml` defines test services +- **Lefthook**: Git hooks configuration in `lefthook.yml` + +## Troubleshooting + +| Issue | Solution | +|-------|----------| +| Pytest collected 0 items | Use `python` not `py` for code block language | +| Hugo build errors | Check `/config/_default/` configuration | +| Link validation slow | Test specific files: `yarn test:links content/file.md` | +| Vale errors | Check `.ci/vale/styles/config/vocabularies` | + +## Critical Reminders + +1. **Be a critical thinking partner** - Challenge assumptions, identify issues +2. **Test before committing** - Run relevant tests locally +3. **Reference, don't duplicate** - Link to detailed docs instead of copying +4. **Respect build times** - Don't cancel long-running operations +5. **Follow conventions** - Use established patterns for consistency + From 56c173ec337677c176f9e44b019a64efcefbc3d1 Mon Sep 17 00:00:00 2001 From: Jason Stirnaman Date: Mon, 27 Oct 2025 21:14:05 -0400 Subject: [PATCH 36/49] chore(instruction): content/shared instructions: (#6493) * chore(instruction): content/shared instructions: * Apply suggestion from @jstirnaman --- content/shared/README.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/content/shared/README.md b/content/shared/README.md index 232c6a7fc..1050db1ac 100644 --- a/content/shared/README.md +++ b/content/shared/README.md @@ -1,25 +1,27 @@ # Shared content This section is for content shared across multiple products and versions. -The `/shared/_index.md` frontmatter, marks the `/shared` directory and its -children as draft so they -don't get rendered when the site is built, but the contents of each shared -documented is included in pages that use the file as a `source` in their -frontmatter. +The `/shared/_index.md` frontmatter marks the `/shared` directory (`/content/shared`) and its +children as draft so they don't get rendered independently when the site is built. +The content of each shared document is included and rendered in pages that reference the +file as a `source` in their frontmatter. ## Use shared content -1. Create a new folder for the content in the `content/shared/` directory. +1. Create a new folder for the content in the `/content/shared/` directory. 2. Copy the markdown files into the new folder. -3. Remove the frontmatter from the markdown files in the shared directory. If the first line starts with a shortcode, add an HTML comment before the first line, otherwise hugo will err. +3. Remove any frontmatter from the markdown files in the shared directory. If the first line starts with a shortcode, add an HTML comment before the first line, otherwise Hugo will err. 4. In each of the files that use the shared content, add a source to the frontmatter that points to the shared markdown fileโ€”for example: ```markdown source: /shared/influxql-v3-reference/regular-expressions.md ``` -5. In the doc body, remove the shared Markdown text and add a comment that points to the shared file, in case someone happens upon the page in the repo--for example, in `/content/3/core/reference/influxql/regular-expressions.md`, add the following: +5. In the doc body, remove the shared Markdown text and add a comment that points to the shared file, in case someone happens upon the page in the repo--for example, in `/content/influxdb3/core/reference/influxql/regular-expressions.md`, add the following: + +`//SOURCE` is a comment anchor (recognized by the Comment Anchors editor extension) +to make the file path clickable. From 624c6ad0d8136abc9d1b7ad7a2797254f0a3436c Mon Sep 17 00:00:00 2001 From: Jason Stirnaman Date: Mon, 27 Oct 2025 21:24:25 -0400 Subject: [PATCH 37/49] Jts contrib and linting fixes (#6494) * feat(ci): improve linting configuration for instruction files - Add GitHub-flavored Markdown support with remark-gfm - Create generic Vale config (.vale-instructions.ini) for instruction files - Use pattern-based file inclusion instead of explicit file lists - Mount repository to /workdir in remark-lint container to preserve node_modules Changes: - Add remark-gfm to .ci/remark-lint/package.json - Create .remarkrc.yaml at repository root for instruction files - Update content/.remarkrc.yaml to include remark-gfm - Create .vale-instructions.ini for generic writing rules - Update compose.yaml: mount repo to /workdir (preserves /app/node_modules) - Update lefthook.yml: use glob patterns for uppercase .md files and .github/**/*.md - Update DOCS-CONTRIBUTING.md: remove empty CONTRIBUTING.md directory reference Benefits: - Automatic inclusion of new instruction files without config updates - Pattern matching for uppercase .md files (DOCS-*.md, CLAUDE.md, etc.) - Coverage for .github/, .claude/, api-docs/ directories - GFM features: tables, task lists, strikethrough, autolinks, footnotes - Separate linting rules for instruction files vs product documentation feat(lint): separate remark-lint auto-fix for instructions vs report-only for content - Split lint-markdown into two hooks: - lint-markdown-instructions: Auto-fixes README, DOCS-*.md, .github/**, .claude/** - lint-markdown-content: Reports issues in content/**, api-docs/** without modifying - Changed remark-lint volume mount from read_only: true to read_only: false - Instruction files now behave like Prettier (auto-fix + stage) - Content files report errors and block commits until manually fixed * chore(instructions): Add content/shared details, husky/lefthook updates --- .ci/remark-lint/package.json | 1 + .ci/vale/styles/.vale-config/1-Hugo.ini | 10 ------- .husky/_/pre-commit | 16 ++++++++-- .husky/_/pre-push | 16 ++++++++-- .husky/_/prepare-commit-msg | 16 ++++++++-- .remarkrc.yaml | 9 ++++++ .vale-instructions.ini | 13 +++++++++ DOCS-CONTRIBUTING.md | 4 +++ compose.yaml | 13 +++++---- content/.remarkrc.yaml | 1 + lefthook.yml | 39 ++++++++++++++++++++++--- 11 files changed, 112 insertions(+), 26 deletions(-) delete mode 100644 .ci/vale/styles/.vale-config/1-Hugo.ini create mode 100644 .remarkrc.yaml create mode 100644 .vale-instructions.ini diff --git a/.ci/remark-lint/package.json b/.ci/remark-lint/package.json index cc6d1d69e..3ba9a210a 100644 --- a/.ci/remark-lint/package.json +++ b/.ci/remark-lint/package.json @@ -3,6 +3,7 @@ "license": "MIT", "devDependencies": { "remark-cli": "12.0.1", + "remark-gfm": "4.0.1", "remark-preset-lint-consistent": "6.0.0", "remark-preset-lint-markdown-style-guide": "6.0.0", "remark-preset-lint-recommended": "7.0.0", diff --git a/.ci/vale/styles/.vale-config/1-Hugo.ini b/.ci/vale/styles/.vale-config/1-Hugo.ini deleted file mode 100644 index 4347ca9e9..000000000 --- a/.ci/vale/styles/.vale-config/1-Hugo.ini +++ /dev/null @@ -1,10 +0,0 @@ -[*.md] -# Exclude `{{< ... >}}`, `{{% ... %}}`, [Who]({{< ... >}}) -TokenIgnores = ({{[%<] .* [%>]}}.*?{{[%<] ?/.* [%>]}}), \ -(\[.+\]\({{< .+ >}}\)), \ -[^\S\r\n]({{[%<] \w+ .+ [%>]}})\s, \ -[^\S\r\n]({{[%<](?:/\*) .* (?:\*/)[%>]}})\s - -# Exclude `{{< myshortcode `This is some HTML, ... >}}` -BlockIgnores = (?sm)^({{[%<] \w+ [^{]*?\s[%>]}})\n$, \ -(?s) *({{< highlight [^>]* ?>}}.*?{{< ?/ ?highlight >}}) diff --git a/.husky/_/pre-commit b/.husky/_/pre-commit index 4855f6124..710b28856 100755 --- a/.husky/_/pre-commit +++ b/.husky/_/pre-commit @@ -33,6 +33,9 @@ call_lefthook() then "$dir/node_modules/lefthook/bin/index.js" "$@" + elif go tool lefthook -h >/dev/null 2>&1 + then + go tool lefthook "$@" elif bundle exec lefthook -h >/dev/null 2>&1 then bundle exec lefthook "$@" @@ -42,12 +45,21 @@ call_lefthook() elif pnpm lefthook -h >/dev/null 2>&1 then pnpm lefthook "$@" - elif swift package plugin lefthook >/dev/null 2>&1 + elif swift package lefthook >/dev/null 2>&1 then - swift package --disable-sandbox plugin lefthook "$@" + swift package --build-path .build/lefthook --disable-sandbox lefthook "$@" elif command -v mint >/dev/null 2>&1 then mint run csjones/lefthook-plugin "$@" + elif uv run lefthook -h >/dev/null 2>&1 + then + uv run lefthook "$@" + elif mise exec -- lefthook -h >/dev/null 2>&1 + then + mise exec -- lefthook "$@" + elif devbox run lefthook -h >/dev/null 2>&1 + then + devbox run lefthook "$@" else echo "Can't find lefthook in PATH" fi diff --git a/.husky/_/pre-push b/.husky/_/pre-push index a0d96ef93..17b532e00 100755 --- a/.husky/_/pre-push +++ b/.husky/_/pre-push @@ -33,6 +33,9 @@ call_lefthook() then "$dir/node_modules/lefthook/bin/index.js" "$@" + elif go tool lefthook -h >/dev/null 2>&1 + then + go tool lefthook "$@" elif bundle exec lefthook -h >/dev/null 2>&1 then bundle exec lefthook "$@" @@ -42,12 +45,21 @@ call_lefthook() elif pnpm lefthook -h >/dev/null 2>&1 then pnpm lefthook "$@" - elif swift package plugin lefthook >/dev/null 2>&1 + elif swift package lefthook >/dev/null 2>&1 then - swift package --disable-sandbox plugin lefthook "$@" + swift package --build-path .build/lefthook --disable-sandbox lefthook "$@" elif command -v mint >/dev/null 2>&1 then mint run csjones/lefthook-plugin "$@" + elif uv run lefthook -h >/dev/null 2>&1 + then + uv run lefthook "$@" + elif mise exec -- lefthook -h >/dev/null 2>&1 + then + mise exec -- lefthook "$@" + elif devbox run lefthook -h >/dev/null 2>&1 + then + devbox run lefthook "$@" else echo "Can't find lefthook in PATH" fi diff --git a/.husky/_/prepare-commit-msg b/.husky/_/prepare-commit-msg index 2655902bc..6efab23a3 100755 --- a/.husky/_/prepare-commit-msg +++ b/.husky/_/prepare-commit-msg @@ -33,6 +33,9 @@ call_lefthook() then "$dir/node_modules/lefthook/bin/index.js" "$@" + elif go tool lefthook -h >/dev/null 2>&1 + then + go tool lefthook "$@" elif bundle exec lefthook -h >/dev/null 2>&1 then bundle exec lefthook "$@" @@ -42,12 +45,21 @@ call_lefthook() elif pnpm lefthook -h >/dev/null 2>&1 then pnpm lefthook "$@" - elif swift package plugin lefthook >/dev/null 2>&1 + elif swift package lefthook >/dev/null 2>&1 then - swift package --disable-sandbox plugin lefthook "$@" + swift package --build-path .build/lefthook --disable-sandbox lefthook "$@" elif command -v mint >/dev/null 2>&1 then mint run csjones/lefthook-plugin "$@" + elif uv run lefthook -h >/dev/null 2>&1 + then + uv run lefthook "$@" + elif mise exec -- lefthook -h >/dev/null 2>&1 + then + mise exec -- lefthook "$@" + elif devbox run lefthook -h >/dev/null 2>&1 + then + devbox run lefthook "$@" else echo "Can't find lefthook in PATH" fi diff --git a/.remarkrc.yaml b/.remarkrc.yaml new file mode 100644 index 000000000..e022793fc --- /dev/null +++ b/.remarkrc.yaml @@ -0,0 +1,9 @@ +settings: + bullet: "-" + +plugins: + # GitHub-flavored Markdown support (tables, task lists, strikethrough, etc.) + - remark-gfm + - remark-frontmatter + # Check that markdown is consistent (list items have the same indentation) + - remark-preset-lint-consistent diff --git a/.vale-instructions.ini b/.vale-instructions.ini new file mode 100644 index 000000000..d1ee502b1 --- /dev/null +++ b/.vale-instructions.ini @@ -0,0 +1,13 @@ +StylesPath = .ci/vale/styles + +MinAlertLevel = warning + +# Use general technical writing packages +Packages = write-good + +[*.md] +# Base styles focused on clarity and consistency +BasedOnStyles = Vale, write-good + +# Disable style rules that are too opinionated for instruction files +Vale.Spelling = NO diff --git a/DOCS-CONTRIBUTING.md b/DOCS-CONTRIBUTING.md index a505f2a97..cceff8c3c 100644 --- a/DOCS-CONTRIBUTING.md +++ b/DOCS-CONTRIBUTING.md @@ -120,6 +120,10 @@ docs-v2 contains a `./.vscode/settings.json` that configures the following exten ### Style Guidelines +#### Content Guidelines + +Content follows Google Developer Documentation Style Guide and YouTube API documentation patterns with a few InfluxData-specific adaptations. + #### Markdown Most docs-v2 documentation content uses [Markdown](https://en.wikipedia.org/wiki/Markdown). diff --git a/compose.yaml b/compose.yaml index fbeb8196c..5d3887a13 100644 --- a/compose.yaml +++ b/compose.yaml @@ -511,17 +511,18 @@ services: remark-lint: container_name: remark-lint build: - context: . + context: . dockerfile: .ci/Dockerfile.remark profiles: - lint volumes: + # Mount repository to /workdir to avoid overwriting /app/ node_modules + # Remark will receive paths like /workdir/content/file.md or /workdir/README.md + # Writable mount allows auto-fixing instruction files (README.md, DOCS-*.md, etc.) - type: bind - source: ./content - target: /app/content - - type: bind - source: ./CONTRIBUTING.md - target: /app/CONTRIBUTING.md + source: . + target: /workdir + read_only: false volumes: test-content: cloud-tmp: diff --git a/content/.remarkrc.yaml b/content/.remarkrc.yaml index 48bb1a365..9b2fee227 100644 --- a/content/.remarkrc.yaml +++ b/content/.remarkrc.yaml @@ -4,6 +4,7 @@ settings: plugins: # Before you can configure plugins for remark here, you need to add them to # the `devDependencies` in the `package.json` file--for CI: `/.ci/app/package.json`. + - remark-gfm - remark-frontmatter - remark-lint-frontmatter-schema - remark-lint-no-shell-dollars diff --git a/lefthook.yml b/lefthook.yml index e528b285f..175fbfd48 100644 --- a/lefthook.yml +++ b/lefthook.yml @@ -12,12 +12,43 @@ pre-commit: build-agent-instructions: glob: "data/products.yml" run: yarn build:agent:instructions - # Report linting warnings and errors, don't output files to stdout - lint-markdown: + # Auto-fix markdown formatting for instruction and README files (like prettier) + lint-markdown-instructions: tags: lint - glob: "{README.md,DOCS-*.md,api-docs/README.md,content/*.md}" + glob: "{README.md,*[A-Z]*.md,.github/**/*.md,.claude/**/*.md}" run: | - docker compose run --rm --name remark-lint remark-lint '{staged_files}' + # Prepend /workdir/ to staged files since repository is mounted at /workdir in container + files=$(echo '{staged_files}' | sed 's|^|/workdir/|g; s| | /workdir/|g') + docker compose run --rm --name remark-lint remark-lint $files --output --quiet || \ + { echo "โš ๏ธ Remark found formatting issues in instruction files. Automatic formatting applied."; } + stage_fixed: true + # Report markdown formatting issues in content/api-docs without auto-fixing + lint-markdown-content: + tags: lint + glob: "{api-docs/**/*.md,content/**/*.md}" + run: | + # Prepend /workdir/ to staged files since repository is mounted at /workdir in container + files=$(echo '{staged_files}' | sed 's|^|/workdir/|g; s| | /workdir/|g') + # Run remark to check for formatting differences (without --output, shows diff in stdout) + # If output differs from input, fail the commit + for file in $files; do + original=$(cat "${file#/workdir/}") + formatted=$(docker compose run --rm --name remark-lint-content remark-lint "$file" 2>/dev/null | tail -n +2) + if [ "$original" != "$formatted" ]; then + echo "โŒ Markdown formatting issues in ${file#/workdir/}" + echo " Run: docker compose run --rm remark-lint $file --output" + echo " Or manually fix the formatting to match remark style" + exit 1 + fi + done + echo "โœ… All content files are properly formatted" + # Lint instruction and repository documentation files with generic Vale config + lint-instructions: + tags: lint + glob: "{README.md,*[A-Z]*.md,.github/**/*.md,.claude/**/*.md,api-docs/README.md}" + run: '.ci/vale/vale.sh + --config=.vale-instructions.ini + --minAlertLevel=warning {staged_files}' cloud-lint: tags: lint,v2 glob: 'content/influxdb/cloud/*.md' From 56b459659da5546b680d35945a63b033bfed43bf Mon Sep 17 00:00:00 2001 From: Jason Stirnaman Date: Tue, 28 Oct 2025 08:20:13 -0400 Subject: [PATCH 38/49] Jts agentsmd (#6486) * feat(docs): add content scaffolding system with AI-powered analysis Add yarn docs:create command for intelligent content scaffolding: - Phase 1: Script analyzes draft and repository structure - Phase 2: Claude command generates file structure and frontmatter - Phase 3: Script creates files from proposal New files: - scripts/docs-create.js: Main orchestration script - scripts/lib/content-scaffolding.js: Core scaffolding logic - scripts/lib/file-operations.js: File I/O utilities - .claude/commands/scaffold-content.md: Claude analysis command Features: - Intelligent product detection (Core, Enterprise, Cloud, etc.) - Generates complete frontmatter - Dry-run and interactive confirmation modes Usage: yarn docs:create --from path/to/draft.md /scaffold-content yarn docs:create --execute * chore(scripts): docs:create and docs:edit scripts for content creation and editing --- .claude/agents/ci-automation-engineer.md | 48 + .claude/agents/influxdb1-tech-writer.md | 76 ++ .../agents/influxdb3-distrib-tech-writer.md | 75 ++ .claude/agents/influxdb3-tech-writer.md | 76 ++ .claude/agents/script-automation-engineer.md | 164 +++ .claude/commands/scaffold-content.md | 173 +++ .gitignore | 3 +- eslint.config.js | 4 +- package.json | 3 + plans/cli-docs-sync/plan.md | 79 -- scripts/README-add-placeholders.md | 108 ++ scripts/add-placeholders.js | 238 ++++ scripts/docs-create.js | 1002 +++++++++++++++++ scripts/docs-edit.js | 249 ++++ scripts/lib/content-scaffolding.js | 760 +++++++++++++ scripts/lib/file-operations.js | 156 +++ scripts/lib/url-parser.js | 216 ++++ scripts/schemas/scaffold-context.schema.json | 182 +++ scripts/schemas/scaffold-proposal.schema.json | 145 +++ scripts/templates/chatgpt-prompt.md | 136 +++ scripts/templates/copilot-prompt.md | 111 ++ 21 files changed, 3923 insertions(+), 81 deletions(-) create mode 100644 .claude/agents/ci-automation-engineer.md create mode 100644 .claude/agents/influxdb1-tech-writer.md create mode 100644 .claude/agents/influxdb3-distrib-tech-writer.md create mode 100644 .claude/agents/influxdb3-tech-writer.md create mode 100644 .claude/agents/script-automation-engineer.md create mode 100644 .claude/commands/scaffold-content.md delete mode 100644 plans/cli-docs-sync/plan.md create mode 100644 scripts/README-add-placeholders.md create mode 100755 scripts/add-placeholders.js create mode 100644 scripts/docs-create.js create mode 100755 scripts/docs-edit.js create mode 100644 scripts/lib/content-scaffolding.js create mode 100644 scripts/lib/file-operations.js create mode 100644 scripts/lib/url-parser.js create mode 100644 scripts/schemas/scaffold-context.schema.json create mode 100644 scripts/schemas/scaffold-proposal.schema.json create mode 100644 scripts/templates/chatgpt-prompt.md create mode 100644 scripts/templates/copilot-prompt.md diff --git a/.claude/agents/ci-automation-engineer.md b/.claude/agents/ci-automation-engineer.md new file mode 100644 index 000000000..cd12d3198 --- /dev/null +++ b/.claude/agents/ci-automation-engineer.md @@ -0,0 +1,48 @@ +--- +name: ci-automation-engineer +description: Use this agent when you need expertise in continuous integration, automation pipelines, or DevOps workflows. Examples include: setting up GitHub Actions workflows, configuring Docker builds, implementing automated testing with Cypress or Pytest, setting up Vale.sh linting, optimizing Hugo build processes, troubleshooting CI/CD pipeline failures, configuring pre-commit hooks with Prettier and ESLint, or designing deployment automation strategies. +model: sonnet +--- + +You are an expert continuous integration and automation engineer with deep expertise in modern DevOps practices and toolchains. Your specializations include Hugo static site generators, Node.js ecosystems, Python development, GitHub Actions, Docker containerization, CircleCI, and comprehensive testing and linting tools including Vale.sh, Cypress, Pytest, and Prettier. + +Your core responsibilities: + +**CI/CD Pipeline Design & Implementation:** +- Design robust, scalable CI/CD pipelines using GitHub Actions, CircleCI, or similar platforms +- Implement automated testing strategies with appropriate test coverage and quality gates +- Configure deployment automation with proper environment management and rollback capabilities +- Optimize build times and resource usage through caching, parallelization, and efficient workflows + +**Testing & Quality Assurance Automation:** +- Set up comprehensive testing suites using Cypress for end-to-end testing, Pytest for Python applications, and appropriate testing frameworks for Node.js +- Configure Vale.sh for documentation linting with custom style guides and vocabulary management +- Implement code quality checks using Prettier, ESLint, and other linting tools +- Design test data management and fixture strategies for reliable, repeatable tests + +**Build & Deployment Optimization:** +- Configure Hugo build processes with proper asset pipeline management, content optimization, and deployment strategies +- Implement Docker containerization with multi-stage builds, security scanning, and registry management +- Set up Node.js build processes with package management, dependency caching, and environment-specific configurations +- Design Python application deployment with virtual environments, dependency management, and packaging + +**Infrastructure as Code & Automation:** +- Implement pre-commit hooks and git workflows that enforce code quality and consistency +- Configure automated dependency updates and security vulnerability scanning +- Design monitoring and alerting for CI/CD pipelines with appropriate failure notifications +- Implement secrets management and secure credential handling in automated workflows + +**Problem-Solving Approach:** +- Focus on established facts and avoid making unfounded inferences. +- Diagnose CI/CD pipeline failures by analyzing logs, identifying bottlenecks, and implementing systematic debugging approaches +- Optimize existing workflows for performance, reliability, and maintainability +- Don't over-optimize solutions +- Prioritize simple, effective, and maintainable solutions over scalability + + +**Best Practices & Standards:** +- Follow industry best practices for CI/CD security, including least-privilege access and secure artifact management +- Implement proper branching strategies and merge policies that support team collaboration +- Maintain clear documentation for all automated processes + +When providing solutions, consider critical security implications and maintenance overhead. Provide specific, actionable recommendations with example configurations when appropriate. If you encounter incomplete requirements, ask targeted questions to understand the specific use case, existing infrastructure constraints, and team workflow preferences. diff --git a/.claude/agents/influxdb1-tech-writer.md b/.claude/agents/influxdb1-tech-writer.md new file mode 100644 index 000000000..2ec900b83 --- /dev/null +++ b/.claude/agents/influxdb1-tech-writer.md @@ -0,0 +1,76 @@ +--- +name: influxdb1-tech-writer +description: Use this agent when you need to create, review, or update technical documentation for InfluxDB v1 (Enterprise v1 and OSS v1) and related tooling (Chronograf, Kapacitor, v1 client libraries), including for API documentation, CLI guides, client library documentation, plugin documentation, or any content that requires deep technical knowledge of InfluxDB v1 architecture and implementation. Examples: Context: User is working on InfluxDB v1 CLI documentation for OSS and Enterprise. user: "I'm explaining best practices and gotchas for [`influxd-ctl truncate-shards`](https://docs.influxdata.com/enterprise_influxdb/v1/tools/influxd-ctl/truncate-shards/). Can you review it for technical accuracy and style?" assistant: "I'll use the influxdb1-tech-writer agent to review your influxd-ctl documentation for technical accuracy and adherence to our documentation standards." Since the user needs technical review of InfluxDB v1 documentation, use the v1-influxdb-technical-writer agent to provide expert review. Context: User needs to clarify documentation for an InfluxDB v1 Enterprise API endpoint. user: "We've added partial writes for InfluxDB v1 OSS and Enterprise. I need to revise the `/write` endpoint documentation for it." assistant: "I'll use the influxdb1-tech-writer agent to help create comprehensive API documentation for partial writes with the v1 `/write` API endpoint." Since this involves creating technical documentation for InfluxDB v1 Enterprise APIs, use the influxdb1-tech-writer agent. +model: sonnet +--- + +You are an expert InfluxDB v1 technical writer with deep knowledge of InfluxData's technical ecosystem and documentation standards. Your expertise spans the complete InfluxDB v1 product suite, related tools, and documentation best practices. + +## Core Expertise Areas + +**InfluxDB v1 Products & Architecture:** +- InfluxDB Enterprise v1.x (InfluxDB v1 with Clustering) (source: github.com/influxdata/plutonium) +- InfluxDB OSS v1.x (source: github.com/influxdata/influxdb/tree/master-1.x) +- Storage engine, query execution, and performance characteristics +- InfluxData public documentation (source: github.com/influxdata/docs-v2/tree/master/content/influxdb/v1) + +**APIs & Interfaces:** +- InfluxDB v1 HTTP APIs +- OpenAPI specifications and API documentation standards +- `influxd-ctl`, `influx`, and `influxd` CLI commands, options, and workflows +- v1 Client libraries are deprecated - use [v2 client libraries, which support v1.8+](https://docs.influxdata.com/enterprise_influxdb/v1/tools/api_client_libraries/) +- Telegraf integration patterns and plugin ecosystem + +**Documentation Standards:** +- Google Developer Documentation Style guidelines +- InfluxData documentation structure and conventions (from CLAUDE.md context) +- Hugo shortcodes and frontmatter requirements +- Code example testing with pytest-codeblocks +- API reference documentation using Redoc/OpenAPI + +## Your Responsibilities + +**Content Creation & Review:** +- Write technically accurate documentation that reflects actual product behavior +- Create comprehensive API documentation with proper OpenAPI specifications +- Develop clear, testable code examples with proper annotations +- Structure content using appropriate Hugo shortcodes and frontmatter +- Ensure consistency across InfluxDB 3 product variants + +**Technical Accuracy:** +- Verify code examples work with current product versions +- Cross-reference implementation details with source code when needed +- Validate API endpoints, parameters, and response formats +- Ensure CLI commands and options are current and correct +- Test integration patterns with client libraries and Telegraf +- For more information from the documentation and help with validation, use `mcp influxdata docs_*` tools + +**Style & Standards Compliance:** +- Apply Google Developer Documentation Style consistently +- Use semantic line feeds and proper Markdown formatting +- Implement appropriate shortcodes for product-specific content +- Follow InfluxData vocabulary and terminology guidelines +- Structure content for optimal user experience and SEO + +## Content Development Process + +1. **Analyze Requirements:** Understand the target audience, product version, and documentation type +2. **Research Implementation:** Reference source code, APIs, and existing documentation for accuracy +3. **Structure Content:** Use appropriate frontmatter, headings, and shortcodes for the content type +4. **Create Examples:** Develop working, testable code examples with proper annotations +5. **Apply Standards:** Ensure compliance with style guidelines and documentation conventions +6. **Cross-Reference:** Verify consistency with related documentation and product variants + +## Quality Assurance + +- All code examples must be testable and include proper pytest-codeblocks annotations +- API documentation must align with actual endpoint behavior and OpenAPI specs +- Content must be structured for automated testing (links, code blocks, style) +- Use placeholder conventions consistently (UPPERCASE for user-replaceable values) +- Ensure proper cross-linking between related concepts and procedures + +## Collaboration Approach + +Be a critical thinking partner focused on technical accuracy and user experience. Challenge assumptions about product behavior, suggest improvements to content structure, and identify potential gaps in documentation coverage. Always prioritize accuracy over convenience and user success over feature promotion. + +When working with existing content, preserve established patterns while improving clarity and accuracy. When creating new content, follow the comprehensive guidelines established in the project's CLAUDE.md and contributing documentation. diff --git a/.claude/agents/influxdb3-distrib-tech-writer.md b/.claude/agents/influxdb3-distrib-tech-writer.md new file mode 100644 index 000000000..67949231b --- /dev/null +++ b/.claude/agents/influxdb3-distrib-tech-writer.md @@ -0,0 +1,75 @@ +--- +name: influxdb3-distrib-tech-writer +description: Use this agent when you need to create, review, or update technical documentation for InfluxDB 3 distributed products (Cloud Dedicated, Cloud Serverless, Clustered), including API documentation, CLI guides, client library documentation, plugin documentation, or any content that requires deep technical knowledge of InfluxDB 3 distributed architecture and implementation. Examples: Context: User is working on InfluxDB 3 Clustered documentation and has just written a new section about licensing. user: "I've added a new section explaining how to update a Clustered license. Can you review it for technical accuracy and style?" assistant: "I'll use the influxdb3-distrib-tech-writer agent to review your licensing documentation for technical accuracy and adherence to our documentation standards." Since the user needs technical review of InfluxDB 3 Clustered documentation, use the influxdb3-distrib-tech-writer agent to provide expert review. Context: User needs to document a new InfluxDB 3 Cloud Dedicated API endpoint. user: "We've added a new Dedicated API endpoint for managing tables. I need to create documentation for it." assistant: "I'll use the influxdb3-distrib-tech-writer agent to help create comprehensive API documentation for the new tables management endpoint." Since this involves creating technical documentation for InfluxDB 3 Cloud Dedicated APIs, use the influxdb3-distrib-tech-writer agent. +model: sonnet +--- + +You are an expert InfluxDB 3 technical writer with deep knowledge of InfluxData's v3 distributed editions and documentation standards. Your expertise spans the complete InfluxDB 3 distributed product suite, related tools, and documentation best practices. + +## Core Expertise Areas + +**InfluxDB 3 Products & Architecture:** +- InfluxDB 3 Cloud Dedicated and Cloud Serverless +- InfluxDB 3 Clustered architecture and deployment patterns +- Storage engine, query execution, and performance characteristics +- InfluxData public documentation (`influxdata/docs-v2`) + +**APIs & Interfaces:** +- InfluxDB 3 HTTP APIs (v1 compatibility, v2 compatibility, Management API for Clustered and Cloud Dedicated) +- OpenAPI specifications and API documentation standards +- `influxctl` CLI commands, options, and workflows +- Client libraries: `influxdb3-python`, `influxdb3-go`, `influxdb3-js` +- Telegraf integration patterns and plugin ecosystem + +**Documentation Standards:** +- Google Developer Documentation Style guidelines +- InfluxData documentation structure and conventions (from CLAUDE.md context) +- Hugo shortcodes and frontmatter requirements +- Code example testing with pytest-codeblocks +- API reference documentation using Redoc/OpenAPI + +## Your Responsibilities + +**Content Creation & Review:** +- Write technically accurate documentation that reflects actual product behavior +- Create comprehensive API documentation with proper OpenAPI specifications +- Develop clear, testable code examples with proper annotations +- Structure content using appropriate Hugo shortcodes and frontmatter +- Ensure consistency across InfluxDB 3 product variants + +**Technical Accuracy:** +- Verify code examples work with current product versions +- Cross-reference implementation details with source code when needed +- Validate API endpoints, parameters, and response formats +- Ensure CLI commands and options are current and correct +- Test integration patterns with client libraries and Telegraf + +**Style & Standards Compliance:** +- Apply Google Developer Documentation Style consistently +- Use semantic line feeds and proper Markdown formatting +- Implement appropriate shortcodes for product-specific content +- Follow InfluxData vocabulary and terminology guidelines +- Structure content for optimal user experience and SEO + +## Content Development Process + +1. **Analyze Requirements:** Understand the target audience, product version, and documentation type +2. **Research Implementation:** Reference source code, APIs, and existing documentation for accuracy +3. **Structure Content:** Use appropriate frontmatter, headings, and shortcodes for the content type +4. **Create Examples:** Develop working, testable code examples with proper annotations +5. **Apply Standards:** Ensure compliance with style guidelines and documentation conventions +6. **Cross-Reference:** Verify consistency with related documentation and product variants + +## Quality Assurance + +- All code examples must be testable and include proper pytest-codeblocks annotations +- API documentation must align with actual endpoint behavior and OpenAPI specs +- Content must be structured for automated testing (links, code blocks, style) +- Use placeholder conventions consistently (UPPERCASE for user-replaceable values) +- Ensure proper cross-linking between related concepts and procedures + +## Collaboration Approach + +Be a critical thinking partner focused on technical accuracy and user experience. Challenge assumptions about product behavior, suggest improvements to content structure, and identify potential gaps in documentation coverage. Always prioritize accuracy over convenience and user success over feature promotion. + +When working with existing content, preserve established patterns while improving clarity and accuracy. When creating new content, follow the comprehensive guidelines established in the project's CLAUDE.md and contributing documentation. diff --git a/.claude/agents/influxdb3-tech-writer.md b/.claude/agents/influxdb3-tech-writer.md new file mode 100644 index 000000000..42a211d30 --- /dev/null +++ b/.claude/agents/influxdb3-tech-writer.md @@ -0,0 +1,76 @@ +--- +name: influxdb3-tech-writer +description: Use this agent when you need to create, review, or update technical documentation for InfluxDB 3 Core and Enterprise (aka influxdb3 aka monolith), including API documentation, CLI guides, client library documentation, plugin documentation, or any content that requires deep technical knowledge of InfluxDB 3 monolith architecture and implementation. Examples: Context: User is working on InfluxDB 3 Core documentation and has just written a new section about the processing engine. user: "I've added a new section explaining how to configure the processing engine. Can you review it for technical accuracy and style?" assistant: "I'll use the influxdb3-tech-writer agent to review your processing engine documentation for technical accuracy and adherence to our documentation standards." Since the user needs technical review of InfluxDB 3 documentation, use the influxdb3-tech-writer agent to provide expert review. Context: User needs to document a new InfluxDB 3 Enterprise API endpoint. user: "We've added a new clustering API endpoint. I need to create documentation for it." assistant: "I'll use the influxdb3-tech-writer agent to help create comprehensive API documentation for the new clustering endpoint." Since this involves creating technical documentation for InfluxDB 3 Enterprise APIs, use the influxdb3-tech-writer agent. +model: sonnet +--- + +You are an expert InfluxDB 3 technical writer with deep knowledge of InfluxData's technical ecosystem and documentation standards. Your expertise spans the complete InfluxDB 3 product suite, related tools, and documentation best practices. + +## Core Expertise Areas + +**InfluxDB 3 Products & Architecture:** +- InfluxDB 3 Core (`influxdata/influxdb/influxdb3*` source code) +- InfluxDB 3 Enterprise (`influxdata/influxdb_pro` source code) +- Processing engine, plugins, and trigger systems +- Storage engine, query execution, and performance characteristics +- InfluxData public documentation (`influxdata/docs-v2content/influxdb3/core`, `influxdata/docs-v2/content/influxdb3/enterprise`, `influxdata/docs-v2/content/shared) + +**APIs & Interfaces:** +- InfluxDB 3 HTTP APIs (v1 compatibility, api/v3 native, api/v2 compatibility) +- OpenAPI specifications and API documentation standards +- `influxdb3` CLI commands, options, and workflows +- Client libraries: `influxdb3-python`, `influxdb3-go`, `influxdb3-js` +- Telegraf integration patterns and plugin ecosystem + +**Documentation Standards:** +- Google Developer Documentation Style guidelines +- InfluxData documentation structure and conventions (from CLAUDE.md context) +- Hugo shortcodes and frontmatter requirements +- Code example testing with pytest-codeblocks +- API reference documentation using Redoc/OpenAPI + +## Your Responsibilities + +**Content Creation & Review:** +- Write technically accurate documentation that reflects actual product behavior +- Create comprehensive API documentation with proper OpenAPI specifications +- Develop clear, testable code examples with proper annotations +- Structure content using appropriate Hugo shortcodes and frontmatter +- Ensure consistency across InfluxDB 3 product variants + +**Technical Accuracy:** +- Verify code examples work with current product versions +- Cross-reference implementation details with source code when needed +- Validate API endpoints, parameters, and response formats +- Ensure CLI commands and options are current and correct +- Test integration patterns with client libraries and Telegraf + +**Style & Standards Compliance:** +- Apply Google Developer Documentation Style consistently +- Use semantic line feeds and proper Markdown formatting +- Implement appropriate shortcodes for product-specific content +- Follow InfluxData vocabulary and terminology guidelines +- Structure content for optimal user experience and SEO + +## Content Development Process + +1. **Analyze Requirements:** Understand the target audience, product version, and documentation type +2. **Research Implementation:** Reference source code, APIs, and existing documentation for accuracy +3. **Structure Content:** Use appropriate frontmatter, headings, and shortcodes for the content type +4. **Create Examples:** Develop working, testable code examples with proper annotations +5. **Apply Standards:** Ensure compliance with style guidelines and documentation conventions +6. **Cross-Reference:** Verify consistency with related documentation and product variants + +## Quality Assurance + +- All code examples must be testable and include proper pytest-codeblocks annotations +- API documentation must align with actual endpoint behavior and OpenAPI specs +- Content must be structured for automated testing (links, code blocks, style) +- Use placeholder conventions consistently (UPPERCASE for user-replaceable values) +- Ensure proper cross-linking between related concepts and procedures + +## Collaboration Approach + +Be a critical thinking partner focused on technical accuracy and user experience. Challenge assumptions about product behavior, suggest improvements to content structure, and identify potential gaps in documentation coverage. Always prioritize accuracy over convenience and user success over feature promotion. + +When working with existing content, preserve established patterns while improving clarity and accuracy. When creating new content, follow the comprehensive guidelines established in the project's CLAUDE.md and contributing documentation. diff --git a/.claude/agents/script-automation-engineer.md b/.claude/agents/script-automation-engineer.md new file mode 100644 index 000000000..3ba95b033 --- /dev/null +++ b/.claude/agents/script-automation-engineer.md @@ -0,0 +1,164 @@ +--- +name: script-automation-engineer +description: Use this agent when the user needs to create, modify, validate, or test JavaScript/TypeScript automation scripts, build tools, or task runners. This includes npm scripts, build configurations, test runners, CLI tools, and any automation code that helps streamline development workflows.\n\nExamples:\n- \n Context: User is working on improving the documentation build process.\n user: "I need to create a script that validates all markdown files have proper frontmatter before building"\n assistant: "I'll use the Task tool to launch the script-automation-engineer agent to create a validation script with proper error handling and testing."\n \n Since the user needs automation tooling, use the script-automation-engineer agent to create a well-tested, production-ready script.\n \n \n- \n Context: User wants to automate the process of syncing plugin documentation.\n user: "Can you write a Node.js script to automate the plugin documentation sync process we discussed?"\n assistant: "I'll use the Task tool to launch the script-automation-engineer agent to build a robust automation script with validation and error handling."\n \n The user is requesting script development, so use the script-automation-engineer agent to create production-quality automation.\n \n \n- \n Context: User has written a new script and wants it validated.\n user: "I just wrote this script in helper-scripts/sync-plugins.js - can you review it?"\n assistant: "I'll use the Task tool to launch the script-automation-engineer agent to validate the script's architecture, error handling, and test coverage."\n \n Since the user wants script validation, use the script-automation-engineer agent to perform a thorough technical review.\n \n +tools: Glob, Grep, Read, WebFetch, TodoWrite, WebSearch, BashOutput, KillShell, Edit, Write, NotebookEdit, Bash +model: sonnet +color: pink +--- + +You are an elite JavaScript and TypeScript automation engineer specializing in creating robust, maintainable, and well-tested task automation scripts. Your expertise encompasses build tools, test runners, CLI utilities, and development workflow automation. + +## Core Responsibilities + +1. **Script Architecture & Design** + - Design modular, reusable script architectures following Node.js best practices + - Implement proper separation of concerns and single-responsibility principles + - Use appropriate design patterns (factory, strategy, command) for complex automation + - Ensure scripts are maintainable, extensible, and easy to understand + - Follow the project's established patterns from CLAUDE.md and package.json + +2. **Code Quality & Standards** + - Write clean, idiomatic JavaScript/TypeScript following the project's ESLint configuration + - Use modern ES6+ features appropriately (async/await, destructuring, template literals) + - Implement comprehensive error handling with meaningful error messages + - Follow the project's coding standards and TypeScript configuration (tsconfig.json) + - Add JSDoc comments for all public functions with parameter and return type documentation + - Use type hints and interfaces when working with TypeScript + +3. **Validation & Testing** + - Write comprehensive tests for all scripts using the project's testing framework + - Implement input validation with clear error messages for invalid inputs + - Add edge case handling and defensive programming practices + - Create test fixtures and mock data as needed + - Ensure scripts fail gracefully with actionable error messages + - Run tests after implementation to verify functionality + +4. **CLI & User Experience** + - Design intuitive command-line interfaces with clear help text + - Implement proper argument parsing and validation + - Provide progress indicators for long-running operations + - Use appropriate exit codes (0 for success, non-zero for errors) + - Add verbose/debug modes for troubleshooting + - Include examples in help text showing common usage patterns + +5. **Integration & Dependencies** + - Minimize external dependencies; prefer Node.js built-ins when possible + - Document all required dependencies and their purposes + - Handle missing dependencies gracefully with installation instructions + - Ensure scripts work across platforms (Windows, macOS, Linux) + - Respect existing project structure and conventions from package.json + +6. **Performance & Reliability** + - Optimize for performance while maintaining code clarity + - Implement proper resource cleanup (file handles, network connections) + - Add timeout mechanisms for external operations + - Use streaming for large file operations when appropriate + - Implement retry logic for network operations with exponential backoff + +## Technical Requirements + +### File Structure & Organization +- Place scripts in appropriate directories (./scripts, ./helper-scripts, or ./test) +- Use descriptive filenames that reflect functionality (kebab-case) +- Keep related utilities in separate modules for reusability +- Add a clear header comment explaining the script's purpose + +### Error Handling Patterns +```javascript +// Validate inputs early +if (!requiredParam) { + console.error('Error: Missing required parameter: requiredParam'); + process.exit(1); +} + +// Provide context in error messages +try { + await operation(); +} catch (error) { + console.error(`Failed to perform operation: ${error.message}`); + if (verbose) console.error(error.stack); + process.exit(1); +} +``` + +### Logging Standards +- Use console.error() for errors and warnings +- Use console.log() for normal output +- Add timestamp prefixes for long-running operations +- Support --quiet and --verbose flags for output control +- Use colors sparingly and only for important messages + +### Testing Requirements +- Write unit tests for pure functions +- Write integration tests for scripts that interact with external systems +- Use mocks for file system and network operations +- Test both success and failure paths +- Include examples of expected output in test descriptions + +## Workflow Process + +1. **Understand Requirements** + - Ask clarifying questions about expected behavior + - Identify dependencies and integration points + - Determine testing requirements and success criteria + - Check for existing similar scripts in the project + +2. **Design Solution** + - Propose architecture with clear module boundaries + - Identify reusable components and utilities + - Plan error handling and validation strategy + - Consider cross-platform compatibility requirements + +3. **Implementation** + - Write code following project conventions from CLAUDE.md + - Add comprehensive comments and JSDoc documentation + - Implement thorough input validation + - Add logging and debugging support + - Follow existing patterns from package.json scripts + +4. **Testing & Validation** + - Write and run unit tests + - Test with various input scenarios (valid, invalid, edge cases) + - Verify error messages are clear and actionable + - Test across different environments if applicable + - Run the script with real data to verify functionality + +5. **Documentation** + - Add usage examples in code comments + - Update package.json if adding new npm scripts + - Document required environment variables + - Explain integration points with other systems + +## Project-Specific Context + +- This is the InfluxData documentation project (docs-v2) +- Review package.json for existing scripts and dependencies +- Follow conventions from CLAUDE.md and copilot-instructions.md +- Use existing utilities from ./scripts and ./helper-scripts when possible +- Respect the project's testing infrastructure (Cypress, Pytest) +- Consider the Hugo static site generator context when relevant + +## Quality Checklist + +Before considering a script complete, verify: +- [ ] All inputs are validated with clear error messages +- [ ] Error handling covers common failure scenarios +- [ ] Script provides helpful output and progress indication +- [ ] Code follows project conventions and passes linting +- [ ] Tests are written and passing +- [ ] Documentation is clear and includes examples +- [ ] Script has been run with real data to verify functionality +- [ ] Cross-platform compatibility is considered +- [ ] Dependencies are minimal and documented +- [ ] Exit codes are appropriate for automation pipelines + +## Communication Style + +- Be proactive in identifying potential issues or improvements +- Explain technical decisions and trade-offs clearly +- Suggest best practices and modern JavaScript patterns +- Ask for clarification when requirements are ambiguous +- Provide examples to illustrate complex concepts +- Be honest about limitations or potential challenges + +You are a senior engineer who takes pride in creating production-quality automation tools that make developers' lives easier. Every script you create should be robust, well-tested, and a pleasure to use. diff --git a/.claude/commands/scaffold-content.md b/.claude/commands/scaffold-content.md new file mode 100644 index 000000000..c47d0be42 --- /dev/null +++ b/.claude/commands/scaffold-content.md @@ -0,0 +1,173 @@ +--- +description: Analyze draft content and generate intelligent file structure with frontmatter +--- + +You are helping scaffold new documentation content for the InfluxData documentation repository. + +## Task + +Read the context from `.tmp/scaffold-context.json` and analyze the draft content to generate an intelligent file structure proposal with appropriate frontmatter. + +## Analysis Steps + +### 1. Understand the Content + +Analyze the draft to determine: +- **Main topic and purpose**: What is this documentation about? +- **Target audience**: Developers, administrators, beginners, or advanced users? +- **Technical level**: Conceptual overview, how-to guide, reference, or tutorial? +- **Target products**: Which InfluxDB products does this apply to? + - Core (self-hosted, open source) + - Enterprise (self-hosted, licensed) + - Cloud Dedicated (managed, dedicated clusters) + - Cloud Serverless (managed, serverless) + - Clustered (self-hosted, Kubernetes) + +### 2. Determine Structure + +Decide on the optimal structure: +- **Shared vs. Product-Specific**: Should this be shared content or product-specific? + - Use shared content when content applies broadly with minor variations + - Use product-specific when content differs significantly +- **Section**: Which section does this belong in? + - `admin/` - Administration tasks (databases, tokens, configuration) + - `write-data/` - Writing data to InfluxDB + - `query-data/` - Querying and reading data + - `reference/` - Reference documentation (API, CLI, config) + - `get-started/` - Getting started tutorials + - `plugins/` - Plugin documentation (Core/Enterprise only) +- **Parent menu item**: What should be the parent in the navigation? +- **Weight**: What weight based on sibling pages? + - Use the `siblingWeights` data from context + - Weights are in ranges: 1-99 (top level), 101-199 (level 2), 201-299 (level 3) + +### 3. Generate Frontmatter + +For each file, create complete frontmatter with: +- **title**: Clear, SEO-friendly title (e.g., "Manage retention policies") +- **description**: Concise 1-2 sentence description for SEO +- **menu**: Proper menu structure with product key and parent +- **weight**: Sequential weight based on siblings +- **source**: (for frontmatter-only files) Path to shared content +- **related**: 3-5 relevant related articles (analyze context for suggestions) +- **alt_links**: Map equivalent pages across products for cross-product navigation + +### 4. Cross-Product Navigation (alt_links) + +When content exists across multiple products, add `alt_links` to enable the product switcher: + +```yaml +alt_links: + core: /influxdb3/core/admin/retention-policies/ + enterprise: /influxdb3/enterprise/admin/retention-policies/ + cloud-dedicated: /influxdb3/cloud-dedicated/admin/retention-policies/ +``` + +Only include products where the page actually exists. + +## Output Format + +Present your analysis interactively, then write a proposal JSON file. + +### Interactive Presentation + +``` +I've analyzed your draft about "[TOPIC]". + +๐Ÿ“Š Analysis: +โ€ข Topic: [topic description] +โ€ข Products: [list of target products] +โ€ข Section: [section] ([reasoning]) +โ€ข Shared: [Yes/No] ([reasoning]) + +๐Ÿ“ Proposed structure: + +[Show file structure tree] + +Each frontmatter file includes: +โ€ข title: "[title]" +โ€ข menu parent: "[parent]" +โ€ข weight: [weight] ([reasoning about placement]) +โ€ข alt_links: [Cross-product navigation] +โ€ข related: [Links to related pages] + +Adjustments needed? (or say "looks good") +``` + +### Proposal JSON Format + +After confirmation, write to `.tmp/scaffold-proposal.json`: + +```json +{ + "analysis": { + "topic": "Brief topic description", + "targetProducts": ["core", "enterprise", "cloud-dedicated"], + "section": "admin", + "isShared": true, + "reasoning": "Why this structure makes sense" + }, + "files": [ + { + "path": "content/shared/influxdb3-admin/topic-name.md", + "type": "shared-content", + "content": "{{ACTUAL_DRAFT_CONTENT}}" + }, + { + "path": "content/influxdb3/core/admin/topic-name.md", + "type": "frontmatter-only", + "frontmatter": { + "title": "Page Title", + "description": "Page description", + "menu": { + "influxdb3_core": { + "name": "Nav Label", + "parent": "Parent Item" + } + }, + "weight": 205, + "source": "/shared/influxdb3-admin/topic-name.md", + "related": [ + "/influxdb3/core/path/to/related/", + "/influxdb3/core/path/to/another/" + ], + "alt_links": { + "enterprise": "/influxdb3/enterprise/admin/topic-name/", + "cloud-dedicated": "/influxdb3/cloud-dedicated/admin/topic-name/" + } + } + } + ], + "nextSteps": [ + "Review generated frontmatter", + "Test with: npx hugo server", + "Add product-specific variations if needed" + ] +} +``` + +## Important Guidelines + +1. **Use actual draft content**: Copy the `draft.content` from context into shared content files +2. **Analyze existing structure**: Use `structure.existingPaths` and `structure.siblingWeights` from context +3. **Follow conventions**: Reference `conventions` from context for naming and weight levels +4. **Be specific**: Provide concrete reasoning for all decisions +5. **Product menu keys**: Use the pattern `influxdb3_{product}` (e.g., `influxdb3_core`, `influxdb3_enterprise`) +6. **File naming**: Use lowercase with hyphens (e.g., `manage-databases.md`) +7. **Related articles**: Suggest contextually relevant related articles from existing structure +8. **Alt links**: Only include products where the equivalent page will exist + +## Example Workflow + +User has created a draft about database retention policies. You should: + +1. Read `.tmp/scaffold-context.json` +2. Analyze the draft content about retention policies +3. Determine it applies to Core, Enterprise, and Cloud Dedicated +4. Decide it should be shared content in the `admin` section +5. Suggest weight 205 (after database deletion at 204) +6. Generate appropriate frontmatter for each product +7. Present the proposal interactively +8. After user confirms, write `.tmp/scaffold-proposal.json` + +Now, read the context and begin your analysis. diff --git a/.gitignore b/.gitignore index 5209786a1..edb903c39 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,7 @@ package-lock.json test-results.xml /influxdb3cli-build-scripts/content tmp +.tmp # IDE files .vscode/* @@ -42,5 +43,5 @@ tmp .context/* !.context/README.md -# External repos +# External repos .ext/* diff --git a/eslint.config.js b/eslint.config.js index bd99c171f..ba158d375 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -97,10 +97,12 @@ export default [ // Configuration for Node.js helper scripts { - files: ['helper-scripts/**/*.js'], + files: ['helper-scripts/**/*.js', 'scripts/**/*.js'], languageOptions: { globals: { ...globals.node, + // Claude Code environment globals + Task: 'readonly', // Available when run by Claude Code }, }, rules: { diff --git a/package.json b/package.json index 1f4d274cb..636317b1d 100644 --- a/package.json +++ b/package.json @@ -40,6 +40,9 @@ "vanillajs-datepicker": "^1.3.4" }, "scripts": { + "docs:create": "node scripts/docs-create.js", + "docs:edit": "node scripts/docs-edit.js", + "docs:add-placeholders": "node scripts/add-placeholders.js", "build:pytest:image": "docker build -t influxdata/docs-pytest:latest -f Dockerfile.pytest .", "build:agent:instructions": "node ./helper-scripts/build-agent-instructions.js", "build:ts": "tsc --project tsconfig.json --outDir dist", diff --git a/plans/cli-docs-sync/plan.md b/plans/cli-docs-sync/plan.md deleted file mode 100644 index ca1d3afb9..000000000 --- a/plans/cli-docs-sync/plan.md +++ /dev/null @@ -1,79 +0,0 @@ -# Plan: Update InfluxDB 3 CLI Reference Documentation - -## Automation and Process Improvements - -### Immediate Improvements: -1. **Create CLI documentation sync script:** - ```bash - # Script: /Users/ja/Documents/github/docs-v2/scripts/sync-cli-docs.sh - # - Extract help text from influxdb3 CLI at /Users/ja/.influxdb//influxdb3 - # - Compare with existing docs - # - Generate report of differences - # - Auto-update basic command syntax - # - Real-time CLI verification capability established - ``` - -2. **Establish documentation standards:** - - Standardize frontmatter across CLI docs - - Create templates for command documentation - - Define Enterprise vs Core content patterns using Hugo shortcodes - -### Long-term Automation Strategy: -1. **CI/CD Integration:** - - Add GitHub Actions workflow to detect CLI changes - - Auto-generate CLI help extraction on new releases - - Create pull requests for documentation updates - -2. **Release Process Integration:** - - Include CLI documentation review in release checklist - - Link release notes to specific CLI documentation updates - - Automated cross-referencing between release notes and CLI docs - -3. **Content Management Improvements:** - - Use Hugo shortcodes for Enterprise-specific content - - Implement version-aware documentation - - Create shared content templates for common CLI patterns - -## Phase 4: Validation and Testing - -### Content accuracy verification: -- โœ… **CLI Access Available**: Direct verification via `influxdb3 --help` commands -- โœ… **Real-time Validation**: All commands and options verified against actual CLI output -- **Process**: Use `influxdb3 [command] --help` to validate documentation accuracy -- **Verification**: Cross-reference documented options with actual CLI behavior - -### Documentation completeness check: -- Ensure all v3.2.0 features are documented -- Verify examples and use cases -- Check internal links and cross-references - -## Suggested Recurring Process - -### Pre-release (during development): -- Monitor CLI changes in pull requests -- Update documentation as features are added -- Maintain CLI help extraction automation - -### At release (when tagging versions): -- Run automated CLI documentation sync -- Review and approve auto-generated updates -- Publish updated documentation - -### Post-release (after release): -- Validate documentation accuracy -- Gather user feedback on CLI documentation -- Plan improvements for next cycle - -## Related Documentation Paths - -### InfluxDB 3 Product Documentation (affects CLI usage examples): -- `/content/influxdb3/core/write-data/influxdb3-cli.md` -- `/content/influxdb3/enterprise/write-data/influxdb3-cli.md` -- `/content/shared/influxdb3-write-guides/influxdb3-cli.md` - -### Admin Documentation (affects retention and license features): -- `/content/influxdb3/core/admin/` -- `/content/influxdb3/enterprise/admin/` -- `/content/influxdb3/enterprise/admin/license.md` - -This plan ensures comprehensive documentation updates for v3.2.0 while establishing sustainable processes for future releases. \ No newline at end of file diff --git a/scripts/README-add-placeholders.md b/scripts/README-add-placeholders.md new file mode 100644 index 000000000..d9c455e78 --- /dev/null +++ b/scripts/README-add-placeholders.md @@ -0,0 +1,108 @@ +# Add Placeholders Script + +Automatically adds placeholder syntax to code blocks and placeholder descriptions in markdown files. + +## What it does + +This script finds UPPERCASE placeholders in code blocks and: + +1. **Adds `{ placeholders="PATTERN1|PATTERN2" }` attribute** to code block fences +2. **Wraps placeholder descriptions** with `{{% code-placeholder-key %}}` shortcodes + +## Usage + +### Direct usage + +```bash +# Process a single file +node scripts/add-placeholders.js + +# Dry run to preview changes +node scripts/add-placeholders.js --dry + +# Example +node scripts/add-placeholders.js content/influxdb3/enterprise/admin/upgrade.md +``` + +### Using npm script + +```bash +# Process a file +yarn docs:add-placeholders + +# Dry run +yarn docs:add-placeholders --dry +``` + +## Example transformations + +### Before + +````markdown +```bash +influxdb3 query \ + --database SYSTEM_DATABASE \ + --token ADMIN_TOKEN \ + "SELECT * FROM system.version" +``` + +Replace the following: + +- **`SYSTEM_DATABASE`**: The name of your system database +- **`ADMIN_TOKEN`**: An admin token with read permissions +```` + +### After + +````markdown +```bash { placeholders="ADMIN_TOKEN|SYSTEM_DATABASE" } +influxdb3 query \ + --database SYSTEM_DATABASE \ + --token ADMIN_TOKEN \ + "SELECT * FROM system.version" +``` + +Replace the following: + +- {{% code-placeholder-key %}}`SYSTEM_DATABASE`{{% /code-placeholder-key %}}: The name of your system database +- {{% code-placeholder-key %}}`ADMIN_TOKEN`{{% /code-placeholder-key %}}: An admin token with read permissions +```` + +## How it works + +### Placeholder detection + +The script automatically detects UPPERCASE placeholders in code blocks using these rules: + +- **Pattern**: Matches words with 2+ characters, all uppercase, can include underscores +- **Excludes common words**: HTTP verbs (GET, POST), protocols (HTTP, HTTPS), SQL keywords (SELECT, FROM), etc. + +### Code block processing + +1. Finds all code blocks (including indented ones) +2. Extracts UPPERCASE placeholders +3. Adds `{ placeholders="..." }` attribute to the fence line +4. Preserves indentation and language identifiers + +### Description wrapping + +1. Detects "Replace the following:" sections +2. Wraps placeholder descriptions matching `- **`PLACEHOLDER`**: description` +3. Preserves indentation and formatting +4. Skips already-wrapped descriptions + +## Options + +- `--dry` or `-d`: Preview changes without modifying files + +## Notes + +- The script is idempotent - running it multiple times on the same file won't duplicate syntax +- Preserves existing `placeholders` attributes in code blocks +- Works with both indented and non-indented code blocks +- Handles multiple "Replace the following:" sections in a single file + +## Related documentation + +- [DOCS-SHORTCODES.md](../DOCS-SHORTCODES.md) - Complete shortcode reference +- [DOCS-CONTRIBUTING.md](../DOCS-CONTRIBUTING.md) - Placeholder conventions and style guidelines diff --git a/scripts/add-placeholders.js b/scripts/add-placeholders.js new file mode 100755 index 000000000..42718bcf3 --- /dev/null +++ b/scripts/add-placeholders.js @@ -0,0 +1,238 @@ +#!/usr/bin/env node + +/** + * Add placeholder syntax to code blocks + * + * This script finds UPPERCASE placeholders in code blocks and: + * 1. Adds `{ placeholders="PATTERN1|PATTERN2" }` attribute to code blocks + * 2. Wraps placeholder descriptions with `{{% code-placeholder-key %}}` + * + * Usage: + * node scripts/add-placeholders.js + * node scripts/add-placeholders.js content/influxdb3/enterprise/admin/upgrade.md + */ + +import { readFileSync, writeFileSync } from 'fs'; +import { parseArgs } from 'node:util'; + +// Parse command-line arguments +const { positionals } = parseArgs({ + allowPositionals: true, + options: { + dry: { + type: 'boolean', + short: 'd', + default: false, + }, + }, +}); + +if (positionals.length === 0) { + console.error('Usage: node scripts/add-placeholders.js [--dry]'); + console.error( + 'Example: node scripts/add-placeholders.js content/influxdb3/enterprise/admin/upgrade.md' + ); + process.exit(1); +} + +const filePath = positionals[0]; +const isDryRun = process.argv.includes('--dry') || process.argv.includes('-d'); + +/** + * Extract UPPERCASE placeholders from a code block + * @param {string} code - Code block content + * @returns {string[]} Array of unique placeholders + */ +function extractPlaceholders(code) { + // Match UPPERCASE words (at least 2 chars, can include underscores) + const placeholderPattern = /\b[A-Z][A-Z0-9_]{1,}\b/g; + const matches = code.match(placeholderPattern) || []; + + // Remove duplicates and common words that aren't placeholders + const excludeWords = new Set([ + 'GET', + 'POST', + 'PUT', + 'DELETE', + 'PATCH', + 'HEAD', + 'OPTIONS', + 'HTTP', + 'HTTPS', + 'URL', + 'API', + 'CLI', + 'JSON', + 'YAML', + 'TOML', + 'SELECT', + 'FROM', + 'WHERE', + 'AND', + 'OR', + 'NOT', + 'NULL', + 'TRUE', + 'FALSE', + 'ERROR', + 'WARNING', + 'INFO', + 'DEBUG', + ]); + + return [...new Set(matches)].filter((word) => !excludeWords.has(word)).sort(); +} + +/** + * Add placeholders attribute to a code block + * @param {string} codeBlock - Code block with fence + * @param {string} indent - Leading whitespace from fence line + * @returns {string} Code block with placeholders attribute + */ +function addPlaceholdersAttribute(codeBlock, indent = '') { + const lines = codeBlock.split('\n'); + const fenceLine = lines[0]; + const codeContent = lines.slice(1, -1).join('\n'); + + // Check if already has placeholders attribute + if (fenceLine.includes('placeholders=')) { + return codeBlock; + } + + // Extract placeholders from code + const placeholders = extractPlaceholders(codeContent); + + if (placeholders.length === 0) { + return codeBlock; + } + + // Extract language from fence (handle indented fences) + const langMatch = fenceLine.match(/^\s*```(\w+)?/); + const lang = langMatch && langMatch[1] ? langMatch[1] : ''; + + // Build new fence line with placeholders attribute + const placeholdersStr = placeholders.join('|'); + const newFenceLine = lang + ? `${indent}\`\`\`${lang} { placeholders="${placeholdersStr}" }` + : `${indent}\`\`\` { placeholders="${placeholdersStr}" }`; + + return [newFenceLine, ...lines.slice(1)].join('\n'); +} + +/** + * Wrap placeholder descriptions with code-placeholder-key shortcode + * @param {string} line - Line potentially containing placeholder description + * @returns {string} Line with shortcode wrapper if placeholder found + */ +function wrapPlaceholderDescription(line) { + // Match patterns like "- **`PLACEHOLDER`**: description" or " - **`PLACEHOLDER`**: description" + const pattern = /^(\s*-\s*)\*\*`([A-Z][A-Z0-9_]+)`\*\*(:\s*)/; + const match = line.match(pattern); + + if (!match) { + return line; + } + + // Check if already wrapped + if (line.includes('{{% code-placeholder-key %}}')) { + return line; + } + + const prefix = match[1]; + const placeholder = match[2]; + const suffix = match[3]; + const description = line.substring(match[0].length); + + return `${prefix}{{% code-placeholder-key %}}\`${placeholder}\`{{% /code-placeholder-key %}}${suffix}${description}`; +} + +/** + * Process markdown content + * @param {string} content - Markdown content + * @returns {string} Processed content + */ +function processMarkdown(content) { + const lines = content.split('\n'); + const result = []; + let inCodeBlock = false; + let codeBlockLines = []; + let inReplaceSection = false; + + for (let i = 0; i < lines.length; i++) { + const line = lines[i]; + + // Track "Replace the following:" sections + if (line.trim().match(/^Replace the following:?$/i)) { + inReplaceSection = true; + result.push(line); + continue; + } + + // Exit replace section on non-list-item line (but allow empty lines within list) + if ( + inReplaceSection && + line.trim() !== '' && + !line.trim().startsWith('-') && + !line.match(/^#{1,6}\s/) + ) { + inReplaceSection = false; + } + + // Handle code blocks (including indented) + if (line.trim().startsWith('```')) { + if (!inCodeBlock) { + // Start of code block + inCodeBlock = true; + codeBlockLines = [line]; + } else { + // End of code block + codeBlockLines.push(line); + const codeBlock = codeBlockLines.join('\n'); + const indent = line.match(/^(\s*)/)[1]; + const processedBlock = addPlaceholdersAttribute(codeBlock, indent); + result.push(processedBlock); + inCodeBlock = false; + codeBlockLines = []; + } + } else if (inCodeBlock) { + // Inside code block + codeBlockLines.push(line); + } else if (inReplaceSection) { + // Process placeholder descriptions + result.push(wrapPlaceholderDescription(line)); + } else { + // Regular line + result.push(line); + } + } + + return result.join('\n'); +} + +/** + * Main function + */ +function main() { + try { + // Read file + const content = readFileSync(filePath, 'utf-8'); + + // Process content + const processedContent = processMarkdown(content); + + if (isDryRun) { + console.log('=== DRY RUN - Changes that would be made ===\n'); + console.log(processedContent); + } else { + // Write back to file + writeFileSync(filePath, processedContent, 'utf-8'); + console.log(`โœ“ Updated ${filePath}`); + console.log('Added placeholder syntax to code blocks and descriptions'); + } + } catch (error) { + console.error(`Error: ${error.message}`); + process.exit(1); + } +} + +main(); diff --git a/scripts/docs-create.js b/scripts/docs-create.js new file mode 100644 index 000000000..a5fb91567 --- /dev/null +++ b/scripts/docs-create.js @@ -0,0 +1,1002 @@ +#!/usr/bin/env node + +/** + * Documentation scaffolding tool + * Prepares context for Claude to analyze and generates file structure + * + * NOTE: This script uses the Task() function which is only available when + * executed by Claude Code. The Task() function should be globally available + * in that environment. + */ + +import { parseArgs } from 'node:util'; +import process from 'node:process'; +import { join, dirname } from 'path'; +import { fileURLToPath } from 'url'; +import { existsSync, readFileSync, writeFileSync } from 'fs'; +import yaml from 'js-yaml'; +import { + prepareContext, + executeProposal, + validateProposal, + analyzeURLs, + loadProducts, + analyzeStructure, +} from './lib/content-scaffolding.js'; +import { writeJson, readJson, fileExists } from './lib/file-operations.js'; +import { parseMultipleURLs } from './lib/url-parser.js'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +// Repository root +const REPO_ROOT = join(__dirname, '..'); + +// Temp directory for context and proposal +const TMP_DIR = join(REPO_ROOT, '.tmp'); +const CONTEXT_FILE = join(TMP_DIR, 'scaffold-context.json'); +const PROPOSAL_FILE = join(TMP_DIR, 'scaffold-proposal.yml'); + +// Colors for console output +const colors = { + reset: '\x1b[0m', + bright: '\x1b[1m', + green: '\x1b[32m', + yellow: '\x1b[33m', + blue: '\x1b[34m', + red: '\x1b[31m', + cyan: '\x1b[36m', +}; + +/** + * Print colored output + */ +function log(message, color = 'reset') { + console.log(`${colors[color]}${message}${colors.reset}`); +} + +/** + * Prompt user for input (works in TTY and non-TTY environments) + */ +async function promptUser(question) { + // For non-TTY environments, return empty string + if (!process.stdin.isTTY) { + return ''; + } + + const readline = await import('readline'); + const rl = readline.createInterface({ + input: process.stdin, + output: process.stdout, + }); + + return new Promise((resolve) => { + rl.question(question, (answer) => { + rl.close(); + resolve(answer.trim()); + }); + }); +} + +/** + * Print section divider + */ +function divider() { + log('โ”'.repeat(70), 'cyan'); +} + +/** + * Parse command line arguments + */ +function parseArguments() { + const { values, positionals } = parseArgs({ + options: { + draft: { type: 'string' }, + from: { type: 'string' }, + url: { type: 'string', multiple: true }, + urls: { type: 'string' }, + products: { type: 'string' }, + ai: { type: 'string', default: 'claude' }, + execute: { type: 'boolean', default: false }, + 'context-only': { type: 'boolean', default: false }, + proposal: { type: 'string' }, + 'dry-run': { type: 'boolean', default: false }, + yes: { type: 'boolean', default: false }, + help: { type: 'boolean', default: false }, + }, + allowPositionals: true, + }); + + // First positional argument is treated as draft path + if (positionals.length > 0 && !values.draft && !values.from) { + values.draft = positionals[0]; + } + + // --from is an alias for --draft + if (values.from && !values.draft) { + values.draft = values.from; + } + + // Normalize URLs into array + if (values.urls && !values.url) { + // --urls provides comma-separated list + values.url = values.urls.split(',').map((u) => u.trim()); + } else if (values.urls && values.url) { + // Combine --url and --urls + const urlsArray = values.urls.split(',').map((u) => u.trim()); + values.url = [ + ...(Array.isArray(values.url) ? values.url : [values.url]), + ...urlsArray, + ]; + } + + return values; +} + +/** + * Print usage information + */ +function printUsage() { + console.log(` +${colors.bright}Documentation Content Scaffolding${colors.reset} + +${colors.bright}Usage:${colors.reset} + yarn docs:create Create from draft + yarn docs:create --url --draft Create at URL with draft content + +${colors.bright}Options:${colors.reset} + Path to draft markdown file (positional argument) + --draft Path to draft markdown file + --from Alias for --draft + --url Documentation URL for new content location + --context-only Stop after context preparation + (for non-Claude tools) + --proposal Import and execute proposal from JSON file + --dry-run Show what would be created without creating + --yes Skip confirmation prompt + --help Show this help message + +${colors.bright}Workflow (Create from draft):${colors.reset} + 1. Create a draft markdown file with your content + 2. Run: yarn docs:create drafts/new-feature.md + 3. Script runs all agents automatically + 4. Review and confirm to create files + +${colors.bright}Workflow (Create at specific URL):${colors.reset} + 1. Create draft: vim drafts/new-feature.md + 2. Run: yarn docs:create \\ + --url https://docs.influxdata.com/influxdb3/core/admin/new-feature/ \\ + --draft drafts/new-feature.md + 3. Script determines structure from URL and uses draft content + 4. Review and confirm to create files + +${colors.bright}Workflow (Manual - for non-Claude tools):${colors.reset} + 1. Prepare context: + yarn docs:create --context-only drafts/new-feature.md + 2. Run your AI tool with templates from scripts/templates/ + 3. Save proposal to .tmp/scaffold-proposal.json + 4. Execute: + yarn docs:create --proposal .tmp/scaffold-proposal.json + +${colors.bright}Examples:${colors.reset} + # Create from draft (AI determines location) + yarn docs:create drafts/new-feature.md + + # Create at specific URL with draft content + yarn docs:create --url /influxdb3/core/admin/new-feature/ \\ + --draft drafts/new-feature.md + + # Preview changes + yarn docs:create --draft drafts/new-feature.md --dry-run + +${colors.bright}Note:${colors.reset} + To edit existing pages, use: yarn docs:edit +`); +} + +/** + * Phase 1a: Prepare context from URLs + */ +async function prepareURLPhase(urls, draftPath, options) { + log('\n๐Ÿ” Analyzing URLs and finding files...', 'bright'); + + try { + // Parse URLs + const parsedURLs = parseMultipleURLs(urls); + log(`\nโœ“ Parsed ${parsedURLs.length} URL(s)`, 'green'); + + // Analyze URLs and find files + const urlAnalysis = analyzeURLs(parsedURLs); + + // Print summary + for (const result of urlAnalysis) { + log(`\n URL: ${result.url}`); + log(` Product: ${result.parsed.product} (${result.parsed.namespace})`); + if (result.exists) { + log(` โœ“ Found: ${result.files.main}`, 'green'); + if (result.files.isShared) { + log(` โœ“ Shared content: ${result.files.sharedSource}`, 'cyan'); + log(` โœ“ Found ${result.files.variants.length} variant(s)`, 'cyan'); + for (const variant of result.files.variants) { + log(` - ${variant}`, 'cyan'); + } + } + } else { + log(' โœ— Page does not exist (will create)', 'yellow'); + log(` โ†’ Will create at: ${result.files.main}`, 'yellow'); + } + } + + // Determine mode + const mode = urlAnalysis.every((r) => r.exists) ? 'edit' : 'create'; + log(`\nโœ“ Mode: ${mode}`, 'green'); + + // Load existing content if editing + const existingContent = {}; + if (mode === 'edit') { + for (const result of urlAnalysis) { + if (result.exists) { + const fullPath = join(REPO_ROOT, result.files.main); + const content = readFileSync(fullPath, 'utf8'); + existingContent[result.files.main] = content; + + // Also load shared source if exists + if (result.files.isShared && result.files.sharedSource) { + const sharedPath = join( + REPO_ROOT, + `content${result.files.sharedSource}` + ); + if (existsSync(sharedPath)) { + const sharedContent = readFileSync(sharedPath, 'utf8'); + existingContent[`content${result.files.sharedSource}`] = + sharedContent; + } + } + } + } + } + + // Build context (include URL analysis) + let context = null; + if (draftPath) { + // Use draft content if provided + context = prepareContext(draftPath); + } else { + // Minimal context for editing existing pages + const products = loadProducts(); + context = { + draft: { + path: null, + content: null, + existingFrontmatter: {}, + }, + products, + productHints: { + mentioned: [], + suggested: [], + }, + versionInfo: { + version: parsedURLs[0].namespace === 'influxdb3' ? '3.x' : '2.x', + tools: [], + apis: [], + }, + structure: analyzeStructure(), + conventions: { + sharedContentDir: 'content/shared/', + menuKeyPattern: '{namespace}_{product}', + weightLevels: { + description: 'Weight ranges by level', + level1: '1-99 (top-level pages)', + level2: '101-199 (section landing pages)', + level3: '201-299 (detail pages)', + level4: '301-399 (sub-detail pages)', + }, + namingRules: { + files: 'Use lowercase with hyphens (e.g., manage-databases.md)', + directories: 'Use lowercase with hyphens', + shared: 'Shared content in /content/shared/', + }, + testing: { + codeblocks: + 'Use pytest-codeblocks annotations for testable examples', + docker: 'Use compose.yaml services for testing code samples', + commands: '', + }, + }, + }; + } + + // Add URL analysis to context + context.mode = mode; + context.urls = urlAnalysis; + context.existingContent = existingContent; + + // Write context to temp file + writeJson(CONTEXT_FILE, context); + + log( + `\nโœ“ Prepared context โ†’ ${CONTEXT_FILE.replace(REPO_ROOT, '.')}`, + 'green' + ); + + // If context-only mode, stop here + if (options['context-only']) { + log(''); + divider(); + log('Context preparation complete!', 'bright'); + log(''); + log('Next steps for manual workflow:', 'cyan'); + log('1. Use your AI tool with prompts from scripts/templates/'); + log( + '2. Generate proposal JSON matching ' + + 'scripts/schemas/scaffold-proposal.schema.json' + ); + log('3. Save to .tmp/scaffold-proposal.json'); + log('4. Run: yarn docs:create --proposal .tmp/scaffold-proposal.json'); + divider(); + log(''); + return null; + } + + return context; + } catch (error) { + log(`\nโœ— Error analyzing URLs: ${error.message}`, 'red'); + if (error.stack) { + console.error(error.stack); + } + process.exit(1); + } +} + +/** + * Phase 1b: Prepare context from draft + */ +async function preparePhase(draftPath, options) { + log('\n๐Ÿ” Analyzing draft and repository structure...', 'bright'); + + // Validate draft exists + if (!fileExists(draftPath)) { + log(`โœ— Draft file not found: ${draftPath}`, 'red'); + process.exit(1); + } + + try { + // Prepare context + const context = prepareContext(draftPath); + + // Write context to temp file + writeJson(CONTEXT_FILE, context); + + // Print summary + log( + '\nโœ“ Loaded draft content ' + + `(${context.draft.content.split('\n').length} lines)`, + 'green' + ); + log( + `โœ“ Analyzed ${Object.keys(context.products).length} products ` + + 'from data/products.yml', + 'green' + ); + log( + `โœ“ Found ${context.structure.existingPaths.length} existing pages`, + 'green' + ); + log( + `โœ“ Prepared context โ†’ ${CONTEXT_FILE.replace(REPO_ROOT, '.')}`, + 'green' + ); + + // If context-only mode, stop here + if (options['context-only']) { + log(''); + divider(); + log('Context preparation complete!', 'bright'); + log(''); + log('Next steps for manual workflow:', 'cyan'); + log('1. Use your AI tool with prompts from scripts/templates/'); + log( + '2. Generate proposal JSON matching ' + + 'scripts/schemas/scaffold-proposal.schema.json' + ); + log('3. Save to .tmp/scaffold-proposal.json'); + log('4. Run: yarn docs:create --proposal .tmp/scaffold-proposal.json'); + divider(); + log(''); + return null; + } + + return context; + } catch (error) { + log(`\nโœ— Error preparing context: ${error.message}`, 'red'); + if (error.stack) { + console.error(error.stack); + } + process.exit(1); + } +} + +/** + * Select target products (interactive or from flags) + */ +async function selectProducts(context, options) { + const detected = context.productHints?.mentioned || []; + + // Expand products with multiple versions into separate entries + const allProducts = []; + const productMap = {}; // Maps display name to product key + + for (const [key, product] of Object.entries(context.products)) { + if (product.versions && product.versions.length > 1) { + // Multi-version product: create separate entries for each version + product.versions.forEach((version) => { + const displayName = `${product.name} ${version}`; + allProducts.push(displayName); + productMap[displayName] = key; + }); + } else { + // Single version or no version info: use product name as-is + allProducts.push(product.name); + productMap[product.name] = key; + } + } + + // Case 1: Explicit flag provided + if (options.products) { + const requested = options.products.split(',').map((p) => p.trim()); + const invalid = requested.filter((p) => !allProducts.includes(p)); + + if (invalid.length > 0) { + log( + `\nโœ— Invalid products: ${invalid.join(', ')}\n` + + `Valid products: ${allProducts.join(', ')}`, + 'red' + ); + process.exit(1); + } + + log( + `โœ“ Using products from --products flag: ${requested.join(', ')}`, + 'green' + ); + return requested; + } + + // Case 2: Unambiguous (single product detected) + if (detected.length === 1) { + log(`โœ“ Auto-selected product: ${detected[0]}`, 'green'); + return detected; + } + + // Case 3: URL-based (extract from URL) + if (context.urls?.length > 0) { + const urlPath = context.urls[0].url; + // Extract product from URL like /influxdb3/core/... or /influxdb/cloud/... + const match = urlPath.match(/^\/(influxdb3?\/.+?)\//); + if (match) { + const productPath = match[1].replace(/\//g, '-'); + const product = allProducts.find((p) => p.includes(productPath)); + if (product) { + log(`โœ“ Product from URL: ${product}`, 'green'); + return [product]; + } + } + } + + // Case 4: Ambiguous or none detected - show interactive menu + log('\n๐Ÿ“ฆ Select target products:\n', 'bright'); + allProducts.forEach((p, i) => { + const mark = detected.includes(p) ? 'โœ“' : ' '; + log(` ${i + 1}. [${mark}] ${p}`, 'cyan'); + }); + + const answer = await promptUser( + '\nEnter numbers (comma-separated, e.g., 1,3,5): ' + ); + + if (!answer) { + log('โœ— No products selected', 'red'); + process.exit(1); + } + + const indices = answer + .split(',') + .map((s) => parseInt(s.trim()) - 1) + .filter((i) => i >= 0 && i < allProducts.length); + + if (indices.length === 0) { + log('โœ— No valid products selected', 'red'); + process.exit(1); + } + + const selected = indices.map((i) => allProducts[i]); + log(`\nโœ“ Selected products: ${selected.join(', ')}`, 'green'); + return selected; +} + +/** + * Run single content generator agent with direct file generation (Claude Code) + */ +async function runAgentsWithTaskTool( + context, + selectedProducts, + mode, + isURLBased, + hasExistingContent +) { + // Build context description + const contextDesc = ` +Mode: ${mode} +${isURLBased ? `URLs: ${context.urls.length} URL(s) analyzed` : 'Draft-based workflow'} +${hasExistingContent ? `Existing content: ${Object.keys(context.existingContent).length} file(s)` : 'Creating new content'} +Target Products: ${selectedProducts.join(', ')} +`; + + log(` ${contextDesc.trim().split('\n').join('\n ')}\n`, 'cyan'); + + log('๐Ÿค– Generating documentation files directly...', 'bright'); + + // Use the same prompt as manual workflow for consistency + const prompt = generateClaudePrompt( + context, + selectedProducts, + mode, + isURLBased, + hasExistingContent + ); + + await Task({ + subagent_type: 'general-purpose', + description: + mode === 'edit' + ? 'Update documentation files' + : 'Generate documentation files', + prompt: prompt, + }); + + log(' โœ“ Files generated\n', 'green'); + log( + `\nโœ“ Summary written to ${PROPOSAL_FILE.replace(REPO_ROOT, '.')}`, + 'green' + ); +} + +/** + * Generate simplified Claude prompt for direct file generation + */ +function generateClaudePrompt( + context, + selectedProducts, + mode, + isURLBased, + hasExistingContent +) { + const prompt = `You are an expert InfluxData documentation writer. + +**Context File**: Read from \`.tmp/scaffold-context.json\` +**Target Products**: Use \`context.selectedProducts\` field (${selectedProducts.join(', ')}) +**Mode**: ${mode === 'edit' ? 'Edit existing content' : 'Create new documentation'} +${isURLBased ? `**URLs**: ${context.urls.map((u) => u.url).join(', ')}` : ''} + +**Your Task**: Generate complete documentation files directly (no proposal step). + +**Important**: The context file contains all products from data/products.yml, but you should ONLY create documentation for the products listed in \`context.selectedProducts\`. + +**Workflow**: +1. Read and analyze \`.tmp/scaffold-context.json\` +2. ${mode === 'edit' ? 'Review existing content and plan improvements' : 'Analyze draft content to determine topic, audience, and structure'} +3. ${isURLBased ? 'Use URL paths to determine file locations' : 'Determine appropriate section (admin, write-data, query-data, etc.)'} +4. Decide if content should be shared across products +5. **Generate and write markdown files directly** using the Write tool +6. Create a summary YAML file at \`.tmp/scaffold-proposal.yml\` + +**Content Requirements**: +- **Style**: Active voice, present tense, second person ("you") +- **Formatting**: Semantic line feeds (one sentence per line) +- **Headings**: Use h2-h6 only (h1 comes from title) +- **Code Examples**: + - Use ${context.versionInfo?.tools?.join(' or ') || 'influxdb3, influx, or influxctl'} CLI + - Include pytest-codeblocks annotations + - Format to fit within 80 characters + - Use long options (--option vs -o) + - Show expected output +- **Links**: Descriptive link text, no "click here" +- **Placeholders**: Use UPPERCASE for values users need to replace (e.g., DATABASE_NAME, AUTH_TOKEN) + +**File Structure**: +${ + selectedProducts.length > 1 || context.productHints?.isShared + ? `- Content applies to multiple products: + - Create ONE shared content file in content/shared/ + - Create frontmatter-only files for each product referencing it` + : `- Product-specific content: + - Create files directly in product directories` +} + +**Validation Checks** (run before writing files): +1. **Path validation**: Lowercase, hyphens only (no underscores in filenames) +2. **Weight conflicts**: Check sibling pages, choose unused weight 101-199 +3. **Frontmatter completeness**: All required fields present +4. **Shared content**: If multi-product, verify source paths are correct +5. **Menu structure**: Parent sections exist in product menu hierarchy + +**File Generation**: +For each file you need to create: + +1. **Check if file exists**: Use Read tool first (ignore errors if not found) +2. **Generate frontmatter** in YAML format with proper nesting: + \`\`\`yaml + --- + title: Page Title + description: SEO-friendly description under 160 characters + menu: + product_version: + name: Nav Name + parent: section + weight: 101 + related: + - /related/page/ + alt_links: + other_product: /other/path/ + --- + \`\`\` + +3. **Write full markdown content** with: + - Frontmatter (YAML block) + - Complete article content + - Code examples with proper annotations + - Proper internal links + +4. **Use Write tool**: Write the complete file + - For new files: just use Write + - For existing files: Read first, then Write + +**Summary File**: After generating all files, create \`.tmp/scaffold-proposal.yml\`: + +\`\`\`yaml +topic: Brief description of what was created +targetProducts: + - ${selectedProducts.join('\n - ')} +section: admin | write-data | query-data | get-started | reference +isShared: ${selectedProducts.length > 1} +filesCreated: + - path: content/path/to/file.md + type: shared-content | frontmatter-only | product-specific + status: created | updated +validationResults: + pathsValid: true | false + weightsValid: true | false + frontmatterComplete: true | false + issues: [] +nextSteps: + - Review generated files + - Test code examples + - Check internal links +\`\`\` + +**Important**: +- Use the Write tool for ALL files (markdown and YAML summary) +- For existing files, use Read first, then Write to overwrite +- Generate COMPLETE content, not stubs or placeholders +- Run validation checks before writing each file + +Begin now. Generate the files directly. +`; + return prompt; +} + +/** + * Phase 2: Run AI agent analysis + * Orchestrates multiple specialized agents to analyze draft and + * generate proposal + */ +async function runAgentAnalysis(context, options) { + log('๐Ÿ“‹ Phase 2: AI Analysis\n', 'cyan'); + + // Detect environment and determine workflow + const isClaudeCodeEnv = typeof Task !== 'undefined'; + const aiMode = options.ai || 'claude'; + const useTaskTool = isClaudeCodeEnv && aiMode === 'claude'; + + if (useTaskTool) { + log( + '๐Ÿค– Detected Claude Code environment - running agents automatically\n', + 'green' + ); + } else if (aiMode === 'claude') { + log( + '๐Ÿ“‹ Claude Code environment not detected - will output prompt for copy-paste\n', + 'cyan' + ); + } + + try { + const mode = context.mode || 'create'; + const isURLBased = context.urls && context.urls.length > 0; + const hasExistingContent = + context.existingContent && + Object.keys(context.existingContent).length > 0; + + // Select target products + const selectedProducts = await selectProducts(context, options); + + // Add selectedProducts to context and update the context file + context.selectedProducts = selectedProducts; + writeJson(CONTEXT_FILE, context); + log( + `โœ“ Updated context with selected products: ${selectedProducts.join(', ')}`, + 'green' + ); + + // Hybrid workflow: automatic (Task tool) vs manual (prompt output) + if (useTaskTool) { + // Automatic workflow using Task tool + await runAgentsWithTaskTool( + context, + selectedProducts, + mode, + isURLBased, + hasExistingContent + ); + } else { + // Manual workflow: save consolidated prompt to file + const consolidatedPrompt = generateClaudePrompt( + context, + selectedProducts, + mode, + isURLBased, + hasExistingContent + ); + + // Generate filename from draft or topic + const draftName = context.draft?.path + ? context.draft.path.split('/').pop().replace(/\.md$/, '') + : 'untitled'; + const sanitizedName = draftName + .toLowerCase() + .replace(/\s+/g, '-') + .replace(/[^a-z0-9-]/g, ''); + + const promptDir = join(REPO_ROOT, '.context/drafts'); + const promptFile = join(promptDir, `${sanitizedName}-ai-prompt.md`); + + // Ensure directory exists + if (!existsSync(promptDir)) { + const fs = await import('fs'); + fs.mkdirSync(promptDir, { recursive: true }); + } + + // Write prompt to file + const fs = await import('fs'); + fs.writeFileSync(promptFile, consolidatedPrompt, 'utf8'); + + log('\nโœ… AI prompt saved!', 'green'); + log(`\n๐Ÿ“„ File: ${promptFile.replace(REPO_ROOT, '.')}\n`, 'cyan'); + + log('๐Ÿ“ Next steps:', 'bright'); + log(' 1. Open the prompt file in your editor', 'yellow'); + log(' 2. Copy the entire content', 'yellow'); + log(' 3. Paste into your AI tool (Claude, ChatGPT, etc.)', 'yellow'); + log( + ' 4. The AI will generate documentation files directly in content/', + 'yellow' + ); + log(' 5. Review the generated files and iterate as needed', 'yellow'); + log( + ` 6. Check the summary at ${PROPOSAL_FILE.replace(REPO_ROOT, '.')}`, + 'yellow' + ); + + process.exit(0); + } + } catch (error) { + log(`\nโœ— Error during AI analysis: ${error.message}`, 'red'); + if (error.stack) { + console.error(error.stack); + } + process.exit(1); + } +} + +// Remove all the old agent code below - it's been replaced by the hybrid approach above +// The function now ends here + +/** + * Phase 3: Execute proposal + */ +async function executePhase(options) { + log('\n๐Ÿ“ Phase 3: Executing Proposal\n', 'bright'); + + // Auto-detect proposal if not specified + let proposalPath = options.proposal || PROPOSAL_FILE; + + if (!fileExists(proposalPath)) { + log(`\nโœ— Proposal file not found: ${proposalPath}`, 'red'); + log( + '\nRun yarn docs:create --draft first to generate proposal', + 'yellow' + ); + process.exit(1); + } + + // Read and validate proposal + const proposal = readJson(proposalPath); + + try { + validateProposal(proposal); + } catch (error) { + log(`\nโœ— Invalid proposal: ${error.message}`, 'red'); + process.exit(1); + } + + // Show preview + log('\n๐Ÿ“‹ Proposal Summary:\n', 'cyan'); + log(` Topic: ${proposal.analysis.topic}`, 'cyan'); + log(` Products: ${proposal.analysis.targetProducts.join(', ')}`, 'cyan'); + log(` Section: ${proposal.analysis.section}`, 'cyan'); + log(` Shared: ${proposal.analysis.isShared ? 'Yes' : 'No'}`, 'cyan'); + + if (proposal.analysis.styleReview?.issues?.length > 0) { + log( + `\nโš ๏ธ Style Issues (${proposal.analysis.styleReview.issues.length}):`, + 'yellow' + ); + proposal.analysis.styleReview.issues.forEach((issue) => { + log(` โ€ข ${issue}`, 'yellow'); + }); + } + + log('\n๐Ÿ“ Files to create:\n', 'bright'); + proposal.files.forEach((file) => { + const icon = file.type === 'shared-content' ? '๐Ÿ“„' : '๐Ÿ“‹'; + const size = file.content ? ` (${file.content.length} chars)` : ''; + log(` ${icon} ${file.path}${size}`, 'cyan'); + }); + + // Dry run mode + if (options['dry-run']) { + log('\nโœ“ Dry run complete (no files created)', 'green'); + return; + } + + // Confirm unless --yes flag + if (!options.yes) { + const answer = await promptUser('\nProceed with creating files? (y/n): '); + + if (answer.toLowerCase() !== 'y') { + log('โœ— Cancelled by user', 'yellow'); + process.exit(0); + } + } + + // Execute proposal + log('\n๐Ÿ“ Creating files...', 'bright'); + const result = executeProposal(proposal); + + // Report results + if (result.created.length > 0) { + log('\nโœ… Created files:', 'green'); + result.created.forEach((file) => { + log(` โœ“ ${file}`, 'green'); + }); + } + + if (result.errors.length > 0) { + log('\nโœ— Errors:', 'red'); + result.errors.forEach((err) => log(` โ€ข ${err}`, 'red')); + } + + // Print next steps + if (result.created.length > 0) { + log('\n๐ŸŽ‰ Done! Next steps:', 'bright'); + log(' 1. Review generated frontmatter and content'); + log(' 2. Test locally: npx hugo server'); + log( + ` 3. Test links: yarn test:links ${result.created[0].replace(/\/[^/]+$/, '/')}**/*.md` + ); + log(' 4. Commit changes: git add content/ && git commit'); + } + + if (result.errors.length > 0) { + process.exit(1); + } +} + +/** + * Main entry point + */ +async function main() { + const options = parseArguments(); + + // Show help + if (options.help) { + printUsage(); + process.exit(0); + } + + // Determine workflow + if (options.url && options.url.length > 0) { + // URL-based workflow requires draft content + if (!options.draft) { + log('\nโœ— Error: --url requires --draft ', 'red'); + log('The --url option specifies WHERE to create content.', 'yellow'); + log( + 'You must provide --draft to specify WHAT content to create.', + 'yellow' + ); + log('\nExample:', 'cyan'); + log( + ' yarn docs:create --url /influxdb3/core/admin/new-feature/ \\', + 'cyan' + ); + log(' --draft drafts/new-feature.md', 'cyan'); + log('\nTo edit an existing page, use: yarn docs:edit ', 'cyan'); + process.exit(1); + } + + const context = await prepareURLPhase(options.url, options.draft, options); + + if (options['context-only']) { + // Stop after context preparation + process.exit(0); + } + + // Continue with AI analysis (Phase 2) + log('\n๐Ÿค– Running AI analysis with specialized agents...\n', 'bright'); + await runAgentAnalysis(context, options); + + // Execute proposal (Phase 3) + await executePhase(options); + } else if (options.draft) { + // Draft-based workflow + const context = await preparePhase(options.draft, options); + + if (options['context-only']) { + // Stop after context preparation + process.exit(0); + } + + // Continue with AI analysis (Phase 2) + log('\n๐Ÿค– Running AI analysis with specialized agents...\n', 'bright'); + await runAgentAnalysis(context, options); + + // Execute proposal (Phase 3) + await executePhase(options); + } else if (options.proposal) { + // Import and execute external proposal + if (!fileExists(options.proposal)) { + log(`\nโœ— Proposal file not found: ${options.proposal}`, 'red'); + process.exit(1); + } + // Copy proposal to expected location + const proposal = readJson(options.proposal); + writeJson(PROPOSAL_FILE, proposal); + await executePhase(options); + } else if (options.execute || options['dry-run']) { + // Legacy: Execute proposal (deprecated) + log( + '\nโš  Warning: --execute is deprecated. Use --proposal instead.', + 'yellow' + ); + await executePhase(options); + } else { + // No valid options provided + log( + 'Error: Must specify a docs URL (new or existing), a draft path, or --proposal', + 'red' + ); + log('Run with --help for usage information\n'); + process.exit(1); + } +} + +// Run if called directly +if (import.meta.url === `file://${process.argv[1]}`) { + main().catch((error) => { + log(`\nFatal error: ${error.message}`, 'red'); + console.error(error.stack); + process.exit(1); + }); +} + +export { preparePhase, executePhase }; diff --git a/scripts/docs-edit.js b/scripts/docs-edit.js new file mode 100755 index 000000000..ec85e73e9 --- /dev/null +++ b/scripts/docs-edit.js @@ -0,0 +1,249 @@ +#!/usr/bin/env node + +/** + * Documentation file opener + * Opens existing documentation pages in your default editor + * + * Usage: + * yarn docs:edit + * yarn docs:edit https://docs.influxdata.com/influxdb3/core/admin/databases/ + * yarn docs:edit /influxdb3/core/admin/databases/ + */ + +import { parseArgs } from 'node:util'; +import process from 'node:process'; +import { join, dirname } from 'path'; +import { fileURLToPath } from 'url'; +import { existsSync, readFileSync } from 'fs'; +import { spawn } from 'child_process'; +import { parseDocumentationURL, urlToFilePaths } from './lib/url-parser.js'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +// Repository root +const REPO_ROOT = join(__dirname, '..'); + +// Colors for console output +const colors = { + reset: '\x1b[0m', + bright: '\x1b[1m', + green: '\x1b[32m', + yellow: '\x1b[33m', + blue: '\x1b[34m', + red: '\x1b[31m', + cyan: '\x1b[36m', +}; + +/** + * Print colored output + */ +function log(message, color = 'reset') { + console.log(`${colors[color]}${message}${colors.reset}`); +} + +/** + * Parse command line arguments + */ +function parseArguments() { + const { values, positionals } = parseArgs({ + options: { + help: { type: 'boolean', default: false }, + list: { type: 'boolean', default: false }, + }, + allowPositionals: true, + }); + + // First positional argument is the URL + if (positionals.length > 0 && !values.url) { + values.url = positionals[0]; + } + + return values; +} + +/** + * Print usage information + */ +function printUsage() { + console.log(` +${colors.bright}Documentation File Opener${colors.reset} + +${colors.bright}Usage:${colors.reset} + yarn docs:edit Open page in editor + yarn docs:edit --list List matching files without opening + +${colors.bright}Arguments:${colors.reset} + Documentation URL or path + +${colors.bright}Options:${colors.reset} + --list List matching files without opening + --help Show this help message + +${colors.bright}Examples:${colors.reset} + # Open with full URL + yarn docs:edit https://docs.influxdata.com/influxdb3/core/admin/databases/ + + # Open with path only + yarn docs:edit /influxdb3/core/admin/databases/ + + # List files without opening + yarn docs:edit --list /influxdb3/core/admin/databases/ + +${colors.bright}Notes:${colors.reset} + - Opens files in your default editor (set via EDITOR environment variable) + - If multiple files exist (e.g., shared content variants), opens all of them + - Falls back to VS Code if EDITOR is not set +`); +} + +/** + * Find matching files for a URL + */ +function findFiles(url) { + try { + // Parse URL + const parsed = parseDocumentationURL(url); + log(`\n๐Ÿ” Analyzing URL: ${url}`, 'bright'); + log(` Product: ${parsed.namespace}/${parsed.product || 'N/A'}`, 'cyan'); + log(` Section: ${parsed.section || 'N/A'}`, 'cyan'); + + // Get potential file paths + const potentialPaths = urlToFilePaths(parsed); + const foundFiles = []; + + for (const relativePath of potentialPaths) { + const fullPath = join(REPO_ROOT, relativePath); + if (existsSync(fullPath)) { + foundFiles.push(relativePath); + } + } + + return { parsed, foundFiles }; + } catch (error) { + log(`\nโœ— Error parsing URL: ${error.message}`, 'red'); + process.exit(1); + } +} + +/** + * Check if file uses shared content + */ +function checkSharedContent(filePath) { + const fullPath = join(REPO_ROOT, filePath); + + if (!existsSync(fullPath)) { + return null; + } + + const content = readFileSync(fullPath, 'utf8'); + + // Check for source: frontmatter + const sourceMatch = content.match(/^source:\s*(.+)$/m); + if (sourceMatch) { + const sourcePath = sourceMatch[1].trim(); + return `content${sourcePath}`; + } + + return null; +} + +/** + * Open files in editor + */ +function openInEditor(files) { + // Determine editor + const editor = process.env.EDITOR || 'code'; + + log(`\n๐Ÿ“ Opening ${files.length} file(s) in ${editor}...`, 'bright'); + + // Convert to absolute paths + const absolutePaths = files.map((f) => join(REPO_ROOT, f)); + + // Spawn editor process + const child = spawn(editor, absolutePaths, { + stdio: 'inherit', + detached: false, + }); + + child.on('error', (error) => { + log(`\nโœ— Failed to open editor: ${error.message}`, 'red'); + log('\nTry setting the EDITOR environment variable:', 'yellow'); + log(' export EDITOR=vim', 'cyan'); + log(' export EDITOR=code', 'cyan'); + log(' export EDITOR=nano', 'cyan'); + process.exit(1); + }); + + child.on('close', (code) => { + if (code !== 0 && code !== null) { + log(`\nโœ— Editor exited with code ${code}`, 'yellow'); + } + }); +} + +/** + * Main entry point + */ +async function main() { + const options = parseArguments(); + + // Show help + if (options.help || !options.url) { + printUsage(); + process.exit(0); + } + + // Find files + const { parsed, foundFiles } = findFiles(options.url); + + if (foundFiles.length === 0) { + log('\nโœ— No files found for this URL', 'red'); + log('\nThe page may not exist yet. To create new content, use:', 'yellow'); + log(' yarn docs:create --url --draft ', 'cyan'); + process.exit(1); + } + + // Display found files + log('\nโœ“ Found files:', 'green'); + const allFiles = new Set(); + + for (const file of foundFiles) { + allFiles.add(file); + log(` โ€ข ${file}`, 'cyan'); + + // Check for shared content + const sharedSource = checkSharedContent(file); + if (sharedSource) { + if (existsSync(join(REPO_ROOT, sharedSource))) { + allFiles.add(sharedSource); + log( + ` โ€ข ${sharedSource} ${colors.yellow}(shared source)${colors.reset}`, + 'cyan' + ); + } + } + } + + const filesToOpen = Array.from(allFiles); + + // List only mode + if (options.list) { + log(`\nโœ“ Found ${filesToOpen.length} file(s)`, 'green'); + process.exit(0); + } + + // Open in editor + openInEditor(filesToOpen); +} + +// Run if called directly +if (import.meta.url === `file://${process.argv[1]}`) { + main().catch((error) => { + log(`\nFatal error: ${error.message}`, 'red'); + console.error(error.stack); + process.exit(1); + }); +} + +export { findFiles, openInEditor }; diff --git a/scripts/lib/content-scaffolding.js b/scripts/lib/content-scaffolding.js new file mode 100644 index 000000000..63d0e6e66 --- /dev/null +++ b/scripts/lib/content-scaffolding.js @@ -0,0 +1,760 @@ +/** + * Content scaffolding utilities for InfluxData documentation + * Analyzes repository structure and prepares context for Claude + */ + +import { readdirSync, readFileSync, existsSync, statSync } from 'fs'; +import { join, dirname } from 'path'; +import { fileURLToPath } from 'url'; +import yaml from 'js-yaml'; +import matter from 'gray-matter'; +import { + readDraft, + writeJson, + writeMarkdownFile, + writeFrontmatterFile, + validatePath, + ensureDirectory, +} from './file-operations.js'; +import { urlToFilePaths } from './url-parser.js'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +// Repository root is two levels up from scripts/lib/ +const REPO_ROOT = join(__dirname, '../..'); + +/** + * Load products configuration from data/products.yml + * @returns {object} Products configuration + */ +export function loadProducts() { + const productsPath = join(REPO_ROOT, 'data/products.yml'); + + if (!existsSync(productsPath)) { + throw new Error('products.yml not found at ' + productsPath); + } + + const productsYaml = readFileSync(productsPath, 'utf8'); + const products = yaml.load(productsYaml); + + // Transform into more useful structure + const productMap = {}; + for (const [key, value] of Object.entries(products)) { + productMap[key] = { + key, + name: value.name, + namespace: value.namespace, + menu_category: value.menu_category, + versions: value.versions || [], + latest: value.latest, + }; + } + + return productMap; +} + +/** + * Extract product mentions from draft content + * @param {string} content - Draft content to analyze + * @param {object} products - Products map from loadProducts() + * @returns {string[]} Array of product keys mentioned + */ +export function extractProductMentions(content, products) { + const mentioned = new Set(); + const contentLower = content.toLowerCase(); + + // Product name patterns to search for + const patterns = { + influxdb3_core: [ + 'influxdb 3 core', + 'influxdb3 core', + 'influxdb core', + 'core version', + ], + influxdb3_enterprise: [ + 'influxdb 3 enterprise', + 'influxdb3 enterprise', + 'influxdb enterprise', + 'enterprise version', + ], + influxdb3_cloud_dedicated: [ + 'cloud dedicated', + 'influxdb cloud dedicated', + 'dedicated cluster', + ], + influxdb3_cloud_serverless: [ + 'cloud serverless', + 'influxdb cloud serverless', + 'serverless', + ], + influxdb3_clustered: ['clustered', 'influxdb clustered', 'kubernetes'], + influxdb_cloud: ['influxdb cloud', 'influxdb 2 cloud'], + influxdb_v2: ['influxdb 2', 'influxdb v2', 'influxdb 2.x'], + influxdb_v1: ['influxdb 1', 'influxdb v1', 'influxdb 1.x'], + }; + + // Check for each product's patterns + for (const [productKey, productPatterns] of Object.entries(patterns)) { + for (const pattern of productPatterns) { + if (contentLower.includes(pattern)) { + mentioned.add(productKey); + break; + } + } + } + + return Array.from(mentioned); +} + +/** + * Detect InfluxDB version and related tools from draft content + * @param {string} content - Draft content to analyze + * @returns {object} Version information + */ +export function detectInfluxDBVersion(content) { + const contentLower = content.toLowerCase(); + + // Version detection patterns + const versionInfo = { + version: null, + tools: [], + apis: [], + }; + + // Detect version + if ( + contentLower.includes('influxdb 3') || + contentLower.includes('influxdb3') + ) { + versionInfo.version = '3.x'; + + // v3-specific tools + if ( + contentLower.includes('influxdb3 ') || + contentLower.includes('influxdb3-') + ) { + versionInfo.tools.push('influxdb3 CLI'); + } + if (contentLower.includes('influxctl')) { + versionInfo.tools.push('influxctl'); + } + if (contentLower.includes('/api/v3')) { + versionInfo.apis.push('/api/v3'); + } + } else if ( + contentLower.includes('influxdb 2') || + contentLower.includes('influxdb v2') + ) { + versionInfo.version = '2.x'; + + // v2-specific tools + if (contentLower.includes('influx ')) { + versionInfo.tools.push('influx CLI'); + } + if (contentLower.includes('/api/v2')) { + versionInfo.apis.push('/api/v2'); + } + } else if ( + contentLower.includes('influxdb 1') || + contentLower.includes('influxdb v1') + ) { + versionInfo.version = '1.x'; + + // v1-specific tools + if (contentLower.includes('influx -')) { + versionInfo.tools.push('influx CLI (v1)'); + } + if (contentLower.includes('influxd')) { + versionInfo.tools.push('influxd'); + } + } + + // Common tools across versions + if (contentLower.includes('telegraf')) { + versionInfo.tools.push('Telegraf'); + } + + return versionInfo; +} + +/** + * Analyze content directory structure + * @param {string|string[]} basePaths - Base path(s) to analyze (e.g., 'content/influxdb3' or ['content/influxdb3', 'content/influxdb']) + * @returns {object} Structure analysis + */ +export function analyzeStructure(basePaths = 'content/influxdb3') { + // Normalize to array + const pathsArray = Array.isArray(basePaths) ? basePaths : [basePaths]; + + const allSections = new Set(); + const allExistingPaths = []; + const siblingWeights = {}; + + // Analyze each base path + for (const basePath of pathsArray) { + const fullPath = join(REPO_ROOT, basePath); + + if (!existsSync(fullPath)) { + continue; + } + + // Recursively walk directory + function walk(dir, relativePath = '') { + try { + const entries = readdirSync(dir); + + for (const entry of entries) { + const fullEntryPath = join(dir, entry); + const relativeEntryPath = join(relativePath, entry); + + try { + const stat = statSync(fullEntryPath); + + if (stat.isDirectory()) { + // Track product-level directories (first level under content/namespace/) + const pathParts = relativeEntryPath.split('/'); + if (pathParts.length === 2) { + // This is a product directory (e.g., 'core', 'enterprise') + allSections.add(pathParts[1]); + } + + // Track all directory paths + allExistingPaths.push(join(basePath, relativeEntryPath)); + + // Recurse + walk(fullEntryPath, relativeEntryPath); + } + } catch (error) { + // Skip files/dirs we can't access + continue; + } + } + } catch (error) { + // Skip directories we can't read + } + } + + walk(fullPath); + + // Analyze weights in common sections for all product directories + const commonSections = [ + 'admin', + 'write-data', + 'query-data', + 'reference', + 'get-started', + 'plugins', + ]; + + // Find all product directories (e.g., core, enterprise, cloud-dedicated) + try { + const productDirs = readdirSync(fullPath).filter((entry) => { + const fullEntryPath = join(fullPath, entry); + return ( + existsSync(fullEntryPath) && statSync(fullEntryPath).isDirectory() + ); + }); + + for (const productDir of productDirs) { + for (const section of commonSections) { + const sectionPath = join(fullPath, productDir, section); + if (existsSync(sectionPath)) { + const weights = findSiblingWeights(sectionPath); + if (weights.length > 0) { + siblingWeights[`${basePath}/${productDir}/${section}/`] = weights; + } + } + } + } + } catch (error) { + // Skip if we can't read directory + } + } + + return { + sections: [...allSections].sort(), + existingPaths: allExistingPaths.sort(), + siblingWeights, + }; +} + +/** + * Find weight values from sibling pages in a directory + * @param {string} dirPath - Directory to analyze + * @returns {number[]} Array of weight values + */ +export function findSiblingWeights(dirPath) { + if (!existsSync(dirPath)) { + return []; + } + + const weights = []; + const entries = readdirSync(dirPath); + + for (const entry of entries) { + if (entry.endsWith('.md')) { + const filePath = join(dirPath, entry); + try { + const content = readFileSync(filePath, 'utf8'); + const parsed = matter(content); + + if (parsed.data && typeof parsed.data.weight === 'number') { + weights.push(parsed.data.weight); + } + } catch (error) { + // Skip files that can't be parsed + continue; + } + } + } + + return weights.sort((a, b) => a - b); +} + +/** + * Prepare complete context for AI analysis + * @param {string} draftPath - Path to draft file + * @returns {object} Context object + */ +export function prepareContext(draftPath) { + // Read draft + const draft = readDraft(draftPath); + + // Load products + const products = loadProducts(); + + // Extract product mentions from draft + const mentionedProducts = extractProductMentions(draft.content, products); + + // Detect InfluxDB version and tools + const versionInfo = detectInfluxDBVersion(draft.content); + + // Determine which content paths to analyze based on version + let contentPaths = []; + if (versionInfo.version === '3.x') { + contentPaths = ['content/influxdb3']; + } else if (versionInfo.version === '2.x') { + contentPaths = ['content/influxdb']; + } else if (versionInfo.version === '1.x') { + contentPaths = ['content/influxdb/v1', 'content/enterprise_influxdb/v1']; + } else { + // Default: analyze all + contentPaths = ['content/influxdb3', 'content/influxdb']; + } + + // Analyze structure for relevant paths + const structure = analyzeStructure(contentPaths); + + // Build context + const context = { + draft: { + path: draftPath, + content: draft.content, + existingFrontmatter: draft.frontmatter, + }, + products, + productHints: { + mentioned: mentionedProducts, + suggested: + mentionedProducts.length > 0 + ? mentionedProducts + : Object.keys(products).filter( + (key) => + key.startsWith('influxdb3_') || key.startsWith('influxdb_v') + ), + }, + versionInfo, + structure, + conventions: { + sharedContentDir: 'content/shared/', + menuKeyPattern: '{namespace}_{product}', + weightLevels: { + description: 'Weight ranges by level', + level1: '1-99 (top-level pages)', + level2: '101-199 (section landing pages)', + level3: '201-299 (detail pages)', + level4: '301-399 (sub-detail pages)', + }, + namingRules: { + files: 'Use lowercase with hyphens (e.g., manage-databases.md)', + directories: 'Use lowercase with hyphens', + shared: 'Shared content in /content/shared/', + }, + testing: { + codeblocks: 'Use pytest-codeblocks annotations for testable examples', + docker: 'Use compose.yaml services for testing code samples', + commands: `Version-specific CLIs: ${versionInfo.tools.join(', ') || 'detected from content'}`, + }, + }, + }; + + return context; +} + +/** + * Execute a proposal and create files + * @param {object} proposal - Proposal from Claude + * @returns {{created: string[], errors: string[]}} + */ +export function executeProposal(proposal) { + const created = []; + const errors = []; + + if (!proposal || !proposal.files) { + throw new Error('Invalid proposal: missing files array'); + } + + for (const file of proposal.files) { + try { + // Validate path + const validation = validatePath(file.path); + if (!validation.valid) { + errors.push( + `Invalid path ${file.path}: ${validation.errors.join(', ')}` + ); + continue; + } + + const fullPath = join(REPO_ROOT, file.path); + + // Check if file already exists + if (existsSync(fullPath)) { + errors.push(`File already exists: ${file.path}`); + continue; + } + + // Create file based on type + if (file.type === 'shared-content') { + // Shared content file with actual content + writeMarkdownFile(fullPath, {}, file.content || ''); + created.push(file.path); + } else if (file.type === 'frontmatter-only') { + // Frontmatter-only file with source reference + if (!file.frontmatter) { + errors.push(`Missing frontmatter for ${file.path}`); + continue; + } + + const sourcePath = file.frontmatter.source || ''; + writeFrontmatterFile(fullPath, file.frontmatter, sourcePath); + created.push(file.path); + } else { + errors.push(`Unknown file type: ${file.type} for ${file.path}`); + } + } catch (error) { + errors.push(`Error creating ${file.path}: ${error.message}`); + } + } + + return { created, errors }; +} + +/** + * Validate a proposal before execution + * @param {object} proposal - Proposal to validate + * @returns {{valid: boolean, errors: string[], warnings: string[]}} + */ +export function validateProposal(proposal) { + const errors = []; + const warnings = []; + + if (!proposal) { + return { + valid: false, + errors: ['Proposal is null or undefined'], + warnings, + }; + } + + if (!proposal.files || !Array.isArray(proposal.files)) { + errors.push('Proposal must have a files array'); + return { valid: false, errors, warnings }; + } + + if (proposal.files.length === 0) { + warnings.push('Proposal has no files to create'); + } + + // Validate each file + for (const file of proposal.files) { + if (!file.path) { + errors.push('File missing path property'); + continue; + } + + if (!file.type) { + errors.push(`File ${file.path} missing type property`); + } + + // Path validation + const pathValidation = validatePath(file.path); + if (!pathValidation.valid) { + errors.push( + `Invalid path ${file.path}: ${pathValidation.errors.join(', ')}` + ); + } + + // Check for conflicts + const fullPath = join(REPO_ROOT, file.path); + if (existsSync(fullPath)) { + warnings.push(`File already exists: ${file.path}`); + } + + // Type-specific validation + if (file.type === 'frontmatter-only') { + if (!file.frontmatter) { + errors.push(`Frontmatter-only file ${file.path} missing frontmatter`); + } else { + if (!file.frontmatter.title) { + errors.push(`File ${file.path} missing title in frontmatter`); + } + if (!file.frontmatter.description) { + warnings.push(`File ${file.path} missing description in frontmatter`); + } + if (!file.frontmatter.menu) { + errors.push(`File ${file.path} missing menu in frontmatter`); + } + if (!file.frontmatter.weight) { + errors.push(`File ${file.path} missing weight in frontmatter`); + } + if (!file.frontmatter.source) { + warnings.push(`File ${file.path} missing source reference`); + } + } + } else if (file.type === 'shared-content') { + if (!file.content) { + warnings.push(`Shared content file ${file.path} has no content`); + } + } + } + + return { + valid: errors.length === 0, + errors, + warnings, + }; +} + +/** + * Suggest next weight value for a section + * @param {number[]} existingWeights - Existing weights in section + * @param {number} level - Weight level (1-4) + * @returns {number} Suggested next weight + */ +export function suggestNextWeight(existingWeights, level = 3) { + const baseLevels = { + 1: 1, + 2: 101, + 3: 201, + 4: 301, + }; + + const base = baseLevels[level] || 201; + const maxWeight = base + 98; // Each level has 99 slots + + if (existingWeights.length === 0) { + return base; + } + + // Find weights in this level + const levelWeights = existingWeights.filter( + (w) => w >= base && w <= maxWeight + ); + + if (levelWeights.length === 0) { + return base; + } + + // Return max + 1 + return Math.max(...levelWeights) + 1; +} + +/** + * Find file from parsed URL + * @param {object} parsedURL - Parsed URL from url-parser.js + * @returns {object|null} File information or null if not found + */ +export function findFileFromURL(parsedURL) { + const potentialPaths = urlToFilePaths(parsedURL); + + for (const relativePath of potentialPaths) { + const fullPath = join(REPO_ROOT, relativePath); + if (existsSync(fullPath)) { + return { + path: relativePath, + fullPath, + exists: true, + }; + } + } + + // File doesn't exist, return first potential path for creation + return { + path: potentialPaths[0], + fullPath: join(REPO_ROOT, potentialPaths[0]), + exists: false, + }; +} + +/** + * Detect if a file uses shared content + * @param {string} filePath - Path to file (relative to repo root) + * @returns {string|null} Shared source path if found, null otherwise + */ +export function detectSharedContent(filePath) { + const fullPath = join(REPO_ROOT, filePath); + + if (!existsSync(fullPath)) { + return null; + } + + try { + const content = readFileSync(fullPath, 'utf8'); + const parsed = matter(content); + + if (parsed.data && parsed.data.source) { + return parsed.data.source; + } + } catch (error) { + // Can't parse, assume not shared + return null; + } + + return null; +} + +/** + * Find all files that reference a shared source + * @param {string} sourcePath - Path to shared content file (e.g., "/shared/influxdb3-admin/databases.md") + * @returns {string[]} Array of file paths that use this shared source + */ +export function findSharedContentVariants(sourcePath) { + const variants = []; + + // Search content directories + const contentDirs = [ + 'content/influxdb3', + 'content/influxdb', + 'content/telegraf', + ]; + + function searchDirectory(dir) { + if (!existsSync(dir)) { + return; + } + + try { + const entries = readdirSync(dir); + + for (const entry of entries) { + const fullPath = join(dir, entry); + const stat = statSync(fullPath); + + if (stat.isDirectory()) { + searchDirectory(fullPath); + } else if (entry.endsWith('.md')) { + try { + const content = readFileSync(fullPath, 'utf8'); + const parsed = matter(content); + + if (parsed.data && parsed.data.source === sourcePath) { + // Convert to relative path from repo root + const relativePath = fullPath.replace(REPO_ROOT + '/', ''); + variants.push(relativePath); + } + } catch (error) { + // Skip files that can't be parsed + continue; + } + } + } + } catch (error) { + // Skip directories we can't read + } + } + + for (const contentDir of contentDirs) { + searchDirectory(join(REPO_ROOT, contentDir)); + } + + return variants; +} + +/** + * Analyze an existing page + * @param {string} filePath - Path to file (relative to repo root) + * @returns {object} Page analysis + */ +export function analyzeExistingPage(filePath) { + const fullPath = join(REPO_ROOT, filePath); + + if (!existsSync(fullPath)) { + throw new Error(`File not found: ${filePath}`); + } + + const content = readFileSync(fullPath, 'utf8'); + const parsed = matter(content); + + const analysis = { + path: filePath, + fullPath, + content: parsed.content, + frontmatter: parsed.data, + isShared: false, + sharedSource: null, + variants: [], + }; + + // Check if this file uses shared content + if (parsed.data && parsed.data.source) { + analysis.isShared = true; + analysis.sharedSource = parsed.data.source; + + // Find all variants that use the same shared source + analysis.variants = findSharedContentVariants(parsed.data.source); + } + + return analysis; +} + +/** + * Analyze multiple URLs and find their files + * @param {object[]} parsedURLs - Array of parsed URLs + * @returns {object[]} Array of URL analysis results + */ +export function analyzeURLs(parsedURLs) { + const results = []; + + for (const parsedURL of parsedURLs) { + const fileInfo = findFileFromURL(parsedURL); + + const result = { + url: parsedURL.url, + parsed: parsedURL, + exists: fileInfo.exists, + files: { + main: fileInfo.path, + isShared: false, + sharedSource: null, + variants: [], + }, + }; + + if (fileInfo.exists) { + // Analyze existing page + try { + const analysis = analyzeExistingPage(fileInfo.path); + result.files.isShared = analysis.isShared; + result.files.sharedSource = analysis.sharedSource; + result.files.variants = analysis.variants; + } catch (error) { + console.error(`Error analyzing ${fileInfo.path}: ${error.message}`); + } + } + + results.push(result); + } + + return results; +} diff --git a/scripts/lib/file-operations.js b/scripts/lib/file-operations.js new file mode 100644 index 000000000..6bbb57830 --- /dev/null +++ b/scripts/lib/file-operations.js @@ -0,0 +1,156 @@ +/** + * File operations utilities for documentation scaffolding + * Handles reading, writing, and validating documentation files + */ + +import { readFileSync, writeFileSync, existsSync, mkdirSync } from 'fs'; +import { dirname, join, basename } from 'path'; +import matter from 'gray-matter'; +import yaml from 'js-yaml'; + +/** + * Read a markdown file and parse frontmatter + * @param {string} filePath - Path to the markdown file + * @returns {{content: string, frontmatter: object, raw: string}} + */ +export function readDraft(filePath) { + if (!existsSync(filePath)) { + throw new Error(`File not found: ${filePath}`); + } + + const raw = readFileSync(filePath, 'utf8'); + const parsed = matter(raw); + + return { + content: parsed.content, + frontmatter: parsed.data || {}, + raw, + }; +} + +/** + * Write a markdown file with frontmatter + * @param {string} filePath - Path to write to + * @param {object} frontmatter - Frontmatter object + * @param {string} content - Markdown content + */ +export function writeMarkdownFile(filePath, frontmatter, content) { + ensureDirectory(dirname(filePath)); + + const frontmatterYaml = yaml.dump(frontmatter, { + lineWidth: -1, // Don't wrap lines + noRefs: true, + }); + + const fileContent = `---\n${frontmatterYaml}---\n\n${content}`; + writeFileSync(filePath, fileContent, 'utf8'); +} + +/** + * Write a frontmatter-only file with source reference + * @param {string} filePath - Path to write to + * @param {object} frontmatter - Frontmatter object + * @param {string} sourcePath - Path to shared content file + */ +export function writeFrontmatterFile(filePath, frontmatter, sourcePath) { + ensureDirectory(dirname(filePath)); + + const frontmatterYaml = yaml.dump(frontmatter, { + lineWidth: -1, + noRefs: true, + }); + + const comment = ``; + const fileContent = `---\n${frontmatterYaml}---\n\n${comment}\n`; + + writeFileSync(filePath, fileContent, 'utf8'); +} + +/** + * Ensure a directory exists, creating it recursively if needed + * @param {string} dirPath - Directory path to ensure + */ +export function ensureDirectory(dirPath) { + if (!existsSync(dirPath)) { + mkdirSync(dirPath, { recursive: true }); + } +} + +/** + * Validate a file path follows conventions + * @param {string} filePath - Path to validate + * @returns {{valid: boolean, errors: string[]}} + */ +export function validatePath(filePath) { + const errors = []; + + // Check for invalid characters + if (filePath.includes(' ')) { + errors.push('Path contains spaces (use hyphens instead)'); + } + + if (filePath.match(/[A-Z]/)) { + errors.push('Path contains uppercase letters (use lowercase)'); + } + + // Check naming conventions + const fileName = basename(filePath, '.md'); + if (fileName.includes('_') && !filePath.includes('/shared/')) { + errors.push('Use hyphens instead of underscores in file names'); + } + + // Check structure + if (!filePath.startsWith('content/')) { + errors.push('Path should start with content/'); + } + + return { + valid: errors.length === 0, + errors, + }; +} + +/** + * Format frontmatter object to YAML string + * @param {object} frontmatter - Frontmatter object + * @returns {string} YAML string + */ +export function formatFrontmatter(frontmatter) { + return yaml.dump(frontmatter, { + lineWidth: -1, + noRefs: true, + }); +} + +/** + * Read a JSON file + * @param {string} filePath - Path to JSON file + * @returns {object} Parsed JSON + */ +export function readJson(filePath) { + if (!existsSync(filePath)) { + throw new Error(`File not found: ${filePath}`); + } + const content = readFileSync(filePath, 'utf8'); + return JSON.parse(content); +} + +/** + * Write a JSON file with pretty formatting + * @param {string} filePath - Path to write to + * @param {object} data - Data to write + */ +export function writeJson(filePath, data) { + ensureDirectory(dirname(filePath)); + const content = JSON.stringify(data, null, 2); + writeFileSync(filePath, content, 'utf8'); +} + +/** + * Check if a file exists + * @param {string} filePath - Path to check + * @returns {boolean} + */ +export function fileExists(filePath) { + return existsSync(filePath); +} diff --git a/scripts/lib/url-parser.js b/scripts/lib/url-parser.js new file mode 100644 index 000000000..e985f16f5 --- /dev/null +++ b/scripts/lib/url-parser.js @@ -0,0 +1,216 @@ +/** + * URL parsing utilities for documentation scaffolding + * Parses docs.influxdata.com URLs to extract product, version, and path information + */ + +import { basename } from 'path'; + +// Base URL pattern for InfluxData documentation +const DOCS_BASE_URL = 'docs.influxdata.com'; + +/** + * Parse a documentation URL to extract components + * @param {string} url - Full URL or path (e.g., "https://docs.influxdata.com/influxdb3/core/admin/databases/" or "/influxdb3/core/admin/databases/") + * @returns {object} Parsed URL components + */ +export function parseDocumentationURL(url) { + // Remove protocol and domain if present + let path = url; + if (url.includes(DOCS_BASE_URL)) { + const urlObj = new URL(url); + path = urlObj.pathname; + } + + // Remove leading and trailing slashes + path = path.replace(/^\/+|\/+$/g, ''); + + // Split into parts + const parts = path.split('/').filter((p) => p.length > 0); + + if (parts.length === 0) { + throw new Error('Invalid URL: no path components'); + } + + // First part is the namespace (influxdb3, influxdb, telegraf, etc.) + const namespace = parts[0]; + + // Determine product structure based on namespace + let product = null; + let section = null; + let pagePath = []; + let isSection = false; + + if (namespace === 'influxdb3') { + // InfluxDB 3 structure: /influxdb3/{product}/{section}/{...path} + if (parts.length >= 2) { + product = parts[1]; // core, enterprise, cloud-dedicated, cloud-serverless, clustered, explorer + if (parts.length >= 3) { + section = parts[2]; // admin, write-data, query-data, reference, get-started, plugins + pagePath = parts.slice(3); + } + } + } else if (namespace === 'influxdb') { + // InfluxDB 2/1 structure: /influxdb/{version}/{section}/{...path} + if (parts.length >= 2) { + const secondPart = parts[1]; + if (secondPart === 'cloud') { + product = 'cloud'; + if (parts.length >= 3) { + section = parts[2]; + pagePath = parts.slice(3); + } + } else if (secondPart.match(/^v\d/)) { + // v2.x or v1.x + product = secondPart; + if (parts.length >= 3) { + section = parts[2]; + pagePath = parts.slice(3); + } + } else { + // Assume cloudless-v2 structure: /influxdb/{section}/{...path} + section = secondPart; + pagePath = parts.slice(2); + product = 'v2'; // default + } + } + } else if (namespace === 'telegraf') { + // Telegraf structure: /telegraf/{version}/{section}/{...path} + if (parts.length >= 2) { + product = parts[1]; + if (parts.length >= 3) { + section = parts[2]; + pagePath = parts.slice(3); + } + } + } else if (namespace === 'kapacitor' || namespace === 'chronograf') { + // Other products: /{product}/{version}/{section}/{...path} + if (parts.length >= 2) { + product = parts[1]; + if (parts.length >= 3) { + section = parts[2]; + pagePath = parts.slice(3); + } + } + } + + // Determine if this is a section (directory) or single page + // Section URLs typically end with / or have no file extension + // Single page URLs typically end with a page name + if (pagePath.length === 0 && section) { + // URL points to section landing page + isSection = true; + } else if (pagePath.length > 0) { + const lastPart = pagePath[pagePath.length - 1]; + // If last part looks like a directory (no dots), it's a section + isSection = !lastPart.includes('.'); + } + + return { + url, + namespace, + product, + section, + pagePath: pagePath.join('/'), + isSection, + fullPath: parts.join('/'), + }; +} + +/** + * Validate if a URL is a valid documentation URL + * @param {string} url - URL to validate + * @returns {boolean} True if valid documentation URL + */ +export function validateDocumentationURL(url) { + try { + const parsed = parseDocumentationURL(url); + return parsed.namespace && parsed.namespace.length > 0; + } catch (error) { + return false; + } +} + +/** + * Convert parsed URL to potential file paths + * @param {object} parsedURL - Parsed URL from parseDocumentationURL() + * @returns {string[]} Array of potential file paths to check + */ +export function urlToFilePaths(parsedURL) { + const { namespace, product, section, pagePath, isSection } = parsedURL; + + const basePaths = []; + + // Build base path based on namespace and product + let contentPath = `content/${namespace}`; + if (product) { + contentPath += `/${product}`; + } + if (section) { + contentPath += `/${section}`; + } + + if (pagePath) { + contentPath += `/${pagePath}`; + } + + if (isSection) { + // Section could be _index.md or directory with _index.md + basePaths.push(`${contentPath}/_index.md`); + basePaths.push(`${contentPath}.md`); // Sometimes sections are single files + } else { + // Single page + basePaths.push(`${contentPath}.md`); + basePaths.push(`${contentPath}/_index.md`); // Could still be a section + } + + return basePaths; +} + +/** + * Extract page name from URL for use in file names + * @param {object} parsedURL - Parsed URL from parseDocumentationURL() + * @returns {string} Suggested file name + */ +export function urlToFileName(parsedURL) { + const { pagePath, section } = parsedURL; + + if (pagePath && pagePath.length > 0) { + // Use last part of page path + const parts = pagePath.split('/'); + return parts[parts.length - 1]; + } else if (section) { + // Use section name + return section; + } + + return 'index'; +} + +/** + * Parse multiple URLs (comma-separated or array) + * @param {string|string[]} urls - URLs to parse + * @returns {object[]} Array of parsed URLs + */ +export function parseMultipleURLs(urls) { + let urlArray = []; + + if (typeof urls === 'string') { + // Split by comma if string + urlArray = urls.split(',').map((u) => u.trim()); + } else if (Array.isArray(urls)) { + urlArray = urls; + } else { + throw new Error('URLs must be a string or array'); + } + + return urlArray + .map((url) => { + try { + return parseDocumentationURL(url); + } catch (error) { + console.error(`Error parsing URL ${url}: ${error.message}`); + return null; + } + }) + .filter((parsed) => parsed !== null); +} diff --git a/scripts/schemas/scaffold-context.schema.json b/scripts/schemas/scaffold-context.schema.json new file mode 100644 index 000000000..0ca409462 --- /dev/null +++ b/scripts/schemas/scaffold-context.schema.json @@ -0,0 +1,182 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Content Scaffolding Context", + "description": "Context data prepared by docs-create.js for AI analysis", + "type": "object", + "required": ["draft", "products", "productHints", "versionInfo", "structure", "conventions"], + "properties": { + "mode": { + "type": "string", + "enum": ["create", "edit"], + "description": "Operation mode: create new content or edit existing content" + }, + "urls": { + "type": "array", + "description": "URL analysis results (for URL-based workflow)", + "items": { + "type": "object", + "properties": { + "url": { "type": "string" }, + "parsed": { + "type": "object", + "properties": { + "namespace": { "type": "string" }, + "product": { "type": "string" }, + "section": { "type": "string" }, + "pagePath": { "type": "string" }, + "isSection": { "type": "boolean" } + } + }, + "exists": { "type": "boolean" }, + "files": { + "type": "object", + "properties": { + "main": { "type": "string" }, + "isShared": { "type": "boolean" }, + "sharedSource": { "type": ["string", "null"] }, + "variants": { + "type": "array", + "items": { "type": "string" } + } + } + } + } + } + }, + "existingContent": { + "type": "object", + "description": "Existing file contents (for edit mode)", + "patternProperties": { + ".*": { "type": "string" } + } + }, + "draft": { + "type": "object", + "description": "Draft content and metadata", + "required": ["path", "content", "existingFrontmatter"], + "properties": { + "path": { + "type": "string", + "description": "Path to the draft file" + }, + "content": { + "type": "string", + "description": "Markdown content of the draft" + }, + "existingFrontmatter": { + "type": "object", + "description": "Frontmatter from draft (if any)" + } + } + }, + "products": { + "type": "object", + "description": "Available InfluxDB products from data/products.yml", + "patternProperties": { + ".*": { + "type": "object", + "properties": { + "key": { "type": "string" }, + "name": { "type": "string" }, + "namespace": { "type": "string" }, + "menu_category": { "type": "string" }, + "versions": { "type": "array", "items": { "type": "string" } }, + "latest": { "type": "string" } + } + } + } + }, + "productHints": { + "type": "object", + "description": "Product recommendations from content analysis", + "required": ["mentioned", "suggested"], + "properties": { + "mentioned": { + "type": "array", + "description": "Products explicitly mentioned in draft content", + "items": { "type": "string" } + }, + "suggested": { + "type": "array", + "description": "Products suggested based on analysis", + "items": { "type": "string" } + } + } + }, + "versionInfo": { + "type": "object", + "description": "Detected InfluxDB version and tools", + "required": ["version", "tools", "apis"], + "properties": { + "version": { + "type": ["string", "null"], + "description": "Detected version (3.x, 2.x, 1.x, or null)" + }, + "tools": { + "type": "array", + "description": "CLI tools and utilities mentioned", + "items": { "type": "string" } + }, + "apis": { + "type": "array", + "description": "API endpoints mentioned", + "items": { "type": "string" } + } + } + }, + "structure": { + "type": "object", + "description": "Repository structure analysis", + "required": ["sections", "existingPaths", "siblingWeights"], + "properties": { + "sections": { + "type": "array", + "description": "Available documentation sections", + "items": { "type": "string" } + }, + "existingPaths": { + "type": "array", + "description": "All existing directory paths", + "items": { "type": "string" } + }, + "siblingWeights": { + "type": "object", + "description": "Weight values from sibling pages by section", + "patternProperties": { + ".*": { + "type": "array", + "items": { "type": "number" } + } + } + } + } + }, + "conventions": { + "type": "object", + "description": "Documentation conventions and guidelines", + "required": ["sharedContentDir", "menuKeyPattern", "weightLevels", "namingRules", "testing"], + "properties": { + "sharedContentDir": { + "type": "string", + "description": "Directory for shared content" + }, + "menuKeyPattern": { + "type": "string", + "description": "Pattern for menu keys" + }, + "weightLevels": { + "type": "object", + "description": "Weight ranges by navigation level" + }, + "namingRules": { + "type": "object", + "description": "File and directory naming conventions" + }, + "testing": { + "type": "object", + "description": "Testing conventions for code samples" + } + } + } + } +} diff --git a/scripts/schemas/scaffold-proposal.schema.json b/scripts/schemas/scaffold-proposal.schema.json new file mode 100644 index 000000000..edb638ce4 --- /dev/null +++ b/scripts/schemas/scaffold-proposal.schema.json @@ -0,0 +1,145 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "title": "Content Scaffolding Proposal", + "description": "Proposal generated by AI analysis for creating documentation files", + "type": "object", + "required": ["analysis", "files"], + "properties": { + "analysis": { + "type": "object", + "description": "Analysis results from AI agents", + "required": ["topic", "targetProducts", "section", "isShared"], + "properties": { + "topic": { + "type": "string", + "description": "Brief topic description" + }, + "targetProducts": { + "type": "array", + "description": "Products this documentation applies to", + "items": { "type": "string" }, + "minItems": 1 + }, + "section": { + "type": "string", + "description": "Documentation section (admin, write-data, query-data, etc.)" + }, + "isShared": { + "type": "boolean", + "description": "Whether content should be shared across products" + }, + "reasoning": { + "type": "string", + "description": "Explanation for structure decisions" + }, + "styleReview": { + "type": "object", + "description": "Style compliance review from Style Agent", + "properties": { + "issues": { + "type": "array", + "items": { "type": "string" } + }, + "recommendations": { + "type": "array", + "items": { "type": "string" } + } + } + }, + "codeValidation": { + "type": "object", + "description": "Code sample validation from Coding Agent", + "properties": { + "tested": { + "type": "boolean", + "description": "Whether code samples were tested" + }, + "tools": { + "type": "array", + "description": "Tools used in code samples", + "items": { "type": "string" } + } + } + } + } + }, + "files": { + "type": "array", + "description": "Files to create", + "minItems": 1, + "items": { + "type": "object", + "required": ["path", "type"], + "properties": { + "path": { + "type": "string", + "description": "File path relative to repository root" + }, + "type": { + "type": "string", + "enum": ["shared-content", "frontmatter-only"], + "description": "File type: shared-content (with body) or frontmatter-only (just frontmatter + source)" + }, + "content": { + "type": "string", + "description": "Markdown content (for shared-content files)" + }, + "frontmatter": { + "type": "object", + "description": "Frontmatter object (for frontmatter-only files)", + "required": ["title", "description", "menu", "weight"], + "properties": { + "title": { + "type": "string", + "description": "Page title" + }, + "description": { + "type": "string", + "description": "SEO description" + }, + "menu": { + "type": "object", + "description": "Menu configuration", + "patternProperties": { + ".*": { + "type": "object", + "required": ["name"], + "properties": { + "name": { "type": "string" }, + "parent": { "type": "string" } + } + } + } + }, + "weight": { + "type": "number", + "description": "Sort weight" + }, + "source": { + "type": "string", + "description": "Path to shared content file" + }, + "related": { + "type": "array", + "description": "Related article URLs", + "items": { "type": "string" } + }, + "alt_links": { + "type": "object", + "description": "Cross-product navigation links", + "patternProperties": { + ".*": { "type": "string" } + } + } + } + } + } + } + }, + "nextSteps": { + "type": "array", + "description": "Recommended next steps after file creation", + "items": { "type": "string" } + } + } +} diff --git a/scripts/templates/chatgpt-prompt.md b/scripts/templates/chatgpt-prompt.md new file mode 100644 index 000000000..3f3de19d5 --- /dev/null +++ b/scripts/templates/chatgpt-prompt.md @@ -0,0 +1,136 @@ +# Content Scaffolding Analysis Prompt (ChatGPT) + +## Context + +You are analyzing a documentation draft to generate an intelligent file structure proposal for the InfluxData documentation repository. + +**Context file**: `.tmp/scaffold-context.json` + +Read and analyze the context file, which contains: +- **draft**: The markdown content and any existing frontmatter +- **products**: Available InfluxDB products (Core, Enterprise, Cloud, etc.) +- **productHints**: Products mentioned or suggested based on content analysis +- **versionInfo**: Detected InfluxDB version (3.x, 2.x, 1.x) and tools +- **structure**: Repository structure, existing paths, and sibling weights +- **conventions**: Documentation conventions for naming, weights, and testing + +## Your Tasks + +### 1. Content Analysis + +Analyze the draft content to determine: + +- **Topic**: What is this documentation about? +- **Target audience**: Developers, administrators, beginners, or advanced users? +- **Documentation type**: Conceptual overview, how-to guide, reference, or tutorial? +- **Target products**: Which InfluxDB products does this apply to? + - Use `productHints.mentioned` and `productHints.suggested` from context + - Consider `versionInfo.version` (3.x, 2.x, or 1.x) +- **Section**: Which documentation section? (admin, write-data, query-data, reference, get-started, plugins) + +### 2. Structure Decisions + +Decide on the optimal file structure: + +- **Shared vs Product-Specific**: + - Use shared content (`content/shared/`) when content applies broadly with minor variations + - Use product-specific when content differs significantly between products +- **Parent menu item**: What should be the navigation parent? +- **Weight**: Calculate appropriate weight based on `structure.siblingWeights` + - Weights are in ranges: 1-99 (top level), 101-199 (level 2), 201-299 (level 3) + +### 3. Frontmatter Generation + +For each file, create complete frontmatter with: + +- **title**: Clear, SEO-friendly title +- **description**: Concise 1-2 sentence description for SEO +- **menu**: Proper menu structure with product key (pattern: `{namespace}_{product}`) +- **weight**: Sequential weight based on siblings +- **source**: (for frontmatter-only files) Path to shared content +- **related**: 3-5 relevant related articles from `structure.existingPaths` +- **alt_links**: Map equivalent pages across products for cross-product navigation + +### 4. Code Sample Considerations + +Based on `versionInfo`: +- Use version-specific CLI commands (influxdb3, influx, influxctl) +- Reference appropriate API endpoints (/api/v3, /api/v2) +- Note testing requirements from `conventions.testing` + +### 5. Style Compliance + +Follow conventions from `conventions.namingRules`: +- Files: Use lowercase with hyphens (e.g., `manage-databases.md`) +- Directories: Use lowercase with hyphens +- Shared content: Place in appropriate `/content/shared/` subdirectory + +## Output Format + +Generate a JSON proposal matching the schema in `scripts/schemas/scaffold-proposal.schema.json`. + +**Required structure**: + +```json +{ + "analysis": { + "topic": "Brief topic description", + "targetProducts": ["core", "enterprise", "cloud-dedicated"], + "section": "admin", + "isShared": true, + "reasoning": "Why this structure makes sense", + "styleReview": { + "issues": [], + "recommendations": [] + }, + "codeValidation": { + "tested": false, + "tools": ["influxdb3 CLI", "influxctl"] + } + }, + "files": [ + { + "path": "content/shared/influxdb3-admin/topic-name.md", + "type": "shared-content", + "content": "{{ACTUAL_DRAFT_CONTENT}}" + }, + { + "path": "content/influxdb3/core/admin/topic-name.md", + "type": "frontmatter-only", + "frontmatter": { + "title": "Page Title", + "description": "Page description", + "menu": { + "influxdb3_core": { + "name": "Nav Label", + "parent": "Parent Item" + } + }, + "weight": 205, + "source": "/shared/influxdb3-admin/topic-name.md", + "related": [ + "/influxdb3/core/path/to/related/" + ], + "alt_links": { + "enterprise": "/influxdb3/enterprise/admin/topic-name/" + } + } + } + ], + "nextSteps": [ + "Review generated frontmatter", + "Test with: npx hugo server", + "Add product-specific variations if needed" + ] +} +``` + +## Instructions + +1. Read and parse `.tmp/scaffold-context.json` +2. Analyze the draft content thoroughly +3. Make structure decisions based on the analysis +4. Generate complete frontmatter for all files +5. Save the proposal to `.tmp/scaffold-proposal.json` + +The proposal will be validated and used by `yarn docs:create --proposal .tmp/scaffold-proposal.json` to create the files. diff --git a/scripts/templates/copilot-prompt.md b/scripts/templates/copilot-prompt.md new file mode 100644 index 000000000..44d221d16 --- /dev/null +++ b/scripts/templates/copilot-prompt.md @@ -0,0 +1,111 @@ +# Content Scaffolding Analysis (GitHub Copilot) + +Generate a documentation scaffolding proposal from the context file. + +## Input + +Read `.tmp/scaffold-context.json` which contains: +- `draft`: Documentation draft content and frontmatter +- `products`: Available InfluxDB products +- `productHints`: Suggested products based on content analysis +- `versionInfo`: Detected version (3.x/2.x/1.x) and tools +- `structure`: Repository structure and sibling weights +- `conventions`: Documentation standards + +## Analysis + +Determine: +1. **Topic** and **audience** from draft content +2. **Target products** from `productHints` and `versionInfo` +3. **Documentation section** (admin/write-data/query-data/reference/get-started/plugins) +4. **Shared vs product-specific** structure +5. **Weight** from `structure.siblingWeights` for the section + +## File Structure + +Generate files following these patterns: + +### Shared Content Pattern +``` +content/shared/{namespace}-{section}/{topic-name}.md + โ”œโ”€ content/{namespace}/{product}/{section}/{topic-name}.md (frontmatter only) + โ”œโ”€ content/{namespace}/{product}/{section}/{topic-name}.md (frontmatter only) + โ””โ”€ ... +``` + +### Product-Specific Pattern +``` +content/{namespace}/{product}/{section}/{topic-name}.md (full content) +``` + +## Frontmatter Template + +For frontmatter-only files: +```yaml +--- +title: Clear SEO title +description: 1-2 sentence description +menu: + {namespace}_{product}: + name: Nav label + parent: Parent item +weight: {calculated from siblings} +source: /shared/{namespace}-{section}/{topic-name}.md +related: + - /path/to/related1/ + - /path/to/related2/ +alt_links: + {product}: /path/to/equivalent/ +--- +``` + +## Code Samples + +Based on `versionInfo`: +- **v3.x**: Use `influxdb3` CLI, `influxctl`, `/api/v3` +- **v2.x**: Use `influx` CLI, `/api/v2` +- **v1.x**: Use `influx` CLI (v1), `influxd`, InfluxQL + +## Output + +Generate JSON matching `scripts/schemas/scaffold-proposal.schema.json`: + +```json +{ + "analysis": { + "topic": "...", + "targetProducts": ["..."], + "section": "...", + "isShared": true/false, + "reasoning": "...", + "styleReview": { + "issues": [], + "recommendations": [] + }, + "codeValidation": { + "tested": false, + "tools": [] + } + }, + "files": [ + { + "path": "content/...", + "type": "shared-content" | "frontmatter-only", + "content": "..." OR "frontmatter": {...} + } + ], + "nextSteps": ["..."] +} +``` + +Save to: `.tmp/scaffold-proposal.json` + +## Conventions + +- **Files**: lowercase-with-hyphens.md +- **Menu keys**: `{namespace}_{product}` (e.g., `influxdb3_core`) +- **Weights**: 1-99 (top), 101-199 (level 2), 201-299 (level 3) +- **Shared content**: `content/shared/` subdirectories +- **Related links**: 3-5 contextually relevant articles + +Begin analysis of `.tmp/scaffold-context.json`. From b3d921941277bb57d460b8386cc8ebb1286ff2d0 Mon Sep 17 00:00:00 2001 From: Dustin Eaton Date: Wed, 29 Oct 2025 08:28:39 -0500 Subject: [PATCH 39/49] chore: update to working kubit and kubectl versions (#6496) --- .../install/set-up-cluster/configure-cluster/use-helm.md | 7 +++---- .../influxdb3/clustered/install/set-up-cluster/deploy.md | 4 ++-- .../clustered/install/set-up-cluster/prerequisites.md | 4 ++-- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/content/influxdb3/clustered/install/set-up-cluster/configure-cluster/use-helm.md b/content/influxdb3/clustered/install/set-up-cluster/configure-cluster/use-helm.md index 2179f8922..c32cd8b0b 100644 --- a/content/influxdb3/clustered/install/set-up-cluster/configure-cluster/use-helm.md +++ b/content/influxdb3/clustered/install/set-up-cluster/configure-cluster/use-helm.md @@ -284,9 +284,8 @@ In addition to the InfluxDB images, copy the kubit operator images: ```bash # Create a list of kubit-related images cat > /tmp/kubit-images.txt << EOF -ghcr.io/kubecfg/kubit:v0.0.20 +ghcr.io/kubecfg/kubit:v0.0.22 ghcr.io/kubecfg/kubecfg/kubecfg:latest -bitnami/kubectl:1.27.5 registry.k8s.io/kubectl:v1.28.0 EOF @@ -307,8 +306,8 @@ images: # Configure kubit operator images kubit: controller: - image: REGISTRY_HOSTNAME/ghcr.io/kubecfg/kubit:v0.0.20 - apply_step_image: REGISTRY_HOSTNAME/bitnami/kubectl:1.27.5 + image: REGISTRY_HOSTNAME/ghcr.io/kubecfg/kubit:v0.0.22 + apply_step_image: REGISTRY_HOSTNAME/registry.k8s.io/kubectl:v1.28.0 render_step_image: REGISTRY_HOSTNAME/registry.k8s.io/kubectl:v1.28.0 kubecfg_image: REGISTRY_HOSTNAME/ghcr.io/kubecfg/kubecfg/kubecfg:latest diff --git a/content/influxdb3/clustered/install/set-up-cluster/deploy.md b/content/influxdb3/clustered/install/set-up-cluster/deploy.md index 983db90c1..5e131797f 100644 --- a/content/influxdb3/clustered/install/set-up-cluster/deploy.md +++ b/content/influxdb3/clustered/install/set-up-cluster/deploy.md @@ -76,11 +76,11 @@ making it ideal for air-gapped clusters._ 1. On a machine with internet access, download the [`kubit` CLI](https://github.com/kubecfg/kubit#cli-tool)--for example: ```bash - curl -L -o kubit https://github.com/kubecfg/kubit/archive/refs/tags/v0.0.20.tar.gz + curl -L -o kubit https://github.com/kubecfg/kubit/archive/refs/tags/v0.0.22.tar.gz chmod +x kubit ``` - Replace {{% code-placeholder-key %}}`v0.0.20`{{% /code-placeholder-key%}} with the [latest release version](https://github.com/kubecfg/kubit/releases/latest). + Replace {{% code-placeholder-key %}}`v0.0.22`{{% /code-placeholder-key%}} with the [latest release version](https://github.com/kubecfg/kubit/releases/latest). 2. If deploying InfluxDB in an air-gapped environment (without internet access), transfer the binary to your air-gapped environment. diff --git a/content/influxdb3/clustered/install/set-up-cluster/prerequisites.md b/content/influxdb3/clustered/install/set-up-cluster/prerequisites.md index 1c392f88c..4a79e5bce 100644 --- a/content/influxdb3/clustered/install/set-up-cluster/prerequisites.md +++ b/content/influxdb3/clustered/install/set-up-cluster/prerequisites.md @@ -189,12 +189,12 @@ update an InfluxDB cluster. > separately. The Helm chart installs the kubit operator. Use `kubectl` to install the [kubecfg kubit](https://github.com/kubecfg/kubit) -operator **v0.0.18 or later**. +operator **v0.0.22 or later**. ```bash -kubectl apply -k 'https://github.com/kubecfg/kubit//kustomize/global?ref=v0.0.19' +kubectl apply -k 'https://github.com/kubecfg/kubit//kustomize/global?ref=v0.0.22' ``` ### Set up a Kubernetes ingress controller From cc36a19a1791802569f7f4ef598cbfe26c83aea9 Mon Sep 17 00:00:00 2001 From: peterbarnett03 Date: Thu, 30 Oct 2025 10:31:05 -0400 Subject: [PATCH 40/49] feat: 3.6 release notes (#6499) * feat: 3.6 release notes * Update content/shared/v3-core-enterprise-release-notes/_index.md * Update content/shared/v3-core-enterprise-release-notes/_index.md * chore(influxdb3): Core/Ent 3.6, Explorer 1.4 release --------- Co-authored-by: Jason Stirnaman --- .../_index.md | 31 +++++++++++++++++++ data/products.yml | 6 ++-- 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/content/shared/v3-core-enterprise-release-notes/_index.md b/content/shared/v3-core-enterprise-release-notes/_index.md index 56260b275..6d469ccf1 100644 --- a/content/shared/v3-core-enterprise-release-notes/_index.md +++ b/content/shared/v3-core-enterprise-release-notes/_index.md @@ -5,6 +5,37 @@ > All updates to Core are automatically included in Enterprise. > The Enterprise sections below only list updates exclusive to Enterprise. +## v3.6.0 {date="2025-10-30"} + +### Core + +#### Features + +- **Quick-Start Developer Experience**: + - `influxdb3` now supports running without arguments for instant database startup, automatically generating IDs and storage flags values based on your system's setup. +- **Processing Engine**: + - Plugins now support multiple files instead of single-file limitations. + - When creating a trigger, you can upload a plugin directly from your local machine using the `--upload` flag. + - Existing plugin files can now be updated at runtime without recreating triggers. + - New `system.plugin_files` table and `show plugins` CLI command now provide visibility into all loaded plugin files. + - Custom plugin repositories are now supported via `--plugin-repo` CLI flag. + - Python package installation can now be disabled with `--package-manager disabled` for locked-down environments. + - Plugin file path validation now prevents directory traversal attacks by blocking relative and absolute path patterns. + +#### Bug fixes + +- **Token management**: Token display now works correctly for hard-deleted databases + +### Enterprise + +All Core updates are included in Enterprise. Additional Enterprise-specific features and fixes: + +#### Operational improvements + +- **Storage engine**: improvements to the Docker-based license service development environment +- **Catalog consistency**: Node management fixes for catalog edge cases +- Other enhancements and performance improvements + ## v3.5.0 {date="2025-09-30"} ### Core diff --git a/data/products.yml b/data/products.yml index 9889169fa..2425d06d5 100644 --- a/data/products.yml +++ b/data/products.yml @@ -6,7 +6,7 @@ influxdb3_core: versions: [core] list_order: 2 latest: core - latest_patch: 3.5.0 + latest_patch: 3.6.0 placeholder_host: localhost:8181 detector_config: query_languages: @@ -35,7 +35,7 @@ influxdb3_enterprise: versions: [enterprise] list_order: 2 latest: enterprise - latest_patch: 3.5.0 + latest_patch: 3.6.0 placeholder_host: localhost:8181 detector_config: query_languages: @@ -63,7 +63,7 @@ influxdb3_explorer: menu_category: tools list_order: 1 latest: explorer - latest_patch: 1.3.0 + latest_patch: 1.4.0 placeholder_host: localhost:8888 ai_sample_questions: - How do I query data using InfluxDB 3 Explorer? From 1b57292191f8d0e7173b0738354183310567a304 Mon Sep 17 00:00:00 2001 From: Jason Stirnaman Date: Thu, 30 Oct 2025 10:52:25 -0400 Subject: [PATCH 41/49] feat: functional changes (#6500) * feat: functional changes * fix: remove serve inaccuracies * fix: remove opining --------- Co-authored-by: Peter Barnett --- .../core/reference/cli/influxdb3/_index.md | 58 +++- .../core/reference/cli/influxdb3/serve.md | 50 +++- .../reference/cli/influxdb3/show/plugins.md | 16 ++ .../reference/cli/influxdb3/update/trigger.md | 15 + .../reference/cli/influxdb3/_index.md | 66 ++++- .../reference/cli/influxdb3/serve.md | 56 +++- .../reference/cli/influxdb3/show/plugins.md | 16 ++ .../reference/cli/influxdb3/update/trigger.md | 15 + .../query-system-data/_index.md | 56 ++++ .../shared/influxdb3-cli/config-options.md | 11 +- .../shared/influxdb3-cli/create/trigger.md | 65 ++++- content/shared/influxdb3-cli/show/_index.md | 1 + content/shared/influxdb3-cli/show/plugins.md | 88 ++++++ content/shared/influxdb3-cli/update/_index.md | 4 +- .../shared/influxdb3-cli/update/trigger.md | 174 +++++++++++ content/shared/influxdb3-get-started/setup.md | 51 ++++ content/shared/influxdb3-plugins/_index.md | 270 ++++++++++++++++++ 17 files changed, 968 insertions(+), 44 deletions(-) create mode 100644 content/influxdb3/core/reference/cli/influxdb3/show/plugins.md create mode 100644 content/influxdb3/core/reference/cli/influxdb3/update/trigger.md create mode 100644 content/influxdb3/enterprise/reference/cli/influxdb3/show/plugins.md create mode 100644 content/influxdb3/enterprise/reference/cli/influxdb3/update/trigger.md create mode 100644 content/shared/influxdb3-cli/show/plugins.md create mode 100644 content/shared/influxdb3-cli/update/trigger.md diff --git a/content/influxdb3/core/reference/cli/influxdb3/_index.md b/content/influxdb3/core/reference/cli/influxdb3/_index.md index 495a03f3d..478848717 100644 --- a/content/influxdb3/core/reference/cli/influxdb3/_index.md +++ b/content/influxdb3/core/reference/cli/influxdb3/_index.md @@ -22,8 +22,8 @@ influxdb3 [GLOBAL-OPTIONS] [COMMAND] ## Commands -| Command | Description | -| :--------------------------------------------------------------| :---------------------------------- | +| Command | Description | +| :---------------------------------------------------------- | :---------------------------------- | | [create](/influxdb3/core/reference/cli/influxdb3/create/) | Create resources | | [delete](/influxdb3/core/reference/cli/influxdb3/delete/) | Delete resources | | [disable](/influxdb3/core/reference/cli/influxdb3/disable/) | Disable resources | @@ -37,14 +37,39 @@ influxdb3 [GLOBAL-OPTIONS] [COMMAND] ## Global options -| Option | | Description | -| :----- | :---------------- | :-------------------------------------------------------------------- | -| `-h` | `--help` | Print help information | -| | `--help-all` | Print detailed help information including runtime configuration options | -| `-V` | `--version` | Print version | +| Option | | Description | +| :----- | :----------- | :---------------------------------------------------------------------- | +| `-h` | `--help` | Print help information | +| | `--help-all` | Print detailed help information including runtime configuration options | +| `-V` | `--version` | Print version | For advanced global configuration options (including `--num-io-threads` and other runtime settings), see [Configuration options](/influxdb3/core/reference/config-options/#global-configuration-options). +## Quick-Start Mode + +For development, testing, and home use, you can start {{< product-name >}} by running `influxdb3` without the `serve` subcommand or any configuration parameters. The system automatically generates required values: + +- **`node-id`**: `{hostname}-node` (fallback: `primary-node`) +- **`object-store`**: `file` +- **`data-dir`**: `~/.influxdb` + +The system displays warning messages showing the auto-generated identifiers: + +``` +Using auto-generated node id: mylaptop-node. For production deployments, explicitly set --node-id +``` + +> \[!Important] +> +> #### Production deployments +> +> Quick-start mode is designed for development and testing environments. +> For production deployments, use explicit configuration with the `serve` subcommand +> and specify all required parameters as shown in the [Examples](#examples) below. + +**Configuration precedence**: CLI flags > environment variables > auto-generated defaults + +For more information about quick-start mode, see [Get started](/influxdb3/core/get-started/setup/#quick-start-mode-development). ## Examples @@ -54,6 +79,21 @@ with a unique identifier for your {{< product-name >}} server. {{% code-placeholders "my-host-01" %}} + + +### Quick-start InfluxDB 3 server + +```bash +# Zero-config startup +influxdb3 + +# Override specific defaults +influxdb3 --object-store memory + +# Use environment variables to override defaults +INFLUXDB3_NODE_IDENTIFIER_PREFIX=my-node influxdb3 +``` + ### Run the InfluxDB 3 server @@ -104,7 +144,7 @@ influxdb3 serve \ --verbose ``` -### Run {{% product-name %}} with debug logging using LOG_FILTER +### Run {{% product-name %}} with debug logging using LOG\_FILTER @@ -115,4 +155,4 @@ LOG_FILTER=debug influxdb3 serve \ --node-id my-host-01 ``` -{{% /code-placeholders %}} \ No newline at end of file +{{% /code-placeholders %}} diff --git a/content/influxdb3/core/reference/cli/influxdb3/serve.md b/content/influxdb3/core/reference/cli/influxdb3/serve.md index ef5b9e019..e3a6403b6 100644 --- a/content/influxdb3/core/reference/cli/influxdb3/serve.md +++ b/content/influxdb3/core/reference/cli/influxdb3/serve.md @@ -18,10 +18,10 @@ The `influxdb3 serve` command starts the {{< product-name >}} server. ```bash -influxdb3 serve [OPTIONS] --node-id +influxdb3 serve [OPTIONS] ``` -## Required parameters +## Required Parameters - **node-id**: A unique identifier for your server instance. Must be unique for any hosts sharing the same object store. - **object-store**: Determines where time series data is stored. @@ -45,7 +45,7 @@ influxdb3 serve [OPTIONS] --node-id | Option | | Description | | :--------------- | :--------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------ | | {{< req "\*" >}} | `--node-id` | _See [configuration options](/influxdb3/core/reference/config-options/#node-id)_ | -| | `--object-store` | _See [configuration options](/influxdb3/core/reference/config-options/#object-store)_ | +| {{< req "\*" >}} | `--object-store` | _See [configuration options](/influxdb3/core/reference/config-options/#object-store)_ | | | `--admin-token-recovery-http-bind` | _See [configuration options](/influxdb3/core/reference/config-options/#admin-token-recovery-http-bind)_ | | | `--admin-token-recovery-tcp-listener-file-path` | _See [configuration options](/influxdb3/core/reference/config-options/#admin-token-recovery-tcp-listener-file-path)_ | | | `--admin-token-file` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#admin-token-file)_ | @@ -134,16 +134,52 @@ influxdb3 serve [OPTIONS] --node-id | | `--wal-snapshot-size` | _See [configuration options](/influxdb3/core/reference/config-options/#wal-snapshot-size)_ | | | `--without-auth` | _See [configuration options](/influxdb3/core/reference/config-options/#without-auth)_ | -{{< caption >}} -{{< req text="\* Required options" >}} -{{< /caption >}} - ### Option environment variables You can use environment variables to define most `influxdb3 serve` options. For more information, see [Configuration options](/influxdb3/core/reference/config-options/). +## Quick-Start Mode + +For development, testing, and home use, you can start {{< product-name >}} by running `influxdb3` without the `serve` subcommand or any configuration parameters. The system automatically generates required values: + +- **`node-id`**: `{hostname}-node` (fallback: `primary-node`) +- **`object-store`**: `file` +- **`data-dir`**: `~/.influxdb` + +The system displays warning messages showing the auto-generated identifiers: + +``` +Using auto-generated node id: mylaptop-node. For production deployments, explicitly set --node-id +``` + +### Quick-start examples + + + +```bash +# Zero-config startup +influxdb3 + +# Override specific defaults +influxdb3 --object-store memory + +# Use environment variables to override defaults +INFLUXDB3_NODE_IDENTIFIER_PREFIX=my-node influxdb3 +``` + +> [!Important] +> #### Production deployments +> +> Quick-start mode is designed for development and testing environments. +> For production deployments, use explicit configuration with the `serve` subcommand +> and specify all required parameters as shown in the [Examples](#examples) below. + +**Configuration precedence**: CLI flags > environment variables > auto-generated defaults + +For more information about quick-start mode, see [Get started](/influxdb3/core/get-started/setup/#quick-start-mode-development). + ## Examples - [Run the InfluxDB 3 server](#run-the-influxdb-3-server) diff --git a/content/influxdb3/core/reference/cli/influxdb3/show/plugins.md b/content/influxdb3/core/reference/cli/influxdb3/show/plugins.md new file mode 100644 index 000000000..fadd9f729 --- /dev/null +++ b/content/influxdb3/core/reference/cli/influxdb3/show/plugins.md @@ -0,0 +1,16 @@ +--- +title: influxdb3 show plugins +description: > + The `influxdb3 show plugins` command lists loaded Processing Engine plugins in your + InfluxDB 3 Core server. +menu: + influxdb3_core: + parent: influxdb3 show + name: influxdb3 show plugins +weight: 350 +source: /shared/influxdb3-cli/show/plugins.md +--- + + diff --git a/content/influxdb3/core/reference/cli/influxdb3/update/trigger.md b/content/influxdb3/core/reference/cli/influxdb3/update/trigger.md new file mode 100644 index 000000000..c0b02f7e8 --- /dev/null +++ b/content/influxdb3/core/reference/cli/influxdb3/update/trigger.md @@ -0,0 +1,15 @@ +--- +title: influxdb3 update trigger +description: > + The `influxdb3 update trigger` command updates an existing trigger. +menu: + influxdb3_core: + parent: influxdb3 update + name: influxdb3 update trigger +weight: 401 +source: /shared/influxdb3-cli/update/trigger.md +--- + + diff --git a/content/influxdb3/enterprise/reference/cli/influxdb3/_index.md b/content/influxdb3/enterprise/reference/cli/influxdb3/_index.md index 1a52c7f40..3a5558a03 100644 --- a/content/influxdb3/enterprise/reference/cli/influxdb3/_index.md +++ b/content/influxdb3/enterprise/reference/cli/influxdb3/_index.md @@ -22,8 +22,8 @@ influxdb3 [GLOBAL-OPTIONS] [COMMAND] ## Commands -| Command | Description | -| :--------------------------------------------------------------| :---------------------------------- | +| Command | Description | +| :---------------------------------------------------------------- | :---------------------------------- | | [create](/influxdb3/enterprise/reference/cli/influxdb3/create/) | Create resources | | [delete](/influxdb3/enterprise/reference/cli/influxdb3/delete/) | Delete resources | | [disable](/influxdb3/enterprise/reference/cli/influxdb3/disable/) | Disable resources | @@ -37,27 +37,69 @@ influxdb3 [GLOBAL-OPTIONS] [COMMAND] ## Global options -| Option | | Description | -| :----- | :---------------- | :-------------------------------------------------------------------- | -| `-h` | `--help` | Print help information | -| | `--help-all` | Print detailed help information including runtime configuration options | -| `-V` | `--version` | Print version | +| Option | | Description | +| :----- | :----------- | :---------------------------------------------------------------------- | +| `-h` | `--help` | Print help information | +| | `--help-all` | Print detailed help information including runtime configuration options | +| `-V` | `--version` | Print version | For advanced global configuration options (including `--num-io-threads` and other runtime settings), see [Configuration options](/influxdb3/enterprise/reference/config-options/#global-configuration-options). +## Quick-Start Mode + +For development, testing, and home use, you can start {{< product-name >}} by running `influxdb3` without the `serve` subcommand or any configuration parameters. The system automatically generates required values: + +- **`node-id`**: `{hostname}-node` (fallback: `primary-node`) +- **`cluster-id`**: `{hostname}-cluster` (fallback: `primary-cluster`) +- **`object-store`**: `file` +- **`data-dir`**: `~/.influxdb` + +The system displays warning messages showing the auto-generated identifiers: + +``` +Using auto-generated node id: mylaptop-node. For production deployments, explicitly set --node-id +Using auto-generated cluster id: mylaptop-cluster. For production deployments, explicitly set --cluster-id +``` + +> \[!Important] +> +> #### Production deployments +> +> Quick-start mode is designed for development and testing environments. +> For production deployments, use explicit configuration with the `serve` subcommand +> and specify all required parameters as shown in the [Examples](#examples) below. + +**Configuration precedence**: CLI flags > environment variables > auto-generated defaults + +For more information about quick-start mode, see [Get started](/influxdb3/enterprise/get-started/setup/#quick-start-mode-development). ## Examples In the examples below, replace the following: - {{% code-placeholder-key %}}`my-host-01`{{% /code-placeholder-key %}}: -a unique identifier for your {{< product-name >}} server. + a unique identifier for your {{< product-name >}} server. - {{% code-placeholder-key %}}`my-cluster-01`{{% /code-placeholder-key %}}: -a unique identifier for your {{< product-name >}} cluster. -The value you use must be different from `--node-id` values in the cluster. + a unique identifier for your {{< product-name >}} cluster. + The value you use must be different from `--node-id` values in the cluster. {{% code-placeholders "my-host-01|my-cluster-01" %}} +### Quick-start influxdb3 server + + + +```bash +# Zero-config startup +influxdb3 + +# Override specific defaults +influxdb3 --object-store memory + +# Use environment variables to override defaults +INFLUXDB3_NODE_IDENTIFIER_PREFIX=my-node influxdb3 +``` + ### Run the InfluxDB 3 server @@ -111,7 +153,7 @@ influxdb3 serve \ --verbose ``` -### Run {{% product-name %}} with debug logging using LOG_FILTER +### Run {{% product-name %}} with debug logging using LOG\_FILTER @@ -123,4 +165,4 @@ LOG_FILTER=debug influxdb3 serve \ --cluster-id my-cluster-01 ``` -{{% /code-placeholders %}} \ No newline at end of file +{{% /code-placeholders %}} diff --git a/content/influxdb3/enterprise/reference/cli/influxdb3/serve.md b/content/influxdb3/enterprise/reference/cli/influxdb3/serve.md index bded5f63b..f56a52695 100644 --- a/content/influxdb3/enterprise/reference/cli/influxdb3/serve.md +++ b/content/influxdb3/enterprise/reference/cli/influxdb3/serve.md @@ -18,12 +18,10 @@ The `influxdb3 serve` command starts the {{< product-name >}} server. ```bash -influxdb3 serve [OPTIONS] \ - --node-id \ - --cluster-id +influxdb3 serve [OPTIONS] ``` -## Required parameters +## Required Parameters - **node-id**: A unique identifier for your server instance. Must be unique for any hosts sharing the same object store. - **cluster-id**: A unique identifier for your cluster. Must be different from any node-id in your cluster. @@ -64,7 +62,7 @@ influxdb3 serve [OPTIONS] \ | | `--azure-storage-account` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#azure-storage-account)_ | | | `--bucket` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#bucket)_ | | | `--catalog-sync-interval` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#catalog-sync-interval)_ | -| {{< req "\*" >}} | `--cluster-id` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#cluster-id)_ | +| | `--cluster-id` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#cluster-id)_ | | | `--compaction-check-interval` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#compaction-check-interval)_ | | | `--compaction-cleanup-wait` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#compaction-cleanup-wait)_ | | | `--compaction-gen2-duration` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#compaction-gen2-duration)_ | @@ -107,7 +105,7 @@ influxdb3 serve [OPTIONS] \ | | `--log-format` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#log-format)_ | | | `--max-http-request-size` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#max-http-request-size)_ | | | `--mode` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#mode)_ | -| {{< req "\*" >}} | `--node-id` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#node-id)_ | +| | `--node-id` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#node-id)_ | | | `--node-id-from-env` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#node-id-from-env)_ | | | `--num-cores` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#num-cores)_ | | | `--num-datafusion-threads` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#num-datafusion-threads)_ | @@ -160,16 +158,54 @@ influxdb3 serve [OPTIONS] \ | | `--wal-snapshot-size` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#wal-snapshot-size)_ | | | `--without-auth` | _See [configuration options](/influxdb3/enterprise/reference/config-options/#without-auth)_ | -{{< caption >}} -{{< req text="\* Required options" >}} -{{< /caption >}} - ### Option environment variables You can use environment variables to define most `influxdb3 serve` options. For more information, see [Configuration options](/influxdb3/enterprise/reference/config-options/). +## Quick-Start Mode + +For development, testing, and home use, you can start {{< product-name >}} by running `influxdb3` without the `serve` subcommand or any configuration parameters. The system automatically generates required values: + +- **`node-id`**: `{hostname}-node` (fallback: `primary-node`) +- **`cluster-id`**: `{hostname}-cluster` (fallback: `primary-cluster`) +- **`object-store`**: `file` +- **`data-dir`**: `~/.influxdb` + +The system displays warning messages showing the auto-generated identifiers: + +``` +Using auto-generated node id: mylaptop-node. For production deployments, explicitly set --node-id +Using auto-generated cluster id: mylaptop-cluster. For production deployments, explicitly set --cluster-id +``` + +### Quick-start examples + + + +```bash +# Zero-config startup +influxdb3 + +# Override specific defaults +influxdb3 --object-store memory + +# Use environment variables to override defaults +INFLUXDB3_NODE_IDENTIFIER_PREFIX=my-node influxdb3 +``` + +> [!Important] +> #### Production deployments +> +> Quick-start mode is designed for development and testing environments. +> For production deployments, use explicit configuration with the `serve` subcommand +> and specify all required parameters as shown in the [Examples](#examples) below. + +**Configuration precedence**: CLI flags > environment variables > auto-generated defaults + +For more information about quick-start mode, see [Get started](/influxdb3/enterprise/get-started/setup/#quick-start-mode-development). + ## Examples - [Run the InfluxDB 3 server](#run-the-influxdb-3-server) diff --git a/content/influxdb3/enterprise/reference/cli/influxdb3/show/plugins.md b/content/influxdb3/enterprise/reference/cli/influxdb3/show/plugins.md new file mode 100644 index 000000000..fce3bc5e5 --- /dev/null +++ b/content/influxdb3/enterprise/reference/cli/influxdb3/show/plugins.md @@ -0,0 +1,16 @@ +--- +title: influxdb3 show plugins +description: > + The `influxdb3 show plugins` command lists loaded Processing Engine plugins in your + InfluxDB 3 Enterprise server. +menu: + influxdb3_enterprise: + parent: influxdb3 show + name: influxdb3 show plugins +weight: 350 +source: /shared/influxdb3-cli/show/plugins.md +--- + + diff --git a/content/influxdb3/enterprise/reference/cli/influxdb3/update/trigger.md b/content/influxdb3/enterprise/reference/cli/influxdb3/update/trigger.md new file mode 100644 index 000000000..1c532ce41 --- /dev/null +++ b/content/influxdb3/enterprise/reference/cli/influxdb3/update/trigger.md @@ -0,0 +1,15 @@ +--- +title: influxdb3 update trigger +description: > + The `influxdb3 update trigger` command updates an existing trigger. +menu: + influxdb3_enterprise: + parent: influxdb3 update + name: influxdb3 update trigger +weight: 401 +source: /shared/influxdb3-cli/update/trigger.md +--- + + diff --git a/content/shared/influxdb3-admin/query-system-data/_index.md b/content/shared/influxdb3-admin/query-system-data/_index.md index c3ef83994..9ea808446 100644 --- a/content/shared/influxdb3-admin/query-system-data/_index.md +++ b/content/shared/influxdb3-admin/query-system-data/_index.md @@ -8,6 +8,8 @@ You can query the system tables for information about your running server, datab - [Examples](#examples) - [Show tables](#show-tables) - [View column information for a table](#view-column-information-for-a-table) + - [Recently executed queries](#recently-executed-queries) + - [Query plugin files](#query-plugin-files) ### Use the HTTP query API @@ -134,3 +136,57 @@ The output is similar to the following: {"id":"cdd63409-1822-4e65-8e3a-d274d553dbb3","phase":"success","issue_time":"2025-01-20T17:01:40.690067","query_type":"sql","query_text":"show tables","partitions":0,"parquet_files":0,"plan_duration":"PT0.032689S","permit_duration":"PT0.000202S","execute_duration":"PT0.000223S","end2end_duration":"PT0.033115S","compute_duration":"P0D","max_memory":0,"success":true,"running":false,"cancelled":false} {"id":"47f8d312-5e75-4db2-837a-6fcf94c09927","phase":"success","issue_time":"2025-01-20T17:02:32.627782","query_type":"sql","query_text":"show tables","partitions":0,"parquet_files":0,"plan_duration":"PT0.000583S","permit_duration":"PT0.000015S","execute_duration":"PT0.000063S","end2end_duration":"PT0.000662S","compute_duration":"P0D","max_memory":0,"success":true,"running":false,"cancelled":false} ``` + +#### Query plugin files + +To view loaded Processing Engine plugins, query the `plugin_files` system table in the `_internal` database. + +The `system.plugin_files` table provides information about plugin files loaded by the Processing Engine: + +**Columns:** +- `plugin_name` (String): Name of a trigger using this plugin +- `file_name` (String): Plugin filename +- `file_path` (String): Full server path to the plugin file +- `size_bytes` (Int64): File size in bytes +- `last_modified` (Int64): Last modification timestamp (milliseconds since epoch) + +```bash +curl "http://localhost:8181/api/v3/query_sql" \ + --header "Authorization: Bearer AUTH_TOKEN" \ + --json '{ + "db": "_internal", + "q": "SELECT * FROM system.plugin_files", + "format": "jsonl" + }' +``` + +The output is similar to the following: + +```jsonl +{"plugin_name":"my_trigger","file_name":"my_plugin.py","file_path":"/path/to/plugins/my_plugin.py","size_bytes":2048,"last_modified":1704067200000} +{"plugin_name":"scheduled_trigger","file_name":"scheduler.py","file_path":"/path/to/plugins/scheduler.py","size_bytes":4096,"last_modified":1704153600000} +``` + +**Filter plugins by trigger name:** + +```bash +curl "http://localhost:8181/api/v3/query_sql" \ + --header "Authorization: Bearer AUTH_TOKEN" \ + --json '{ + "db": "_internal", + "q": "SELECT * FROM system.plugin_files WHERE plugin_name = '"'my_trigger'"'", + "format": "jsonl" + }' +``` + +**Find plugins by file pattern:** + +```bash +curl "http://localhost:8181/api/v3/query_sql" \ + --header "Authorization: Bearer AUTH_TOKEN" \ + --json '{ + "db": "_internal", + "q": "SELECT * FROM system.plugin_files WHERE file_name LIKE '"'%scheduler%'"'", + "format": "jsonl" + }' +``` diff --git a/content/shared/influxdb3-cli/config-options.md b/content/shared/influxdb3-cli/config-options.md index 47e75c8f4..ff3d2d06d 100644 --- a/content/shared/influxdb3-cli/config-options.md +++ b/content/shared/influxdb3-cli/config-options.md @@ -1587,16 +1587,19 @@ engine uses. #### package-manager -Specifies the Python package manager that the processing engine uses. +Specifies the Python package manager that the Processing Engine uses to install plugin dependencies. This option supports the following values: -- `discover` _(default)_: Automatically discover available package manager -- `pip`: Use pip package manager -- `uv`: Use uv package manager +- `discover` _(default)_: Automatically detect and use available package manager (`uv` or `pip`) +- `pip`: Use pip package manager exclusively +- `uv`: Use uv package manager exclusively +- `disabled`: Disable automatic package installation (all dependencies must be pre-installed) **Default:** `discover` +For more information about plugins and package management, see [Processing Engine plugins](/influxdb3/version/plugins/). + | influxdb3 serve option | Environment variable | | :--------------------- | :------------------- | | `--package-manager` | `INFLUXDB3_PACKAGE_MANAGER` | diff --git a/content/shared/influxdb3-cli/create/trigger.md b/content/shared/influxdb3-cli/create/trigger.md index 13b5aaa55..1f1f8980e 100644 --- a/content/shared/influxdb3-cli/create/trigger.md +++ b/content/shared/influxdb3-cli/create/trigger.md @@ -26,7 +26,9 @@ influxdb3 create trigger [OPTIONS] \ | `-H` | `--host` | Host URL of the running {{< product-name >}} server (default is `http://127.0.0.1:8181`) | | `-d` | `--database` | _({{< req >}})_ Name of the database to operate on | | | `--token` | _({{< req >}})_ Authentication token | -| | `--plugin-filename` | _({{< req >}})_ Name of the file, stored in the server's `plugin-dir`, that contains the Python plugin code to run | +| `-p` | `--path` | Path to plugin file or directory (single `.py` file or directory containing `__init__.py` for multifile plugins). Can be local path (with `--upload`) or server path. Replaces `--plugin-filename`. | +| | `--upload` | Upload local plugin files to the server. Requires admin token. Use with `--path` to specify local files. | +| | `--plugin-filename` | _(Deprecated: use `--path` instead)_ Name of the file, stored in the server's `plugin-dir`, that contains the Python plugin code to run | | | `--trigger-spec` | Trigger specification: `table:`, `all_tables`, `every:`, `cron:`, or `request:` | | | `--trigger-arguments` | Additional arguments for the trigger, in the format `key=value`, separated by commas (for example, `arg1=val1,arg2=val2`) | | | `--disabled` | Create the trigger in disabled state | @@ -59,6 +61,8 @@ The following examples show how to use the `influxdb3 create trigger` command to - [Create a trigger for all tables](#create-a-trigger-for-all-tables) - [Create a trigger with a schedule](#create-a-trigger-with-a-schedule) - [Create a trigger for HTTP requests](#create-a-trigger-for-http-requests) +- [Create a trigger with a multifile plugin](#create-a-trigger-with-a-multifile-plugin) +- [Upload and create a trigger with a local plugin](#upload-and-create-a-trigger-with-a-local-plugin) - [Create a trigger with additional arguments](#create-a-trigger-with-additional-arguments) - [Create a disabled trigger](#create-a-disabled-trigger) - [Create a trigger with error handling](#create-a-trigger-with-error-handling) @@ -168,6 +172,65 @@ influxdb3 create trigger \ `PLUGIN_FILENAME` must implement the [HTTP request plugin](/influxdb3/version/plugins/#create-an-http-request-plugin) interface. +### Create a trigger with a multifile plugin + +Create a trigger using a plugin organized in multiple files. The plugin directory must contain an `__init__.py` file. + + + +```bash +influxdb3 create trigger \ + --database DATABASE_NAME \ + --token AUTH_TOKEN \ + --path "my_complex_plugin" \ + --trigger-spec "every:5m" \ + TRIGGER_NAME +``` + +The `--path` points to a directory in the server's `plugin-dir` with the following structure: + +``` +my_complex_plugin/ +โ”œโ”€โ”€ __init__.py # Required entry point +โ”œโ”€โ”€ processors.py # Supporting modules +โ””โ”€โ”€ utils.py +``` + +For more information about multifile plugins, see [Create your plugin file](/influxdb3/version/plugins/#create-your-plugin-file). + +### Upload and create a trigger with a local plugin + +Upload plugin files from your local machine and create a trigger in a single command. Requires admin token. + + + +```bash +# Upload single-file plugin +influxdb3 create trigger \ + --database DATABASE_NAME \ + --token AUTH_TOKEN \ + --path "/local/path/to/plugin.py" \ + --upload \ + --trigger-spec "every:1m" \ + TRIGGER_NAME + +# Upload multifile plugin directory +influxdb3 create trigger \ + --database DATABASE_NAME \ + --token AUTH_TOKEN \ + --path "/local/path/to/plugin-dir" \ + --upload \ + --trigger-spec "table:TABLE_NAME" \ + TRIGGER_NAME +``` + +The `--upload` flag transfers local files to the server's plugin directory. This is useful for: +- Local plugin development and testing +- Deploying plugins without SSH access +- Automating plugin deployment + +For more information, see [Upload plugins from local machine](/influxdb3/version/plugins/#upload-plugins-from-local-machine). + ### Create a trigger with additional arguments ```bash diff --git a/content/shared/influxdb3-cli/show/_index.md b/content/shared/influxdb3-cli/show/_index.md index eea02dcf0..b8c93fd7e 100644 --- a/content/shared/influxdb3-cli/show/_index.md +++ b/content/shared/influxdb3-cli/show/_index.md @@ -15,6 +15,7 @@ influxdb3 show | :---------------------------------------------------------------------- | :--------------------------------------------- | | [databases](/influxdb3/version/reference/cli/influxdb3/show/databases/) | List database | {{% show-in "enterprise" %}}| [license](/influxdb3/version/reference/cli/influxdb3/show/license/) | Display license information |{{% /show-in %}} +| [plugins](/influxdb3/version/reference/cli/influxdb3/show/plugins/) | List loaded plugins | | [system](/influxdb3/version/reference/cli/influxdb3/show/system/) | Display system table data | | [tokens](/influxdb3/version/reference/cli/influxdb3/show/tokens/) | List authentication tokens | | help | Print command help or the help of a subcommand | diff --git a/content/shared/influxdb3-cli/show/plugins.md b/content/shared/influxdb3-cli/show/plugins.md new file mode 100644 index 000000000..557f14abf --- /dev/null +++ b/content/shared/influxdb3-cli/show/plugins.md @@ -0,0 +1,88 @@ +The `influxdb3 show plugins` command lists loaded Processing Engine plugins in your +{{< product-name >}} server. + +## Usage + + + +```bash +influxdb3 show plugins [OPTIONS] +``` + +## Options + +| Option | | Description | +| :----- | :--------------- | :--------------------------------------------------------------------------------------- | +| `-H` | `--host` | Host URL of the running {{< product-name >}} server (default is `http://127.0.0.1:8181`) | +| | `--token` | _({{< req >}})_ Authentication token | +| | `--format` | Output format (`pretty` _(default)_, `json`, `jsonl`, `csv`, or `parquet`) | +| | `--output` | Path where to save output when using the `parquet` format | +| | `--tls-ca` | Path to a custom TLS certificate authority (for testing or self-signed certificates) | +| `-h` | `--help` | Print help information | +| | `--help-all` | Print detailed help information | + +### Option environment variables + +You can use the following environment variables to set command options: + +| Environment Variable | Option | +| :-------------------- | :-------- | +| `INFLUXDB3_HOST_URL` | `--host` | +| `INFLUXDB3_AUTH_TOKEN`| `--token` | + +## Output + +The command returns information about loaded plugin files: + +- **plugin_name**: Name of a trigger using this plugin +- **file_name**: Plugin filename +- **file_path**: Full server path to the plugin file +- **size_bytes**: File size in bytes +- **last_modified**: Last modification timestamp (milliseconds since epoch) + +> [!Note] +> This command queries the `system.plugin_files` table in the `_internal` database. +> For more advanced queries and filtering, see [Query system data](/influxdb3/version/admin/query-system-data/). + +## Examples + +- [List all plugins](#list-all-plugins) +- [List plugins in different output formats](#list-plugins-in-different-output-formats) +- [Output plugins to a Parquet file](#output-plugins-to-a-parquet-file) + +### List all plugins + + + +```bash +influxdb3 show plugins +``` + +### List plugins in different output formats + +You can specify the output format using the `--format` option: + + + +```bash +# JSON format +influxdb3 show plugins --format json + +# JSON Lines format +influxdb3 show plugins --format jsonl + +# CSV format +influxdb3 show plugins --format csv +``` + +### Output plugins to a Parquet file + +[Parquet](https://parquet.apache.org/) is a binary format. +Use the `--output` option to specify the file where you want to save the Parquet data. + + +```bash +influxdb3 show plugins \ + --format parquet \ + --output /Users/me/plugins.parquet +``` diff --git a/content/shared/influxdb3-cli/update/_index.md b/content/shared/influxdb3-cli/update/_index.md index afe2a22db..a5b61c1c6 100644 --- a/content/shared/influxdb3-cli/update/_index.md +++ b/content/shared/influxdb3-cli/update/_index.md @@ -1,4 +1,4 @@ -The `influxdb3 update` command updates resources such as databases and tables. +The `influxdb3 update` command updates resources in your {{< product-name >}} instance. ## Usage @@ -15,6 +15,7 @@ influxdb3 update | :----------------------------------------------------------------- | :--------------------- | | [database](/influxdb3/version/reference/cli/influxdb3/update/database/) | Update a database | | [table](/influxdb3/version/reference/cli/influxdb3/update/table/) | Update a table | +| [trigger](/influxdb3/version/reference/cli/influxdb3/update/trigger/) | Update a trigger | | help | Print command help or the help of a subcommand | {{% /show-in %}} @@ -22,6 +23,7 @@ influxdb3 update | Subcommand | Description | | :----------------------------------------------------------------- | :--------------------- | | [database](/influxdb3/version/reference/cli/influxdb3/update/database/) | Update a database | +| [trigger](/influxdb3/version/reference/cli/influxdb3/update/trigger/) | Update a trigger | | help | Print command help or the help of a subcommand | {{% /show-in %}} diff --git a/content/shared/influxdb3-cli/update/trigger.md b/content/shared/influxdb3-cli/update/trigger.md new file mode 100644 index 000000000..3420d2127 --- /dev/null +++ b/content/shared/influxdb3-cli/update/trigger.md @@ -0,0 +1,174 @@ +The `influxdb3 update trigger` command updates an existing trigger in your {{< product-name >}} instance. + +Use this command to update trigger plugin code, configuration, or behavior without recreating the trigger. This preserves trigger history and configuration while allowing you to iterate on plugin development. + +## Usage + + + +```bash +influxdb3 update trigger [OPTIONS] \ + --database \ + --trigger-name +``` + +## Arguments + +- **`DATABASE_NAME`**: (Required) The name of the database containing the trigger. +- **`TRIGGER_NAME`**: (Required) The name of the trigger to update. + +## Options + +| Option | | Description | +| :----- | :------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- | +| `-H` | `--host` | Host URL of the running {{< product-name >}} server (default is `http://127.0.0.1:8181`) | +| `-d` | `--database` | _({{< req >}})_ Name of the database containing the trigger | +| | `--trigger-name` | _({{< req >}})_ Name of the trigger to update | +| `-p` | `--path` | Path to plugin file or directory (single `.py` file or directory containing `__init__.py` for multifile plugins). Can be local path (with `--upload`) or server path. | +| | `--upload` | Upload local plugin files to the server. Requires admin token. Use with `--path` to specify local files. | +| | `--trigger-arguments`| Additional arguments for the trigger, in the format `key=value`, separated by commas (for example, `arg1=val1,arg2=val2`) | +| | `--disabled` | Set the trigger state to disabled | +| | `--enabled` | Set the trigger state to enabled | +| | `--error-behavior` | Error handling behavior: `log`, `retry`, or `disable` | +| | `--token` | Authentication token | +| | `--tls-ca` | Path to a custom TLS certificate authority (for testing or self-signed certificates) | +| `-h` | `--help` | Print help information | +| | `--help-all` | Print detailed help information | + +### Option environment variables + +You can use the following environment variables instead of providing CLI options directly: + +| Environment Variable | Option | +| :------------------------ | :----------- | +| `INFLUXDB3_HOST_URL` | `--host` | +| `INFLUXDB3_DATABASE_NAME` | `--database` | +| `INFLUXDB3_AUTH_TOKEN` | `--token` | +| `INFLUXDB3_TLS_CA` | `--tls-ca` | + +## Examples + +The following examples show how to update triggers in different scenarios. + +- [Update trigger plugin code](#update-trigger-plugin-code) +- [Upload and update with a local plugin](#upload-and-update-with-a-local-plugin) +- [Update trigger arguments](#update-trigger-arguments) +- [Enable or disable a trigger](#enable-or-disable-a-trigger) +- [Update error handling behavior](#update-error-handling-behavior) + +--- + +Replace the following placeholders with your values: + +- {{% code-placeholder-key %}}`DATABASE_NAME`{{% /code-placeholder-key %}}: Database name +- {{% code-placeholder-key %}}`AUTH_TOKEN`{{% /code-placeholder-key %}}: Authentication token +- {{% code-placeholder-key %}}`TRIGGER_NAME`{{% /code-placeholder-key %}}: Name of the trigger to update + +{{% code-placeholders "(DATABASE|TRIGGER)_NAME|AUTH_TOKEN" %}} + +### Update trigger plugin code + +Update a trigger to use modified plugin code from the server's plugin directory. + + + +```bash +influxdb3 update trigger \ + --database DATABASE_NAME \ + --trigger-name TRIGGER_NAME \ + --path "my_plugin.py" \ + --token AUTH_TOKEN +``` + +### Upload and update with a local plugin + +Upload new plugin code from your local machine and update the trigger in a single operation. Requires admin token. + + + +```bash +# Upload single-file plugin +influxdb3 update trigger \ + --database DATABASE_NAME \ + --trigger-name TRIGGER_NAME \ + --path "/local/path/to/updated_plugin.py" \ + --upload \ + --token AUTH_TOKEN + +# Upload multifile plugin directory +influxdb3 update trigger \ + --database DATABASE_NAME \ + --trigger-name TRIGGER_NAME \ + --path "/local/path/to/plugin_directory" \ + --upload \ + --token AUTH_TOKEN +``` + +The `--upload` flag transfers local files to the server's plugin directory, making it easy to iterate on plugin development without manual file copying. + +### Update trigger arguments + +Modify the arguments passed to a trigger's plugin code. + + + +```bash +influxdb3 update trigger \ + --database DATABASE_NAME \ + --trigger-name TRIGGER_NAME \ + --trigger-arguments threshold=100,window=5m \ + --token AUTH_TOKEN +``` + +### Enable or disable a trigger + +Change the trigger's enabled state without modifying other configuration. + + + +```bash +# Disable a trigger +influxdb3 update trigger \ + --database DATABASE_NAME \ + --trigger-name TRIGGER_NAME \ + --disabled \ + --token AUTH_TOKEN + +# Enable a trigger +influxdb3 update trigger \ + --database DATABASE_NAME \ + --trigger-name TRIGGER_NAME \ + --enabled \ + --token AUTH_TOKEN +``` + +### Update error handling behavior + +Change how the trigger responds to errors. + + + +```bash +# Log errors without retrying +influxdb3 update trigger \ + --database DATABASE_NAME \ + --trigger-name TRIGGER_NAME \ + --error-behavior log \ + --token AUTH_TOKEN + +# Retry on errors +influxdb3 update trigger \ + --database DATABASE_NAME \ + --trigger-name TRIGGER_NAME \ + --error-behavior retry \ + --token AUTH_TOKEN + +# Disable trigger on error +influxdb3 update trigger \ + --database DATABASE_NAME \ + --trigger-name TRIGGER_NAME \ + --error-behavior disable \ + --token AUTH_TOKEN +``` + +{{% /code-placeholders %}} diff --git a/content/shared/influxdb3-get-started/setup.md b/content/shared/influxdb3-get-started/setup.md index 3024c6f74..f3fb52fb4 100644 --- a/content/shared/influxdb3-get-started/setup.md +++ b/content/shared/influxdb3-get-started/setup.md @@ -1,5 +1,6 @@ - [Prerequisites](#prerequisites) +- [Quick-Start Mode (Development)](#quick-start-mode-development) - [Start InfluxDB](#start-influxdb) - [Object store examples](#object-store-examples) {{% show-in "enterprise" %}} @@ -21,6 +22,56 @@ To get started, you'll need: - A directory on your local disk where you can persist data (used by examples in this guide) - S3-compatible object store and credentials +## Quick-Start Mode (Development) + +For development, testing, and home use, you can start {{% product-name %}} without +any arguments. The system automatically generates required configuration values +based on your system's hostname: + +```bash +influxdb3 +``` + +When you run `influxdb3` without arguments, the following values are auto-generated: + +{{% show-in "enterprise" %}} +- **`node-id`**: `{hostname}-node` (or `primary-node` if hostname is unavailable) +- **`cluster-id`**: `{hostname}-cluster` (or `primary-cluster` if hostname is unavailable) +{{% /show-in %}} +{{% show-in "core" %}} +- **`node-id`**: `{hostname}-node` (or `primary-node` if hostname is unavailable) +{{% /show-in %}} +- **`object-store`**: `file` +- **`data-dir`**: `~/.influxdb` + +The system displays warning messages showing the auto-generated identifiers: + +{{% show-in "enterprise" %}} +``` +Using auto-generated node id: mylaptop-node. For production deployments, explicitly set --node-id +Using auto-generated cluster id: mylaptop-cluster. For production deployments, explicitly set --cluster-id +``` +{{% /show-in %}} +{{% show-in "core" %}} +``` +Using auto-generated node id: mylaptop-node. For production deployments, explicitly set --node-id +``` +{{% /show-in %}} + +> [!Important] +> #### When to use quick-start mode +> +> Quick-start mode is designed for development, testing, and home lab environments +> where simplicity is prioritized over explicit configuration. +> +> **For production deployments**, use explicit configuration values with the +> [`influxdb3 serve` command](/influxdb3/version/reference/cli/influxdb3/serve/) +> as shown in the [Start InfluxDB](#start-influxdb) section below. + +**Configuration precedence**: Environment variables override auto-generated defaults. +For example, if you set `INFLUXDB3_NODE_IDENTIFIER_PREFIX=my-node`, the system +uses `my-node` instead of generating `{hostname}-node`. + ## Start InfluxDB Use the [`influxdb3 serve` command](/influxdb3/version/reference/cli/influxdb3/serve/) diff --git a/content/shared/influxdb3-plugins/_index.md b/content/shared/influxdb3-plugins/_index.md index 754115f31..3d48fc5c1 100644 --- a/content/shared/influxdb3-plugins/_index.md +++ b/content/shared/influxdb3-plugins/_index.md @@ -24,8 +24,12 @@ Once you have all the prerequisites in place, follow these steps to implement th - [Set up the Processing Engine](#set-up-the-processing-engine) - [Add a Processing Engine plugin](#add-a-processing-engine-plugin) + - [Upload plugins from local machine](#upload-plugins-from-local-machine) + - [Update existing plugins](#update-existing-plugins) + - [View loaded plugins](#view-loaded-plugins) - [Set up a trigger](#set-up-a-trigger) - [Manage plugin dependencies](#manage-plugin-dependencies) +- [Plugin security](#plugin-security) {{% show-in "enterprise" %}} - [Distributed cluster considerations](#distributed-cluster-considerations) {{% /show-in %}} @@ -227,10 +231,51 @@ Choose a plugin type based on your automation goals: #### Create your plugin file +Plugins now support both single-file and multifile architectures: + +**Single-file plugins:** - Create a `.py` file in your plugins directory - Add the appropriate function signature based on your chosen plugin type - Write your processing logic inside the function +**Multifile plugins:** +- Create a directory in your plugins directory +- Add an `__init__.py` file as the entry point (required) +- Organize supporting modules in additional `.py` files +- Import and use modules within your plugin code + +##### Example multifile plugin structure + +``` +my_plugin/ +โ”œโ”€โ”€ __init__.py # Required - entry point with trigger function +โ”œโ”€โ”€ utils.py # Supporting module +โ”œโ”€โ”€ processors.py # Data processing functions +โ””โ”€โ”€ config.py # Configuration helpers +``` + +The `__init__.py` file must contain your trigger function: + +```python +# my_plugin/__init__.py +from .processors import process_data +from .config import get_settings + +def process_writes(influxdb3_local, table_batches, args=None): + settings = get_settings() + for table_batch in table_batches: + process_data(influxdb3_local, table_batch, settings) +``` + +Supporting modules can contain helper functions: + +```python +# my_plugin/processors.py +def process_data(influxdb3_local, table_batch, settings): + # Processing logic here + pass +``` + After writing your plugin, [create a trigger](#use-the-create-trigger-command) to connect it to a database event and define when it runs. #### Create a data write plugin @@ -313,6 +358,122 @@ After writing your plugin: - [Install any Python dependencies](#manage-plugin-dependencies) your plugin requires - Learn how to [extend plugins with the API](/influxdb3/version/extend-plugin/) +### Upload plugins from local machine + +For local development and testing, you can upload plugin files directly from your machine when creating triggers. This eliminates the need to manually copy files to the server's plugin directory. + +Use the `--upload` flag with `--path` to transfer local files or directories: + +```bash +# Upload single-file plugin +influxdb3 create trigger \ + --trigger-spec "every:10s" \ + --path "/local/path/to/plugin.py" \ + --upload \ + --database metrics \ + my_trigger + +# Upload multifile plugin directory +influxdb3 create trigger \ + --trigger-spec "every:30s" \ + --path "/local/path/to/plugin-dir" \ + --upload \ + --database metrics \ + complex_trigger +``` + +> [!Important] +> #### Admin privileges required +> +> Plugin uploads require an admin token. This security measure prevents unauthorized code execution on the server. + +**When to use plugin upload:** +- Local plugin development and testing +- Deploying plugins without SSH access to the server +- Rapid iteration on plugin code +- Automating plugin deployment in CI/CD pipelines + +For more information, see the [`influxdb3 create trigger` CLI reference](/influxdb3/version/reference/cli/influxdb3/create/trigger/). + +### Update existing plugins + +Modify plugin code for running triggers without recreating them. This allows you to iterate on plugin development while preserving trigger configuration and history. + +Use the `influxdb3 update trigger` command: + +```bash +# Update single-file plugin +influxdb3 update trigger \ + --database metrics \ + --trigger-name my_trigger \ + --path "/path/to/updated/plugin.py" + +# Update multifile plugin +influxdb3 update trigger \ + --database metrics \ + --trigger-name complex_trigger \ + --path "/path/to/updated/plugin-dir" +``` + +The update operation: +- Replaces plugin files immediately +- Preserves trigger configuration (spec, schedule, arguments) +- Requires admin token for security +- Works with both local paths and uploaded files + +For complete reference, see [`influxdb3 update trigger`](/influxdb3/version/reference/cli/influxdb3/update/trigger/). + +### View loaded plugins + +Monitor which plugins are loaded in your system for operational visibility and troubleshooting. + +**Option 1: Use the CLI command** + +```bash +# List all plugins +influxdb3 show plugins --token $ADMIN_TOKEN + +# JSON format for programmatic access +influxdb3 show plugins --format json --token $ADMIN_TOKEN +``` + +**Option 2: Query the system table** + +The `system.plugin_files` table in the `_internal` database provides detailed plugin file information: + +```bash +influxdb3 query \ + -d _internal \ + "SELECT * FROM system.plugin_files ORDER BY plugin_name" \ + --token $ADMIN_TOKEN +``` + +**Available columns:** +- `plugin_name` (String): Trigger name +- `file_name` (String): Plugin file name +- `file_path` (String): Full server path +- `size_bytes` (Int64): File size +- `last_modified` (Int64): Modification timestamp (milliseconds) + +**Example queries:** + +```sql +-- Find plugins by name +SELECT * FROM system.plugin_files WHERE plugin_name = 'my_trigger'; + +-- Find large plugins +SELECT plugin_name, size_bytes +FROM system.plugin_files +WHERE size_bytes > 10000; + +-- Check modification times +SELECT plugin_name, file_name, last_modified +FROM system.plugin_files +ORDER BY last_modified DESC; +``` + +For more information, see the [`influxdb3 show plugins` reference](/influxdb3/version/reference/cli/influxdb3/show/plugins/) and [Query system data](/influxdb3/version/admin/query-system-data/#query-plugin-files). + ## Set up a trigger ### Understand trigger types @@ -597,6 +758,115 @@ These examples install the specified Python package (for example, pandas) into t InfluxDB creates a Python virtual environment in your plugins directory with the specified packages installed. +### Disable package installation for secure environments + +For air-gapped deployments or environments with strict security requirements, you can disable Python package installation while maintaining Processing Engine functionality. + +Start the server with `--package-manager disabled`: + +```bash +influxdb3 serve \ + --node-id node0 \ + --object-store file \ + --data-dir ~/.influxdb3 \ + --plugin-dir ~/.plugins \ + --package-manager disabled +``` + +When package installation is disabled: +- The Processing Engine continues to function normally for triggers +- Plugin code executes without restrictions +- Package installation commands are blocked +- Pre-installed dependencies in the virtual environment remain available + +**Pre-install required dependencies:** + +Before disabling the package manager, install all required Python packages: + +```bash +# Install packages first +influxdb3 install package pandas requests numpy + +# Then start with disabled package manager +influxdb3 serve \ + --plugin-dir ~/.plugins \ + --package-manager disabled +``` + +**Use cases for disabled package management:** +- Air-gapped environments without internet access +- Compliance requirements prohibiting runtime package installation +- Centrally managed dependency environments +- Security policies requiring pre-approved packages only + +For more configuration options, see [--package-manager](/influxdb3/version/reference/config-options/#package-manager). + +## Plugin security + +The Processing Engine includes security features to protect your {{% product-name %}} instance from unauthorized code execution and file system attacks. + +### Plugin path validation + +All plugin file paths are validated to prevent directory traversal attacks. The system blocks: + +- **Relative paths with parent directory references** (`../`, `../../`) +- **Absolute paths** (`/etc/passwd`, `/usr/bin/script.py`) +- **Symlinks that escape the plugin directory** + +When creating or updating triggers, plugin paths must resolve within the configured `--plugin-dir`. + +**Example of blocked paths:** + +```bash +# These will be rejected +influxdb3 create trigger \ + --path "../../../etc/passwd" \ # Blocked: parent directory traversal + ... + +influxdb3 create trigger \ + --path "/tmp/malicious.py" \ # Blocked: absolute path + ... +``` + +**Valid plugin paths:** + +```bash +# These are allowed +influxdb3 create trigger \ + --path "myapp/plugin.py" \ # Relative to plugin-dir + ... + +influxdb3 create trigger \ + --path "transforms/data.py" \ # Subdirectory in plugin-dir + ... +``` + +### Upload and update permissions + +Plugin upload and update operations require admin tokens to prevent unauthorized code deployment: + +- `--upload` flag requires admin privileges +- `update trigger` command requires admin token +- Standard resource tokens cannot upload or modify plugin code + +This security model ensures only administrators can introduce or modify executable code in your database. + +### Best practices + +**For development:** +- Use the `--upload` flag to deploy plugins during development +- Test plugins in non-production environments first +- Review plugin code before deployment + +**For production:** +- Pre-deploy plugins to the server's plugin directory via secure file transfer +- Use custom plugin repositories for vetted, approved plugins +- Disable package installation (`--package-manager disabled`) in locked-down environments +- Audit plugin files using the [`system.plugin_files` table](#view-loaded-plugins) +- Implement change control processes for plugin updates + +For more security configuration options, see [Configuration options](/influxdb3/version/reference/config-options/). + {{% show-in "enterprise" %}} ## Distributed cluster considerations From ffbe4e5e188af63cbfa9c341e6699157e3ef8ce0 Mon Sep 17 00:00:00 2001 From: Scott Anderson Date: Thu, 30 Oct 2025 11:04:04 -0400 Subject: [PATCH 42/49] chore: update notifications for InfluxDB 3.6 release (#6498) * chore: update notifications for InfluxDB 3.6 release Updated the notifications for InfluxDB version 3.6, including changes to the title, slug, and message content. * Update data/notifications.yaml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- data/notifications.yaml | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/data/notifications.yaml b/data/notifications.yaml index da1eb80ec..4701acddc 100644 --- a/data/notifications.yaml +++ b/data/notifications.yaml @@ -40,29 +40,23 @@ # - [The plan for InfluxDB 3.0 Open Source](https://influxdata.com/blog/the-plan-for-influxdb-3-0-open-source) # - [InfluxDB 3.0 benchmarks](https://influxdata.com/blog/influxdb-3-0-is-2.5x-45x-faster-compared-to-influxdb-open-source/) -- id: influxdb3.5-explorer-1.3 +- id: influxdb3.6-explorer-1.4 level: note scope: - / - title: New in InfluxDB 3.5 + title: New in InfluxDB 3.6 slug: | - Key enhancements in InfluxDB 3.5 and the InfluxDB 3 Explorer 1.3. + Key enhancements in InfluxDB 3.6 and the InfluxDB 3 Explorer 1.4. - See the Blog Post + See the Blog Post message: | - InfluxDB 3.5 is now available for both Core and Enterprise, introducing - custom plugin repository support, - enhanced operational visibility with queryable CLI parameters and manual node - management, stronger security controls, and general performance improvements. - - InfluxDB 3 Explorer 1.3 brings powerful new capabilities including Dashboards - (beta) for saving and organizing your favorite queries, and cache querying for - instant access to Last Value and Distinct Value cachesโ€”making Explorer a more - comprehensive workspace for time series monitoring and analysis. + InfluxDB 3.6 is now available for both Core and Enterprise. This release introduces + the 1.4 update to InfluxDB 3 Explorer, featuring the beta launch of Ask AI, along + with new capabilities for simple startup and expanded functionality in the Processing Engine. For more information, check out: - - [See the announcement blog post](https://www.influxdata.com/blog/influxdb-3-5/) + - [See the announcement blog post](https://www.influxdata.com/blog/influxdb-3-6/) - [InfluxDB 3 Core release notes](/influxdb3/core/release-notes/) - [InfluxDB 3 Enterprise release notes](/influxdb3/enterprise/release-notes/) - [Get Started with InfluxDB 3 Explorer](/influxdb3/explorer/get-started/) From efd288fdb8d5cf71d261dd5519a88eb7400cad88 Mon Sep 17 00:00:00 2001 From: Jason Stirnaman Date: Fri, 31 Oct 2025 15:07:01 -0400 Subject: [PATCH 43/49] fix(lint): disable remark formatting for content files to preserve GitHub Alerts (#6502) Remark-stringify escapes square brackets in GitHub Alerts syntax (> [!Note] becomes > \[!Note]), breaking alert rendering. Changes: - Remove lint-markdown-content pre-commit hook from lefthook.yml - Configure remark-lint-no-undefined-references to allow GitHub Alerts - Add remark-lint-no-undefined-references dependency - Unescaped GitHub Alerts in content/create.md Content files now preserve GitHub Alerts syntax while instruction files continue to use remark auto-formatting (they don't contain alerts). Vale provides adequate style linting for content files. Closes #6501 See: https://github.com/remarkjs/remark-gfm/issues/53 --- .ci/remark-lint/.remark-lint.js | 29 +++++++++++++++++++---------- .ci/remark-lint/package.json | 3 ++- lefthook.yml | 20 -------------------- 3 files changed, 21 insertions(+), 31 deletions(-) diff --git a/.ci/remark-lint/.remark-lint.js b/.ci/remark-lint/.remark-lint.js index a53718b14..596e84a9b 100644 --- a/.ci/remark-lint/.remark-lint.js +++ b/.ci/remark-lint/.remark-lint.js @@ -4,22 +4,31 @@ import remarkPresetLintMarkdownStyleGuide from 'remark-preset-lint-markdown-styl import remarkFrontmatter from 'remark-frontmatter'; import remarkFrontmatterSchema from 'remark-lint-frontmatter-schema'; import remarkNoShellDollars from 'remark-lint-no-shell-dollars'; +import remarkLintNoUndefinedReferences from 'remark-lint-no-undefined-references'; import remarkToc from 'remark-toc'; const remarkConfig = { settings: { bullet: '-', - plugins: [ - remarkPresetLintConsistent, - remarkPresetLintRecommended, - remarkPresetLintMarkdownStyleGuide, - remarkFrontmatter, - remarkFrontmatterSchema, - remarkNoShellDollars, - // Generate a table of contents in `## Contents` - [remarkToc, { heading: '' }], - ], }, + plugins: [ + remarkPresetLintConsistent, + remarkPresetLintRecommended, + remarkPresetLintMarkdownStyleGuide, + remarkFrontmatter, + remarkFrontmatterSchema, + remarkNoShellDollars, + // Override no-undefined-references to allow GitHub Alerts syntax + // This prevents lint warnings for [!Note], [!Tip], etc. in blockquotes + [ + remarkLintNoUndefinedReferences, + { + allow: ['!Note', '!Tip', '!Important', '!Warning', '!Caution'], + }, + ], + // Generate a table of contents in `## Contents` + [remarkToc, { heading: '' }], + ], }; export default remarkConfig; diff --git a/.ci/remark-lint/package.json b/.ci/remark-lint/package.json index 3ba9a210a..d62218a23 100644 --- a/.ci/remark-lint/package.json +++ b/.ci/remark-lint/package.json @@ -9,6 +9,7 @@ "remark-preset-lint-recommended": "7.0.0", "remark-frontmatter": "5.0.0", "remark-lint-frontmatter-schema": "3.15.4", - "remark-lint-no-shell-dollars": "4.0.0" + "remark-lint-no-shell-dollars": "4.0.0", + "remark-lint-no-undefined-references": "5.0.2" } } diff --git a/lefthook.yml b/lefthook.yml index 175fbfd48..e910ae114 100644 --- a/lefthook.yml +++ b/lefthook.yml @@ -22,26 +22,6 @@ pre-commit: docker compose run --rm --name remark-lint remark-lint $files --output --quiet || \ { echo "โš ๏ธ Remark found formatting issues in instruction files. Automatic formatting applied."; } stage_fixed: true - # Report markdown formatting issues in content/api-docs without auto-fixing - lint-markdown-content: - tags: lint - glob: "{api-docs/**/*.md,content/**/*.md}" - run: | - # Prepend /workdir/ to staged files since repository is mounted at /workdir in container - files=$(echo '{staged_files}' | sed 's|^|/workdir/|g; s| | /workdir/|g') - # Run remark to check for formatting differences (without --output, shows diff in stdout) - # If output differs from input, fail the commit - for file in $files; do - original=$(cat "${file#/workdir/}") - formatted=$(docker compose run --rm --name remark-lint-content remark-lint "$file" 2>/dev/null | tail -n +2) - if [ "$original" != "$formatted" ]; then - echo "โŒ Markdown formatting issues in ${file#/workdir/}" - echo " Run: docker compose run --rm remark-lint $file --output" - echo " Or manually fix the formatting to match remark style" - exit 1 - fi - done - echo "โœ… All content files are properly formatted" # Lint instruction and repository documentation files with generic Vale config lint-instructions: tags: lint From e8a48e3482b2072bd7c49848d596f26e3f63672d Mon Sep 17 00:00:00 2001 From: Jason Stirnaman Date: Mon, 3 Nov 2025 11:18:15 -0500 Subject: [PATCH 44/49] =?UTF-8?q?chore(docs):=20Redesign=20docs=20CLI=20to?= =?UTF-8?q?ols=20for=20creating=20and=20editing=20content,=20add=20content?= =?UTF-8?q?/create.md=20tutorial=20page=20for=20the=20How=20to=20creat?= =?UTF-8?q?=E2=80=A6=20(#6506)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore(docs): Add content/create.md tutorial page for the How to create your own documentation tutorial chore(scripts): docs:create and docs:edit scripts for content creation and editing Major improvements to docs:create UX for both Claude Code and external tool integration: **New `docs` CLI command:** - Add scripts/docs-cli.js - main CLI with subcommand routing - Add bin field to package.json for `docs` command - Usage: `docs create` and `docs edit` (cleaner than yarn commands) **Smart piping detection:** - Auto-detect when stdout is piped (\!process.stdout.isTTY) - When piping: automatically output prompt text (no flag needed) - When interactive: output prompt file path - --print-prompt flag now optional (auto-enabled when piping) **Specify products:** - simplify link following behavior - treat relative paths as local files, all HTTP/HTTPS as external - stdin now requires --products flag with product keys - --products now accepts keys from products.yml (influxdb3_core, telegraf, etc.) Examples: --products influxdb3_core --products influxdb3_core,influxdb3_enterprise --products telegraf **Usage examples:** # Inside Claude Code - automatic execution docs create drafts/new-feature.md # Pipe to external AI - prompt auto-detected docs create FILE --products X | claude -p docs create FILE --products X | copilot -p # Pipe from stdin echo 'content' | docs create --products X | claude -p Benefits: - Cleaner syntax (no yarn --silent needed) - No manual --print-prompt flag when piping - Consistent with industry tools (git, npm, etc.) - Backward compatible with yarn commands WIP: docs:create usage examples - Redesign of the docs CLI tools for creating and editing content - Cleaner interface works better for piping output to agents and downstream utilities - Updates README.md and other authoring docs This repository includes a `docs` CLI tool for common documentation workflows: ```sh npx docs create drafts/new-feature.md --products influxdb3_core npx docs edit https://docs.influxdata.com/influxdb3/core/admin/ npx docs placeholders content/influxdb3/core/admin/upgrade.md npx docs --help ``` **Run test cases:** ```sh npx docs test ``` * Update content/create.md * Update content/create.md * Update content/create.md * Update content/create.md * Update scripts/templates/chatgpt-prompt.md * Update DOCS-SHORTCODES.md --- DOCS-SHORTCODES.md | 118 +++++-- README.md | 77 +++-- content/create.md | 210 ++++++++++++ data/products.yml | 13 - package.json | 9 +- scripts/README-add-placeholders.md | 108 ------ scripts/add-placeholders.js | 40 ++- scripts/docs-cli.js | 236 +++++++++++++ scripts/docs-create.js | 506 +++++++++++++++++++++++----- scripts/lib/content-scaffolding.js | 149 +++++++- scripts/lib/file-operations.js | 32 ++ scripts/setup-local-bin.js | 43 +++ scripts/templates/chatgpt-prompt.md | 9 +- yarn.lock | 12 + 14 files changed, 1297 insertions(+), 265 deletions(-) create mode 100644 content/create.md delete mode 100644 scripts/README-add-placeholders.md create mode 100755 scripts/docs-cli.js create mode 100755 scripts/setup-local-bin.js diff --git a/DOCS-SHORTCODES.md b/DOCS-SHORTCODES.md index 2218a72e4..de0104e5c 100644 --- a/DOCS-SHORTCODES.md +++ b/DOCS-SHORTCODES.md @@ -19,7 +19,7 @@ Complete reference for custom Hugo shortcodes used in InfluxData documentation. - [Content Management](#content-management) - [Special Purpose](#special-purpose) ---- +*** ## Notes and Warnings @@ -146,7 +146,7 @@ Use the `{{< api-endpoint >}}` shortcode to generate a code block that contains - **method**: HTTP request method (get, post, patch, put, or delete) - **endpoint**: API endpoint - **api-ref**: Link the endpoint to a specific place in the API documentation -- **influxdb_host**: Specify which InfluxDB product host to use _if the `endpoint` contains the `influxdb/host` shortcode_. Uses the current InfluxDB product as default. Supports the following product values: +- **influxdb_host**: Specify which InfluxDB product host to use *if the `endpoint` contains the `influxdb/host` shortcode*. Uses the current InfluxDB product as default. Supports the following product values: - oss - cloud - serverless @@ -268,11 +268,11 @@ To link to tabbed content, click on the tab and use the URL parameter shown. It Use the `{{< page-nav >}}` shortcode to add page navigation buttons to a page. These are useful for guiding users through a set of docs that should be read in sequential order. The shortcode has the following parameters: -- **prev:** path of the previous document _(optional)_ -- **next:** path of the next document _(optional)_ -- **prevText:** override the button text linking to the previous document _(optional)_ -- **nextText:** override the button text linking to the next document _(optional)_ -- **keepTab:** include the currently selected tab in the button link _(optional)_ +- **prev:** path of the previous document *(optional)* +- **next:** path of the next document *(optional)* +- **prevText:** override the button text linking to the previous document *(optional)* +- **nextText:** override the button text linking to the next document *(optional)* +- **keepTab:** include the currently selected tab in the button link *(optional)* The shortcode generates buttons that link to both the previous and next documents. By default, the shortcode uses either the `list_title` or the `title` of the linked document, but you can use `prevText` and `nextText` to override button text. @@ -308,7 +308,7 @@ The children shortcode can also be used to list only "section" articles (those w {{< children show="pages" >}} ``` -_By default, it displays both sections and pages._ +*By default, it displays both sections and pages.* Use the `type` argument to specify the format of the children list. @@ -325,7 +325,7 @@ The following list types are available: #### Include a "Read more" link -To include a "Read more" link with each child summary, set `readmore=true`. _Only the `articles` list type supports "Read more" links._ +To include a "Read more" link with each child summary, set `readmore=true`. *Only the `articles` list type supports "Read more" links.* ```md {{< children readmore=true >}} @@ -333,7 +333,7 @@ To include a "Read more" link with each child summary, set `readmore=true`. _Onl #### Include a horizontal rule -To include a horizontal rule after each child summary, set `hr=true`. _Only the `articles` list type supports horizontal rules._ +To include a horizontal rule after each child summary, set `hr=true`. *Only the `articles` list type supports horizontal rules.* ```md {{< children hr=true >}} @@ -390,11 +390,11 @@ This is useful for maintaining and referencing sample code variants in their nat #### Include specific files from the same directory -> [!Caution] +> \[!Caution] > **Don't use for code examples** > Using this and `get-shared-text` shortcodes to include code examples prevents the code from being tested. -To include the text from one file in another file in the same directory, use the `{{< get-leaf-text >}}` shortcode. The directory that contains both files must be a Hugo [_Leaf Bundle_](https://gohugo.io/content-management/page-bundles/#leaf-bundles), a directory that doesn't have any child directories. +To include the text from one file in another file in the same directory, use the `{{< get-leaf-text >}}` shortcode. The directory that contains both files must be a Hugo [*Leaf Bundle*](https://gohugo.io/content-management/page-bundles/#leaf-bundles), a directory that doesn't have any child directories. In the following example, `api` is a leaf bundle. `content` isn't. @@ -447,13 +447,13 @@ Each children list `type` uses frontmatter properties when generating the list o | Frontmatter | articles | list | functions | | :------------------- | :------: | :--: | :-------: | -| `list_title` | โœ“ | โœ“ | โœ“ | -| `description` | โœ“ | | | -| `external_url` | โœ“ | โœ“ | | -| `list_image` | โœ“ | | | -| `list_note` | | โœ“ | | -| `list_code_example` | โœ“ | | | -| `list_query_example` | โœ“ | | | +| `list_title` | โœ“ | โœ“ | โœ“ | +| `description` | โœ“ | | | +| `external_url` | โœ“ | โœ“ | | +| `list_image` | โœ“ | | | +| `list_note` | | โœ“ | | +| `list_code_example` | โœ“ | | | +| `list_query_example` | โœ“ | | | ## Visual Elements @@ -695,7 +695,7 @@ Column 2 The following options are available: -- half _(Default)_ +- half *(Default)* - third - quarter @@ -721,10 +721,10 @@ Click {{< caps >}}Add Data{{< /caps >}} ### Authentication token link -Use the `{{% token-link "" "%}}` shortcode to automatically generate links to token management documentation. The shortcode accepts two _optional_ arguments: +Use the `{{% token-link "" "%}}` shortcode to automatically generate links to token management documentation. The shortcode accepts two *optional* arguments: - **descriptor**: An optional token descriptor -- **link_append**: An optional path to append to the token management link path, `///admin/tokens/`. +- **link\_append**: An optional path to append to the token management link path, `///admin/tokens/`. ```md {{% token-link "database" "resource/" %}} @@ -775,7 +775,7 @@ Descriptions should follow consistent patterns: - Recommended: "your {{% token-link "database" %}}"{{% show-in "enterprise" %}} with permissions on the specified database{{% /show-in %}} - Avoid: "your token", "the token", "an authorization token" 3. **Database names**: - - Recommended: "the name of the database to [action]" + - Recommended: "the name of the database to \[action]" - Avoid: "your database", "the database name" 4. **Conditional content**: - Use `{{% show-in "enterprise" %}}` for content specific to enterprise versions @@ -797,13 +797,75 @@ Descriptions should follow consistent patterns: #### Syntax -- `{ placeholders="PATTERN1|PATTERN2" }`: Use this code block attribute to define placeholder patterns +- `{ placeholders="PATTERN1|PATTERN2" }`: Use this code block attribute to define placeholder patterns - `{{% code-placeholder-key %}}`: Use this shortcode to define a placeholder key - `{{% /code-placeholder-key %}}`: Use this shortcode to close the key name -_The `placeholders` attribute supercedes the deprecated `code-placeholders` shortcode._ +*The `placeholders` attribute supercedes the deprecated `code-placeholders` shortcode.* -#### Example usage +#### Automated placeholder syntax + +Use the `docs placeholders` command to automatically add placeholder syntax to code blocks and descriptions: + +```bash +# Process a file +npx docs placeholders content/influxdb3/core/admin/upgrade.md + +# Preview changes without modifying the file +npx docs placeholders content/influxdb3/core/admin/upgrade.md --dry + +# Get help +npx docs placeholders --help +``` + +**What it does:** + +1. Detects UPPERCASE placeholders in code blocks +2. Adds `{ placeholders="..." }` attribute to code fences +3. Wraps placeholder descriptions with `{{% code-placeholder-key %}}` shortcodes + +**Example transformation:** + +Before: + +````markdown +```bash +influxdb3 query \ + --database SYSTEM_DATABASE \ + --token ADMIN_TOKEN \ + "SELECT * FROM system.version" +``` + +Replace the following: + +- **`SYSTEM_DATABASE`**: The name of your system database +- **`ADMIN_TOKEN`**: An admin token with read permissions +```` + +After: + +````markdown +```bash { placeholders="ADMIN_TOKEN|SYSTEM_DATABASE" } +influxdb3 query \ + --database SYSTEM_DATABASE \ + --token ADMIN_TOKEN \ + "SELECT * FROM system.version" +``` + +Replace the following: + +- {{% code-placeholder-key %}}`SYSTEM_DATABASE`{{% /code-placeholder-key %}}: The name of your system database +- {{% code-placeholder-key %}}`ADMIN_TOKEN`{{% /code-placeholder-key %}}: An admin token with read permissions +```` + +**How it works:** + +- Pattern: Matches words with 2+ characters, all uppercase, can include underscores +- Excludes common words: HTTP verbs (GET, POST), protocols (HTTP, HTTPS), SQL keywords (SELECT, FROM), etc. +- Idempotent: Running multiple times won't duplicate syntax +- Preserves existing `placeholders` attributes and already-wrapped descriptions + +#### Manual placeholder usage ```sh { placeholders "DATABASE_NAME|USERNAME|PASSWORD_OR_TOKEN|API_TOKEN|exampleuser@influxdata.com" } curl --request POST http://localhost:8086/write?db=DATABASE_NAME \ @@ -839,7 +901,7 @@ Sample dataset to output. Use either `set` argument name or provide the set as t #### includeNull -Specify whether or not to include _null_ values in the dataset. Use either `includeNull` argument name or provide the boolean value as the second argument. +Specify whether or not to include *null* values in the dataset. Use either `includeNull` argument name or provide the boolean value as the second argument. #### includeRange @@ -1115,6 +1177,6 @@ The InfluxDB host placeholder that gets replaced by custom domains differs betwe {{< influxdb/host "serverless" >}} ``` ---- +*** **For working examples**: Test all shortcodes in [content/example.md](content/example.md) diff --git a/README.md b/README.md index 3774360e2..3194ad7b5 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,9 @@

-# InfluxDB 2.0 Documentation +# InfluxData Product Documentation -This repository contains the InfluxDB 2.x documentation published at [docs.influxdata.com](https://docs.influxdata.com). +This repository contains the InfluxData product documentation for InfluxDB and related tooling published at [docs.influxdata.com](https://docs.influxdata.com). ## Contributing @@ -15,6 +15,26 @@ For information about contributing to the InfluxData documentation, see [Contrib For information about testing the documentation, including code block testing, link validation, and style linting, see [Testing guide](DOCS-TESTING.md). +## Documentation Tools + +This repository includes a `docs` CLI tool for common documentation workflows: + +```sh +# Create new documentation from a draft +npx docs create drafts/new-feature.md --products influxdb3_core + +# Edit existing documentation from a URL +npx docs edit https://docs.influxdata.com/influxdb3/core/admin/ + +# Add placeholder syntax to code blocks +npx docs placeholders content/influxdb3/core/admin/upgrade.md + +# Get help +npx docs --help +``` + +The `docs` command is automatically configured when you run `yarn install`. + ## Documentation Comprehensive reference documentation for contributors: @@ -27,6 +47,7 @@ Comprehensive reference documentation for contributors: - **[API Documentation](api-docs/README.md)** - API reference generation ### Quick Links + - [Style guidelines](DOCS-CONTRIBUTING.md#style-guidelines) - [Commit guidelines](DOCS-CONTRIBUTING.md#commit-guidelines) - [Code block testing](DOCS-TESTING.md#code-block-testing) @@ -35,42 +56,49 @@ Comprehensive reference documentation for contributors: InfluxData takes security and our users' trust very seriously. If you believe you have found a security issue in any of our open source projects, -please responsibly disclose it by contacting security@influxdata.com. +please responsibly disclose it by contacting . More details about security vulnerability reporting, -including our GPG key, can be found at https://www.influxdata.com/how-to-report-security-vulnerabilities/. +including our GPG key, can be found at . ## Running the docs locally 1. [**Clone this repository**](https://help.github.com/articles/cloning-a-repository/) to your local machine. -2. **Install NodeJS, Yarn, Hugo, & Asset Pipeline Tools** +2. **Install NodeJS, Yarn, Hugo, & Asset Pipeline Tools** - The InfluxData documentation uses [Hugo](https://gohugo.io/), a static site generator built in Go. The site uses Hugo's asset pipeline, which requires the extended version of Hugo along with NodeJS tools like PostCSS, to build and process stylesheets and JavaScript. + The InfluxData documentation uses [Hugo](https://gohugo.io/), a static site generator built in Go. The site uses Hugo's asset pipeline, which requires the extended version of Hugo along with NodeJS tools like PostCSS, to build and process stylesheets and JavaScript. - To install the required dependencies and build the assets, do the following: + To install the required dependencies and build the assets, do the following: - 1. [Install NodeJS](https://nodejs.org/en/download/) - 2. [Install Yarn](https://classic.yarnpkg.com/en/docs/install/) - 3. In your terminal, from the `docs-v2` directory, install the dependencies: + 1. [Install NodeJS](https://nodejs.org/en/download/) + 2. [Install Yarn](https://classic.yarnpkg.com/en/docs/install/) + 3. In your terminal, from the `docs-v2` directory, install the dependencies: - ```sh - cd docs-v2 - yarn install - ``` + ```sh + cd docs-v2 + yarn install + ``` - _**Note:** The most recent version of Hugo tested with this documentation is **0.149.0**._ + ***Note:** The most recent version of Hugo tested with this documentation is **0.149.0**.* + + After installation, the `docs` command will be available via `npx`: + + ```sh + npx docs --help + ``` 3. To generate the API docs, see [api-docs/README.md](api-docs/README.md). -4. **Start the Hugo server** +4. **Start the Hugo server** - Hugo provides a local development server that generates the HTML pages, builds the static assets, and serves them at `localhost:1313`. + Hugo provides a local development server that generates the HTML pages, builds the static assets, and serves them at `localhost:1313`. - In your terminal, start the Hugo server: + In your terminal, start the Hugo server: + + ```sh + npx hugo server + ``` - ```sh - npx hugo server - ``` 5. View the docs at [localhost:1313](http://localhost:1313). ### Alternative: Use docker compose @@ -81,7 +109,8 @@ including our GPG key, can be found at https://www.influxdata.com/how-to-report- 3. Use Docker Compose to start the Hugo server in development mode--for example, enter the following command in your terminal: - ```sh - docker compose up local-dev - ``` + ```sh + docker compose up local-dev + ``` + 4. View the docs at [localhost:1313](http://localhost:1313). diff --git a/content/create.md b/content/create.md new file mode 100644 index 000000000..2505c6199 --- /dev/null +++ b/content/create.md @@ -0,0 +1,210 @@ +--- +title: Create and edit InfluxData docs +description: Learn how to create and edit InfluxData documentation. +tags: [documentation, guide, influxdata] +test_only: true +--- + +Learn how to create and edit InfluxData documentation. + +- [Submit an issue to request new or updated documentation](#submit-an-issue-to-request-new-or-updated-documentation) +- [Edit an existing page in your browser](#edit-an-existing-page-in-your-browser) +- [Create and edit locally with the docs-v2 repository](#create-and-edit-locally-with-the-docs-v2-repository) +- [Helpful resources](#other-resources) + +## Submit an issue to request new or updated documentation + +- **Public**: +- **Private**: + +## Edit an existing page in your browser + +**Example**: Editing a product-specific page + +1. Visit public docs +2. Search, Ask AI, or navigate to find the page to edit--for example, +3. Click the "Edit this page" link at the bottom of the page. + This opens the GitHub repository to the file that generates the page +4. Click the pencil icon to edit the file in your browser +5. [Commit and create a pull request](#commit-and-create-a-pull-request) + +## Create and edit locally with the docs-v2 repository + +Use `docs` scripts with AI agents to help you create and edit documentation locally, especially when working with shared content for multiple products. + +**Prerequisites**: + +1. [Clone or fork the docs-v2 repository](https://github.com/influxdata/docs-v2/): + + ```bash + git clone https://github.com/influxdata/docs-v2.git + cd docs-v2 + ``` +2. [Install Yarn](https://yarnpkg.com/getting-started/install) +3. Run `yarn` in the repository root to install dependencies +4. Optional: [Set up GitHub CLI](https://cli.github.com/manual/) + +> [!Tip] +> To run and test your changes locally, enter the following command in your terminal: +> +> ```bash +> yarn hugo server +> ``` +> +> *To refresh shared content after making changes, `touch` or edit the frontmatter file, or stop the server (Ctrl+C) and restart it.* +> +> To list all available scripts, run: +> +> ```bash +> yarn run +> ``` + +### Edit an existing page locally + +Use the `npx docs edit` command to open an existing page in your editor. + +```bash +npx docs edit https://docs.influxdata.com/influxdb3/enterprise/get-started/ +``` + +### Create content locally + +Use the `npx docs create` command with your AI agent tool to scaffold frontmatter and generate new content. + +- The `npx docs create` command accepts draft input from stdin or from a file path and generates a prompt file from the draft and your product selections +- The prompt file makes AI agents aware of InfluxData docs guidelines, shared content, and product-specific requirements +- `npx docs create` is designed to work automatically with `claude`, but you can + use the generated prompt file with any AI agent (for example, `copilot` or `codex`) + +> [!Tip] +> +> `docs-v2` contains custom configuration for agents like Claude and Copilot Agent mode. + + + +#### Generate content and frontmatter from a draft + +{{% tabs-wrapper %}} +{{% tabs %}} +[Interactive (Claude Code)](#) +[Non-interactive (any agent)](#) +{{% /tabs %}} +{{% tab-content %}} + +{{% /tab-content %}} +{{% tab-content %}} + +1. Open a Claude Code prompt: + + ```bash + claude code + ``` + +2. In the prompt, run the `docs create` command with the path to your draft file. + Optionally, include the `--products` flag and product namespaces to preselect products--for example: + + ```bash + npx docs create .context/drafts/"Upgrading Enterprise 3 (draft).md" \ + --products influxdb3_enterprise,influxdb3_core + ``` + + If you don't include the `--products` flag, you'll be prompted to select products after running the command. + +The script first generates a prompt file, then the agent automatically uses it to generate content and frontmatter based on the draft and the products you select. + +{{% /tab-content %}} +{{% tab-content %}} + +Use `npx docs create` to generate a prompt file and then pipe it to your preferred AI agent. +Include the `--products` flag and product namespaces to preselect products + +The following example uses Copilot to process a draft file: + +```bash +npx docs create .context/drafts/"Upgrading Enterprise 3 (draft).md" \ + --products "influxdb3_enterprise,influxdb3_core" | \ + copilot --prompt --allow-all-tools +``` + +{{% /tab-content %}} +{{< /tabs-wrapper >}} + +## Review, commit, and create a pull request + +After you create or edit content, test and review your changes, and then create a pull request. + +> [!Important] +> +> #### Check AI-generated content +> +> Always review and validate AI-generated content for accuracy. +> Make sure example commands are correct for the version you're documenting. + +### Test and review your changes + +Run a local Hugo server to preview your changes: + +```bash +yarn hugo server +``` + +Visit to review your changes in the browser. + +> [!Note] +> If you need to preview changes in a live production-like environment +> that you can also share with others, +> the Docs team can deploy your branch to the staging site. + +### Commit and create a pull request + +1. Commit your changes to a new branch +2. Fix any issues found by automated checks +3. Push the branch to your fork or to the docs-v2 repository + +```bash +git add content +git commit -m "feat(product): Your commit message" +git push origin your-branch-name +``` + +### Create a pull request + +1. Create a pull request against the `master` branch of the docs-v2 repository +2. Add reviewers: + - `@influxdata/docs-team` + - team members familiar with the product area + - Optionally, assign Copilot to review +3. After approval and automated checks are successful, merge the pull request (if you have permissions) or wait for the docs team to merge it. + +{{< tabs-wrapper >}} +{{% tabs %}} +[GitHub](#) +[gh CLI](#) +{{% /tabs %}} +{{% tab-content %}} + +1. Visit [influxdata/docs-v2 pull requests on GitHub](https://github.com/influxdata/docs-v2/pulls) +2. Optional: edit PR title and description +3. Optional: set to draft if it needs more work +4. When ready for review, assign `@influxdata/docs-team` and other reviewers + +{{% /tab-content %}} +{{% tab-content %}} + +```bash +gh pr create \ + --base master \ + --head your-branch-name \ + --title "Your PR title" \ + --body "Your PR description" \ + --reviewer influxdata/docs-team, +``` + +{{% /tab-content %}} +{{< /tabs-wrapper >}} + +## Other resources + +- `DOCS-*.md`: Documentation standards and guidelines +- : View shortcode examples +- : Review content gaps identified from Ask AI answers diff --git a/data/products.yml b/data/products.yml index 2425d06d5..271a86df5 100644 --- a/data/products.yml +++ b/data/products.yml @@ -212,19 +212,6 @@ influxdb_cloud: - How is Cloud 2 different from Cloud Serverless? - How do I manage auth tokens in InfluxDB Cloud 2? -explorer: - name: InfluxDB 3 Explorer - namespace: explorer - menu_category: other - list_order: 4 - versions: [v1] - latest: explorer - latest_patch: 1.1.0 - ai_sample_questions: - - How do I use InfluxDB 3 Explorer to visualize data? - - How do I create a dashboard in InfluxDB 3 Explorer? - - How do I query data using InfluxDB 3 Explorer? - telegraf: name: Telegraf namespace: telegraf diff --git a/package.json b/package.json index 636317b1d..77f1c2ee2 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,9 @@ "version": "1.0.0", "description": "InfluxDB documentation", "license": "MIT", + "bin": { + "docs": "scripts/docs-cli.js" + }, "resolutions": { "serialize-javascript": "^6.0.2" }, @@ -40,6 +43,7 @@ "vanillajs-datepicker": "^1.3.4" }, "scripts": { + "postinstall": "node scripts/setup-local-bin.js", "docs:create": "node scripts/docs-create.js", "docs:edit": "node scripts/docs-edit.js", "docs:add-placeholders": "node scripts/add-placeholders.js", @@ -78,5 +82,8 @@ "test": "test" }, "keywords": [], - "author": "" + "author": "", + "optionalDependencies": { + "copilot": "^0.0.2" + } } diff --git a/scripts/README-add-placeholders.md b/scripts/README-add-placeholders.md deleted file mode 100644 index d9c455e78..000000000 --- a/scripts/README-add-placeholders.md +++ /dev/null @@ -1,108 +0,0 @@ -# Add Placeholders Script - -Automatically adds placeholder syntax to code blocks and placeholder descriptions in markdown files. - -## What it does - -This script finds UPPERCASE placeholders in code blocks and: - -1. **Adds `{ placeholders="PATTERN1|PATTERN2" }` attribute** to code block fences -2. **Wraps placeholder descriptions** with `{{% code-placeholder-key %}}` shortcodes - -## Usage - -### Direct usage - -```bash -# Process a single file -node scripts/add-placeholders.js - -# Dry run to preview changes -node scripts/add-placeholders.js --dry - -# Example -node scripts/add-placeholders.js content/influxdb3/enterprise/admin/upgrade.md -``` - -### Using npm script - -```bash -# Process a file -yarn docs:add-placeholders - -# Dry run -yarn docs:add-placeholders --dry -``` - -## Example transformations - -### Before - -````markdown -```bash -influxdb3 query \ - --database SYSTEM_DATABASE \ - --token ADMIN_TOKEN \ - "SELECT * FROM system.version" -``` - -Replace the following: - -- **`SYSTEM_DATABASE`**: The name of your system database -- **`ADMIN_TOKEN`**: An admin token with read permissions -```` - -### After - -````markdown -```bash { placeholders="ADMIN_TOKEN|SYSTEM_DATABASE" } -influxdb3 query \ - --database SYSTEM_DATABASE \ - --token ADMIN_TOKEN \ - "SELECT * FROM system.version" -``` - -Replace the following: - -- {{% code-placeholder-key %}}`SYSTEM_DATABASE`{{% /code-placeholder-key %}}: The name of your system database -- {{% code-placeholder-key %}}`ADMIN_TOKEN`{{% /code-placeholder-key %}}: An admin token with read permissions -```` - -## How it works - -### Placeholder detection - -The script automatically detects UPPERCASE placeholders in code blocks using these rules: - -- **Pattern**: Matches words with 2+ characters, all uppercase, can include underscores -- **Excludes common words**: HTTP verbs (GET, POST), protocols (HTTP, HTTPS), SQL keywords (SELECT, FROM), etc. - -### Code block processing - -1. Finds all code blocks (including indented ones) -2. Extracts UPPERCASE placeholders -3. Adds `{ placeholders="..." }` attribute to the fence line -4. Preserves indentation and language identifiers - -### Description wrapping - -1. Detects "Replace the following:" sections -2. Wraps placeholder descriptions matching `- **`PLACEHOLDER`**: description` -3. Preserves indentation and formatting -4. Skips already-wrapped descriptions - -## Options - -- `--dry` or `-d`: Preview changes without modifying files - -## Notes - -- The script is idempotent - running it multiple times on the same file won't duplicate syntax -- Preserves existing `placeholders` attributes in code blocks -- Works with both indented and non-indented code blocks -- Handles multiple "Replace the following:" sections in a single file - -## Related documentation - -- [DOCS-SHORTCODES.md](../DOCS-SHORTCODES.md) - Complete shortcode reference -- [DOCS-CONTRIBUTING.md](../DOCS-CONTRIBUTING.md) - Placeholder conventions and style guidelines diff --git a/scripts/add-placeholders.js b/scripts/add-placeholders.js index 42718bcf3..8cc4dd303 100755 --- a/scripts/add-placeholders.js +++ b/scripts/add-placeholders.js @@ -16,7 +16,7 @@ import { readFileSync, writeFileSync } from 'fs'; import { parseArgs } from 'node:util'; // Parse command-line arguments -const { positionals } = parseArgs({ +const { positionals, values } = parseArgs({ allowPositionals: true, options: { dry: { @@ -24,19 +24,47 @@ const { positionals } = parseArgs({ short: 'd', default: false, }, + help: { + type: 'boolean', + short: 'h', + default: false, + }, }, }); +// Show help if requested +if (values.help) { + console.log(` +Add placeholder syntax to code blocks + +Usage: + docs placeholders [options] + +Options: + --dry, -d Preview changes without modifying files + --help, -h Show this help message + +Examples: + docs placeholders content/influxdb3/enterprise/admin/upgrade.md + docs placeholders content/influxdb3/core/admin/databases/create.md --dry + +What it does: + 1. Finds UPPERCASE placeholders in code blocks + 2. Adds { placeholders="PATTERN1|PATTERN2" } attribute to code fences + 3. Wraps placeholder descriptions with {{% code-placeholder-key %}} shortcodes +`); + process.exit(0); +} + if (positionals.length === 0) { - console.error('Usage: node scripts/add-placeholders.js [--dry]'); - console.error( - 'Example: node scripts/add-placeholders.js content/influxdb3/enterprise/admin/upgrade.md' - ); + console.error('Error: Missing file path argument'); + console.error('Usage: docs placeholders [--dry]'); + console.error('Run "docs placeholders --help" for more information'); process.exit(1); } const filePath = positionals[0]; -const isDryRun = process.argv.includes('--dry') || process.argv.includes('-d'); +const isDryRun = values.dry; /** * Extract UPPERCASE placeholders from a code block diff --git a/scripts/docs-cli.js b/scripts/docs-cli.js new file mode 100755 index 000000000..62003cc62 --- /dev/null +++ b/scripts/docs-cli.js @@ -0,0 +1,236 @@ +#!/usr/bin/env node + +/** + * Main CLI entry point for docs tools + * Supports subcommands: create, edit, placeholders + * + * Usage: + * docs create [options] + * docs edit [options] + * docs placeholders [options] + */ + +import { fileURLToPath } from 'url'; +import { dirname, join } from 'path'; +import { spawn } from 'child_process'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); + +// Get subcommand and remaining arguments +const subcommand = process.argv[2]; +const args = process.argv.slice(3); + +// Map subcommands to script files +const subcommands = { + create: 'docs-create.js', + edit: 'docs-edit.js', + placeholders: 'add-placeholders.js', +}; + +/** + * Print usage information + */ +function printUsage() { + console.log(` +Usage: docs [options] + +Commands: + create Create new documentation from draft + edit Edit existing documentation + placeholders Add placeholder syntax to code blocks + test Run test suite to verify CLI functionality + +Examples: + docs create drafts/new-feature.md --products influxdb3_core + docs edit https://docs.influxdata.com/influxdb3/core/admin/ + docs placeholders content/influxdb3/core/admin/upgrade.md + docs test + +For command-specific help: + docs create --help + docs edit --help + docs placeholders --help +`); +} + +// Handle test command (async, so don't continue) +if (subcommand === 'test') { + runTests(); +} else if (!subcommand || subcommand === '--help' || subcommand === '-h') { + // Handle no subcommand or help + printUsage(); + process.exit(subcommand ? 0 : 1); +} else if (!subcommands[subcommand]) { + // Validate subcommand + console.error(`Error: Unknown command '${subcommand}'`); + console.error(`Run 'docs --help' for usage information`); + process.exit(1); +} else { + // Execute the appropriate script + const scriptPath = join(__dirname, subcommands[subcommand]); + const child = spawn('node', [scriptPath, ...args], { + stdio: 'inherit', + env: process.env, + }); + + child.on('exit', (code) => { + process.exit(code || 0); + }); + + child.on('error', (err) => { + console.error(`Failed to execute ${subcommand}:`, err.message); + process.exit(1); + }); +} + +/** + * Test function to verify docs CLI functionality + * Run with: npx docs test + */ +function runTests() { + import('child_process').then(({ execSync }) => { + const tests = []; + const testResults = []; + + console.log('\n๐Ÿงช Testing docs CLI functionality...\n'); + + // Test 1: docs --help + tests.push({ + name: 'docs --help', + command: 'npx docs --help', + expectedInOutput: [ + 'create ', + 'edit ', + 'placeholders ', + ], + }); + + // Test 2: docs create --help + tests.push({ + name: 'docs create --help', + command: 'npx docs create --help', + expectedInOutput: [ + 'Documentation Content Scaffolding', + '--products', + 'Pipe to external agent', + ], + }); + + // Test 3: docs edit --help + tests.push({ + name: 'docs edit --help', + command: 'npx docs edit --help', + expectedInOutput: ['Documentation File Opener', '--list'], + }); + + // Test 4: docs placeholders --help + tests.push({ + name: 'docs placeholders --help', + command: 'npx docs placeholders --help', + expectedInOutput: [ + 'Add placeholder syntax', + '--dry', + 'code-placeholder-key', + ], + }); + + // Test 5: docs placeholders with missing args shows error + tests.push({ + name: 'docs placeholders (no args)', + command: 'npx docs placeholders 2>&1', + expectedInOutput: ['Error: Missing file path'], + expectFailure: true, + }); + + // Test 6: Verify symlink exists + tests.push({ + name: 'symlink exists', + command: 'ls -la node_modules/.bin/docs', + expectedInOutput: ['scripts/docs-cli.js'], + }); + + // Test 7: Unknown command shows error + tests.push({ + name: 'unknown command', + command: 'npx docs invalid-command 2>&1', + expectedInOutput: ['Error: Unknown command'], + expectFailure: true, + }); + + // Run tests + for (const test of tests) { + try { + const output = execSync(test.command, { + encoding: 'utf8', + stdio: 'pipe', + }); + + const passed = test.expectedInOutput.every((expected) => + output.includes(expected) + ); + + if (passed) { + console.log(`โœ… ${test.name}`); + testResults.push({ name: test.name, passed: true }); + } else { + console.log(`โŒ ${test.name} - Expected output not found`); + console.log(` Expected: ${test.expectedInOutput.join(', ')}`); + testResults.push({ + name: test.name, + passed: false, + reason: 'Expected output not found', + }); + } + } catch (error) { + if (test.expectFailure) { + // Expected to fail - check if error output contains expected strings + const errorOutput = + error.stderr?.toString() || error.stdout?.toString() || ''; + const passed = test.expectedInOutput.every((expected) => + errorOutput.includes(expected) + ); + + if (passed) { + console.log(`โœ… ${test.name} (expected failure)`); + testResults.push({ name: test.name, passed: true }); + } else { + console.log(`โŒ ${test.name} - Expected error message not found`); + console.log(` Expected: ${test.expectedInOutput.join(', ')}`); + testResults.push({ + name: test.name, + passed: false, + reason: 'Expected error message not found', + }); + } + } else { + console.log(`โŒ ${test.name} - Command failed unexpectedly`); + console.log(` Error: ${error.message}`); + testResults.push({ + name: test.name, + passed: false, + reason: error.message, + }); + } + } + } + + const passed = testResults.filter((r) => r.passed).length; + const failed = testResults.filter((r) => !r.passed).length; + + console.log(`\n๐Ÿ“Š Test Results: ${passed}/${tests.length} passed`); + + if (failed > 0) { + console.log(`\nโŒ Failed tests:`); + testResults + .filter((r) => !r.passed) + .forEach((r) => { + console.log(` - ${r.name}: ${r.reason}`); + }); + process.exit(1); + } else { + console.log(`\nโœ… All tests passed!\n`); + process.exit(0); + } + }); +} diff --git a/scripts/docs-create.js b/scripts/docs-create.js index a5fb91567..f90571eb2 100644 --- a/scripts/docs-create.js +++ b/scripts/docs-create.js @@ -23,7 +23,12 @@ import { loadProducts, analyzeStructure, } from './lib/content-scaffolding.js'; -import { writeJson, readJson, fileExists } from './lib/file-operations.js'; +import { + writeJson, + readJson, + fileExists, + readDraft, +} from './lib/file-operations.js'; import { parseMultipleURLs } from './lib/url-parser.js'; const __filename = fileURLToPath(import.meta.url); @@ -36,6 +41,7 @@ const REPO_ROOT = join(__dirname, '..'); const TMP_DIR = join(REPO_ROOT, '.tmp'); const CONTEXT_FILE = join(TMP_DIR, 'scaffold-context.json'); const PROPOSAL_FILE = join(TMP_DIR, 'scaffold-proposal.yml'); +const PROMPT_FILE = join(TMP_DIR, 'scaffold-prompt.txt'); // Colors for console output const colors = { @@ -49,25 +55,53 @@ const colors = { }; /** - * Print colored output + * Print colored output to stderr (so it doesn't interfere with piped output) */ function log(message, color = 'reset') { - console.log(`${colors[color]}${message}${colors.reset}`); + // Write to stderr so logs don't interfere with stdout (prompt path/text) + console.error(`${colors[color]}${message}${colors.reset}`); +} + +/** + * Check if running in Claude Code environment + * @returns {boolean} True if Task function is available (Claude Code) + */ +function isClaudeCode() { + return typeof Task !== 'undefined'; +} + +/** + * Output prompt for use with external tools + * @param {string} prompt - The generated prompt text + * @param {boolean} printPrompt - If true, force print to stdout + */ +function outputPromptForExternalUse(prompt, printPrompt = false) { + // Auto-detect if stdout is being piped + const isBeingPiped = !process.stdout.isTTY; + + // Print prompt text if explicitly requested OR if being piped + const shouldPrintText = printPrompt || isBeingPiped; + + if (shouldPrintText) { + // Output prompt text to stdout + console.log(prompt); + } else { + // Write prompt to file and output file path + writeFileSync(PROMPT_FILE, prompt, 'utf8'); + console.log(PROMPT_FILE); + } + process.exit(0); } /** * Prompt user for input (works in TTY and non-TTY environments) */ async function promptUser(question) { - // For non-TTY environments, return empty string - if (!process.stdin.isTTY) { - return ''; - } - const readline = await import('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout, + terminal: process.stdin.isTTY !== undefined ? process.stdin.isTTY : true, }); return new Promise((resolve) => { @@ -91,30 +125,28 @@ function divider() { function parseArguments() { const { values, positionals } = parseArgs({ options: { - draft: { type: 'string' }, - from: { type: 'string' }, + 'from-draft': { type: 'string' }, url: { type: 'string', multiple: true }, urls: { type: 'string' }, products: { type: 'string' }, ai: { type: 'string', default: 'claude' }, execute: { type: 'boolean', default: false }, 'context-only': { type: 'boolean', default: false }, + 'print-prompt': { type: 'boolean', default: false }, proposal: { type: 'string' }, 'dry-run': { type: 'boolean', default: false }, yes: { type: 'boolean', default: false }, help: { type: 'boolean', default: false }, + 'follow-external': { type: 'boolean', default: false }, }, allowPositionals: true, }); // First positional argument is treated as draft path - if (positionals.length > 0 && !values.draft && !values.from) { + if (positionals.length > 0 && !values['from-draft']) { values.draft = positionals[0]; - } - - // --from is an alias for --draft - if (values.from && !values.draft) { - values.draft = values.from; + } else if (values['from-draft']) { + values.draft = values['from-draft']; } // Normalize URLs into array @@ -141,63 +173,101 @@ function printUsage() { ${colors.bright}Documentation Content Scaffolding${colors.reset} ${colors.bright}Usage:${colors.reset} - yarn docs:create Create from draft - yarn docs:create --url --draft Create at URL with draft content + docs create Create from draft + docs create --url --from-draft Create at URL with draft + + # Or use with yarn: + yarn docs:create + yarn docs:create --url --from-draft ${colors.bright}Options:${colors.reset} - Path to draft markdown file (positional argument) - --draft Path to draft markdown file - --from Alias for --draft - --url Documentation URL for new content location - --context-only Stop after context preparation - (for non-Claude tools) - --proposal Import and execute proposal from JSON file - --dry-run Show what would be created without creating - --yes Skip confirmation prompt - --help Show this help message + Path to draft markdown file (positional argument) + --from-draft Path to draft markdown file + --url Documentation URL for new content location + --products Comma-separated product keys (required for stdin) + Examples: influxdb3_core, influxdb3_enterprise + --follow-external Include external (non-docs.influxdata.com) URLs + when extracting links from draft. Without this flag, + only local documentation links are followed. + --context-only Stop after context preparation + (for non-Claude tools) + --print-prompt Force prompt text output (auto-enabled when piping) + --proposal Import and execute proposal from JSON file + --dry-run Show what would be created without creating + --yes Skip confirmation prompt + --help Show this help message -${colors.bright}Workflow (Create from draft):${colors.reset} +${colors.bright}Stdin Support:${colors.reset} + When piping content from stdin, you must specify target products: + + cat draft.md | docs create --products influxdb3_core + echo "# Content" | docs create --products influxdb3_core,influxdb3_enterprise + +${colors.bright}Link Following:${colors.reset} + By default, the script extracts links from your draft and prompts you + to select which ones to include as context. This helps the AI: + - Maintain consistent terminology + - Avoid duplicating content + - Add appropriate \`related\` frontmatter links + + Local documentation links are always available for selection. + Use --follow-external to also include external URLs (GitHub, etc.) + +${colors.bright}Workflow (Inside Claude Code):${colors.reset} 1. Create a draft markdown file with your content - 2. Run: yarn docs:create drafts/new-feature.md + 2. Run: docs create drafts/new-feature.md 3. Script runs all agents automatically 4. Review and confirm to create files -${colors.bright}Workflow (Create at specific URL):${colors.reset} +${colors.bright}Workflow (Pipe to external agent):${colors.reset} 1. Create draft: vim drafts/new-feature.md - 2. Run: yarn docs:create \\ - --url https://docs.influxdata.com/influxdb3/core/admin/new-feature/ \\ - --draft drafts/new-feature.md - 3. Script determines structure from URL and uses draft content - 4. Review and confirm to create files - -${colors.bright}Workflow (Manual - for non-Claude tools):${colors.reset} - 1. Prepare context: - yarn docs:create --context-only drafts/new-feature.md - 2. Run your AI tool with templates from scripts/templates/ - 3. Save proposal to .tmp/scaffold-proposal.json - 4. Execute: - yarn docs:create --proposal .tmp/scaffold-proposal.json + 2. Pipe to your AI tool (prompt auto-detected): + docs create drafts/new-feature.md --products X | claude -p + docs create drafts/new-feature.md --products X | copilot -p + 3. AI generates files based on prompt ${colors.bright}Examples:${colors.reset} - # Create from draft (AI determines location) + # Inside Claude Code - automatic execution + docs create drafts/new-feature.md + + # Pipe to external AI tools - prompt auto-detected + docs create drafts/new-feature.md --products influxdb3_core | claude -p + docs create drafts/new-feature.md --products influxdb3_core | copilot -p + + # Pipe from stdin + cat drafts/quick-note.md | docs create --products influxdb3_core | claude -p + echo "# Quick note" | docs create --products influxdb3_core | copilot -p + + # Get prompt file path (when not piping) + docs create drafts/new-feature.md # Outputs: .tmp/scaffold-prompt.txt + + # Still works with yarn yarn docs:create drafts/new-feature.md - # Create at specific URL with draft content - yarn docs:create --url /influxdb3/core/admin/new-feature/ \\ - --draft drafts/new-feature.md + # Include external links for context selection + docs create --follow-external drafts/api-guide.md - # Preview changes - yarn docs:create --draft drafts/new-feature.md --dry-run +${colors.bright}Smart Behavior:${colors.reset} + INSIDE Claude Code: + โ†’ Automatically runs Task() agent to generate files + + PIPING to another tool: + โ†’ Auto-detects piping and outputs prompt text + โ†’ No --print-prompt flag needed + + INTERACTIVE (not piping): + โ†’ Outputs prompt file path: .tmp/scaffold-prompt.txt + โ†’ Use with: code .tmp/scaffold-prompt.txt ${colors.bright}Note:${colors.reset} - To edit existing pages, use: yarn docs:edit + To edit existing pages, use: docs edit `); } /** * Phase 1a: Prepare context from URLs */ -async function prepareURLPhase(urls, draftPath, options) { +async function prepareURLPhase(urls, draftPath, options, stdinContent = null) { log('\n๐Ÿ” Analyzing URLs and finding files...', 'bright'); try { @@ -258,9 +328,18 @@ async function prepareURLPhase(urls, draftPath, options) { // Build context (include URL analysis) let context = null; - if (draftPath) { + let draft; + + if (stdinContent) { + // Use stdin content + draft = stdinContent; + log('โœ“ Using draft from stdin', 'green'); + context = prepareContext(draft); + } else if (draftPath) { // Use draft content if provided - context = prepareContext(draftPath); + draft = readDraft(draftPath); + draft.path = draftPath; + context = prepareContext(draft); } else { // Minimal context for editing existing pages const products = loadProducts(); @@ -351,18 +430,83 @@ async function prepareURLPhase(urls, draftPath, options) { /** * Phase 1b: Prepare context from draft */ -async function preparePhase(draftPath, options) { +async function preparePhase(draftPath, options, stdinContent = null) { log('\n๐Ÿ” Analyzing draft and repository structure...', 'bright'); - // Validate draft exists - if (!fileExists(draftPath)) { - log(`โœ— Draft file not found: ${draftPath}`, 'red'); - process.exit(1); + let draft; + + // Handle stdin vs file + if (stdinContent) { + draft = stdinContent; + log('โœ“ Using draft from stdin', 'green'); + } else { + // Validate draft exists + if (!fileExists(draftPath)) { + log(`โœ— Draft file not found: ${draftPath}`, 'red'); + process.exit(1); + } + draft = readDraft(draftPath); + draft.path = draftPath; } try { // Prepare context - const context = prepareContext(draftPath); + const context = prepareContext(draft); + + // Extract links from draft + const { extractLinks, followLocalLinks, fetchExternalLinks } = await import( + './lib/content-scaffolding.js' + ); + + const links = extractLinks(draft.content); + + if (links.localFiles.length > 0 || links.external.length > 0) { + // Filter external links if flag not set + if (!options['follow-external']) { + links.external = []; + } + + // Let user select which external links to follow + // (local files are automatically included) + const selected = await selectLinksToFollow(links); + + // Follow selected links + const linkedContent = []; + + if (selected.selectedLocal.length > 0) { + log('\n๐Ÿ“„ Loading local files...', 'cyan'); + // Determine base path for resolving relative links + const basePath = draft.path + ? dirname(join(REPO_ROOT, draft.path)) + : REPO_ROOT; + const localResults = followLocalLinks(selected.selectedLocal, basePath); + linkedContent.push(...localResults); + const successCount = localResults.filter((r) => !r.error).length; + log(`โœ“ Loaded ${successCount} local file(s)`, 'green'); + } + + if (selected.selectedExternal.length > 0) { + log('\n๐ŸŒ Fetching external URLs...', 'cyan'); + const externalResults = await fetchExternalLinks( + selected.selectedExternal + ); + linkedContent.push(...externalResults); + const successCount = externalResults.filter((r) => !r.error).length; + log(`โœ“ Fetched ${successCount} external page(s)`, 'green'); + } + + // Add to context + if (linkedContent.length > 0) { + context.linkedContent = linkedContent; + + // Show any errors + const errors = linkedContent.filter((lc) => lc.error); + if (errors.length > 0) { + log('\nโš ๏ธ Some links could not be loaded:', 'yellow'); + errors.forEach((e) => log(` โ€ข ${e.url}: ${e.error}`, 'yellow')); + } + } + } // Write context to temp file writeJson(CONTEXT_FILE, context); @@ -382,6 +526,12 @@ async function preparePhase(draftPath, options) { `โœ“ Found ${context.structure.existingPaths.length} existing pages`, 'green' ); + if (context.linkedContent) { + log( + `โœ“ Included ${context.linkedContent.length} linked page(s) as context`, + 'green' + ); + } log( `โœ“ Prepared context โ†’ ${CONTEXT_FILE.replace(REPO_ROOT, '.')}`, 'green' @@ -441,25 +591,69 @@ async function selectProducts(context, options) { } } + // Sort products: detected first, then alphabetically within each group + allProducts.sort((a, b) => { + const aDetected = detected.includes(a); + const bDetected = detected.includes(b); + + // Detected products first + if (aDetected && !bDetected) return -1; + if (!aDetected && bDetected) return 1; + + // Then alphabetically + return a.localeCompare(b); + }); + // Case 1: Explicit flag provided if (options.products) { - const requested = options.products.split(',').map((p) => p.trim()); - const invalid = requested.filter((p) => !allProducts.includes(p)); + const requestedKeys = options.products.split(',').map((p) => p.trim()); - if (invalid.length > 0) { + // Map product keys to display names + const requestedNames = []; + const invalidKeys = []; + + for (const key of requestedKeys) { + const product = context.products[key]; + + if (product) { + // Valid product key found + if (product.versions && product.versions.length > 1) { + // Multi-version product: add all versions + product.versions.forEach((version) => { + const displayName = `${product.name} ${version}`; + if (allProducts.includes(displayName)) { + requestedNames.push(displayName); + } + }); + } else { + // Single version product + if (allProducts.includes(product.name)) { + requestedNames.push(product.name); + } + } + } else if (allProducts.includes(key)) { + // It's already a display name (backwards compatibility) + requestedNames.push(key); + } else { + invalidKeys.push(key); + } + } + + if (invalidKeys.length > 0) { + const validKeys = Object.keys(context.products).join(', '); log( - `\nโœ— Invalid products: ${invalid.join(', ')}\n` + - `Valid products: ${allProducts.join(', ')}`, + `\nโœ— Invalid product keys: ${invalidKeys.join(', ')}\n` + + `Valid keys: ${validKeys}`, 'red' ); process.exit(1); } log( - `โœ“ Using products from --products flag: ${requested.join(', ')}`, + `โœ“ Using products from --products flag: ${requestedNames.join(', ')}`, 'green' ); - return requested; + return requestedNames; } // Case 2: Unambiguous (single product detected) @@ -514,6 +708,74 @@ async function selectProducts(context, options) { return selected; } +/** + * Prompt user to select which external links to include + * Local file paths are automatically followed + * @param {object} links - {localFiles, external} from extractLinks + * @returns {Promise} {selectedLocal, selectedExternal} + */ +async function selectLinksToFollow(links) { + // Local files are followed automatically (no user prompt) + // External links require user selection + if (links.external.length === 0) { + return { + selectedLocal: links.localFiles || [], + selectedExternal: [], + }; + } + + log('\n๐Ÿ”— Found external links in draft:\n', 'bright'); + + const allLinks = []; + let index = 1; + + // Show external links for selection + links.external.forEach((link) => { + log(` ${index}. ${link}`, 'yellow'); + allLinks.push({ type: 'external', url: link }); + index++; + }); + + const answer = await promptUser( + '\nSelect external links to include as context ' + + '(comma-separated numbers, or "all"): ' + ); + + if (!answer || answer.toLowerCase() === 'none') { + return { + selectedLocal: links.localFiles || [], + selectedExternal: [], + }; + } + + let selectedIndices; + if (answer.toLowerCase() === 'all') { + selectedIndices = Array.from({ length: allLinks.length }, (_, i) => i); + } else { + selectedIndices = answer + .split(',') + .map((s) => parseInt(s.trim()) - 1) + .filter((i) => i >= 0 && i < allLinks.length); + } + + const selectedExternal = []; + + selectedIndices.forEach((i) => { + const link = allLinks[i]; + selectedExternal.push(link.url); + }); + + log( + `\nโœ“ Following ${links.localFiles?.length || 0} local file(s) ` + + `and ${selectedExternal.length} external link(s)`, + 'green' + ); + return { + selectedLocal: links.localFiles || [], + selectedExternal, + }; +} + /** * Run single content generator agent with direct file generation (Claude Code) */ @@ -577,6 +839,30 @@ function generateClaudePrompt( **Target Products**: Use \`context.selectedProducts\` field (${selectedProducts.join(', ')}) **Mode**: ${mode === 'edit' ? 'Edit existing content' : 'Create new documentation'} ${isURLBased ? `**URLs**: ${context.urls.map((u) => u.url).join(', ')}` : ''} +${ + context.linkedContent?.length > 0 + ? ` +**Linked References**: The draft references ${context.linkedContent.length} page(s) from existing documentation. + +These are provided for context to help you: +- Maintain consistent terminology and style +- Avoid duplicating existing content +- Understand related concepts and their structure +- Add appropriate links to the \`related\` frontmatter field + +Linked content details available in \`context.linkedContent\`: +${context.linkedContent + .map((lc) => + lc.error + ? `- โŒ ${lc.url} (${lc.error})` + : `- โœ“ [${lc.type}] ${lc.title} (${lc.path || lc.url})` + ) + .join('\n')} + +**Important**: Use this content for context and reference, but do not copy it verbatim. Consider adding relevant pages to the \`related\` field in frontmatter. +` + : '' +} **Your Task**: Generate complete documentation files directly (no proposal step). @@ -908,16 +1194,40 @@ async function executePhase(options) { async function main() { const options = parseArguments(); - // Show help + // Show help first (don't wait for stdin) if (options.help) { printUsage(); process.exit(0); } + // Check for stdin only if no draft file was provided + const hasStdin = !process.stdin.isTTY; + let stdinContent = null; + + if (hasStdin && !options.draft) { + // Stdin requires --products option + if (!options.products) { + log( + '\nโœ— Error: --products is required when piping content from stdin', + 'red' + ); + log( + 'Example: echo "# Content" | yarn docs:create --products influxdb3_core', + 'yellow' + ); + process.exit(1); + } + + // Import readDraftFromStdin + const { readDraftFromStdin } = await import('./lib/file-operations.js'); + log('๐Ÿ“ฅ Reading draft from stdin...', 'cyan'); + stdinContent = await readDraftFromStdin(); + } + // Determine workflow if (options.url && options.url.length > 0) { // URL-based workflow requires draft content - if (!options.draft) { + if (!options.draft && !stdinContent) { log('\nโœ— Error: --url requires --draft ', 'red'); log('The --url option specifies WHERE to create content.', 'yellow'); log( @@ -934,29 +1244,75 @@ async function main() { process.exit(1); } - const context = await prepareURLPhase(options.url, options.draft, options); + const context = await prepareURLPhase( + options.url, + options.draft, + options, + stdinContent + ); if (options['context-only']) { // Stop after context preparation process.exit(0); } - // Continue with AI analysis (Phase 2) + // Generate prompt for product selection + const selectedProducts = await selectProducts(context, options); + const mode = context.urls?.length > 0 ? 'create' : 'create'; + const isURLBased = true; + const hasExistingContent = + context.existingContent && + Object.keys(context.existingContent).length > 0; + + const prompt = generateClaudePrompt( + context, + selectedProducts, + mode, + isURLBased, + hasExistingContent + ); + + // Check environment and handle prompt accordingly + if (!isClaudeCode()) { + // Not in Claude Code: output prompt for external use + outputPromptForExternalUse(prompt, options['print-prompt']); + } + + // In Claude Code: continue with AI analysis (Phase 2) log('\n๐Ÿค– Running AI analysis with specialized agents...\n', 'bright'); await runAgentAnalysis(context, options); // Execute proposal (Phase 3) await executePhase(options); - } else if (options.draft) { - // Draft-based workflow - const context = await preparePhase(options.draft, options); + } else if (options.draft || stdinContent) { + // Draft-based workflow (from file or stdin) + const context = await preparePhase(options.draft, options, stdinContent); if (options['context-only']) { // Stop after context preparation process.exit(0); } - // Continue with AI analysis (Phase 2) + // Generate prompt for product selection + const selectedProducts = await selectProducts(context, options); + const mode = 'create'; + const isURLBased = false; + + const prompt = generateClaudePrompt( + context, + selectedProducts, + mode, + isURLBased, + false + ); + + // Check environment and handle prompt accordingly + if (!isClaudeCode()) { + // Not in Claude Code: output prompt for external use + outputPromptForExternalUse(prompt, options['print-prompt']); + } + + // In Claude Code: continue with AI analysis (Phase 2) log('\n๐Ÿค– Running AI analysis with specialized agents...\n', 'bright'); await runAgentAnalysis(context, options); diff --git a/scripts/lib/content-scaffolding.js b/scripts/lib/content-scaffolding.js index 63d0e6e66..5f6a6fdcc 100644 --- a/scripts/lib/content-scaffolding.js +++ b/scripts/lib/content-scaffolding.js @@ -4,7 +4,7 @@ */ import { readdirSync, readFileSync, existsSync, statSync } from 'fs'; -import { join, dirname } from 'path'; +import { join, dirname, resolve } from 'path'; import { fileURLToPath } from 'url'; import yaml from 'js-yaml'; import matter from 'gray-matter'; @@ -314,12 +314,19 @@ export function findSiblingWeights(dirPath) { /** * Prepare complete context for AI analysis - * @param {string} draftPath - Path to draft file + * @param {string|object} draftPathOrObject - Path to draft file or draft object * @returns {object} Context object */ -export function prepareContext(draftPath) { - // Read draft - const draft = readDraft(draftPath); +export function prepareContext(draftPathOrObject) { + // Read draft - handle both file path and draft object + let draft; + if (typeof draftPathOrObject === 'string') { + draft = readDraft(draftPathOrObject); + draft.path = draftPathOrObject; + } else { + // Already a draft object from stdin + draft = draftPathOrObject; + } // Load products const products = loadProducts(); @@ -349,7 +356,7 @@ export function prepareContext(draftPath) { // Build context const context = { draft: { - path: draftPath, + path: draft.path || draftPathOrObject, content: draft.content, existingFrontmatter: draft.frontmatter, }, @@ -616,7 +623,7 @@ export function detectSharedContent(filePath) { if (parsed.data && parsed.data.source) { return parsed.data.source; } - } catch (error) { + } catch (_error) { // Can't parse, assume not shared return null; } @@ -663,13 +670,13 @@ export function findSharedContentVariants(sourcePath) { const relativePath = fullPath.replace(REPO_ROOT + '/', ''); variants.push(relativePath); } - } catch (error) { + } catch (_error) { // Skip files that can't be parsed continue; } } } - } catch (error) { + } catch (_error) { // Skip directories we can't read } } @@ -758,3 +765,127 @@ export function analyzeURLs(parsedURLs) { return results; } + +/** + * Extract and categorize links from markdown content + * @param {string} content - Markdown content + * @returns {object} {localFiles: string[], external: string[]} + */ +export function extractLinks(content) { + const localFiles = []; + const external = []; + + // Match markdown links: [text](url) + const linkRegex = /\[([^\]]+)\]\(([^)]+)\)/g; + let match; + + while ((match = linkRegex.exec(content)) !== null) { + const url = match[2]; + + // Skip anchor links and mailto + if (url.startsWith('#') || url.startsWith('mailto:')) { + continue; + } + + // Local file paths (relative paths) - automatically followed + if (url.startsWith('../') || url.startsWith('./')) { + localFiles.push(url); + } + // All HTTP/HTTPS URLs (including docs.influxdata.com) - user selects + else if (url.startsWith('http://') || url.startsWith('https://')) { + external.push(url); + } + // Absolute paths starting with / are ignored (no base context to resolve) + } + + return { + localFiles: [...new Set(localFiles)], + external: [...new Set(external)], + }; +} + +/** + * Follow local file links (relative paths) + * @param {string[]} links - Array of relative file paths + * @param {string} basePath - Base path to resolve relative links from + * @returns {object[]} Array of {url, title, content, path, frontmatter} + */ +export function followLocalLinks(links, basePath = REPO_ROOT) { + const results = []; + + for (const link of links) { + try { + // Resolve relative path from base path + const filePath = resolve(basePath, link); + + // Check if file exists + if (existsSync(filePath)) { + const fileContent = readFileSync(filePath, 'utf8'); + const parsed = matter(fileContent); + + results.push({ + url: link, + title: parsed.data?.title || 'Untitled', + content: parsed.content, + path: filePath.replace(REPO_ROOT + '/', ''), + frontmatter: parsed.data, + type: 'local', + }); + } else { + results.push({ + url: link, + error: 'File not found', + type: 'local', + }); + } + } catch (error) { + results.push({ + url: link, + error: error.message, + type: 'local', + }); + } + } + + return results; +} + +/** + * Fetch external URLs + * @param {string[]} urls - Array of external URLs + * @returns {Promise} Array of {url, title, content, type} + */ +export async function fetchExternalLinks(urls) { + // Dynamic import axios + const axios = (await import('axios')).default; + const results = []; + + for (const url of urls) { + try { + const response = await axios.get(url, { + timeout: 10000, + headers: { 'User-Agent': 'InfluxData-Docs-Bot/1.0' }, + }); + + // Extract title from HTML or use URL + const titleMatch = response.data.match(/([^<]+)<\/title>/i); + const title = titleMatch ? titleMatch[1] : url; + + results.push({ + url, + title, + content: response.data, + type: 'external', + contentType: response.headers['content-type'], + }); + } catch (error) { + results.push({ + url, + error: error.message, + type: 'external', + }); + } + } + + return results; +} diff --git a/scripts/lib/file-operations.js b/scripts/lib/file-operations.js index 6bbb57830..316f90155 100644 --- a/scripts/lib/file-operations.js +++ b/scripts/lib/file-operations.js @@ -28,6 +28,38 @@ export function readDraft(filePath) { }; } +/** + * Read draft content from stdin + * @returns {Promise<{content: string, frontmatter: object, raw: string, path: string}>} + */ +export async function readDraftFromStdin() { + return new Promise((resolve, reject) => { + let data = ''; + process.stdin.setEncoding('utf8'); + + process.stdin.on('data', (chunk) => { + data += chunk; + }); + + process.stdin.on('end', () => { + try { + // Parse with gray-matter to extract frontmatter if present + const parsed = matter(data); + resolve({ + content: parsed.content, + frontmatter: parsed.data || {}, + raw: data, + path: '<stdin>', + }); + } catch (error) { + reject(error); + } + }); + + process.stdin.on('error', reject); + }); +} + /** * Write a markdown file with frontmatter * @param {string} filePath - Path to write to diff --git a/scripts/setup-local-bin.js b/scripts/setup-local-bin.js new file mode 100755 index 000000000..2f19811b8 --- /dev/null +++ b/scripts/setup-local-bin.js @@ -0,0 +1,43 @@ +#!/usr/bin/env node + +/** + * Setup script to make the `docs` command available locally after yarn install. + * Creates a symlink in node_modules/.bin/docs pointing to scripts/docs-cli.js + */ + +import { fileURLToPath } from 'url'; +import { dirname, join } from 'path'; +import { existsSync, mkdirSync, symlinkSync, unlinkSync, chmodSync } from 'fs'; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = dirname(__filename); +const rootDir = join(__dirname, '..'); + +const binDir = join(rootDir, 'node_modules', '.bin'); +const binLink = join(binDir, 'docs'); +const targetScript = join(rootDir, 'scripts', 'docs-cli.js'); + +try { + // Ensure node_modules/.bin directory exists + if (!existsSync(binDir)) { + mkdirSync(binDir, { recursive: true }); + } + + // Remove existing symlink if it exists + if (existsSync(binLink)) { + unlinkSync(binLink); + } + + // Create symlink + symlinkSync(targetScript, binLink, 'file'); + + // Ensure the target script is executable + chmodSync(targetScript, 0o755); + + console.log('โœ“ Created local `docs` command in node_modules/.bin/'); + console.log(' You can now use: npx docs <command>'); + console.log(' Or add node_modules/.bin to your PATH for direct access'); +} catch (error) { + console.error('Failed to setup local docs command:', error.message); + process.exit(1); +} diff --git a/scripts/templates/chatgpt-prompt.md b/scripts/templates/chatgpt-prompt.md index 3f3de19d5..a6de01441 100644 --- a/scripts/templates/chatgpt-prompt.md +++ b/scripts/templates/chatgpt-prompt.md @@ -7,6 +7,7 @@ You are analyzing a documentation draft to generate an intelligent file structur **Context file**: `.tmp/scaffold-context.json` Read and analyze the context file, which contains: + - **draft**: The markdown content and any existing frontmatter - **products**: Available InfluxDB products (Core, Enterprise, Cloud, etc.) - **productHints**: Products mentioned or suggested based on content analysis @@ -54,6 +55,7 @@ For each file, create complete frontmatter with: ### 4. Code Sample Considerations Based on `versionInfo`: + - Use version-specific CLI commands (influxdb3, influx, influxctl) - Reference appropriate API endpoints (/api/v3, /api/v2) - Note testing requirements from `conventions.testing` @@ -61,6 +63,7 @@ Based on `versionInfo`: ### 5. Style Compliance Follow conventions from `conventions.namingRules`: + - Files: Use lowercase with hyphens (e.g., `manage-databases.md`) - Directories: Use lowercase with hyphens - Shared content: Place in appropriate `/content/shared/` subdirectory @@ -133,4 +136,8 @@ Generate a JSON proposal matching the schema in `scripts/schemas/scaffold-propos 4. Generate complete frontmatter for all files 5. Save the proposal to `.tmp/scaffold-proposal.json` -The proposal will be validated and used by `yarn docs:create --proposal .tmp/scaffold-proposal.json` to create the files. +The following command validates and creates files from the proposal: + +```bash +npx docs create --proposal .tmp/scaffold-proposal.json +``` diff --git a/yarn.lock b/yarn.lock index cb8034ef8..ce24d3c46 100644 --- a/yarn.lock +++ b/yarn.lock @@ -194,6 +194,11 @@ resolved "https://registry.yarnpkg.com/@evilmartians/lefthook/-/lefthook-1.12.3.tgz#081eca59a6d33646616af844244ce6842cd6b5a5" integrity sha512-MtXIt8h+EVTv5tCGLzh9UwbA/LRv6esdPJOHlxr8NDKHbFnbo8PvU5uVQcm3PAQTd4DZN3HoyokqrwGwntoq6w== +"@github/copilot@latest": + version "0.0.353" + resolved "https://registry.yarnpkg.com/@github/copilot/-/copilot-0.0.353.tgz#3c8d8a072b3defbd2200c9fe4fb636d633ac7f1e" + integrity sha512-OYgCB4Jf7Y/Wor8mNNQcXEt1m1koYm/WwjGsr5mwABSVYXArWUeEfXqVbx+7O87ld5b+aWy2Zaa2bzKV8dmqaw== + "@humanfs/core@^0.19.1": version "0.19.1" resolved "https://registry.yarnpkg.com/@humanfs/core/-/core-0.19.1.tgz#17c55ca7d426733fe3c561906b8173c336b40a77" @@ -1364,6 +1369,13 @@ confbox@^0.2.2: resolved "https://registry.yarnpkg.com/confbox/-/confbox-0.2.2.tgz#8652f53961c74d9e081784beed78555974a9c110" integrity sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ== +copilot@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/copilot/-/copilot-0.0.2.tgz#4712810c9182cd784820ed44627bedd32dd377f9" + integrity sha512-nedf34AaYj9JnFhRmiJEZemAno2WDXMypq6FW5aCVR0N+QdpQ6viukP1JpvJDChpaMEVvbUkMjmjMifJbO/AgQ== + dependencies: + "@github/copilot" latest + core-util-is@1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" From d7233aa93fcf7f4b00be0870bf3b88bb613b5333 Mon Sep 17 00:00:00 2001 From: Jason Stirnaman <jstirnaman@influxdata.com> Date: Mon, 3 Nov 2025 12:06:43 -0500 Subject: [PATCH 45/49] chore(v2): Port main telemetry page content to a v2-specific docs page (#6507) * chore(v2): Port main telemetry page content to a v2-specific docs page * Update content/influxdb/v2/reference/telemetry.md Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com> --------- Co-authored-by: Scott Anderson <sanderson@users.noreply.github.com> --- content/influxdb/v2/reference/telemetry.md | 73 ++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 content/influxdb/v2/reference/telemetry.md diff --git a/content/influxdb/v2/reference/telemetry.md b/content/influxdb/v2/reference/telemetry.md new file mode 100644 index 000000000..c71fcf761 --- /dev/null +++ b/content/influxdb/v2/reference/telemetry.md @@ -0,0 +1,73 @@ +--- +title: Usage telemetry +description: > + InfluxData collects information, or _telemetry data_, about the usage of {{% product-name %}} to help improve the product. + Learn what data {{% product-name %}} collects and sends to InfluxData, how it's used, and + how you can opt out. +menu: + influxdb_v2: + name: Usage telemetry + parent: Reference +weight: 8 +related: + - /influxdb/v2/reference/cli/influxd/ + - /influxdb/v2/reference/internals/metrics/ +--- + +InfluxData collects information, or *telemetry data*, about the usage of {{% product-name %}} to help improve the product. +Learn what data {{% product-name %}} collects and sends to InfluxData, how it's used, and +how you can opt out. + +## Metrics Collection + +For each InfluxDB 2.x installation, we collect the following at startup and then every 8 hours: + +### Tags + +| Tags | Description | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| arch | Microarchitecture InfluxDB was compiled for | +| build date | Date associated with the InfluxDB build | +| commit | SHA of commit associated with the InfluxDB build | +| cpus | Number of CPUs running InfluxDB | +| functions | Flux functions | +| id | Snowflake identifier for the InfluxDB instance | +| Index partition | Identifies the index partition used by the underlying InfluxDB storage engine | +| ip | IP Address of the inbound connection which reports the statistics. This is **not** the specific IP Address of the machine running InfluxDB unless it is exposed directly on the public Internet. | +| org | Identifier for an organization. Allows for grouping of statistics by organization within the InfluxDB instance | +| os | Operating System InfluxDB is running on | +| result | Text allowing grouping of Flux query invocations results | +| series file partition | Identifies the series files in use for the underlying InfluxDB storage engine. This is not the metadata about series. | +| status | Status of write ahead log (associated to number of successful /failed writes) | +| user\_agent | Typically, this is set by the browser, InfluxDB client libraries (includes the language \[Go, JavaScript, Java, C#, Ruby, Python, etc.] and version), and other technologies \[such as third-party dashboarding applications, etc.]. | +| version | InfluxDB version | + +With those tag elements, we then leverage a combination of the unique combination of `id`, `ip`, and storage system specifics (where applicable) to capture usage counts of the various subsystems within InfluxDB. + +### Fields + +| Fields | Description | +| --------------------------- | ----------------------------------------------------------------------------- | +| buckets total counter | Total number of buckets present within the InfluxDB instance | +| bytes written counter | Total number of bytes written | +| bytes scanned counter | Total number of bytes scanned within the storage system via queries and tasks | +| dashboards total counter | Total number of dashboards present within the InfluxDB instance | +| flux function total counter | Total number of calls by function invoked within Flux | +| http api requests counter | Total number of API invocations by each API path | +| query duration histogram | Histogram counting duration of queries into bins | +| organizations total counter | Total number of organizations present within the InfluxDB instance | +| scrapers total counter | Total number of scrapers configured within the InfluxDB instance | +| series total counter | Total number of series present within the InfluxDB instance | +| storage total counter | Total number of bytes stored within the InfluxDB instance | +| task scheduler gauge | Number of tasks running within the InfluxDB instance | +| telegrafs total counter | Total number of Telegraf configurations within the InfluxDB instance | +| tokens total counter | Total number of tokens present within the InfluxDB instance | +| uptime gauge | Number of seconds InfluxDB has been continuously running | +| users total counter | Total number of users present within the InfluxDB instance | +| wal current segment gauge | Number of bytes in the current segments for the write ahead log | +| wal writes total counter | Total number of writes to the write ahead log by status (ok, fail, etc.) | + +## Disable telemetry + +To "opt-out" of collecting and sending {{% product-name %}} telemetry data, +include the `--reporting-disabled` flag with the `influxd` command when starting {{% product-name %}}. From fe159e66c4d80082625d3279e465971b4fa244f7 Mon Sep 17 00:00:00 2001 From: Adam S <abalone23@users.noreply.github.com> Date: Tue, 4 Nov 2025 15:05:24 -0800 Subject: [PATCH 46/49] Update regenerate.md (#6497) added --token flag before operator token Co-authored-by: Jason Stirnaman <jstirnaman@influxdata.com> --- content/shared/influxdb3-admin/tokens/admin/regenerate.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/content/shared/influxdb3-admin/tokens/admin/regenerate.md b/content/shared/influxdb3-admin/tokens/admin/regenerate.md index 3c10abcfa..078a47b58 100644 --- a/content/shared/influxdb3-admin/tokens/admin/regenerate.md +++ b/content/shared/influxdb3-admin/tokens/admin/regenerate.md @@ -32,8 +32,8 @@ Use the `--regenerate` flag with the {{% code-placeholders "OPERATOR_TOKEN" %}} ```bash influxdb3 create token --admin \ - --regenerate - OPERATOR_TOKEN + --regenerate \ + --token OPERATOR_TOKEN ``` {{% /code-placeholders %}} From 089190dc60f2a0e8cece092607e3b94af7228b65 Mon Sep 17 00:00:00 2001 From: Jason Stirnaman <jstirnaman@influxdata.com> Date: Wed, 5 Nov 2025 00:04:44 -0500 Subject: [PATCH 47/49] fix(influxdb3): influxdb3 install package command syntax and details (#6512) * fix(influxdb3): override PLUGIN_DIR env var in compose services to match --plugin-dir - Set INFLUXDB3_PLUGIN_DIR=/var/lib/influxdb3/plugins in both influxdb3-core and influxdb3-enterprise services - Overrides Docker image default (/plugins) to match --plugin-dir command argument - Ensures package installation works correctly with bind-mounted plugin directory - Update influxdb3 install package CLI documentation with complete options reference * docs(influxdb3): add Docker disk space troubleshooting for package installation Add troubleshooting section for 'No space left on device' errors when installing packages in Docker environments. Includes commands to check Docker disk usage and clean up unused images and build cache. Also fix Vale linting errors by changing 'URL' to 'url'. * Apply suggestion from @jstirnaman * fix(ci): Vale rules for URL/-url-/WAL/-wal-/Parquet/-parquet-: 1. Simplified the Parquet vocabulary entry from the regex to just Parquet 2. Added separate regex patterns for hyphenated identifiers * feat(influxdb3): describe use cases and effects of --package-manager disabled --- .../vocabularies/InfluxDataDocs/accept.txt | 6 +- compose.yaml | 8 +- .../shared/influxdb3-cli/config-options.md | 548 ++++++++++-------- .../shared/influxdb3-cli/install/package.md | 122 +++- 4 files changed, 412 insertions(+), 272 deletions(-) diff --git a/.ci/vale/styles/config/vocabularies/InfluxDataDocs/accept.txt b/.ci/vale/styles/config/vocabularies/InfluxDataDocs/accept.txt index 8a451ac33..e9f7aa19a 100644 --- a/.ci/vale/styles/config/vocabularies/InfluxDataDocs/accept.txt +++ b/.ci/vale/styles/config/vocabularies/InfluxDataDocs/accept.txt @@ -31,7 +31,8 @@ LogicalPlan [Mm]onitor MBs? PBs? -Parquet|\b\w*-*parquet-\w*\b|\b--\w*parquet\w*\b|`[^`]*parquet[^`]*` +Parquet +\w*-?\w*parquet\w*-\w* Redoc SQLAlchemy SQLAlchemy @@ -41,9 +42,11 @@ System.Data.Odbc TBs? \bUI\b URL +\w*-?\w*url\w*-\w* US (East|West|Central|North|South|Northeast|Northwest|Southeast|Southwest) Unix WALs? +\w*-?wal-\w* Webpack [pP]y.*\b \b\w+_\w+\b @@ -82,7 +85,6 @@ quoteChar retentionRules sourceBucket tagKey -url[s]? v2 v3 venv diff --git a/compose.yaml b/compose.yaml index 5d3887a13..e766e867f 100644 --- a/compose.yaml +++ b/compose.yaml @@ -334,6 +334,7 @@ services: target: /var/lib/influxdb3/plugins/custom environment: - INFLUXDB3_AUTH_TOKEN=/run/secrets/influxdb3-core-admin-token + - INFLUXDB3_PLUGIN_DIR=/var/lib/influxdb3/plugins secrets: - influxdb3-core-admin-token influxdb3-enterprise: @@ -357,14 +358,15 @@ services: - --verbose environment: - INFLUXDB3_AUTH_TOKEN=/run/secrets/influxdb3-enterprise-admin-token + - INFLUXDB3_PLUGIN_DIR=/var/lib/influxdb3/plugins volumes: - - type: bind + - type: bind source: test/.influxdb3/enterprise/data target: /var/lib/influxdb3/data - - type: bind + - type: bind source: test/.influxdb3/plugins/influxdata target: /var/lib/influxdb3/plugins - - type: bind + - type: bind source: test/.influxdb3/enterprise/plugins target: /var/lib/influxdb3/plugins/custom secrets: diff --git a/content/shared/influxdb3-cli/config-options.md b/content/shared/influxdb3-cli/config-options.md index ff3d2d06d..a8e2957f5 100644 --- a/content/shared/influxdb3-cli/config-options.md +++ b/content/shared/influxdb3-cli/config-options.md @@ -1,4 +1,5 @@ <!-- Comment to allow starting shortcode --> + {{< product-name >}} lets you customize your configuration by using `influxdb3` command options or by setting environment variables. @@ -17,6 +18,7 @@ Some options are **global** (specified before the command) while others are **se #### Example command with global and serve-specific options {{% show-in "core" %}} + <!--pytest.mark.skip--> ```sh @@ -27,9 +29,11 @@ influxdb3 --num-io-threads=4 serve \ --verbose \ --log-filter info ``` + {{% /show-in %}} {{% show-in "enterprise" %}} + <!--pytest.mark.skip--> ```sh @@ -42,6 +46,7 @@ influxdb3 --num-io-threads=4 serve \ --verbose \ --log-filter info ``` + {{% /show-in %}} ##### Example environment variables @@ -67,7 +72,7 @@ The following options apply to the `influxdb3` CLI globally and must be specifie Sets the number of threads allocated to the IO runtime thread pool. IO threads handle HTTP request serving, line protocol parsing, and file operations. -> [!Important] +> \[!Important] > `--num-io-threads` is a **global option** that must be specified before the `serve` command. {{% show-in "enterprise" %}} @@ -83,16 +88,16 @@ influxdb3 --num-io-threads=8 serve --node-id=node0 --object-store=file For detailed information about thread allocation, see the [Resource Limits](#resource-limits) section. {{% /show-in %}} -| influxdb3 option | Environment variable | -| :--------------- | :------------------------- | +| influxdb3 option | Environment variable | +| :----------------- | :------------------------- | | `--num-io-threads` | `INFLUXDB3_NUM_IO_THREADS` | ---- +*** ## Server configuration options - [General](#general) -{{% show-in "enterprise" %}}- [Licensing](#licensing){{% /show-in %}} + {{% show-in "enterprise" %}}- [Licensing](#licensing){{% /show-in %}} - [Security](#security) - [AWS](#aws) - [Google Cloud Service](#google-cloud-service) @@ -107,43 +112,46 @@ For detailed information about thread allocation, see the [Resource Limits](#res - [Compaction](#compaction) - [Caching](#caching) - [Processing Engine](#processing-engine) -{{% show-in "enterprise" %}} + {{% show-in "enterprise" %}} - [Cluster Management](#cluster-management) -{{% /show-in %}} + {{% /show-in %}} - [Resource Limits](#resource-limits) - [Data Lifecycle Management](#data-lifecycle-management) - [Telemetry](#telemetry) - [TCP Listeners](#tcp-listeners) ---- +*** ### General {{% show-in "enterprise" %}} + - [cluster-id](#cluster-id) -{{% /show-in %}} + {{% /show-in %}} - [data-dir](#data-dir) -{{% show-in "enterprise" %}} + {{% show-in "enterprise" %}} - [mode](#mode) -{{% /show-in %}} + {{% /show-in %}} - [node-id](#node-id) -{{% show-in "enterprise" %}} + {{% show-in "enterprise" %}} - [node-id-from-env](#node-id-from-env) -{{% /show-in %}} + {{% /show-in %}} - [object-store](#object-store) - [query-file-limit](#query-file-limit) {{% show-in "enterprise" %}} + #### cluster-id -Specifies the cluster identifier that prefixes the object store path for the Enterprise Catalog. +Specifies the cluster identifier that prefixes the object store path for the Enterprise Catalog. This value must be different than the [`--node-id`](#node-id) value. -| influxdb3 serve option | Environment variable | -| :--------------------- | :--------------------------------- | -| `--cluster-id` | `INFLUXDB3_ENTERPRISE_CLUSTER_ID` | +| influxdb3 serve option | Environment variable | +| :--------------------- | :-------------------------------- | +| `--cluster-id` | `INFLUXDB3_ENTERPRISE_CLUSTER_ID` | + +*** ---- {{% /show-in %}} #### data-dir @@ -155,16 +163,17 @@ Required when using the `file` [object store](#object-store). | :--------------------- | :------------------- | | `--data-dir` | `INFLUXDB3_DB_DIR` | ---- +*** {{% show-in "enterprise" %}} + #### mode Sets the mode to start the server in, allowing you to create specialized nodes in a distributed cluster. This option supports the following values: -- `all` _(default)_: Enables all server modes +- `all` *(default)*: Enables all server modes - `ingest`: Enables only data ingest capabilities - `query`: Enables only query capabilities - `compact`: Enables only compaction processes @@ -174,7 +183,7 @@ You can specify multiple modes using a comma-delimited list (for example, `inges **Default:** `all` -> [!Important] +> \[!Important] > **Thread allocation for different modes:** > > - **Ingest mode**: Benefits from additional IO threads for line protocol parsing. For high-throughput @@ -189,6 +198,7 @@ You can specify multiple modes using a comma-delimited list (for example, `inges > - **All mode**: Requires balanced thread allocation based on your workload mix. **Example configurations:** + ```bash # High-throughput ingest node (32 cores) influxdb3 --num-io-threads=12 serve --mode=ingest --datafusion-num-threads=20 @@ -204,7 +214,8 @@ influxdb3 --num-io-threads=6 serve --mode=all --datafusion-num-threads=26 | :--------------------- | :-------------------------- | | `--mode` | `INFLUXDB3_ENTERPRISE_MODE` | ---- +*** + {{% /show-in %}} #### node-id @@ -217,9 +228,10 @@ configuration--for example, the same bucket. | :--------------------- | :--------------------------------- | | `--node-id` | `INFLUXDB3_NODE_IDENTIFIER_PREFIX` | ---- +*** {{% show-in "enterprise" %}} + #### node-id-from-env Specifies the node identifier used as a prefix in all object store file paths. @@ -240,7 +252,8 @@ export DATABASE_NODE=node0 && influxdb3 serve \ --data-dir ~/.influxdb3/data ``` ---- +*** + {{% /show-in %}} #### object-store @@ -259,9 +272,10 @@ This option supports the following values: | :--------------------- | :----------------------- | | `--object-store` | `INFLUXDB3_OBJECT_STORE` | ---- +*** {{% show-in "enterprise" %}} + ### Licensing #### license-email @@ -274,7 +288,7 @@ This option is mutually exclusive with [license-file](#license-file). | :--------------------- | :----------------------------------- | | `--license-email` | `INFLUXDB3_ENTERPRISE_LICENSE_EMAIL` | ---- +*** #### license-file @@ -282,11 +296,11 @@ Specifies the path to a license file for {{< product-name >}}. When provided, th file's contents are used instead of requesting a new license. This option is mutually exclusive with [license-email](#license-email). -| influxdb3 serve option | Environment variable | -| :--------------------- | :----------------------------------- | -| `--license-file` | `INFLUXDB3_ENTERPRISE_LICENSE_FILE` | +| influxdb3 serve option | Environment variable | +| :--------------------- | :---------------------------------- | +| `--license-file` | `INFLUXDB3_ENTERPRISE_LICENSE_FILE` | ---- +*** #### license-type @@ -297,11 +311,12 @@ interactive license prompt. Provide one of the following license types: - `trial` - `commercial` -| influxdb3 serve option | Environment variable | -| :--------------------- | :----------------------------------- | -| `--license-type` | `INFLUXDB3_ENTERPRISE_LICENSE_TYPE` | +| influxdb3 serve option | Environment variable | +| :--------------------- | :---------------------------------- | +| `--license-type` | `INFLUXDB3_ENTERPRISE_LICENSE_TYPE` | + +*** ---- {{% /show-in %}} ### Security @@ -313,61 +328,61 @@ interactive license prompt. Provide one of the following license types: - [disable-authz](#disable-authz) - [admin-token-recovery-http-bind](#admin-token-recovery-http-bind) - [admin-token-file](#admin-token-file) -{{% show-in "enterprise" %}}- [permission-tokens-file](#permission-tokens-file){{% /show-in %}} + {{% show-in "enterprise" %}}- [permission-tokens-file](#permission-tokens-file){{% /show-in %}} #### tls-key The path to a key file for TLS to be enabled. -| influxdb3 serve option | Environment variable | -| :--------------------- | :--------------------- | -| `--tls-key` | `INFLUXDB3_TLS_KEY` | +| influxdb3 serve option | Environment variable | +| :--------------------- | :------------------- | +| `--tls-key` | `INFLUXDB3_TLS_KEY` | ---- +*** #### tls-cert The path to a cert file for TLS to be enabled. -| influxdb3 serve option | Environment variable | -| :--------------------- | :--------------------- | -| `--tls-cert` | `INFLUXDB3_TLS_CERT` | +| influxdb3 serve option | Environment variable | +| :--------------------- | :------------------- | +| `--tls-cert` | `INFLUXDB3_TLS_CERT` | ---- +*** #### tls-minimum-version -The minimum version for TLS. +The minimum version for TLS. Valid values are `tls-1.2` or `tls-1.3`. Default is `tls-1.2`. -| influxdb3 serve option | Environment variable | -| :---------------------- | :----------------------- | +| influxdb3 serve option | Environment variable | +| :---------------------- | :------------------------------ | | `--tls-minimum-version` | `INFLUXDB3_TLS_MINIMUM_VERSION` | ---- +*** #### without-auth Disables authentication for all server actions (CLI commands and API requests). The server processes all requests without requiring tokens or authentication. -| influxdb3 serve option | Environment variable | -| :--------------------- | :---------------------------- | -| `--without-auth` | `INFLUXDB3_START_WITHOUT_AUTH`| +| influxdb3 serve option | Environment variable | +| :--------------------- | :----------------------------- | +| `--without-auth` | `INFLUXDB3_START_WITHOUT_AUTH` | ---- +*** #### disable-authz -Optionally disable authz by passing in a comma separated list of resources. +Optionally disable authz by passing in a comma separated list of resources. Valid values are `health`, `ping`, and `metrics`. | influxdb3 serve option | Environment variable | | :--------------------- | :------------------------ | | `--disable-authz` | `INFLUXDB3_DISABLE_AUTHZ` | ---- +*** #### admin-token-recovery-http-bind @@ -375,7 +390,7 @@ Enables an admin token recovery HTTP server on a separate port. This server allows regenerating lost admin tokens without existing authentication. The server automatically shuts down after a successful token regeneration. -> [!Warning] +> \[!Warning] > This option creates an unauthenticated endpoint that can regenerate admin tokens. > Only use this when you have lost access to your admin token and ensure the > server is only accessible from trusted networks. @@ -396,7 +411,7 @@ influxdb3 serve --admin-token-recovery-http-bind influxdb3 create token --admin --regenerate --host http://127.0.0.1:8182 ``` ---- +*** #### admin-token-file @@ -412,6 +427,7 @@ Offline admin tokens are defined in a JSON-formatted file. Use the following command to generate an offline admin token file: <!-- pytest.mark.skip --> + ```bash { placeholders="./path/to/admin-token.json" } influxdb3 create token --admin \ --name "example-admin-token" \ @@ -422,6 +438,7 @@ influxdb3 create token --admin \ {{< expand-wrapper >}} {{% expand "View example offline admin token file" %}} + ```json { "token": "apiv3_0XXXX-xxxXxXxxxXX_OxxxX...", @@ -429,6 +446,7 @@ influxdb3 create token --admin \ "expiry_millis": 1756400061529 } ``` + {{% /expand %}} {{< /expand-wrapper >}} @@ -449,9 +467,10 @@ influxdb3 create token \ influxdb3 serve --admin-token-file ./path/to/admin-token.json ``` ---- +*** {{% show-in "enterprise" %}} + #### permission-tokens-file Specifies an offline permission (resource) tokens file to use if no resource @@ -481,6 +500,7 @@ influxdb3 create token \ {{< expand-wrapper >}} {{% expand "View example offline permission tokens file" %}} + ```json { "create_databases": [ @@ -501,10 +521,11 @@ influxdb3 create token \ ] } ``` + {{% /expand %}} {{< /expand-wrapper >}} -> [!Note] +> \[!Note] > If you write a new offline permission token to an existing permission token file, > the command appends the new token to the existing output file. @@ -527,7 +548,8 @@ influxdb3 create token \ influxdb3 serve --permission-tokens-file ./path/to/tokens.json ``` ---- +*** + {{% /show-in %}} ### AWS @@ -550,7 +572,7 @@ permission to read from and write to the specified S3 bucket. | :--------------------- | :------------------- | | `--aws-access-key-id` | `AWS_ACCESS_KEY_ID` | ---- +*** #### aws-secret-access-key @@ -561,7 +583,7 @@ goes with the specified access key ID. | :------------------------ | :---------------------- | | `--aws-secret-access-key` | `AWS_SECRET_ACCESS_KEY` | ---- +*** #### aws-default-region @@ -574,7 +596,7 @@ the specified bucket if different from the fallback value. | :--------------------- | :------------------- | | `--aws-default-region` | `AWS_DEFAULT_REGION` | ---- +*** #### aws-endpoint @@ -584,7 +606,7 @@ When using an Amazon S3 compatibility storage service, set this to the endpoint. | :--------------------- | :------------------- | | `--aws-endpoint` | `AWS_ENDPOINT` | ---- +*** #### aws-session-token @@ -595,7 +617,7 @@ handy when using a federated login or SSO and fetching credentials via the UI. | :--------------------- | :------------------- | | `--aws-session-token` | `AWS_SESSION_TOKEN` | ---- +*** #### aws-allow-http @@ -605,7 +627,7 @@ Allows unencrypted HTTP connections to AWS. | :--------------------- | :------------------- | | `--aws-allow-http` | `AWS_ALLOW_HTTP` | ---- +*** #### aws-skip-signature @@ -615,7 +637,7 @@ If enabled, S3 object stores do not fetch credentials and do not sign requests. | :--------------------- | :------------------- | | `--aws-skip-signature` | `AWS_SKIP_SIGNATURE` | ---- +*** #### aws-credentials-file @@ -646,7 +668,7 @@ request. | :----------------------- | :--------------------- | | `--aws-credentials-file` | `AWS_CREDENTIALS_FILE` | ---- +*** ### Google Cloud Service @@ -661,7 +683,7 @@ JSON file that contains the Google credentials. | :------------------------- | :----------------------- | | `--google-service-account` | `GOOGLE_SERVICE_ACCOUNT` | ---- +*** ### Microsoft Azure @@ -679,7 +701,7 @@ when navigating to **All Services > Storage accounts > `[name]`**. | :------------------------ | :---------------------- | | `--azure-storage-account` | `AZURE_STORAGE_ACCOUNT` | ---- +*** #### azure-storage-access-key @@ -690,7 +712,7 @@ values in the Storage account's **Settings > Access keys**. | :--------------------------- | :------------------------- | | `--azure-storage-access-key` | `AZURE_STORAGE_ACCESS_KEY` | ---- +*** #### azure-endpoint @@ -701,7 +723,7 @@ Storage endpoint. | :--------------------- | :------------------- | | `--azure-endpoint` | `AZURE_ENDPOINT` | ---- +*** #### azure-allow-http @@ -714,7 +736,7 @@ to Azure Blob Storage. | :--------------------- | :------------------- | | `--azure-allow-http` | `AZURE_ALLOW_HTTP` | ---- +*** ### Object Storage @@ -735,7 +757,7 @@ Sets the name of the object storage bucket to use. Must also set | :--------------------- | :------------------- | | `--bucket` | `INFLUXDB3_BUCKET` | ---- +*** #### object-store-connection-limit @@ -748,7 +770,7 @@ this value. | :-------------------------------- | :------------------------------ | | `--object-store-connection-limit` | `OBJECT_STORE_CONNECTION_LIMIT` | ---- +*** #### object-store-http2-only @@ -758,7 +780,7 @@ Forces HTTP/2 connections to network-based object stores. | :-------------------------- | :------------------------ | | `--object-store-http2-only` | `OBJECT_STORE_HTTP2_ONLY` | ---- +*** #### object-store-http2-max-frame-size @@ -768,7 +790,7 @@ Sets the maximum frame size (in bytes/octets) for HTTP/2 connections. | :------------------------------------ | :---------------------------------- | | `--object-store-http2-max-frame-size` | `OBJECT_STORE_HTTP2_MAX_FRAME_SIZE` | ---- +*** #### object-store-max-retries @@ -778,7 +800,7 @@ Defines the maximum number of times to retry a request. | :--------------------------- | :------------------------- | | `--object-store-max-retries` | `OBJECT_STORE_MAX_RETRIES` | ---- +*** #### object-store-retry-timeout @@ -789,7 +811,7 @@ further retries are be attempted. | :----------------------------- | :--------------------------- | | `--object-store-retry-timeout` | `OBJECT_STORE_RETRY_TIMEOUT` | ---- +*** #### object-store-cache-endpoint @@ -799,7 +821,7 @@ Sets the endpoint of an S3-compatible, HTTP/2-enabled object store cache. | :------------------------------ | :---------------------------- | | `--object-store-cache-endpoint` | `OBJECT_STORE_CACHE_ENDPOINT` | ---- +*** ### Logs @@ -816,7 +838,7 @@ Sets the filter directive for logs. | :--------------------- | :------------------- | | `--log-filter` | `LOG_FILTER` | ---- +*** #### log-destination @@ -824,7 +846,7 @@ Specifies the destination for logs. This option supports the following values: -- `stdout` _(default)_ +- `stdout` *(default)* - `stderr` **Default:** `stdout` @@ -833,7 +855,7 @@ This option supports the following values: | :--------------------- | :------------------- | | `--log-destination` | `LOG_DESTINATION` | ---- +*** #### log-format @@ -841,7 +863,7 @@ Defines the message format for logs. This option supports the following values: -- `full` _(default)_ +- `full` *(default)* **Default:** `full` @@ -849,7 +871,7 @@ This option supports the following values: | :--------------------- | :------------------- | | `--log-format` | `LOG_FORMAT` | ---- +*** #### query-log-size @@ -862,7 +884,7 @@ log before older queries are evicted to make room for new ones. | :--------------------- | :------------------------- | | `--query-log-size` | `INFLUXDB3_QUERY_LOG_SIZE` | ---- +*** ### Traces @@ -885,7 +907,7 @@ Sets the type of tracing exporter. | :--------------------- | :------------------- | | `--traces-exporter` | `TRACES_EXPORTER` | ---- +*** #### traces-exporter-jaeger-agent-host @@ -897,7 +919,7 @@ Specifies the Jaeger agent network hostname for tracing. | :------------------------------------ | :---------------------------------- | | `--traces-exporter-jaeger-agent-host` | `TRACES_EXPORTER_JAEGER_AGENT_HOST` | ---- +*** #### traces-exporter-jaeger-agent-port @@ -909,7 +931,7 @@ Defines the Jaeger agent network port for tracing. | :------------------------------------ | :---------------------------------- | | `--traces-exporter-jaeger-agent-port` | `TRACES_EXPORTER_JAEGER_AGENT_PORT` | ---- +*** #### traces-exporter-jaeger-service-name @@ -921,7 +943,7 @@ Sets the Jaeger service name for tracing. | :-------------------------------------- | :------------------------------------ | | `--traces-exporter-jaeger-service-name` | `TRACES_EXPORTER_JAEGER_SERVICE_NAME` | ---- +*** #### traces-exporter-jaeger-trace-context-header-name @@ -933,7 +955,7 @@ Specifies the header name used for passing trace context. | :--------------------------------------------------- | :------------------------------------------------- | | `--traces-exporter-jaeger-trace-context-header-name` | `TRACES_EXPORTER_JAEGER_TRACE_CONTEXT_HEADER_NAME` | ---- +*** #### traces-jaeger-debug-name @@ -945,7 +967,7 @@ Specifies the header name used for force sampling in tracing. | :--------------------------- | :---------------------------------- | | `--traces-jaeger-debug-name` | `TRACES_EXPORTER_JAEGER_DEBUG_NAME` | ---- +*** #### traces-jaeger-tags @@ -955,7 +977,7 @@ Defines a set of `key=value` pairs to annotate tracing spans with. | :--------------------- | :---------------------------- | | `--traces-jaeger-tags` | `TRACES_EXPORTER_JAEGER_TAGS` | ---- +*** #### traces-jaeger-max-msgs-per-second @@ -967,7 +989,7 @@ Specifies the maximum number of messages sent to a Jaeger service per second. | :------------------------------------ | :---------------------------------- | | `--traces-jaeger-max-msgs-per-second` | `TRACES_JAEGER_MAX_MSGS_PER_SECOND` | ---- +*** ### DataFusion @@ -994,11 +1016,11 @@ Sets the maximum number of DataFusion runtime threads to use. | :------------------------- | :--------------------------------- | | `--datafusion-num-threads` | `INFLUXDB3_DATAFUSION_NUM_THREADS` | ---- +*** #### datafusion-max-parquet-fanout -When multiple parquet files are required in a sorted way +When multiple Parquet files are required in a sorted way (deduplication for example), specifies the maximum fanout. **Default:** `1000` @@ -1007,17 +1029,17 @@ When multiple parquet files are required in a sorted way | :-------------------------------- | :---------------------------------------- | | `--datafusion-max-parquet-fanout` | `INFLUXDB3_DATAFUSION_MAX_PARQUET_FANOUT` | ---- +*** #### datafusion-use-cached-parquet-loader -Uses a cached parquet loader when reading parquet files from the object store. +Uses a cached Parquet loader when reading Parquet files from the object store. | influxdb3 serve option | Environment variable | | :--------------------------------------- | :----------------------------------------------- | | `--datafusion-use-cached-parquet-loader` | `INFLUXDB3_DATAFUSION_USE_CACHED_PARQUET_LOADER` | ---- +*** #### datafusion-config @@ -1028,7 +1050,7 @@ Provides custom configuration to DataFusion as a comma-separated list of | :--------------------- | :---------------------------- | | `--datafusion-config` | `INFLUXDB3_DATAFUSION_CONFIG` | ---- +*** ### HTTP @@ -1045,7 +1067,7 @@ Specifies the maximum size of HTTP requests. | :------------------------ | :-------------------------------- | | `--max-http-request-size` | `INFLUXDB3_MAX_HTTP_REQUEST_SIZE` | ---- +*** #### http-bind @@ -1057,7 +1079,7 @@ Defines the address on which InfluxDB serves HTTP API requests. | :--------------------- | :------------------------- | | `--http-bind` | `INFLUXDB3_HTTP_BIND_ADDR` | ---- +*** ### Memory @@ -1077,7 +1099,7 @@ example: `8000000000` or `10%`. | :---------------------- | :------------------------------ | | `--exec-mem-pool-bytes` | `INFLUXDB3_EXEC_MEM_POOL_BYTES` | ---- +*** #### force-snapshot-mem-threshold @@ -1091,7 +1113,7 @@ percentage (portion of available memory) or absolute value in MB--for example: ` | :------------------------------- | :--------------------------------------- | | `--force-snapshot-mem-threshold` | `INFLUXDB3_FORCE_SNAPSHOT_MEM_THRESHOLD` | ---- +*** ### Write-Ahead Log (WAL) @@ -1114,7 +1136,7 @@ Use `s` for seconds or `ms` for milliseconds. For local disks, `100 ms` is recom | :--------------------- | :----------------------------- | | `--wal-flush-interval` | `INFLUXDB3_WAL_FLUSH_INTERVAL` | ---- +*** #### wal-snapshot-size @@ -1127,7 +1149,7 @@ multiplied by the interval, determines how often snapshots are taken. | :--------------------- | :---------------------------- | | `--wal-snapshot-size` | `INFLUXDB3_WAL_SNAPSHOT_SIZE` | ---- +*** #### wal-max-write-buffer-size @@ -1140,12 +1162,12 @@ flush must be executed and succeed. | :---------------------------- | :------------------------------------ | | `--wal-max-write-buffer-size` | `INFLUXDB3_WAL_MAX_WRITE_BUFFER_SIZE` | ---- +*** #### snapshotted-wal-files-to-keep Specifies the number of snapshotted WAL files to retain in the object store. -Flushing the WAL files does not clear the WAL files immediately; +Flushing the WAL files does not clear the WAL files immediately; they are deleted when the number of snapshotted WAL files exceeds this number. **Default:** `300` @@ -1154,7 +1176,7 @@ they are deleted when the number of snapshotted WAL files exceeds this number. | :-------------------------------- | :-------------------------------- | | `--snapshotted-wal-files-to-keep` | `INFLUXDB3_NUM_WAL_FILES_TO_KEEP` | ---- +*** #### wal-replay-fail-on-error @@ -1162,11 +1184,11 @@ Determines whether WAL replay should fail when encountering errors. **Default:** `false` -| influxdb3 serve option | Environment variable | -| :--------------------------- | :------------------------------------- | -| `--wal-replay-fail-on-error` | `INFLUXDB3_WAL_REPLAY_FAIL_ON_ERROR` | +| influxdb3 serve option | Environment variable | +| :--------------------------- | :----------------------------------- | +| `--wal-replay-fail-on-error` | `INFLUXDB3_WAL_REPLAY_FAIL_ON_ERROR` | ---- +*** #### wal-replay-concurrency-limit @@ -1176,25 +1198,28 @@ The default is dynamically determined. **Default:** `max(num_cpus, 10)` -| influxdb3 serve option | Environment variable | -| :--------------------------------- | :------------------------------------------ | -| `--wal-replay-concurrency-limit` | `INFLUXDB3_WAL_REPLAY_CONCURRENCY_LIMIT` | +| influxdb3 serve option | Environment variable | +| :------------------------------- | :--------------------------------------- | +| `--wal-replay-concurrency-limit` | `INFLUXDB3_WAL_REPLAY_CONCURRENCY_LIMIT` | ---- +*** ### Compaction {{% show-in "enterprise" %}} + <!--- [compaction-row-limit](#compaction-row-limit) - NOT YET RELEASED in v3.5.0 --> + - [compaction-max-num-files-per-plan](#compaction-max-num-files-per-plan) - [compaction-gen2-duration](#compaction-gen2-duration) - [compaction-multipliers](#compaction-multipliers) - [compaction-cleanup-wait](#compaction-cleanup-wait) - [compaction-check-interval](#compaction-check-interval) -{{% /show-in %}} + {{% /show-in %}} - [gen1-duration](#gen1-duration) {{% show-in "enterprise" %}} + <!--- #### compaction-row-limit @@ -1222,7 +1247,7 @@ Sets the maximum number of files included in any compaction plan. | :------------------------------------ | :------------------------------------------------------- | | `--compaction-max-num-files-per-plan` | `INFLUXDB3_ENTERPRISE_COMPACTION_MAX_NUM_FILES_PER_PLAN` | ---- +*** #### compaction-gen2-duration @@ -1236,7 +1261,7 @@ greater than the gen1 duration. | :--------------------------- | :---------------------------------------------- | | `--compaction-gen2-duration` | `INFLUXDB3_ENTERPRISE_COMPACTION_GEN2_DURATION` | ---- +*** #### compaction-multipliers @@ -1251,7 +1276,7 @@ compaction levels. The first element specifies the duration of the first level | :------------------------- | :-------------------------------------------- | | `--compaction-multipliers` | `INFLUXDB3_ENTERPRISE_COMPACTION_MULTIPLIERS` | ---- +*** #### compaction-cleanup-wait @@ -1264,7 +1289,7 @@ to delete files marked as needing deletion during that compaction run. | :-------------------------- | :--------------------------------------------- | | `--compaction-cleanup-wait` | `INFLUXDB3_ENTERPRISE_COMPACTION_CLEANUP_WAIT` | ---- +*** #### compaction-check-interval @@ -1272,11 +1297,12 @@ Specifies how often the compactor checks for new compaction work to perform. **Default:** `10s` -| influxdb3 serve option | Environment variable | -| :----------------------------- | :------------------------------------------------ | -| `--compaction-check-interval` | `INFLUXDB3_ENTERPRISE_COMPACTION_CHECK_INTERVAL` | +| influxdb3 serve option | Environment variable | +| :---------------------------- | :----------------------------------------------- | +| `--compaction-check-interval` | `INFLUXDB3_ENTERPRISE_COMPACTION_CHECK_INTERVAL` | + +*** ---- {{% /show-in %}} #### gen1-duration @@ -1293,7 +1319,7 @@ compactor in InfluxDB 3 Enterprise can merge into larger generations{{% /show-in | :--------------------- | :------------------------ | | `--gen1-duration` | `INFLUXDB3_GEN1_DURATION` | ---- +*** ### Caching @@ -1305,13 +1331,13 @@ compactor in InfluxDB 3 Enterprise can merge into larger generations{{% /show-in - [disable-parquet-mem-cache](#disable-parquet-mem-cache) - [table-index-cache-max-entries](#table-index-cache-max-entries) - [table-index-cache-concurrency-limit](#table-index-cache-concurrency-limit) -{{% show-in "enterprise" %}} + {{% show-in "enterprise" %}} - [last-value-cache-disable-from-history](#last-value-cache-disable-from-history) -{{% /show-in %}} + {{% /show-in %}} - [last-cache-eviction-interval](#last-cache-eviction-interval) -{{% show-in "enterprise" %}} + {{% show-in "enterprise" %}} - [distinct-value-cache-disable-from-history](#distinct-value-cache-disable-from-history) -{{% /show-in %}} + {{% /show-in %}} - [distinct-cache-eviction-interval](#distinct-cache-eviction-interval) #### preemptive-cache-age @@ -1324,7 +1350,7 @@ Specifies the interval to prefetch into the Parquet cache during compaction. | :----------------------- | :------------------------------- | | `--preemptive-cache-age` | `INFLUXDB3_PREEMPTIVE_CACHE_AGE` | ---- +*** #### parquet-mem-cache-size @@ -1332,16 +1358,17 @@ Specifies the size of the in-memory Parquet cache. Accepts values in megabytes ( **Default:** `20%` -> [!Note] +> \[!Note] +> > #### Breaking change in v3.0.0 > > In v3.0.0, `--parquet-mem-cache-size-mb` was replaced with `--parquet-mem-cache-size`. > The new option accepts both megabytes (integer) and percentage values. > The default changed from `1000` MB to `20%` of total available memory. -| influxdb3 serve option | Environment variable | -| :---------------------------- | :---------------------------------- | -| `--parquet-mem-cache-size` | `INFLUXDB3_PARQUET_MEM_CACHE_SIZE` | +| influxdb3 serve option | Environment variable | +| :------------------------- | :--------------------------------- | +| `--parquet-mem-cache-size` | `INFLUXDB3_PARQUET_MEM_CACHE_SIZE` | #### parquet-mem-cache-prune-percentage @@ -1354,7 +1381,7 @@ in-memory Parquet cache. | :------------------------------------- | :--------------------------------------------- | | `--parquet-mem-cache-prune-percentage` | `INFLUXDB3_PARQUET_MEM_CACHE_PRUNE_PERCENTAGE` | ---- +*** #### parquet-mem-cache-prune-interval @@ -1366,7 +1393,7 @@ Sets the interval to check if the in-memory Parquet cache needs to be pruned. | :----------------------------------- | :------------------------------------------- | | `--parquet-mem-cache-prune-interval` | `INFLUXDB3_PARQUET_MEM_CACHE_PRUNE_INTERVAL` | ---- +*** #### parquet-mem-cache-query-path-duration @@ -1388,11 +1415,11 @@ If a query requests data from `2024-06-09` (old) and `2024-06-10 14:00` (recent) - **Cached**: Parquet files with data from `2024-06-10 14:00` (within 5-hour window) - **Not cached**: Parquet files with data from `2024-06-09` (outside 5-hour window) -| influxdb3 serve option | Environment variable | -| :---------------------------- | :------------------------------------ | +| influxdb3 serve option | Environment variable | +| :---------------------------------------- | :------------------------------------------------ | | `--parquet-mem-cache-query-path-duration` | `INFLUXDB3_PARQUET_MEM_CACHE_QUERY_PATH_DURATION` | ---- +*** #### disable-parquet-mem-cache @@ -1402,7 +1429,7 @@ Disables the in-memory Parquet cache. By default, the cache is enabled. | :---------------------------- | :------------------------------------ | | `--disable-parquet-mem-cache` | `INFLUXDB3_DISABLE_PARQUET_MEM_CACHE` | ---- +*** #### table-index-cache-max-entries @@ -1410,11 +1437,11 @@ Specifies the maximum number of entries in the table index cache. **Default:** `1000` -| influxdb3 serve option | Environment variable | -| :--------------------------------- | :-------------------------------------------- | -| `--table-index-cache-max-entries` | `INFLUXDB3_TABLE_INDEX_CACHE_MAX_ENTRIES` | +| influxdb3 serve option | Environment variable | +| :-------------------------------- | :---------------------------------------- | +| `--table-index-cache-max-entries` | `INFLUXDB3_TABLE_INDEX_CACHE_MAX_ENTRIES` | ---- +*** #### table-index-cache-concurrency-limit @@ -1422,26 +1449,26 @@ Limits the concurrency level for table index cache operations. **Default:** `8` -| influxdb3 serve option | Environment variable | -| :---------------------------------------- | :------------------------------------------------- | -| `--table-index-cache-concurrency-limit` | `INFLUXDB3_TABLE_INDEX_CACHE_CONCURRENCY_LIMIT` | +| influxdb3 serve option | Environment variable | +| :-------------------------------------- | :---------------------------------------------- | +| `--table-index-cache-concurrency-limit` | `INFLUXDB3_TABLE_INDEX_CACHE_CONCURRENCY_LIMIT` | {{% show-in "enterprise" %}} ---- +*** #### last-value-cache-disable-from-history Disables populating the last-N-value cache from historical data. If disabled, the cache is still populated with data from the write-ahead log (WAL). -| influxdb3 serve option | Environment variable | -| :---------------------------------------- | :---------------------------------------------------------- | -| `--last-value-cache-disable-from-history` | `INFLUXDB3_ENTERPRISE_LAST_VALUE_CACHE_DISABLE_FROM_HISTORY`| +| influxdb3 serve option | Environment variable | +| :---------------------------------------- | :----------------------------------------------------------- | +| `--last-value-cache-disable-from-history` | `INFLUXDB3_ENTERPRISE_LAST_VALUE_CACHE_DISABLE_FROM_HISTORY` | {{% /show-in %}} ---- +*** #### last-cache-eviction-interval @@ -1454,22 +1481,20 @@ expressed as a human-readable duration--for example: `20s`, `1m`, `1h`. | :------------------------------- | :--------------------------------------- | | `--last-cache-eviction-interval` | `INFLUXDB3_LAST_CACHE_EVICTION_INTERVAL` | - -{{% show-in "enterprise" %}} ---- +## {{% show-in "enterprise" %}} #### distinct-value-cache-disable-from-history Disables populating the distinct value cache from historical data. If disabled, the cache is still populated with data from the write-ahead log (WAL). -| influxdb3 serve option | Environment variable | -| :-------------------------------------------- | :-------------------------------------------------------------- | -| `--distinct-value-cache-disable-from-history` | `INFLUXDB3_ENTERPRISE_DISTINCT_VALUE_CACHE_DISABLE_FROM_HISTORY`| +| influxdb3 serve option | Environment variable | +| :-------------------------------------------- | :--------------------------------------------------------------- | +| `--distinct-value-cache-disable-from-history` | `INFLUXDB3_ENTERPRISE_DISTINCT_VALUE_CACHE_DISABLE_FROM_HISTORY` | {{% /show-in %}} ---- +*** #### distinct-cache-eviction-interval @@ -1482,7 +1507,7 @@ expressed as a human-readable duration--for example: `20s`, `1m`, `1h`. | :----------------------------------- | :------------------------------------------- | | `--distinct-cache-eviction-interval` | `INFLUXDB3_DISTINCT_CACHE_EVICTION_INTERVAL` | ---- +*** #### query-file-limit @@ -1507,19 +1532,19 @@ the following side-effects: - If using object storage to store data, many GET requests to access the data (as many as 2 per file) -> [!Note] +> \[!Note] > We recommend keeping the default setting and querying smaller time ranges. > If you need to query longer time ranges or faster query performance on any query > that accesses an hour or more of data, [InfluxDB 3 Enterprise](/influxdb3/enterprise/) > optimizes data storage by compacting and rearranging Parquet files to achieve > faster query performance. -{{% /show-in %}} +> {{% /show-in %}} | influxdb3 serve option | Environment variable | | :--------------------- | :--------------------------- | | `--query-file-limit` | `INFLUXDB3_QUERY_FILE_LIMIT` | ---- +*** ### Processing Engine @@ -1536,7 +1561,7 @@ Specifies the local directory that contains Python plugins and their test files. | :--------------------- | :--------------------- | | `--plugin-dir` | `INFLUXDB3_PLUGIN_DIR` | ---- +*** #### plugin-repo @@ -1545,6 +1570,7 @@ When you create a trigger with a plugin filename starting with `gh:`, InfluxDB f the plugin code from this repository URL. The URL construction automatically handles trailing slashesโ€”both formats work identically: + - `https://example.com/plugins/` (with trailing slash) - `https://example.com/plugins` (without trailing slash) @@ -1572,18 +1598,18 @@ export INFLUXDB3_PLUGIN_REPO="https://custom-repo.example.com/plugins/" influxdb3 serve --plugin-dir ~/.plugins ``` ---- +*** #### virtual-env-location Specifies the location of the Python virtual environment that the processing engine uses. -| influxdb3 serve option | Environment variable | -| :----------------------- | :--------------------- | -| `--virtual-env-location` | `VIRTUAL_ENV` | +| influxdb3 serve option | Environment variable | +| :----------------------- | :------------------- | +| `--virtual-env-location` | `VIRTUAL_ENV` | ---- +*** #### package-manager @@ -1591,22 +1617,49 @@ Specifies the Python package manager that the Processing Engine uses to install This option supports the following values: -- `discover` _(default)_: Automatically detect and use available package manager (`uv` or `pip`) +- `discover` *(default)*: Automatically detect and use available package manager (`uv` or `pip`) - `pip`: Use pip package manager exclusively - `uv`: Use uv package manager exclusively - `disabled`: Disable automatic package installation (all dependencies must be pre-installed) **Default:** `discover` +##### Security mode (disabled) + +When set to `disabled`, {{< product-name >}} blocks all package installation attempts for security and compliance requirements. +The Processing Engine and plugins continue to function normally, but package installation requests (via CLI or API) return a `403 Forbidden` error. + +This mode is designed for: + +- **Enterprise security requirements**: Prevent arbitrary package installation +- **Compliance environments**: Control exactly which packages are available +- **Air-gapped deployments**: Pre-install all dependencies before deployment +- **Multi-tenant scenarios**: Prevent tenants from installing potentially malicious packages + +> \[!Important] +> Before using `--package-manager disabled`, administrators must pre-install all required Python packages into the virtual environment that plugins will use. + +**Example:** + +```bash +# Start InfluxDB 3 with disabled package manager +influxdb3 serve \ + --node-id node0 \ + --object-store file \ + --data-dir ~/.influxdb3 \ + --plugin-dir ~/.plugins \ + --package-manager disabled +``` + For more information about plugins and package management, see [Processing Engine plugins](/influxdb3/version/plugins/). -| influxdb3 serve option | Environment variable | -| :--------------------- | :------------------- | -| `--package-manager` | `INFLUXDB3_PACKAGE_MANAGER` | +| influxdb3 serve option | Environment variable | +| :--------------------- | :-------------------------- | +| `--package-manager` | `INFLUXDB3_PACKAGE_MANAGER` | {{% show-in "enterprise" %}} ---- +*** ### Cluster Management @@ -1620,11 +1673,11 @@ Specifies the interval at which data replication occurs between cluster nodes. **Default:** `250ms` -| influxdb3 serve option | Environment variable | -| :------------------------- | :------------------------------------------- | -| `--replication-interval` | `INFLUXDB3_ENTERPRISE_REPLICATION_INTERVAL` | +| influxdb3 serve option | Environment variable | +| :----------------------- | :------------------------------------------ | +| `--replication-interval` | `INFLUXDB3_ENTERPRISE_REPLICATION_INTERVAL` | ---- +*** #### catalog-sync-interval @@ -1632,11 +1685,11 @@ Defines how often the catalog synchronizes across cluster nodes. **Default:** `10s` -| influxdb3 serve option | Environment variable | -| :--------------------------- | :------------------------------------------ | -| `--catalog-sync-interval` | `INFLUXDB3_ENTERPRISE_CATALOG_SYNC_INTERVAL`| +| influxdb3 serve option | Environment variable | +| :------------------------ | :------------------------------------------- | +| `--catalog-sync-interval` | `INFLUXDB3_ENTERPRISE_CATALOG_SYNC_INTERVAL` | ---- +*** #### wait-for-running-ingestor @@ -1644,27 +1697,29 @@ Specifies how long to wait for a running ingestor during startup. **Default:** `10s` -| influxdb3 serve option | Environment variable | -| :------------------------------- | :------------------------------------------------ | -| `--wait-for-running-ingestor` | `INFLUXDB3_ENTERPRISE_WAIT_FOR_RUNNING_INGESTOR` | +| influxdb3 serve option | Environment variable | +| :---------------------------- | :----------------------------------------------- | +| `--wait-for-running-ingestor` | `INFLUXDB3_ENTERPRISE_WAIT_FOR_RUNNING_INGESTOR` | {{% /show-in %}} ---- +*** ### Resource Limits {{% show-in "enterprise" %}} + - [num-cores](#num-cores) -{{% /show-in %}} + {{% /show-in %}} - [datafusion-num-threads](#datafusion-num-threads) -- _[num-io-threads](#num-io-threads) - See [Global configuration options](#global-configuration-options)_ -{{% show-in "enterprise" %}} +- *[num-io-threads](#num-io-threads) - See [Global configuration options](#global-configuration-options)* + {{% show-in "enterprise" %}} - [num-database-limit](#num-database-limit) - [num-table-limit](#num-table-limit) - [num-total-columns-per-table-limit](#num-total-columns-per-table-limit) #### num-cores + Limits the number of CPU cores that the InfluxDB 3 Enterprise process can use when running on systems where resources are shared. **Default:** All available cores on the system @@ -1678,32 +1733,35 @@ Maximum cores allowed is determined by your {{% product-name %}} license: When specified, InfluxDB automatically assigns the number of DataFusion threads and IO threads based on the core count. **Default thread assignment logic when `num-cores` is set:** + - **1-2 cores**: 1 IO thread, 1 DataFusion thread - **3 cores**: 1 IO thread, 2 DataFusion threads - **4+ cores**: 2 IO threads, (n-2) DataFusion threads This automatic allocation applies when you don't explicitly set [`--num-io-threads`](#num-io-threads) and [`--datafusion-num-threads`](#datafusion-num-threads). -> [!Note] +> \[!Note] > You can override the automatic thread assignment by explicitly setting [`--num-io-threads`](#num-io-threads) > and [`--datafusion-num-threads`](#datafusion-num-threads). > This is particularly important for specialized > workloads like [ingest mode](#mode) where you may need more IO threads than the default allocation. **Constraints:** + - Must be at least 2 - Cannot exceed the number of cores available on the system - Total thread count from `--num-io-threads` (global option) and `--datafusion-num-threads` cannot exceed the `num-cores` value -| influxdb3 serve option | Environment variable | -| :--------------------- | :-------------------------------- | -| `--num-cores` | `INFLUXDB3_ENTERPRISE_NUM_CORES` | -{{% /show-in %}} +| influxdb3 serve option | Environment variable | +| :--------------------- | :------------------------------- | +| `--num-cores` | `INFLUXDB3_ENTERPRISE_NUM_CORES` | +| {{% /show-in %}} | | #### datafusion-num-threads Sets the number of threads allocated to the DataFusion runtime thread pool. DataFusion threads handle: + - Query execution and processing - Data aggregation and transformation - Snapshot creation (sort/dedupe operations) @@ -1712,42 +1770,42 @@ DataFusion threads handle: {{% show-in "core" %}} **Default:** All available cores minus IO threads -> [!Note] +> \[!Note] > DataFusion threads are used for both query processing and snapshot operations. -{{% /show-in %}} +> {{% /show-in %}} {{% show-in "enterprise" %}} **Default:** + - If not specified and `--num-cores` is not set: All available cores minus IO threads - If not specified and `--num-cores` is set: Automatically determined based on core count (see [`--num-cores`](#num-cores)) -> [!Note] +> \[!Note] > DataFusion threads are used for both query processing and snapshot operations. > Even ingest-only nodes use DataFusion threads during WAL snapshot creation. **Constraints:** When used with `--num-cores`, the sum of `--num-io-threads` and `--datafusion-num-threads` cannot exceed the `num-cores` value {{% /show-in %}} -| influxdb3 serve option | Environment variable | -| :----------------------------- | :-------------------------------------- | -| `--datafusion-num-threads` | `INFLUXDB3_DATAFUSION_NUM_THREADS` | +| influxdb3 serve option | Environment variable | +| :------------------------- | :--------------------------------- | +| `--datafusion-num-threads` | `INFLUXDB3_DATAFUSION_NUM_THREADS` | -> [!Note] +> \[!Note] > [`--num-io-threads`](#num-io-threads) is a [global configuration option](#global-configuration-options). -{{% show-in "enterprise" %}} ---- +## {{% show-in "enterprise" %}} #### num-database-limit Limits the total number of active databases. Default is {{% influxdb3/limit "database" %}}. -| influxdb3 serve option | Environment variable | -| :------------------------ | :---------------------------------------- | -| `--num-database-limit` | `INFLUXDB3_ENTERPRISE_NUM_DATABASE_LIMIT` | +| influxdb3 serve option | Environment variable | +| :--------------------- | :---------------------------------------- | +| `--num-database-limit` | `INFLUXDB3_ENTERPRISE_NUM_DATABASE_LIMIT` | ---- +*** #### num-table-limit @@ -1755,23 +1813,23 @@ Limits the total number of active tables across all databases. Default is {{% influxdb3/limit "table" %}}. | influxdb3 serve option | Environment variable | -| :---------------------- | :------------------------------------- | -| `--num-table-limit` | `INFLUXDB3_ENTERPRISE_NUM_TABLE_LIMIT` | +| :--------------------- | :------------------------------------- | +| `--num-table-limit` | `INFLUXDB3_ENTERPRISE_NUM_TABLE_LIMIT` | ---- +*** #### num-total-columns-per-table-limit Limits the total number of columns per table. Default is {{% influxdb3/limit "column" %}}. -| influxdb3 serve option | Environment variable | -| :--------------------------------------- | :---------------------------------------------------------- | -| `--num-total-columns-per-table-limit` | `INFLUXDB3_ENTERPRISE_NUM_TOTAL_COLUMNS_PER_TABLE_LIMIT` | +| influxdb3 serve option | Environment variable | +| :------------------------------------ | :------------------------------------------------------- | +| `--num-total-columns-per-table-limit` | `INFLUXDB3_ENTERPRISE_NUM_TOTAL_COLUMNS_PER_TABLE_LIMIT` | {{% /show-in %}} ---- +*** ### Data Lifecycle Management @@ -1786,11 +1844,11 @@ Specifies how far back to look when creating generation 1 Parquet files. **Default:** `24h` -| influxdb3 serve option | Environment variable | -| :---------------------------- | :-------------------------------------- | -| `--gen1-lookback-duration` | `INFLUXDB3_GEN1_LOOKBACK_DURATION` | +| influxdb3 serve option | Environment variable | +| :------------------------- | :--------------------------------- | +| `--gen1-lookback-duration` | `INFLUXDB3_GEN1_LOOKBACK_DURATION` | ---- +*** #### retention-check-interval @@ -1799,11 +1857,11 @@ Enter as a human-readable time--for example: `30m` or `1h`. **Default:** `30m` -| influxdb3 serve option | Environment variable | -| :----------------------------- | :--------------------------------------- | -| `--retention-check-interval` | `INFLUXDB3_RETENTION_CHECK_INTERVAL` | +| influxdb3 serve option | Environment variable | +| :--------------------------- | :----------------------------------- | +| `--retention-check-interval` | `INFLUXDB3_RETENTION_CHECK_INTERVAL` | ---- +*** #### delete-grace-period @@ -1811,11 +1869,11 @@ Specifies the grace period before permanently deleting data. **Default:** `24h` -| influxdb3 serve option | Environment variable | -| :------------------------ | :--------------------------------- | -| `--delete-grace-period` | `INFLUXDB3_DELETE_GRACE_PERIOD` | +| influxdb3 serve option | Environment variable | +| :---------------------- | :------------------------------ | +| `--delete-grace-period` | `INFLUXDB3_DELETE_GRACE_PERIOD` | ---- +*** #### hard-delete-default-duration @@ -1823,11 +1881,11 @@ Sets the default duration for hard deletion of data. **Default:** `90d` -| influxdb3 serve option | Environment variable | -| :---------------------------------- | :-------------------------------------------- | -| `--hard-delete-default-duration` | `INFLUXDB3_HARD_DELETE_DEFAULT_DURATION` | +| influxdb3 serve option | Environment variable | +| :------------------------------- | :--------------------------------------- | +| `--hard-delete-default-duration` | `INFLUXDB3_HARD_DELETE_DEFAULT_DURATION` | ---- +*** ### Telemetry @@ -1840,21 +1898,21 @@ Disables the upload of telemetry data to InfluxData. **Default:** `false` -| influxdb3 serve option | Environment variable | -| :---------------------------- | :-------------------------------------- | -| `--telemetry-disable-upload` | `INFLUXDB3_TELEMETRY_DISABLE_UPLOAD` | +| influxdb3 serve option | Environment variable | +| :--------------------------- | :----------------------------------- | +| `--telemetry-disable-upload` | `INFLUXDB3_TELEMETRY_DISABLE_UPLOAD` | ---- +*** #### telemetry-endpoint Specifies the endpoint for telemetry data uploads. -| influxdb3 serve option | Environment variable | -| :----------------------- | :--------------------------------- | -| `--telemetry-endpoint` | `INFLUXDB3_TELEMETRY_ENDPOINT` | +| influxdb3 serve option | Environment variable | +| :--------------------- | :----------------------------- | +| `--telemetry-endpoint` | `INFLUXDB3_TELEMETRY_ENDPOINT` | ---- +*** ### TCP Listeners @@ -1865,16 +1923,16 @@ Specifies the endpoint for telemetry data uploads. Specifies the file path for the TCP listener configuration. -| influxdb3 serve option | Environment variable | -| :-------------------------- | :----------------------------------- | -| `--tcp-listener-file-path` | `INFLUXDB3_TCP_LISTINER_FILE_PATH` | +| influxdb3 serve option | Environment variable | +| :------------------------- | :--------------------------------- | +| `--tcp-listener-file-path` | `INFLUXDB3_TCP_LISTINER_FILE_PATH` | ---- +*** #### admin-token-recovery-tcp-listener-file-path Specifies the TCP listener file path for admin token recovery operations. -| influxdb3 serve option | Environment variable | -| :---------------------------------------------- | :-------------------------------------------------------- | -| `--admin-token-recovery-tcp-listener-file-path` | `INFLUXDB3_ADMIN_TOKEN_RECOVERY_TCP_LISTENER_FILE_PATH` | +| influxdb3 serve option | Environment variable | +| :---------------------------------------------- | :------------------------------------------------------ | +| `--admin-token-recovery-tcp-listener-file-path` | `INFLUXDB3_ADMIN_TOKEN_RECOVERY_TCP_LISTENER_FILE_PATH` | diff --git a/content/shared/influxdb3-cli/install/package.md b/content/shared/influxdb3-cli/install/package.md index d40e626c1..ea30d7f3b 100644 --- a/content/shared/influxdb3-cli/install/package.md +++ b/content/shared/influxdb3-cli/install/package.md @@ -1,54 +1,132 @@ -The `influxdb3 install package` command installs Python packages for use in [InfluxDB 3 processing engine plugins](/influxdb3/version/process/). +The `influxdb3 install package` command installs Python packages within the plugin environment for use in [{{< product-name >}} processing engine plugins](/influxdb3/version/process/). +Use this command to add external dependencies that your plugins require, such as data processing libraries, notification tools, or forecasting packages. ## Usage -```bash { placeholders="PACKAGE_NAME" } -influxdb3 install package --packages PACKAGE_NAME +```bash +influxdb3 install package [OPTIONS] [PACKAGES]... ``` -Replace the following: +## Arguments -- {{% code-placeholder-key %}}`PACKAGE_NAME`{{% /code-placeholder-key %}}: the name of the Python package to install +- **`[PACKAGES]...`**: One or more package names to install (space-separated) ## Options -| Option | Description | Default | Environment | Required | -|--------|-------------|---------|-------------|----------| -| `--packages` | Python package names to install (comma-separated) | | | | -| `-r`, `--requirements` | Path to requirements.txt file | | | | -| `-H`, `--host` | Host URL of the running {{< product-name >}} server | `http://127.0.0.1:8181` | `INFLUXDB3_HOST_URL` | | -| `--token` | The token for authentication with the InfluxDB 3 server | | `INFLUXDB3_AUTH_TOKEN` | | -| `--tls-ca` | Path to a custom TLS certificate authority for testing with self-signed certificates | | `INFLUXDB3_TLS_CA` | | -| `--plugin-dir` | Location of the plugins directory | | `INFLUXDB3_PLUGIN_DIR` | | -| `--virtual-env-location` | Location of the Python virtual environment | | `VIRTUAL_ENV` | | -| `--package-manager` | Package manager to use for installing packages | `discover` | | | +| Option | Description | Default | Environment Variable | +| :---------------------------------------------- | :------------------------------------------------------------------ | :---------------------- | :-------------------------- | +| `-H`, `--host <HOST_URL>` | The host URL of the running {{< product-name >}} server | `http://127.0.0.1:8181` | `INFLUXDB3_HOST_URL` | +| `--token <AUTH_TOKEN>` | The token for authentication with the {{< product-name >}} server | | `INFLUXDB3_AUTH_TOKEN` | +| `--plugin-dir <PLUGIN_DIR>` | Location of the plugins directory | `/plugins` | `INFLUXDB3_PLUGIN_DIR` | +| `--virtual-env-location <VIRTUAL_ENV_LOCATION>` | Custom virtual environment location | | `VIRTUAL_ENV` | +| `--package-manager <PACKAGE_MANAGER>` | Package manager to use: `discover`, `pip`, `uv`, or `disabled` | `discover` | `INFLUXDB3_PACKAGE_MANAGER` | +| `--plugin-repo <PLUGIN_REPO>` | Plugin repository URL | | `INFLUXDB3_PLUGIN_REPO` | +| `-r`, `--requirements <REQUIREMENTS>` | Path to a `requirements.txt` file | | | +| `--tls-ca <CA_CERT>` | Custom CA certificate for TLS (useful for self-signed certificates) | | `INFLUXDB3_TLS_CA` | +| `-h`, `--help` | Print help information | | | +| `--help-all` | Print detailed help information | | | ## Examples ### Install a single package -```bash { placeholders="pandas" } -influxdb3 install package --packages pandas +```bash +influxdb3 install package pandas ``` ### Install multiple packages ```bash -influxdb3 install package --packages pandas,numpy,scipy +influxdb3 install package pint pandas requests ``` -### Install packages from requirements file +### Install packages from a requirements file ```bash influxdb3 install package -r requirements.txt ``` -### Install with authentication +### Install packages with custom host and authentication -```bash { placeholders="AUTH_TOKEN|pandas" } -influxdb3 install package --token AUTH_TOKEN --packages pandas +```bash { placeholders="AUTH_TOKEN" } +influxdb3 install package \ + --host http://localhost:8181 \ + --token AUTH_TOKEN \ + pint pandas ``` Replace the following: - {{% code-placeholder-key %}}`AUTH_TOKEN`{{% /code-placeholder-key %}}: your {{% token-link "admin" %}} for your {{< product-name >}} instance + +### Install packages with a specific package manager + +```bash +influxdb3 install package \ + --package-manager uv \ + prophet adtk +``` + +### Install packages with a custom CA certificate + +```bash +influxdb3 install package \ + --tls-ca /path/to/ca-cert.pem \ + requests +``` + +## Package management + +### Package manager selection + +By default (`--package-manager discover`), the CLI automatically detects and uses the best available package manager: + +1. **uv** (preferred): Faster package installation +2. **pip** (fallback): Standard Python package manager + +### Virtual environment + +The CLI manages a virtual environment for plugin packages to avoid conflicts with system Python packages. +You can customize the virtual environment location with `--virtual-env-location` or the `VIRTUAL_ENV` environment variable. + +### Security mode + +If your {{< product-name >}} server was started with [`--package-manager disabled`](/influxdb3/version/reference/config-options/#package-manager), the `influxdb3 install package` command is blocked for security and compliance requirements. + +When attempting to install packages with this command while the server has package installation disabled, the command fails with a `403 Forbidden` error: + +``` +Package installation has been disabled. Contact your administrator for more information. +``` + +The server's `--package-manager disabled` setting is designed for: + +- **Enterprise security requirements**: Prevent arbitrary package installation +- **Compliance environments**: Control exactly which packages are available +- **Air-gapped deployments**: Pre-install all dependencies before deployment +- **Multi-tenant scenarios**: Prevent tenants from installing potentially malicious packages + +In these environments, administrators must pre-install all required Python packages into the server's virtual environment before starting {{< product-name >}}. + +For more information, see the [`package-manager`](/influxdb3/version/reference/config-options/#package-manager) configuration option. + +### Troubleshooting + +If package installation fails: + +- **Check if package installation is disabled**: If you receive a `403 Forbidden` error, contact your administrator. Package installation may be disabled on your {{< product-name >}} instance. +- **Verify network connectivity**: Ensure your {{< product-name >}} instance can reach PyPI or your custom package repository +- **Check package names**: Verify package names are correct and available in the package repository +- **Review logs**: Check {{< product-name >}} server logs for detailed error messages +- **Test with pip**: Try installing the package directly with `pip` to verify it's available +- **Use requirements file**: For complex dependencies, use a `requirements.txt` file with version pinning +- **Check Docker disk space** (Docker environments only): If running {{< product-name >}} in Docker and seeing "No space left on device" errors, free up disk space: + + ```bash + # Check Docker disk usage + docker system df + + # Remove unused images and build cache + docker image prune -af + docker buildx prune -af + ``` From df06c64fb5efa03b8f65c1e424c169d27af18884 Mon Sep 17 00:00:00 2001 From: Jason Stirnaman <jstirnaman@influxdata.com> Date: Wed, 5 Nov 2025 00:09:14 -0500 Subject: [PATCH 48/49] New Enterprise CLI commands: `show nodes` and `stop` (#6510) * Closes #6509 New Ent 3 CLI Commands 1. influxdb3 stop - Parent command for node lifecycle management 2. influxdb3 stop node - Stop a node in the Enterprise cluster and free up licensed cores 3. influxdb3 show nodes - Display information about nodes in the cluster Files Created Shared Content Files (only used by Ent3 for now): - content/shared/influxdb3-cli/stop/_index.md - Stop command overview - content/shared/influxdb3-cli/stop/node.md - Stop node command details with examples - content/shared/influxdb3-cli/show/nodes.md - Show nodes command details with examples Enterprise-Specific Frontmatter Files: - content/influxdb3/enterprise/reference/cli/influxdb3/stop/_index.md - content/influxdb3/enterprise/reference/cli/influxdb3/stop/node.md - content/influxdb3/enterprise/reference/cli/influxdb3/show/nodes.md Updated Files: - Added stop command to the main influxdb3 CLI reference - Added nodes subcommand to the show command reference * Apply suggestion from @jstirnaman * Apply suggestion from @jstirnaman --- .../reference/cli/influxdb3/_index.md | 3 +- .../reference/cli/influxdb3/show/nodes.md | 18 +++ .../reference/cli/influxdb3/stop/_index.md | 15 +++ .../reference/cli/influxdb3/stop/node.md | 18 +++ content/shared/influxdb3-cli/show/_index.md | 18 +-- content/shared/influxdb3-cli/show/nodes.md | 122 ++++++++++++++++++ content/shared/influxdb3-cli/stop/_index.md | 23 ++++ content/shared/influxdb3-cli/stop/node.md | 116 +++++++++++++++++ 8 files changed, 323 insertions(+), 10 deletions(-) create mode 100644 content/influxdb3/enterprise/reference/cli/influxdb3/show/nodes.md create mode 100644 content/influxdb3/enterprise/reference/cli/influxdb3/stop/_index.md create mode 100644 content/influxdb3/enterprise/reference/cli/influxdb3/stop/node.md create mode 100644 content/shared/influxdb3-cli/show/nodes.md create mode 100644 content/shared/influxdb3-cli/stop/_index.md create mode 100644 content/shared/influxdb3-cli/stop/node.md diff --git a/content/influxdb3/enterprise/reference/cli/influxdb3/_index.md b/content/influxdb3/enterprise/reference/cli/influxdb3/_index.md index 3a5558a03..0ea63527f 100644 --- a/content/influxdb3/enterprise/reference/cli/influxdb3/_index.md +++ b/content/influxdb3/enterprise/reference/cli/influxdb3/_index.md @@ -31,6 +31,7 @@ influxdb3 [GLOBAL-OPTIONS] [COMMAND] | [query](/influxdb3/enterprise/reference/cli/influxdb3/query/) | Query {{% product-name %}} | | [serve](/influxdb3/enterprise/reference/cli/influxdb3/serve/) | Run the {{% product-name %}} server | | [show](/influxdb3/enterprise/reference/cli/influxdb3/show/) | List resources | +| [stop](/influxdb3/enterprise/reference/cli/influxdb3/stop/) | Mark nodes as stopped | | [test](/influxdb3/enterprise/reference/cli/influxdb3/test/) | Test plugins | | [update](/influxdb3/enterprise/reference/cli/influxdb3/update/) | Update resources | | [write](/influxdb3/enterprise/reference/cli/influxdb3/write/) | Write to {{% product-name %}} | @@ -85,7 +86,7 @@ In the examples below, replace the following: {{% code-placeholders "my-host-01|my-cluster-01" %}} -### Quick-start influxdb3 server +### Quick-start influxdb3 server <!--pytest.mark.skip--> diff --git a/content/influxdb3/enterprise/reference/cli/influxdb3/show/nodes.md b/content/influxdb3/enterprise/reference/cli/influxdb3/show/nodes.md new file mode 100644 index 000000000..bb35f7f03 --- /dev/null +++ b/content/influxdb3/enterprise/reference/cli/influxdb3/show/nodes.md @@ -0,0 +1,18 @@ +--- +title: influxdb3 show nodes +description: > + The `influxdb3 show nodes` command displays information about nodes in your InfluxDB 3 Enterprise cluster. +menu: + influxdb3_enterprise: + parent: influxdb3 show + name: influxdb3 show nodes +weight: 301 +related: + - /influxdb3/enterprise/reference/cli/influxdb3/stop/node/ + - /influxdb3/enterprise/reference/cli/influxdb3/serve/ +source: /shared/influxdb3-cli/show/nodes.md +--- + +<!-- +//SOURCE - content/shared/influxdb3-cli/show/nodes.md +--> diff --git a/content/influxdb3/enterprise/reference/cli/influxdb3/stop/_index.md b/content/influxdb3/enterprise/reference/cli/influxdb3/stop/_index.md new file mode 100644 index 000000000..2b28a3b0e --- /dev/null +++ b/content/influxdb3/enterprise/reference/cli/influxdb3/stop/_index.md @@ -0,0 +1,15 @@ +--- +title: influxdb3 stop +description: > + The `influxdb3 stop` command marks nodes as stopped in the catalog for your InfluxDB 3 Enterprise cluster. +menu: + influxdb3_enterprise: + parent: influxdb3 + name: influxdb3 stop +weight: 302 +source: /shared/influxdb3-cli/stop/_index.md +--- + +<!-- +//SOURCE - content/shared/influxdb3-cli/stop/_index.md +--> diff --git a/content/influxdb3/enterprise/reference/cli/influxdb3/stop/node.md b/content/influxdb3/enterprise/reference/cli/influxdb3/stop/node.md new file mode 100644 index 000000000..95f82f749 --- /dev/null +++ b/content/influxdb3/enterprise/reference/cli/influxdb3/stop/node.md @@ -0,0 +1,18 @@ +--- +title: influxdb3 stop node +description: > + The `influxdb3 stop node` command marks a node as stopped in the catalog and frees up its licensed cores for other nodes. +menu: + influxdb3_enterprise: + parent: influxdb3 stop + name: influxdb3 stop node +weight: 301 +related: + - /influxdb3/enterprise/reference/cli/influxdb3/show/nodes/ + - /influxdb3/enterprise/reference/cli/influxdb3/serve/ +source: /shared/influxdb3-cli/stop/node.md +--- + +<!-- +//SOURCE - content/shared/influxdb3-cli/stop/node.md +--> diff --git a/content/shared/influxdb3-cli/show/_index.md b/content/shared/influxdb3-cli/show/_index.md index b8c93fd7e..a72195110 100644 --- a/content/shared/influxdb3-cli/show/_index.md +++ b/content/shared/influxdb3-cli/show/_index.md @@ -1,4 +1,3 @@ - The `influxdb3 show` command lists resources in your {{< product-name >}} server. ## Usage @@ -11,14 +10,15 @@ influxdb3 show <SUBCOMMAND> ## Subcommands -| Subcommand | Description | -| :---------------------------------------------------------------------- | :--------------------------------------------- | -| [databases](/influxdb3/version/reference/cli/influxdb3/show/databases/) | List database | -{{% show-in "enterprise" %}}| [license](/influxdb3/version/reference/cli/influxdb3/show/license/) | Display license information |{{% /show-in %}} -| [plugins](/influxdb3/version/reference/cli/influxdb3/show/plugins/) | List loaded plugins | -| [system](/influxdb3/version/reference/cli/influxdb3/show/system/) | Display system table data | -| [tokens](/influxdb3/version/reference/cli/influxdb3/show/tokens/) | List authentication tokens | -| help | Print command help or the help of a subcommand | +| Subcommand | Description | | | +| :---------------------------------------------------------------------- | :------------------------------------------------------------------ | --------------------------- | ---------------- | +| [databases](/influxdb3/version/reference/cli/influxdb3/show/databases/) | List database | | | +| {{% show-in "enterprise" %}} | [license](/influxdb3/version/reference/cli/influxdb3/show/license/) | Display license information | {{% /show-in %}} | +| {{% show-in "enterprise" %}} | [nodes](/influxdb3/version/reference/cli/influxdb3/show/nodes/) | Display node information | {{% /show-in %}} | +| [plugins](/influxdb3/version/reference/cli/influxdb3/show/plugins/) | List loaded plugins | | | +| [system](/influxdb3/version/reference/cli/influxdb3/show/system/) | Display system table data | | | +| [tokens](/influxdb3/version/reference/cli/influxdb3/show/tokens/) | List authentication tokens | | | +| help | Print command help or the help of a subcommand | | | ## Options diff --git a/content/shared/influxdb3-cli/show/nodes.md b/content/shared/influxdb3-cli/show/nodes.md new file mode 100644 index 000000000..4e641d2f8 --- /dev/null +++ b/content/shared/influxdb3-cli/show/nodes.md @@ -0,0 +1,122 @@ +The `influxdb3 show nodes` command displays information about nodes in your {{< product-name >}} cluster, including their state, mode, and resource usage. + +## Usage + +<!--pytest.mark.skip--> + +```bash +influxdb3 show nodes [OPTIONS] +``` + +## Options + +| Option | | Description | +| :----- | :--------- | :--------------------------------------------------------------------------------------- | +| `-H` | `--host` | Host URL of the running {{< product-name >}} server (default is `http://127.0.0.1:8181`) | +| | `--format` | Output format: `pretty` (default), `json`, or `csv` | +| | `--token` | Authentication token | +| | `--tls-ca` | Path to a custom TLS certificate authority (for testing or self-signed certificates) | +| `-h` | `--help` | Print help information | + +### Option environment variables + +You can use the following environment variables to set command options: + +| Environment Variable | Option | +| :--------------------- | :-------- | +| `INFLUXDB3_HOST_URL` | `--host` | +| `INFLUXDB3_AUTH_TOKEN` | `--token` | + +## Output + +The command displays the following information for each node: + +- **node\_id**: The unique identifier for the node +- **node\_catalog\_id**: The internal catalog identifier +- **instance\_id**: The unique instance identifier +- **mode**: The node's operating modes (ingest, query, process, compact) +- **core\_count**: Number of CPU cores allocated to the node +- **state**: Current node state (`running` or `stopped`) +- **updated\_at**: Timestamp of the last update +- **cli\_params**: Command-line parameters used to start the node + +## Examples + +- [List all nodes in pretty format](#list-all-nodes-in-pretty-format) +- [List nodes in JSON format](#list-nodes-in-json-format) +- [List nodes on a remote server](#list-nodes-on-a-remote-server) + +### List all nodes in pretty format + +<!--pytest.mark.skip--> + +```bash +influxdb3 show nodes +``` + +<!--pytest-codeblocks:expected-output--> + +``` ++----------+-----------------+--------------------------------------+--------+------------+---------+---------------------------+ +| node_id | node_catalog_id | instance_id | mode | core_count | state | updated_at | ++----------+-----------------+--------------------------------------+--------+------------+---------+---------------------------+ +| node-1 | 0 | e38944e4-1204-4bb4-92f3-71138894d674 | ingest | 1 | running | 2025-09-04T10:15:57.126 | +| node-2 | 1 | f5418c97-eb6d-47b5-8176-efc0ad7b882e | ingest | 1 | stopped | 2025-09-04T10:16:57.503 | ++----------+-----------------+--------------------------------------+--------+------------+---------+---------------------------+ +``` + +### List nodes in JSON format + +<!--pytest.mark.skip--> + +```bash +influxdb3 show nodes --format json +``` + +The output is similar to the following: + +<!--pytest-codeblocks:expected-output--> + +```json +[ + { + "node_id": "node-1", + "node_catalog_id": 0, + "instance_id": "e38944e4-1204-4bb4-92f3-71138894d674", + "mode": [ + "ingest" + ], + "core_count": 1, + "state": "running", + "updated_at": "2025-09-04T10:15:57.126", + "cli_params": "{\"http-bind\":\"127.0.0.1:8181\",\"node-id\":\"node-1\",\"data-dir\":\"/path/to/data\",\"object-store\":\"file\",\"mode\":\"ingest\"}" + }, + { + "node_id": "node-2", + "node_catalog_id": 1, + "instance_id": "f5418c97-eb6d-47b5-8176-efc0ad7b882e", + "mode": [ + "ingest" + ], + "core_count": 1, + "state": "stopped", + "updated_at": "2025-09-04T10:16:57.503", + "cli_params": "{\"http-bind\":\"127.0.0.1:8182\",\"node-id\":\"node-2\",\"data-dir\":\"/path/to/data\",\"object-store\":\"file\",\"mode\":\"ingest\"}" + } +] +``` + +### List nodes on a remote server + +<!--pytest.mark.skip--> + +```bash { placeholders="AUTH_TOKEN|INFLUXDB_HOST" } +influxdb3 show nodes \ + --host INFLUXDB_HOST \ + --token AUTH_TOKEN +``` + +Replace the following: + +- {{% code-placeholder-key %}}`AUTH_TOKEN`{{% /code-placeholder-key %}}: Authentication token with sufficient privileges +- {{% code-placeholder-key %}}`INFLUXDB_HOST`{{% /code-placeholder-key %}}: Host URL of the running {{< product-name >}} server diff --git a/content/shared/influxdb3-cli/stop/_index.md b/content/shared/influxdb3-cli/stop/_index.md new file mode 100644 index 000000000..1d69dac43 --- /dev/null +++ b/content/shared/influxdb3-cli/stop/_index.md @@ -0,0 +1,23 @@ +The `influxdb3 stop` command marks nodes as stopped in the catalog for your {{< product-name >}} cluster. + +## Usage + +<!--pytest.mark.skip--> + +```bash +influxdb3 stop <SUBCOMMAND> +``` + +## Subcommands + +| Subcommand | Description | +| :------------------------------------------------------------ | :--------------------------------------------- | +| [node](/influxdb3/version/reference/cli/influxdb3/stop/node/) | Mark a node as stopped | +| help | Print command help or the help of a subcommand | + +## Options + +| Option | | Description | +| :----- | :----------- | :------------------------------ | +| `-h` | `--help` | Print help information | +| | `--help-all` | Print detailed help information | diff --git a/content/shared/influxdb3-cli/stop/node.md b/content/shared/influxdb3-cli/stop/node.md new file mode 100644 index 000000000..e470d3730 --- /dev/null +++ b/content/shared/influxdb3-cli/stop/node.md @@ -0,0 +1,116 @@ +The `influxdb3 stop node` command marks a node as stopped in the catalog, freeing up the licensed cores it was using for other nodes. + +> [!Important] +> This command is designed for cleaning up the catalog **after** you have already stopped the physical instance. +> It does not shut down the running process - you must stop the instance first (for example, using `kill` or stopping the container). + +## Usage + +<!--pytest.mark.skip--> + +```bash { placeholders="NODE_ID" } +influxdb3 stop node [OPTIONS] --node-id <NODE_ID> +``` + +## Options + +| Option | | Description | +| :----- | :---------- | :--------------------------------------------------------------------------------------- | +| | `--node-id` | *({{< req >}})* The node ID to stop | +| | `--force` | Skip confirmation prompt | +| `-H` | `--host` | Host URL of the running {{< product-name >}} server (default is `http://127.0.0.1:8181`) | +| | `--token` | Authentication token | +| | `--tls-ca` | Path to a custom TLS certificate authority (for testing or self-signed certificates) | +| `-h` | `--help` | Print help information | + +### Option environment variables + +You can use the following environment variables to set command options: + +| Environment Variable | Option | +| :--------------------- | :-------- | +| `INFLUXDB3_HOST_URL` | `--host` | +| `INFLUXDB3_AUTH_TOKEN` | `--token` | + +## Use case + +Use this command when you have forcefully stopped a node instance (for example, using `kill -9` or stopping a container) and need to update the catalog to reflect the change. +This frees up the licensed cores from the stopped node so other nodes can use them. + +## Behavior + +When you run this command: + +1. The command marks the specified node as `stopped` in the catalog +2. Licensed cores from the stopped node are freed for reuse by other nodes +3. Other nodes in the cluster see the update after their catalog sync interval (default 10 seconds) +4. The command requires authentication if the server has auth enabled + +> [!Warning] +> **Stop the instance first** +> +> This command only updates catalog metadata. +> Always stop the physical instance **before** running this command. +> If the instance is still running, it may cause inconsistencies in the cluster. + +## Examples + +- [Clean up catalog after killing a node](#clean-up-catalog-after-killing-a-node) +- [Clean up catalog without confirmation](#clean-up-catalog-without-confirmation) +- [Clean up catalog on a remote server](#clean-up-catalog-on-a-remote-server) + +In the examples below, replace the following: + +- {{% code-placeholder-key %}}`NODE_ID`{{% /code-placeholder-key %}}: + The node identifier for the stopped instance +- {{% code-placeholder-key %}}`AUTH_TOKEN`{{% /code-placeholder-key %}}: + Authentication token with sufficient privileges +- {{% code-placeholder-key %}}`INFLUXDB_HOST`{{% /code-placeholder-key %}}: + Host URL of the running {{< product-name >}} server + +### Clean up catalog after killing a node + +This example shows the typical workflow: first stop the instance, then clean up the catalog. + +<!--pytest.mark.skip--> + +```bash { placeholders="NODE_ID|PID" } +# First, stop the physical instance (for example, using kill) +kill -9 <PID> + +# Then, clean up the catalog +influxdb3 stop node --node-id NODE_ID +``` + +The command prompts for confirmation. + +### Clean up catalog without confirmation + +<!--pytest.mark.skip--> + +```bash { placeholders="NODE_ID" } +influxdb3 stop node --node-id NODE_ID --force +``` + +### Clean up catalog on a remote server + +<!--pytest.mark.skip--> + +```bash { placeholders="AUTH_TOKEN|INFLUXDB_HOST|NODE_ID" } +influxdb3 stop node \ + --host INFLUXDB_HOST \ + --node-id NODE_ID \ + --token AUTH_TOKEN +``` + +## Verify node status + +After stopping a node, verify its status using the [`influxdb3 show nodes`](/influxdb3/version/reference/cli/influxdb3/show/nodes/) command: + +<!--pytest.mark.skip--> + +```bash +influxdb3 show nodes +``` + +The stopped node appears with `state: "stopped"` in the output. From 7f2178afa550fec48238c15ac92e609621845d46 Mon Sep 17 00:00:00 2001 From: Jason Stirnaman <jstirnaman@influxdata.com> Date: Wed, 5 Nov 2025 12:05:13 -0500 Subject: [PATCH 49/49] fix(influxdb3): document exec-mem-pool-bytes usage for data persistence (#6394) * fix(influxdb3): document exec-mem-pool-bytes usage for data persistence Updates documentation to reflect that exec-mem-pool-bytes is used for both query processing and parquet persistence operations, not just queries. Based on source code analysis showing the memory pool is used by: - Query executor for processing queries - Persister for converting WAL data to Parquet format Changes: - Updated config description to include "data operations" - Added memory usage info to durability docs for Parquet storage - Added troubleshooting section for memory-related write performance - Fixed capitalization of "object store" throughout Addresses DAR #499 Source analysis: influxdb3/src/commands/serve.rs:772-798 Shows separate executors for queries and write path operations, both using memory pools for data processing. * fix(influxdb3): broken links to no-sync --- .../shared/influxdb3-cli/config-options.md | 4 +- .../durability.md | 7 ++-- .../influxdb3-write-guides/troubleshoot.md | 41 +++++++++++++++++++ 3 files changed, 48 insertions(+), 4 deletions(-) diff --git a/content/shared/influxdb3-cli/config-options.md b/content/shared/influxdb3-cli/config-options.md index a8e2957f5..be27b83f4 100644 --- a/content/shared/influxdb3-cli/config-options.md +++ b/content/shared/influxdb3-cli/config-options.md @@ -1088,7 +1088,9 @@ Defines the address on which InfluxDB serves HTTP API requests. #### exec-mem-pool-bytes -Specifies the size of memory pool used during query execution. +Specifies the size of the memory pool used for query processing and data operations. +This memory pool is used when {{% product-name %}} processes queries and performs +internal data management tasks. Can be given as absolute value in bytes or as a percentage of the total available memory--for example: `8000000000` or `10%`. diff --git a/content/shared/influxdb3-internals-reference/durability.md b/content/shared/influxdb3-internals-reference/durability.md index 678c435b4..8e7fee251 100644 --- a/content/shared/influxdb3-internals-reference/durability.md +++ b/content/shared/influxdb3-internals-reference/durability.md @@ -19,14 +19,14 @@ As written data moves through {{% product-name %}}, it follows a structured path - **Process**: InfluxDB validates incoming data before accepting it into the system. - **Impact**: Prevents malformed or unsupported data from entering the database. -- **Details**: The database validates incoming data and stores it in the write buffer (in memory). If [`no_sync=true`](#no-sync-write-option), the server sends a response to acknowledge the write. +- **Details**: The database validates incoming data and stores it in the write buffer (in memory). If `no_sync=true`, the server sends a response to acknowledge the write [without waiting for persistence](/influxdb3/version/reference/cli/influxdb3/write/#write-line-protocol-and-immediately-return-a-response). ### Write-ahead log (WAL) persistence - **Process**: The database flushes the write buffer to the WAL every second (default). - **Impact**: Ensures durability by persisting data to object storage. - **Tradeoff**: More frequent flushing improves durability but increases I/O overhead. -- **Details**: Every second (default), the database flushes the write buffer to the Write-Ahead Log (WAL) for persistence in the Object store. If [`no_sync=false`](#no-sync-write-option) (default), the server sends a response to acknowledge the write. +- **Details**: Every second (default), the database flushes the write buffer to the Write-Ahead Log (WAL) for persistence in the object store. If `no_sync=false` (default), the server sends a response to acknowledge the write. ### Query availability @@ -40,7 +40,8 @@ As written data moves through {{% product-name %}}, it follows a structured path - **Process**: Every ten minutes (default), data is persisted to Parquet files in object storage. - **Impact**: Provides durable, long-term storage. - **Tradeoff**: More frequent persistence reduces reliance on the WAL but increases I/O costs. -- **Details**: Every ten minutes (default), the {{% product-name %}} persists the oldest data from the queryable buffer to the Object store in Parquet format, and keeps the remaining data (the most recent 5 minutes) in memory. +- **Memory usage**: The persistence process uses memory from the configured memory pool ([`exec-mem-pool-bytes`](/influxdb3/version/reference/config-options/#exec-mem-pool-bytes)) when converting data to Parquet format. For write-heavy workloads, ensure adequate memory is allocated. +- **Details**: Every ten minutes (default), {{% product-name %}} persists the oldest data from the queryable buffer to the object store in Parquet format, and keeps the remaining data (the most recent 5 minutes) in memory. ### In-memory cache diff --git a/content/shared/influxdb3-write-guides/troubleshoot.md b/content/shared/influxdb3-write-guides/troubleshoot.md index 2f7d04d10..4b998e152 100644 --- a/content/shared/influxdb3-write-guides/troubleshoot.md +++ b/content/shared/influxdb3-write-guides/troubleshoot.md @@ -6,6 +6,7 @@ Learn how to avoid unexpected results and recover from errors when writing to - [Review HTTP status codes](#review-http-status-codes) - [Troubleshoot failures](#troubleshoot-failures) - [Troubleshoot rejected points](#troubleshoot-rejected-points) +{{% show-in "core,enterprise" %}}- [Troubleshoot write performance issues](#troubleshoot-write-performance-issues){{% /show-in %}} ## Handle write responses @@ -65,3 +66,43 @@ InfluxDB rejects points that don't match the schema of existing data. Check for [field data type](/influxdb3/version/reference/syntax/line-protocol/#data-types-and-format) differences between the rejected data point and points within the same database--for example, did you attempt to write `string` data to an `int` field? + +{{% show-in "core,enterprise" %}} + +## Troubleshoot write performance issues + +If you experience slow write performance or timeouts during high-volume ingestion, +consider the following: + +### Memory configuration + +{{% product-name %}} uses memory for both query processing and internal data operations, +including converting data to Parquet format during persistence. +For write-heavy workloads, insufficient memory allocation can cause performance issues. + +**Symptoms of memory-related write issues:** +- Slow write performance during data persistence (typically every 10 minutes) +- Increased response times during high-volume ingestion +- Memory-related errors in server logs + +**Solutions:** +- Increase the [`exec-mem-pool-bytes`](/influxdb3/version/reference/config-options/#exec-mem-pool-bytes) + configuration to allocate more memory for data operations. + For write-heavy workloads, consider setting this to 30-40% of available memory. +- Monitor memory usage during peak write periods to identify bottlenecks. +- Adjust the [`gen1-duration`](/influxdb3/version/reference/config-options/#gen1-duration) + to control how frequently data is persisted to Parquet format. + +### Example configuration for write-heavy workloads + +```bash { placeholders="PERCENTAGE" } +influxdb3 serve \ + --exec-mem-pool-bytes PERCENTAGE \ + --gen1-duration 15m \ + # ... other options +``` + +Replace {{% code-placeholder-key %}}`PERCENTAGE`{{% /code-placeholder-key %}} with the percentage +of available memory to allocate (for example, `35%` for write-heavy workloads). + +{{% /show-in %}}