From 22b3460178702871dbf39b3e9af001046aa063e7 Mon Sep 17 00:00:00 2001 From: Forrest Evans Date: Tue, 15 Oct 2024 12:20:57 -0700 Subject: [PATCH 01/14] Initial update to include Containers section --- docs/.vuepress/navbar-menus/learning.js | 2 +- .../assets/img/solutions-name-project.png | Bin 0 -> 47698 bytes docs/.vuepress/sidebar-menus/learning.ts | 22 +++++++-- .../auto-diagnostics-github-script.md | 0 .../auto-incident-kubernetes-logs.md | 0 .../solutions/containers/getting-started.md | 38 +++++++++++++++ docs/learning/solutions/containers/index.md | 44 ++++++++++++++++++ docs/learning/solutions/index.md | 8 +++- 8 files changed, 109 insertions(+), 5 deletions(-) create mode 100644 docs/.vuepress/public/assets/img/solutions-name-project.png rename docs/learning/solutions/{ => automated-diagnostics/examples}/auto-diagnostics-github-script.md (100%) rename docs/learning/solutions/{ => automated-diagnostics/examples}/auto-incident-kubernetes-logs.md (100%) create mode 100644 docs/learning/solutions/containers/getting-started.md create mode 100644 docs/learning/solutions/containers/index.md diff --git a/docs/.vuepress/navbar-menus/learning.js b/docs/.vuepress/navbar-menus/learning.js index ae09937ed..bbb849f62 100644 --- a/docs/.vuepress/navbar-menus/learning.js +++ b/docs/.vuepress/navbar-menus/learning.js @@ -12,7 +12,7 @@ export default [{ }, { text: 'Solutions', - link: '/learning/solutions/automated-diagnostics/index.md' + link: '/learning/solutions/index.md' }, { text: 'Terminology', diff --git a/docs/.vuepress/public/assets/img/solutions-name-project.png b/docs/.vuepress/public/assets/img/solutions-name-project.png new file mode 100644 index 0000000000000000000000000000000000000000..519946367ea951d2704f2f9ffd883629a9efcdce GIT binary patch literal 47698 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 d6zK8|Z%yUhn@k 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 YV*9)6LOon#6Zo^UK7F$CC!ZVt15Sr!QUCw| literal 0 HcmV?d00001 diff --git a/docs/.vuepress/sidebar-menus/learning.ts b/docs/.vuepress/sidebar-menus/learning.ts index ebc14add1..24d283796 100644 --- a/docs/.vuepress/sidebar-menus/learning.ts +++ b/docs/.vuepress/sidebar-menus/learning.ts @@ -178,11 +178,12 @@ export default [{ }, { text: 'Solutions', + link: '/learning/solutions/index.md', collapsible: true, children: [ { text: 'Automated Diagnostics', - link: '/learning/solutions/automated-diagnostics/index', + link: '/learning/solutions/automated-diagnostics/index.md', collapsible: true, children: [ { link: '/learning/solutions/automated-diagnostics/index.md', text: 'Solution Summary' }, @@ -220,8 +221,23 @@ export default [{ { link: '/learning/solutions/automated-diagnostics/simplifying-diagnostics.md', text: 'Simplifying Diagnostics Output' }, { link: '/learning/solutions/automated-diagnostics/automation-beyond-triage.md', text: 'Automation Beyond Triage' }, { link: '/learning/solutions/automated-diagnostics/feedback-faq.md', text: 'Feedback & FAQ' } - // {link: '/learning/solutions/auto-incident-kubernetes-logs.md', text: 'Example: Kubernetes Logs'}, - // {link: '/learning/solutions/auto-diagnostics-github-script.md', text: 'Example: Raw Scripts'} + // {link: '/learning/solutions/automated-diagnostics/examples/auto-incident-kubernetes-logs.md', text: 'Example: Kubernetes Logs'}, + // {link: '/learning/solutions/automated-diagnostics/examples/auto-diagnostics-github-script.md', text: 'Example: Raw Scripts'} + ] + }, + { + text: 'Containers', + collapsible: true, + children: [ + { + text: 'Containers', + link: '/learning/solutions/containers/index.md', + collapsible: true, + children: [ + { link: '/learning/solutions/containers/index.md', text: 'Solution Summary'}, + { link: '/learning/solutions/containers/getting-started.md', text: 'Getting Started'} + ] + } ] } ] diff --git a/docs/learning/solutions/auto-diagnostics-github-script.md b/docs/learning/solutions/automated-diagnostics/examples/auto-diagnostics-github-script.md similarity index 100% rename from docs/learning/solutions/auto-diagnostics-github-script.md rename to docs/learning/solutions/automated-diagnostics/examples/auto-diagnostics-github-script.md diff --git a/docs/learning/solutions/auto-incident-kubernetes-logs.md b/docs/learning/solutions/automated-diagnostics/examples/auto-incident-kubernetes-logs.md similarity index 100% rename from docs/learning/solutions/auto-incident-kubernetes-logs.md rename to docs/learning/solutions/automated-diagnostics/examples/auto-incident-kubernetes-logs.md diff --git a/docs/learning/solutions/containers/getting-started.md b/docs/learning/solutions/containers/getting-started.md new file mode 100644 index 000000000..3a97185e2 --- /dev/null +++ b/docs/learning/solutions/containers/getting-started.md @@ -0,0 +1,38 @@ +# Containers +## Getting Started + +::: tip Prerequisites +To use the Containers Solution, you must have a **PagerDuty Runbook Automation** (Self-Hosted or SaaS) instance available. + +If you do not have a license for either of these products, [contact us](https://www.pagerduty.com/contact-us/runbook-automation/) to learn more. + +**You must be running at least version 5.5.0 to use this Solution.** New instances of Runbook Automation have the Solution installed and included by default.
+::: + +For all Runbook Automation environments, follow the steps below to download and import the Jobs and Tours: +### Download the **Automated Diagnostics Solution package**. +1. Download the latest release of the Solution [here](#).
+ +### Create a project in your Runbook Automation environment: +1. Click the **P** in the upper left corner to navigate to the Main Dashboard

+2. Click the blue **New Project+** button:
+![Add Project](/assets/img/solutions-auto-diag-add-project.png)

+3. Copy the following into the **Project Name** field: **`containers-solution`**
+![Name Project](/assets/img/solutions-name-project.png) + :::warning Heads Up + Be sure to name the project **`containers-solution`**. Otherwise, some of the prebuilt Jobs and Tours will not function properly. + ::: +4. Provide a Label for a more "user-friendly" name - such as _Containers Solution_

+5. Click the green **Create** button + +### Import the archive file into your new project: +1. In your new project, click the **gears** in the lower left corner for **Project Settings**

+2. Choose **Import Archive** from the menu: +![Import Archive](/assets/img/solutions-auto-diag-import-archive.png)

+3. For the **Choose a Rundeck archive**, select the **`containers-solution.jar`** from the downloaded resources.

+4. Leave all of the import settings as their defaults

+5. Click the green **Import** button + ::: tip Note + The Tours in the Solution will help you prepare the project for the jobs included. Be sure to start there and name your project properly using the instructions above. + If you are looking for a more general introduction to PagerDuty’s Automation products, it is recommended to review the contents of the [Welcome Project](/learning/howto/welcome-project-starter.md). + ::: \ No newline at end of file diff --git a/docs/learning/solutions/containers/index.md b/docs/learning/solutions/containers/index.md new file mode 100644 index 000000000..5c7a050a2 --- /dev/null +++ b/docs/learning/solutions/containers/index.md @@ -0,0 +1,44 @@ +# Solution - Containers + +## What is PagerDuty's Containers Solution? +Automating container management with Runbook Automation can significantly enhance your business operations by streamlining and simplifying the deployment, scaling, and maintenance of containerized applications. By leveraging Rundeck's powerful automation capabilities, you can reduce manual intervention, minimize human error, and ensure consistent and reliable execution of tasks. This leads to increased efficiency and productivity, as routine and repetitive tasks are handled automatically, freeing up your IT team to focus on more strategic initiatives. + +### Use Cases +There are multiple use-cases and benefits to the Containers solution. Here are a few of the most common examples: + +- **Scale Kubernetes Deployoments**: Integrate seamlessly with Kubernetes clusters, enabling DevOps teams to automate complex scaling tasks +- **Diganose issues by checking Pod Status and Errors**: Create jobs to automatically check pod status, retrieve logs, and identify errors at set intervals or in response to specific triggers +- **Gather recent logs from Pods**: Capture state and log information before restarting containers to help troubleshoot after the solution is back online. +- **Start, Kill, and Execute Commands in Containers**: Execute commands in containers to control environment related issues and isolate code execution. + +### Prebuilt Automation +PagerDuty provides a solution that helps users start automating diagnostics quickly. This Solution consists of **prebuilt Automation Jobs** that show how the use cases above can be implemented in your environment. (Note: Some of these solutions may exist in other Solution Packages.) + + \ No newline at end of file diff --git a/docs/learning/solutions/index.md b/docs/learning/solutions/index.md index edf0b3702..b7b489ce5 100644 --- a/docs/learning/solutions/index.md +++ b/docs/learning/solutions/index.md @@ -1,3 +1,9 @@ # Solutions -[Learn more about Automated Diagnostics](/learning/solutions/automated-diagnostics/index.md) \ No newline at end of file +[Automated Diagnostics](/learning/solutions/automated-diagnostics/index.md) + +Automated diagnostics is a solution provided by integrating PagerDuty's Incident Response and Runbook Automation products. By automating the retrieval of “diagnostic” data during incidents, you can shorten the length of incidents, reduce the number of individuals paged to help with resolution, and gather evidence for fixing the root-cause after the incident. + +[Containers](/learning/solutions/containers/index.md) + +Automating container management rocks! \ No newline at end of file From 4d38d7f047bed0ebca0c40e6b51c89f5d000ee1b Mon Sep 17 00:00:00 2001 From: Forrest Evans Date: Tue, 15 Oct 2024 12:36:23 -0700 Subject: [PATCH 02/14] Menu fix / Examples link to AutoDiag --- docs/.vuepress/sidebar-menus/learning.ts | 12 +++--------- docs/learning/solutions/containers/index.md | 10 +++++----- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/docs/.vuepress/sidebar-menus/learning.ts b/docs/.vuepress/sidebar-menus/learning.ts index 24d283796..0ec5cc121 100644 --- a/docs/.vuepress/sidebar-menus/learning.ts +++ b/docs/.vuepress/sidebar-menus/learning.ts @@ -227,17 +227,11 @@ export default [{ }, { text: 'Containers', + link: '/learning/solutions/containers/index.md', collapsible: true, children: [ - { - text: 'Containers', - link: '/learning/solutions/containers/index.md', - collapsible: true, - children: [ - { link: '/learning/solutions/containers/index.md', text: 'Solution Summary'}, - { link: '/learning/solutions/containers/getting-started.md', text: 'Getting Started'} - ] - } + { link: '/learning/solutions/containers/index.md', text: 'Solution Summary'}, + { link: '/learning/solutions/containers/getting-started.md', text: 'Getting Started'} ] } ] diff --git a/docs/learning/solutions/containers/index.md b/docs/learning/solutions/containers/index.md index 5c7a050a2..a9987d23a 100644 --- a/docs/learning/solutions/containers/index.md +++ b/docs/learning/solutions/containers/index.md @@ -14,12 +14,12 @@ There are multiple use-cases and benefits to the Containers solution. Here are a ### Prebuilt Automation PagerDuty provides a solution that helps users start automating diagnostics quickly. This Solution consists of **prebuilt Automation Jobs** that show how the use cases above can be implemented in your environment. (Note: Some of these solutions may exist in other Solution Packages.) -
+
----++++ From 0c0efe547f8c52f41d4a32d406de2e5c7fa78403 Mon Sep 17 00:00:00 2001 From: Forrest Evans Date: Tue, 15 Oct 2024 13:33:17 -0700 Subject: [PATCH 03/14] fix links --- .../examples-overview.md | 44 +++++++-------- .../examples/kubernetes.md | 5 +- .../solutions/automated-diagnostics/index.md | 56 ++++++++++--------- docs/learning/solutions/containers/index.md | 8 +-- 4 files changed, 56 insertions(+), 57 deletions(-) diff --git a/docs/learning/solutions/automated-diagnostics/examples-overview.md b/docs/learning/solutions/automated-diagnostics/examples-overview.md index ab6d92ccd..b512f0f82 100644 --- a/docs/learning/solutions/automated-diagnostics/examples-overview.md +++ b/docs/learning/solutions/automated-diagnostics/examples-overview.md @@ -32,15 +32,15 @@ Other prebuilt Jobs are included in the Automated Diagnostics Solution package, diff --git a/docs/learning/solutions/automated-diagnostics/examples/kubernetes.md b/docs/learning/solutions/automated-diagnostics/examples/kubernetes.md index 91990ea34..5617dd1de 100644 --- a/docs/learning/solutions/automated-diagnostics/examples/kubernetes.md +++ b/docs/learning/solutions/automated-diagnostics/examples/kubernetes.md @@ -1,7 +1,4 @@ -#### Automated Diagnostics ---- - -## Kubernetes +## Kubernetes Solutions Kubernetes is an open-source platform that allows for the management on a containers on a large scale. Developers, IT administrators, and DevOps engineers use Kubernetes to automate the deployment, scaling, maintenance, scheduling, and operation of _"containerized"_ applications and services. Kubernetes is frequently used for managing microservices applications with multiple service instances, where each microservice is deployed in an individual container. diff --git a/docs/learning/solutions/automated-diagnostics/index.md b/docs/learning/solutions/automated-diagnostics/index.md index fca217cd9..14e46de13 100644 --- a/docs/learning/solutions/automated-diagnostics/index.md +++ b/docs/learning/solutions/automated-diagnostics/index.md @@ -40,6 +40,8 @@ Diagnostics retrieved using **Runbook Automation** can be made available in mult ## Examples & Templates This guide includes a full section on Examples & Best Practices - a preview of that is shown here: + + -
- +

Stopped ECS Task Errors
- +

ELB Targets Health
- +

CloudWatch Logs
@@ -72,88 +72,88 @@ Other prebuilt Jobs are included in the Automated Diagnostics Solution package,

GKE Cluster Connectivity
- +

Top CPU Consuming Processes
- +

Retrieve Errors from Syslog
- +

List Top Disk Consuming Files
- +

Active Directory Replication Statistics
- +

Retrieve IIS Web Server Logs
- +

SMB Connection Failures
- +

API Health Check
- +

Recent Pod Logs
- +

Recent Kubernetes Events
- +

Pod Status & Errors
- +

Retrieve Deployment Diagnostics
- +

Top Resource Consuming Queries
- +

Blocking Locks
- +

Missing Indexes
- +

BGP Route Flapping
- +

Check Spanning Tree
- +

Check Duplex Mismatch
- +

Retrieve Application Logs
- +

Retrieve Saved Queries
+
----++++ diff --git a/docs/learning/solutions/containers/index.md b/docs/learning/solutions/containers/index.md index a9987d23a..adc8fc9fc 100644 --- a/docs/learning/solutions/containers/index.md +++ b/docs/learning/solutions/containers/index.md @@ -24,19 +24,19 @@ PagerDuty provides a solution that helps users start automating diagnostics quic From 813b45527270c21ded182df55173791e31b68b12 Mon Sep 17 00:00:00 2001 From: Forrest Evans Date: Wed, 16 Oct 2024 08:19:04 -0700 Subject: [PATCH 04/14] Update index.md --- docs/learning/solutions/containers/index.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/learning/solutions/containers/index.md b/docs/learning/solutions/containers/index.md index adc8fc9fc..db6ed80bd 100644 --- a/docs/learning/solutions/containers/index.md +++ b/docs/learning/solutions/containers/index.md @@ -14,6 +14,14 @@ There are multiple use-cases and benefits to the Containers solution. Here are a ### Prebuilt Automation PagerDuty provides a solution that helps users start automating diagnostics quickly. This Solution consists of **prebuilt Automation Jobs** that show how the use cases above can be implemented in your environment. (Note: Some of these solutions may exist in other Solution Packages.) +
- +

Stopped ECS Task Errors
- +

ELB Targets Health
- +

CloudWatch Logs
@@ -98,88 +100,88 @@ This guide includes a full section on Examples & Best Practices - a preview of t

GKE Cluster Connectivity
- +

Top CPU Consuming Processes
- +

Retrieve Errors from Syslog
- +

List Top Disk Consuming Files
- +

Active Directory Replication Statistics
- +

Retrieve IIS Web Server Logs
- +

SMB Connection Failures
- +

API Health Check
- +

Recent Pod Logs
- +

Recent Kubernetes Events
- +

Pod Status & Errors
- +

Retrieve Deployment Diagnostics
- +

Top Resource Consuming Queries
- +

Blocking Locks
- +

Missing Indexes
- +

BGP Route Flapping
- +

Check Spanning Tree
- +

Check Duplex Mismatch
- +

Retrieve Application Logs
- +

Retrieve Saved Queries
- +

Recent Pod Logs
- +

Recent Kubernetes Events
- +

Pod Status & Errors
- +

Retrieve Deployment Diagnostics
From 7cc654bbc0089286376fb96525e93721d31e50ba Mon Sep 17 00:00:00 2001 From: Forrest Evans Date: Thu, 17 Oct 2024 10:49:55 -0700 Subject: [PATCH 05/14] Update index.md --- docs/learning/solutions/containers/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/learning/solutions/containers/index.md b/docs/learning/solutions/containers/index.md index db6ed80bd..d74167eef 100644 --- a/docs/learning/solutions/containers/index.md +++ b/docs/learning/solutions/containers/index.md @@ -1,6 +1,6 @@ # Solution - Containers -## What is PagerDuty's Containers Solution? +## Overview Automating container management with Runbook Automation can significantly enhance your business operations by streamlining and simplifying the deployment, scaling, and maintenance of containerized applications. By leveraging Rundeck's powerful automation capabilities, you can reduce manual intervention, minimize human error, and ensure consistent and reliable execution of tasks. This leads to increased efficiency and productivity, as routine and repetitive tasks are handled automatically, freeing up your IT team to focus on more strategic initiatives. ### Use Cases From 9ec4581209919210d5296c4977b7d941983fd9a0 Mon Sep 17 00:00:00 2001 From: Forrest Evans Date: Thu, 17 Oct 2024 15:03:06 -0700 Subject: [PATCH 06/14] Solutions Content Uplift --- docs/.vuepress/sidebar-menus/learning.ts | 36 +-- docs/.vuepress/styles/index.scss | 1 - .../examples/containers.md | 7 - .../solutions/automated-diagnostics/index.md | 220 ++++-------------- docs/learning/solutions/containers/index.md | 45 +--- .../k8s-app-debug-capture.md | 0 .../k8s-logs-events.md | 0 .../examples => containers}/kubernetes.md | 0 .../db-and-autodiag.md} | 5 +- .../solutions/database-management/index.md | 25 ++ .../{containers => }/getting-started.md | 17 +- docs/learning/solutions/index.md | 6 +- 12 files changed, 119 insertions(+), 243 deletions(-) delete mode 100644 docs/learning/solutions/automated-diagnostics/examples/containers.md rename docs/learning/solutions/{automated-diagnostics/examples => containers}/k8s-app-debug-capture.md (100%) rename docs/learning/solutions/{automated-diagnostics/examples => containers}/k8s-logs-events.md (100%) rename docs/learning/solutions/{automated-diagnostics/examples => containers}/kubernetes.md (100%) rename docs/learning/solutions/{automated-diagnostics/examples/databases.md => database-management/db-and-autodiag.md} (86%) create mode 100644 docs/learning/solutions/database-management/index.md rename docs/learning/solutions/{containers => }/getting-started.md (69%) diff --git a/docs/.vuepress/sidebar-menus/learning.ts b/docs/.vuepress/sidebar-menus/learning.ts index 0ec5cc121..36215afb7 100644 --- a/docs/.vuepress/sidebar-menus/learning.ts +++ b/docs/.vuepress/sidebar-menus/learning.ts @@ -201,17 +201,6 @@ export default [{ { link: '/learning/solutions/automated-diagnostics/examples/linux.md', text: 'Linux' }, { link: '/learning/solutions/automated-diagnostics/examples/windows.md', text: 'Windows' }, { link: '/learning/solutions/automated-diagnostics/examples/apis.md', text: 'SaaS & Internal API\'s' }, - { - text: 'Kubernetes', - link: '/learning/solutions/automated-diagnostics/examples/kubernetes', - collapsible: true, - children: [ - { link: '/learning/solutions/automated-diagnostics/examples/kubernetes', text: 'Kubernetes Examples' }, - { link: '/learning/solutions/automated-diagnostics/examples/k8s-logs-events.md', text: 'Pod Logs & K8s Events' }, - { link: '/learning/solutions/automated-diagnostics/examples/k8s-app-debug-capture.md', text: 'App Debug State Capture' } - ] - }, - { link: '/learning/solutions/automated-diagnostics/examples/databases.md', text: 'Databases' }, { link: '/learning/solutions/automated-diagnostics/examples/network-devices.md', text: 'Network Devices' }, { link: '/learning/solutions/automated-diagnostics/examples/observability-integrations.md', text: 'Observability Integrations' } ] @@ -221,8 +210,6 @@ export default [{ { link: '/learning/solutions/automated-diagnostics/simplifying-diagnostics.md', text: 'Simplifying Diagnostics Output' }, { link: '/learning/solutions/automated-diagnostics/automation-beyond-triage.md', text: 'Automation Beyond Triage' }, { link: '/learning/solutions/automated-diagnostics/feedback-faq.md', text: 'Feedback & FAQ' } - // {link: '/learning/solutions/automated-diagnostics/examples/auto-incident-kubernetes-logs.md', text: 'Example: Kubernetes Logs'}, - // {link: '/learning/solutions/automated-diagnostics/examples/auto-diagnostics-github-script.md', text: 'Example: Raw Scripts'} ] }, { @@ -231,9 +218,28 @@ export default [{ collapsible: true, children: [ { link: '/learning/solutions/containers/index.md', text: 'Solution Summary'}, - { link: '/learning/solutions/containers/getting-started.md', text: 'Getting Started'} + { + text: 'Kubernetes', + link: '/learning/solutions/automated-diagnostics/examples/kubernetes', + collapsible: true, + children: [ + { link: '/learning/solutions/containers/kubernetes', text: 'Kubernetes Examples' }, + { link: '/learning/solutions/containers/k8s-logs-events.md', text: 'Pod Logs & K8s Events' }, + { link: '/learning/solutions/containers/k8s-app-debug-capture.md', text: 'App Debug State Capture' } + ] + }, ] - } + }, + { + text: 'Database Mangement', + link: '/learning/solutions/database-management/index.md', + collapsible: true, + children: [ + { link: '/learning/solutions/database-management/index.md', text: 'Solution Summary' }, + { link: '/learning/solutions/database-management/db-and-autodiag.md', text: 'Databases + Auto Diagnostics' }, + ] + }, + { link: '/learning/solutions/getting-started.md', text: 'Getting Started with Solutions'} ] }, { diff --git a/docs/.vuepress/styles/index.scss b/docs/.vuepress/styles/index.scss index ba9f38a61..766867634 100644 --- a/docs/.vuepress/styles/index.scss +++ b/docs/.vuepress/styles/index.scss @@ -13,7 +13,6 @@ h6 { font-weight: 700; } - #main-title { -webkit-text-fill-color: var(--text-color); color: var(--text-color); diff --git a/docs/learning/solutions/automated-diagnostics/examples/containers.md b/docs/learning/solutions/automated-diagnostics/examples/containers.md deleted file mode 100644 index 5f5c60cdd..000000000 --- a/docs/learning/solutions/automated-diagnostics/examples/containers.md +++ /dev/null @@ -1,7 +0,0 @@ -# Automated Diagnostics - -## Containers - - - -### Amazon ECS \ No newline at end of file diff --git a/docs/learning/solutions/automated-diagnostics/index.md b/docs/learning/solutions/automated-diagnostics/index.md index 14e46de13..66d3f75c9 100644 --- a/docs/learning/solutions/automated-diagnostics/index.md +++ b/docs/learning/solutions/automated-diagnostics/index.md @@ -26,9 +26,7 @@ PagerDuty provides a solution that helps users start automating diagnostics quic ![Automated Diagnostics within PagerDuty](/assets/img/diag-on-pd-timeline.png) -
- -![Verbose Diagnostics in Runbook Automation](/assets/img/diag-verbose-output.png) +
![Verbose Diagnostics in Runbook Automation](/assets/img/diag-verbose-output.png) As an example, if an incident is triggered for a service running in Kubernetes, PagerDuty Runbook Automation can retrieve information from logs, API’s, databases and other sources that support this service. This could be triggered with the click of a button or through event-driven invocation. @@ -41,173 +39,49 @@ Diagnostics retrieved using **Runbook Automation** can be made available in mult This guide includes a full section on Examples & Best Practices - a preview of that is shown here: - - -
------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -

Stopped ECS Task Errors
-
- -

ELB Targets Health
-
- -

CloudWatch Logs
-
- -

Azure Function App Health
-
- -

Azure File Sync
-
- -

Load Balancer Health Probes
-
- -

Load Balancer Health Checks
-
- -

Troubleshoot Firewall Rules
-
- -

GKE Cluster Connectivity
-
- -

Top CPU Consuming Processes
-
- -

Retrieve Errors from Syslog
-
- -

List Top Disk Consuming Files
-
- -

Active Directory Replication Statistics
-
- -

Retrieve IIS Web Server Logs
-
- -

SMB Connection Failures
-
- -

API Health Check
-
- -

Recent Pod Logs
-
- -

Recent Kubernetes Events
-
- -

Pod Status & Errors
-
- -

Retrieve Deployment Diagnostics
-
- -

Top Resource Consuming Queries
-
- -

Blocking Locks
-
- -

Missing Indexes
-
- -

BGP Route Flapping
-
- -

Check Spanning Tree
-
- -

Check Duplex Mismatch
-
- -

Retrieve Application Logs
-
- -

Retrieve Saved Queries
-


Intrinsic Latency Diagnostics Test


Check Redis Port Listening


Retrieve Redis Memory Statistics


Slow Log Entries


Check Database Storage Status


Query Nginx Status Endpoint


Retrieve Error Logs


Test Nginx Configuration


Retrieve Recent PostgreSQL Logs


Test for PostgreSQL Server Running


Check Compaction Statistics


Describe Kafka Topic


View Topic Messages


Retrieve Java Thread Dump


Retrieve Java Heap Dump


RabbitMQ Node Health
\ No newline at end of file +| Examples | +| --- | +| [Stopped ECS Task Error](/learning/solutions/automated-diagnostics/examples/public-cloud-providers.md) | +|[ELB Targets Health](/docs/learning/solutions/automated-diagnostics/examples/public-cloud-providers.html)| +|[CloudWatch Logs](/docs/learning/solutions/automated-diagnostics/examples/public-cloud-providers.html)| +|[Azure Function App Health](/docs/learning/solutions/automated-diagnostics/examples/public-cloud-providers.html#azure)| +|[Azure File Sync](/docs/learning/solutions/automated-diagnostics/examples/public-cloud-providers.html#azure)| +|[Load Balancer Health Probes](/docs/learning/solutions/automated-diagnostics/examples/public-cloud-providers.html#azure)| +|[Load Balancer Health Checks](/docs/learning/solutions/automated-diagnostics/examples/public-cloud-providers.html#google-cloud-platform-gcp)| +|[Troubleshoot Firewall Rules](/docs/learning/solutions/automated-diagnostics/examples/public-cloud-providers.html#google-cloud-platform-gcp)| +|[GKE Cluster Connectivity](/docs/learning/solutions/automated-diagnostics/examples/public-cloud-providers.html#google-cloud-platform-gcp)| +|[Top CPU Consuming Processes](/docs/learning/solutions/automated-diagnostics/examples/linux.html)| +|[Retrieve Errors from Syslog](/docs/learning/solutions/automated-diagnostics/examples/linux.html)| +|[List Top Disk Consuming Files](/docs/learning/solutions/automated-diagnostics/examples/linux.html)| +|[Active Directory Replication Statistics](/docs/learning/solutions/automated-diagnostics/examples/windows.html)| +|[Retrieve IIS Web Server Logs](/docs/learning/solutions/automated-diagnostics/examples/windows.html)| +|[SMB Connection Failures](/docs/learning/solutions/automated-diagnostics/examples/windows.html)| +|[API Health Check](/docs/learning/solutions/automated-diagnostics/examples/apis.html)| +|[Recent Pod Logs](/docs/learning/solutions/automated-diagnostics/examples/kubernetes.html)| +|[Recent Kubernetes Events](/docs/learning/solutions/automated-diagnostics/examples/kubernetes.html)| +|[Pod Status & Errors](/docs/learning/solutions/automated-diagnostics/examples/kubernetes.html)| +|[Retrieve Deployment Diagnostics](/docs/learning/solutions/automated-diagnostics/examples/kubernetes.html)| +|[Top Resource Consuming Queries](/docs/learning/solutions/automated-diagnostics/examples/databases.html)| +|[Blocking Locks](/docs/learning/solutions/automated-diagnostics/examples/databases.html)| +|[Missing Indexes](/docs/learning/solutions/automated-diagnostics/examples/databases.html)| +|[BGP Route Flapping](/docs/learning/solutions/automated-diagnostics/examples/network-devices.html)| +|[Check Spanning Tree](/docs/learning/solutions/automated-diagnostics/examples/network-devices.html)| +|[Check Duplex Mismatch](/docs/learning/solutions/automated-diagnostics/examples/network-devices.html)| +|[Retrieve Application Logs](/docs/learning/solutions/automated-diagnostics/examples/observability-integrations.html)| +|[Retrieve Saved Queries](/docs/learning/solutions/automated-diagnostics/examples/observability-integrations.html)| +|[Intrinsic Latency Diagnostics Test](#)| +|[Check Redis Port Listening](#)| +|[Retrieve Redis Memory Statistics](#)| +|[Slow Log Entries](#)| +|[Check Database Storage Status](#)| +|[Query Nginx Status Endpoint](#)| +|[Retrieve Error Logs](#)| +|[Test Nginx Configuration](#)| +|[Retrieve Recent PostgreSQL Logs](#)| +|[Test for PostgreSQL Server Running](#)| +|[Check Compaction Statistics](#)| +|[Describe Kafka Topic](#)| +|[View Topic Messages](#)| +|[Retrieve Java Thread Dump](#)| +|[Retrieve Java Heap Dump](#)| +|[RabbitMQ Node Health](#)| \ No newline at end of file diff --git a/docs/learning/solutions/containers/index.md b/docs/learning/solutions/containers/index.md index d74167eef..e9ab97c7f 100644 --- a/docs/learning/solutions/containers/index.md +++ b/docs/learning/solutions/containers/index.md @@ -1,4 +1,4 @@ -# Solution - Containers +# Container Solutions ## Overview Automating container management with Runbook Automation can significantly enhance your business operations by streamlining and simplifying the deployment, scaling, and maintenance of containerized applications. By leveraging Rundeck's powerful automation capabilities, you can reduce manual intervention, minimize human error, and ensure consistent and reliable execution of tasks. This leads to increased efficiency and productivity, as routine and repetitive tasks are handled automatically, freeing up your IT team to focus on more strategic initiatives. @@ -14,39 +14,10 @@ There are multiple use-cases and benefits to the Containers solution. Here are a ### Prebuilt Automation PagerDuty provides a solution that helps users start automating diagnostics quickly. This Solution consists of **prebuilt Automation Jobs** that show how the use cases above can be implemented in your environment. (Note: Some of these solutions may exist in other Solution Packages.) - - \ No newline at end of file + +| Examples | +| --- | +| [Recent Pod Logs](/learning/solutions/containers/kubernetes.md) | +| [Recent Kubernetes Events](/learning/solutions/containers/kubernetes.md) | +| [Pod Status & Errors](/learning/solutions/containers/kubernetes.md) | +| [Retrieve Deployment Diagnostics](/learning/solutions/containers/kubernetes.md) | diff --git a/docs/learning/solutions/automated-diagnostics/examples/k8s-app-debug-capture.md b/docs/learning/solutions/containers/k8s-app-debug-capture.md similarity index 100% rename from docs/learning/solutions/automated-diagnostics/examples/k8s-app-debug-capture.md rename to docs/learning/solutions/containers/k8s-app-debug-capture.md diff --git a/docs/learning/solutions/automated-diagnostics/examples/k8s-logs-events.md b/docs/learning/solutions/containers/k8s-logs-events.md similarity index 100% rename from docs/learning/solutions/automated-diagnostics/examples/k8s-logs-events.md rename to docs/learning/solutions/containers/k8s-logs-events.md diff --git a/docs/learning/solutions/automated-diagnostics/examples/kubernetes.md b/docs/learning/solutions/containers/kubernetes.md similarity index 100% rename from docs/learning/solutions/automated-diagnostics/examples/kubernetes.md rename to docs/learning/solutions/containers/kubernetes.md diff --git a/docs/learning/solutions/automated-diagnostics/examples/databases.md b/docs/learning/solutions/database-management/db-and-autodiag.md similarity index 86% rename from docs/learning/solutions/automated-diagnostics/examples/databases.md rename to docs/learning/solutions/database-management/db-and-autodiag.md index 576f1d006..c6357b5f9 100644 --- a/docs/learning/solutions/automated-diagnostics/examples/databases.md +++ b/docs/learning/solutions/database-management/db-and-autodiag.md @@ -1,6 +1,5 @@ -# Automated Diagnostics +# Database Management + Automated Diagonstics -## Databases Designing and building databases for today's modern applications is difficult and bugs can be hard to reproduce for the following reasons: **High Concurrency:** Potentially millions of users may be accessing and updating records simultaneously. @@ -9,7 +8,7 @@ Designing and building databases for today's modern applications is difficult an **Log Levels**: It is common practice to _not_ log at the "debug level" in production. -Using **Automated Diagnostics** can help with debugging database issues experienced in production by gathering as much information as possible when an incident occurs. +Pairing the Datbase Management solutions with [**Automated Diagnostics**](/learning/soltions/automated-diagnostics/index.md) can help with debugging database issues experienced in production by gathering as much information as possible when an incident occurs and providing those details to first responders or subject matter experts proactively. ## Examples diff --git a/docs/learning/solutions/database-management/index.md b/docs/learning/solutions/database-management/index.md new file mode 100644 index 000000000..6ab1c503f --- /dev/null +++ b/docs/learning/solutions/database-management/index.md @@ -0,0 +1,25 @@ +# Database Managment Solutions + +## Overview + +Database administrators (DBAs) face numerous challenges related to data security, maintaining high availability, and optimizing performance. They must protect against data breaches and cyber threats while ensuring compliance regulations. Managing backups and disaster recovery plans to prevent data loss is critical, as is minimizing downtime to ensure continuous access to data. DBAs must stay current with evolving technologies and best practices to effectively manage increasingly complex and distributed database environments. + +## Use Cases + +There are multiple use-cases and benefits to the Daabase Management solution. Here are a few of the most common examples: + +**Ad-Hoc Backup and Restore:** Specific databases that end-users could run prior to making changes. Particularly helpful for Dev environments to quickly test then reset an environment again. + +**Database Health Check:** Automate the execution of SQL scripts to perform routine health checks on databases, checking for issues like fragmentation, tablespace usage, and index performance, or run critical SQL commands to validate they are running efficiently. + +**Schema Change Management:** Automate the execution of schema changes across development, testing, and production environments, ensuring consistency and reducing the risk of errors during deployment. + +**Capacity Planning and Scaling:** Monitor database usage trends and automate the provisioning or scaling of database resources (e.g., adding storage, increasing memory) based on predefined triggers or schedules, or make ad-hoc requests that can be approved through WFA. + + +To see example content check out the [Getting Started with Solutions] page. + +| Examples | +| --- | +| [Check Database Storage Status](/learning/solutions/database-management/db-and-autodiag.md) | + diff --git a/docs/learning/solutions/containers/getting-started.md b/docs/learning/solutions/getting-started.md similarity index 69% rename from docs/learning/solutions/containers/getting-started.md rename to docs/learning/solutions/getting-started.md index 3a97185e2..f082c2020 100644 --- a/docs/learning/solutions/containers/getting-started.md +++ b/docs/learning/solutions/getting-started.md @@ -1,17 +1,22 @@ -# Containers -## Getting Started +# Getting Started with Soutions ::: tip Prerequisites -To use the Containers Solution, you must have a **PagerDuty Runbook Automation** (Self-Hosted or SaaS) instance available. +To use any the Example Solutions, you must have a **PagerDuty Runbook Automation** (Self-Hosted or SaaS) instance available. If you do not have a license for either of these products, [contact us](https://www.pagerduty.com/contact-us/runbook-automation/) to learn more. -**You must be running at least version 5.5.0 to use this Solution.** New instances of Runbook Automation have the Solution installed and included by default.
+**You must be running a currently supported product version at a minimum.** Specific jobs may require specific product versions due to newer plugin releases. Those will be captured in the job's descriptions. + +New instances of Runbook Automation Cloud have the Solution installed and included by default. [Request a Trial here](https://www.pagerduty.com/sign-up/runbook-automation/)
::: -For all Runbook Automation environments, follow the steps below to download and import the Jobs and Tours: +## Setup + +For existing Runbook Automation environments, follow the steps below to download and import the Example Content: + ### Download the **Automated Diagnostics Solution package**. -1. Download the latest release of the Solution [here](#).
+ +1. Download the latest release of the Solution [here](https://github.com/rundeckpro/solutions-content/releases/latest). ### Create a project in your Runbook Automation environment: 1. Click the **P** in the upper left corner to navigate to the Main Dashboard

diff --git a/docs/learning/solutions/index.md b/docs/learning/solutions/index.md index b7b489ce5..cc398720c 100644 --- a/docs/learning/solutions/index.md +++ b/docs/learning/solutions/index.md @@ -6,4 +6,8 @@ Automated diagnostics is a solution provided by integrating PagerDuty's Incident [Containers](/learning/solutions/containers/index.md) -Automating container management rocks! \ No newline at end of file +Automating container management rocks! + +[Database Management](/learning/solutions/database-management/index.md) + +Automate your databases dude. \ No newline at end of file From 7a134943e98745c9b3343e6825e12b0432ae0298 Mon Sep 17 00:00:00 2001 From: Forrest Evans Date: Mon, 21 Oct 2024 09:10:59 -0700 Subject: [PATCH 07/14] Update learning.ts --- docs/.vuepress/sidebar-menus/learning.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/.vuepress/sidebar-menus/learning.ts b/docs/.vuepress/sidebar-menus/learning.ts index 36215afb7..828013d45 100644 --- a/docs/.vuepress/sidebar-menus/learning.ts +++ b/docs/.vuepress/sidebar-menus/learning.ts @@ -181,6 +181,8 @@ export default [{ link: '/learning/solutions/index.md', collapsible: true, children: [ + { link: '/learning/solutions/index.md', text: 'Solutions Overview'}, + { link: '/learning/solutions/getting-started.md', text: 'Getting Started with Solutions'}, { text: 'Automated Diagnostics', link: '/learning/solutions/automated-diagnostics/index.md', @@ -238,8 +240,7 @@ export default [{ { link: '/learning/solutions/database-management/index.md', text: 'Solution Summary' }, { link: '/learning/solutions/database-management/db-and-autodiag.md', text: 'Databases + Auto Diagnostics' }, ] - }, - { link: '/learning/solutions/getting-started.md', text: 'Getting Started with Solutions'} + } ] }, { From edc667c5590ced7e1eb402c5b7bd666085a66d76 Mon Sep 17 00:00:00 2001 From: Forrest Evans Date: Mon, 21 Oct 2024 09:11:42 -0700 Subject: [PATCH 08/14] Update learning.ts --- docs/.vuepress/sidebar-menus/learning.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/.vuepress/sidebar-menus/learning.ts b/docs/.vuepress/sidebar-menus/learning.ts index 828013d45..c9692325e 100644 --- a/docs/.vuepress/sidebar-menus/learning.ts +++ b/docs/.vuepress/sidebar-menus/learning.ts @@ -222,7 +222,7 @@ export default [{ { link: '/learning/solutions/containers/index.md', text: 'Solution Summary'}, { text: 'Kubernetes', - link: '/learning/solutions/automated-diagnostics/examples/kubernetes', + link: '/learning/solutions/containers/kubernetes', collapsible: true, children: [ { link: '/learning/solutions/containers/kubernetes', text: 'Kubernetes Examples' }, From 402443db9bdebb4c58ece5a747b094c61b7be593 Mon Sep 17 00:00:00 2001 From: Forrest Evans Date: Mon, 21 Oct 2024 09:37:00 -0700 Subject: [PATCH 09/14] Update index.md --- docs/learning/solutions/database-management/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/learning/solutions/database-management/index.md b/docs/learning/solutions/database-management/index.md index 6ab1c503f..2c9298da0 100644 --- a/docs/learning/solutions/database-management/index.md +++ b/docs/learning/solutions/database-management/index.md @@ -17,7 +17,7 @@ There are multiple use-cases and benefits to the Daabase Management solution. He **Capacity Planning and Scaling:** Monitor database usage trends and automate the provisioning or scaling of database resources (e.g., adding storage, increasing memory) based on predefined triggers or schedules, or make ad-hoc requests that can be approved through WFA. -To see example content check out the [Getting Started with Solutions] page. +To see example content listed below check out the [Getting Started with Solutions](/learning/solutions/getting-started.md) page. | Examples | | --- | From 6794faab7ef91d02fd49a589235fd51c340b2dfc Mon Sep 17 00:00:00 2001 From: Jake Cohen Date: Mon, 21 Oct 2024 10:21:31 -0700 Subject: [PATCH 10/14] formating for solutions overview --- docs/learning/solutions/index.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/learning/solutions/index.md b/docs/learning/solutions/index.md index cc398720c..038d73cde 100644 --- a/docs/learning/solutions/index.md +++ b/docs/learning/solutions/index.md @@ -1,13 +1,17 @@ # Solutions -[Automated Diagnostics](/learning/solutions/automated-diagnostics/index.md) +Solutions are a collection of pre-built workflows, integrations, and automations that help users get started and explore new uses-cases with Runbook Automation. + +The following solution categories are currently available: + +### [Automated Diagnostics](/learning/solutions/automated-diagnostics/index.md) Automated diagnostics is a solution provided by integrating PagerDuty's Incident Response and Runbook Automation products. By automating the retrieval of “diagnostic” data during incidents, you can shorten the length of incidents, reduce the number of individuals paged to help with resolution, and gather evidence for fixing the root-cause after the incident. -[Containers](/learning/solutions/containers/index.md) +### [Containers](/learning/solutions/containers/index.md) Automating container management rocks! -[Database Management](/learning/solutions/database-management/index.md) +### [Database Management](/learning/solutions/database-management/index.md) Automate your databases dude. \ No newline at end of file From 05db49523b3ce75f9104070ca36f3635cfbac6ed Mon Sep 17 00:00:00 2001 From: Forrest Evans Date: Mon, 21 Oct 2024 12:11:36 -0700 Subject: [PATCH 11/14] SAVE FOR NOW --- docs/.vuepress/styles/index.scss | 4 +++ docs/learning/solutions/index.md | 52 +++++++++++++++++++++++++++----- 2 files changed, 48 insertions(+), 8 deletions(-) diff --git a/docs/.vuepress/styles/index.scss b/docs/.vuepress/styles/index.scss index 766867634..6773ab3f4 100644 --- a/docs/.vuepress/styles/index.scss +++ b/docs/.vuepress/styles/index.scss @@ -51,6 +51,10 @@ h6 { color: var(--text-color) } +.vp-hero-action { + background-color: #f6f6f6; +} + .vp-feature-bg + .vp-feature { color: var(--text-color) } diff --git a/docs/learning/solutions/index.md b/docs/learning/solutions/index.md index cc398720c..f4c93f1d9 100644 --- a/docs/learning/solutions/index.md +++ b/docs/learning/solutions/index.md @@ -1,13 +1,49 @@ -# Solutions +--- +home: true +title: Runbook Automation Solutions +heroText: Automation Solutions for Ops +tagline: See how Automation can transform your operations and streamline processes. +//heroImage: /assets/img/pd-background.png +bgImage: /assets/img/pd-background.png +bgImageDark: /assets/img/pd-background.png +//bgImageStyle: +//background-attachment: fixed -[Automated Diagnostics](/learning/solutions/automated-diagnostics/index.md) +actions: +- text: Getting Started + icon: circle-play + link: /learning/solutions/getting-started.md +- text: Start a Trial + icon: /assets/img/pd-icon-small.png + link: https://www.pagerduty.com/sign-up/runbook-automation/ +- text: Get the Code + icon: code-branch + link: https://github.com/rundeckpro/solutions-content -Automated diagnostics is a solution provided by integrating PagerDuty's Incident Response and Runbook Automation products. By automating the retrieval of “diagnostic” data during incidents, you can shorten the length of incidents, reduce the number of individuals paged to help with resolution, and gather evidence for fixing the root-cause after the incident. +highlights: -[Containers](/learning/solutions/containers/index.md) +- header: Solution Categories + description: Explore Runbook Automation solution categories + //image: /assets/image/markdown.svg + //bgImage: /assets/img/pd-background.png + //bgImageDark: /assets/img/pd-background.png + bgImageStyle: + background-repeat: repeat + background-size: initial + features: + - title: Automated Diagnostics + icon: book + details: Automated diagnostics is a solution provided by integrating PagerDuty's Incident Response and Runbook Automation products. By automating the retrieval of “diagnostic” data during incidents, you can shorten the length of incidents, reduce the number of individuals paged to help with resolution, and gather evidence for fixing the root-cause after the incident. + link: /learning/solutions/automated-diagnostics/index.md -Automating container management rocks! + - title: Containers + icon: /assets/img/runner-icon.png + details: Automating container management rocks! + link: /learning/solutions/containers/index.md -[Database Management](/learning/solutions/database-management/index.md) - -Automate your databases dude. \ No newline at end of file + - title: Database Management + icon: shuffle + details: Orchestrate across the tooling ecosystem. + link: /learning/solutions/database-management/index.md + +--- \ No newline at end of file From 7fb3f9febadb7b16b99552238385435c28dbb56d Mon Sep 17 00:00:00 2001 From: Forrest Evans Date: Mon, 21 Oct 2024 13:43:27 -0700 Subject: [PATCH 12/14] Update index.md --- docs/learning/solutions/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/learning/solutions/index.md b/docs/learning/solutions/index.md index cb04b8364..95c30ba99 100644 --- a/docs/learning/solutions/index.md +++ b/docs/learning/solutions/index.md @@ -33,12 +33,12 @@ highlights: features: - title: Automated Diagnostics icon: book - details: Automated diagnostics is a solution provided by integrating PagerDuty's Incident Response and Runbook Automation products. By automating the retrieval of “diagnostic” data during incidents, you can shorten the length of incidents, reduce the number of individuals paged to help with resolution, and gather evidence for fixing the root-cause after the incident. + details: Gone are the days of manual troubleshooting! Empower your teams to orchestrate your container environments effortlessly, ensuring seamless integration between your infrastructure and business-critical applications. When things go sideways, use these solutions to diagnose and resolve problems before they escalate. link: /learning/solutions/automated-diagnostics/index.md - title: Containers icon: /assets/img/runner-icon.png - details: Automating container management rocks! + details: Think of PagerDuty Automation as your container command center, where you can manage distributed environments at scale without the headache. Whether it’s handling container sprawl or automating response playbooks, you stay in control with real-time insights and automated resolutions—keeping everything running at peak performance. link: /learning/solutions/containers/index.md - title: Database Management From eb5d7629399d88ca3747276a326c5d49bd977cef Mon Sep 17 00:00:00 2001 From: Forrest Evans Date: Tue, 22 Oct 2024 09:48:57 -0700 Subject: [PATCH 13/14] Standardize index pages and finish landing page --- .../solutions/automated-diagnostics/index.md | 8 ++++---- docs/learning/solutions/containers/index.md | 2 +- .../solutions/database-management/index.md | 17 +++++++---------- docs/learning/solutions/index.md | 2 +- 4 files changed, 13 insertions(+), 16 deletions(-) diff --git a/docs/learning/solutions/automated-diagnostics/index.md b/docs/learning/solutions/automated-diagnostics/index.md index 66d3f75c9..9e812cacc 100644 --- a/docs/learning/solutions/automated-diagnostics/index.md +++ b/docs/learning/solutions/automated-diagnostics/index.md @@ -10,14 +10,14 @@ feed: # Automated Diagnostics -## What is PagerDuty's Automated Diagnostics Solution? +### Overview Automated diagnostics is a solution provided by integrating PagerDuty's Incident Response and Runbook Automation products. By automating the retrieval of “diagnostic” data during incidents, you can shorten the length of incidents, reduce the number of individuals paged to help with resolution, and gather evidence for fixing the root-cause after the incident. ### Use Cases There are multiple use-cases and benefits to the Automated Diagnostics solution. Here are a few of the most common examples: -1. **Improve Triage**: surfacing diagnostic data can improve the time spent troubleshooting and the number of people pulled into incidents. -2. **Capture Environment State**: by capturing the _environment_ or _application_ "state" during an incident, operations engineers and developers have _evidence_ to help them fix code-level bugs and configuration errors - perhaps a while after the incident has been resolved. -3. **Realtime Updates**: by querying backend services in realtime, an Incident Commander can more easily provide updates to stakeholders during an incident. +- **Improve Triage**: surfacing diagnostic data can improve the time spent troubleshooting and the number of people pulled into incidents. +- **Capture Environment State**: by capturing the _environment_ or _application_ "state" during an incident, operations engineers and developers have _evidence_ to help them fix code-level bugs and configuration errors - perhaps a while after the incident has been resolved. +- **Realtime Updates**: by querying backend services in realtime, an Incident Commander can more easily provide updates to stakeholders during an incident. For more details on these use-cases, see [**this section**](/learning/solutions/automated-diagnostics/automation-beyond-triage) of the solution-guide. diff --git a/docs/learning/solutions/containers/index.md b/docs/learning/solutions/containers/index.md index e9ab97c7f..772eee6ff 100644 --- a/docs/learning/solutions/containers/index.md +++ b/docs/learning/solutions/containers/index.md @@ -1,6 +1,6 @@ # Container Solutions -## Overview +### Overview Automating container management with Runbook Automation can significantly enhance your business operations by streamlining and simplifying the deployment, scaling, and maintenance of containerized applications. By leveraging Rundeck's powerful automation capabilities, you can reduce manual intervention, minimize human error, and ensure consistent and reliable execution of tasks. This leads to increased efficiency and productivity, as routine and repetitive tasks are handled automatically, freeing up your IT team to focus on more strategic initiatives. ### Use Cases diff --git a/docs/learning/solutions/database-management/index.md b/docs/learning/solutions/database-management/index.md index 2c9298da0..13ae42bdf 100644 --- a/docs/learning/solutions/database-management/index.md +++ b/docs/learning/solutions/database-management/index.md @@ -1,22 +1,19 @@ # Database Managment Solutions -## Overview +### Overview Database administrators (DBAs) face numerous challenges related to data security, maintaining high availability, and optimizing performance. They must protect against data breaches and cyber threats while ensuring compliance regulations. Managing backups and disaster recovery plans to prevent data loss is critical, as is minimizing downtime to ensure continuous access to data. DBAs must stay current with evolving technologies and best practices to effectively manage increasingly complex and distributed database environments. -## Use Cases +### Use Cases There are multiple use-cases and benefits to the Daabase Management solution. Here are a few of the most common examples: -**Ad-Hoc Backup and Restore:** Specific databases that end-users could run prior to making changes. Particularly helpful for Dev environments to quickly test then reset an environment again. - -**Database Health Check:** Automate the execution of SQL scripts to perform routine health checks on databases, checking for issues like fragmentation, tablespace usage, and index performance, or run critical SQL commands to validate they are running efficiently. - -**Schema Change Management:** Automate the execution of schema changes across development, testing, and production environments, ensuring consistency and reducing the risk of errors during deployment. - -**Capacity Planning and Scaling:** Monitor database usage trends and automate the provisioning or scaling of database resources (e.g., adding storage, increasing memory) based on predefined triggers or schedules, or make ad-hoc requests that can be approved through WFA. - +- **Ad-Hoc Backup and Restore:** Specific databases that end-users could run prior to making changes. Particularly helpful for Dev environments to quickly test then reset an environment again. +- **Database Health Check:** Automate the execution of SQL scripts to perform routine health checks on databases, checking for issues like fragmentation, tablespace usage, and index performance, or run critical SQL commands to validate they are running efficiently. +- **Schema Change Management:** Automate the execution of schema changes across development, testing, and production environments, ensuring consistency and reducing the risk of errors during deployment. +- **Capacity Planning and Scaling:** Monitor database usage trends and automate the provisioning or scaling of database resources (e.g., adding storage, increasing memory) based on predefined triggers or schedules, or make ad-hoc requests that can be approved through WFA. +### Prebuilt Automation To see example content listed below check out the [Getting Started with Solutions](/learning/solutions/getting-started.md) page. | Examples | diff --git a/docs/learning/solutions/index.md b/docs/learning/solutions/index.md index 95c30ba99..fabaed91d 100644 --- a/docs/learning/solutions/index.md +++ b/docs/learning/solutions/index.md @@ -18,7 +18,7 @@ actions: link: https://www.pagerduty.com/sign-up/runbook-automation/ - text: Get the Code icon: code-branch - link: https://github.com/rundeckpro/solutions-content + link: https://github.com/rundeckpro/automated-diagnostics-project highlights: From cde6f322bda24174850b8c45679b735af9b2d4dc Mon Sep 17 00:00:00 2001 From: Forrest Evans Date: Tue, 22 Oct 2024 16:00:55 -0700 Subject: [PATCH 14/14] Update index.md --- docs/learning/solutions/index.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/learning/solutions/index.md b/docs/learning/solutions/index.md index fabaed91d..460c8e381 100644 --- a/docs/learning/solutions/index.md +++ b/docs/learning/solutions/index.md @@ -19,6 +19,9 @@ actions: - text: Get the Code icon: code-branch link: https://github.com/rundeckpro/automated-diagnostics-project +- text: Learning Rundeck + icon: graduation-cap + link: /learning/index.md highlights: @@ -43,7 +46,7 @@ highlights: - title: Database Management icon: shuffle - details: Orchestrate across the tooling ecosystem. + details: Database administrators (DBAs) face numerous challenges related to data security, maintaining high availability, and optimizing performance. Check out how Automation can make these problems yesterday's stress. link: /learning/solutions/database-management/index.md ---