-
Notifications
You must be signed in to change notification settings - Fork 7
Jeffgoll/monitor aws resources lj #467
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
11 commits
Select commit
Hold shift + click to select a range
2e5233d
updating LP with tested references and light edit
jeffgoll 3fad9c4
fixing small typo
jeffgoll 90460f9
fixing bad ref to Add new scrape job button
jeffgoll 0a2e00a
fixing create scrape job to include do it
jeffgoll 9827332
tweaking language for clarification on Edit metrics
jeffgoll f017eca
clarifying install/uninstall behavior
jeffgoll 47648de
fixing small typo
jeffgoll 05bce23
fixing uninstall button collision issue
jeffgoll 24436d3
another try at uninstall fix
jeffgoll eb26291
adding descriptions to website.yaml files
jeffgoll e872e99
fixing troubleshooting copy to match boilerplate
jeffgoll File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| { | ||
| "schemaVersion": "1.1.0", | ||
| "id": "monitor-aws-resources-advantages", | ||
| "title": "Advantages of Grafana Cloud Provider Observability", | ||
| "blocks": [ | ||
| { | ||
| "type": "markdown", | ||
| "content": "Grafana Cloud Provider Observability is a comprehensive monitoring solution that simplifies AWS observability without the operational overhead of managing monitoring infrastructure. The integration provides immediate visibility into your AWS environment through pre-configured dashboards and alerting rules.\n\nGrafana Cloud Provider Observability differs from traditional AWS monitoring approaches by providing a unified observability platform that offers centralized access and management. This approach gives you complete visibility into your AWS environment alongside other infrastructure components." | ||
| }, | ||
| { | ||
| "type": "section", | ||
| "title": "Advantages of Cloud Provider Observability for AWS", | ||
| "autoCollapse": false, | ||
| "blocks": [ | ||
| { | ||
| "type": "markdown", | ||
| "content": "With Grafana Cloud Provider Observability, you can:\n\n- **Deploy instantly**: Connect your AWS account in minutes without installing agents or configuring complex monitoring pipelines.\n- **Use pre-built dashboards**: Access ready-to-use dashboards covering popular AWS services like EC2, RDS, Lambda, and S3.\n- **Scale automatically**: Handle monitoring for thousands of AWS resources without managing monitoring infrastructure.\n- **Customize visualizations**: Modify existing dashboards or create new ones tailored to your specific use cases.\n- **Set intelligent alerts**: Use templated alert rules optimized for AWS services with smart thresholds and notification routing." | ||
| }, | ||
| { | ||
| "type": "markdown", | ||
| "content": "Cloud Provider Observability gives you a single place to monitor AWS alongside your other infrastructure." | ||
| } | ||
| ] | ||
| }, | ||
| { | ||
| "type": "markdown", | ||
| "content": "In your next milestone, you'll access the Cloud Provider Observability AWS configuration interface in Grafana Cloud to begin setting up the integration." | ||
| } | ||
| ] | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| { | ||
| "id": "monitor-aws-resources-advantages", | ||
| "type": "guide", | ||
| "description": "Learn the specific benefits of using Grafana Cloud Provider Observability to monitor your AWS infrastructure and services.", | ||
| "category": "data-availability", | ||
| "author": { | ||
| "name": "Jack Baldry", | ||
| "team": "Grafana Documentation" | ||
| }, | ||
| "testEnvironment": { | ||
| "tier": "cloud" | ||
| }, | ||
| "depends": [], | ||
| "recommends": ["monitor-aws-resources-navigate-aws-config"], | ||
| "suggests": [], | ||
| "provides": [] | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,13 @@ | ||
| menuTitle: Advantages | ||
| weight: 200 | ||
| step: 3 | ||
| layout: single-journey | ||
| cta: | ||
| type: continue | ||
| description: Learn the specific benefits of using Grafana Cloud to monitor your AWS infrastructure and services. | ||
| keywords: | ||
| - Grafana Cloud | ||
| - AWS integration | ||
| - monitoring advantages | ||
| - unified observability | ||
| - pre-built dashboards |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,40 @@ | ||
| { | ||
| "schemaVersion": "1.1.0", | ||
| "id": "monitor-aws-resources-business-value", | ||
| "title": "The case for observability", | ||
| "blocks": [ | ||
| { | ||
| "type": "markdown", | ||
| "content": "IT systems are complicated. There are nodes, pods, services, system resources - sometimes thousands of them - all connected in a complex web of relationships. And when things go wrong, it can be very difficult to determine the root cause and fix it quickly. Consider the following:\n\n- Slow performance in an application might be caused by heavy load, or it could be a memory leak or even a hardware error. Monitoring your infrastructure allows you to find the root cause quickly and accurately.\n- Running out of disk space can be a disaster for any environment. Understanding that there's a problem before it becomes a problem enables you to prevent it.\n- When applications or services are co-located, being able to identify hotspots and conflicts between them can help you redistribute the load properly.\n\nAnd time is of the essence. System downtime can be very expensive. If you run customer-facing applications such as e-commerce site or a financial institution, every minute of downtime costs you money. Some estimates put the average cost of downtime at $5,600 per minute. If you are a large retailer, this cost can be much more. Even if you're not running a commercial service, downtime can have impact. If you can't turn on your lights because your home automation is having problems, it's still a real issue." | ||
| }, | ||
| { | ||
| "type": "section", | ||
| "title": "Enter observability", | ||
| "autoCollapse": false, | ||
| "blocks": [ | ||
| { | ||
| "type": "video", | ||
| "src": "https://www.youtube.com/embed/TQur9GJHIIQ", | ||
| "provider": "youtube", | ||
| "title": "What is observability?" | ||
| }, | ||
| { | ||
| "type": "markdown", | ||
| "content": "Observability is the process of making a system's internal state more transparent. Systems are made observable by the data they produce, which in turn helps you to determine if your infrastructure or application is healthy and functioning normally." | ||
| }, | ||
| { | ||
| "type": "markdown", | ||
| "content": "Observability is a holistic approach to understanding and managing complex systems. It involves collecting data from all parts of the system to create a deep understanding of the system's internal workings and how these interact with each other. Observability focuses on understanding and interpreting data to make the system's behavior and performance as transparent as possible. It also requires a means of making the data easily available for humans to interpret.\n\nAn observability system enables system operators, DevOps practitioners, and site reliability engineers to ask questions across the information gathered. These are questions that are not anticipated in advance, but rather questions that arise due to unexpected or novel events within a system." | ||
| }, | ||
| { | ||
| "type": "markdown", | ||
| "content": "Observability helps you answer unanticipated questions when complex systems behave unexpectedly." | ||
| } | ||
| ] | ||
| }, | ||
| { | ||
| "type": "markdown", | ||
| "content": "In your next milestone, you'll learn the advantages of monitoring AWS resources with Cloud Provider Observability." | ||
| } | ||
| ] | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| { | ||
| "id": "monitor-aws-resources-business-value", | ||
| "type": "guide", | ||
| "description": "Learn about observability and how it can help you solve real-world problems.", | ||
| "category": "data-availability", | ||
| "author": { | ||
| "name": "Jack Baldry", | ||
| "team": "Grafana Documentation" | ||
| }, | ||
| "testEnvironment": { | ||
| "tier": "cloud" | ||
| }, | ||
| "depends": [], | ||
| "recommends": ["monitor-aws-resources-advantages"], | ||
| "suggests": [], | ||
| "provides": [] | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| menuTitle: The case for observability | ||
| description: Learn about observability and how it can help you solve real-world problems | ||
| weight: 100 | ||
| step: 2 | ||
| layout: single-journey | ||
| cta: | ||
| type: continue | ||
| keywords: | ||
| - Grafana Labs | ||
| - observability | ||
| - monitoring | ||
| side_journeys: | ||
| title: More to explore (optional) | ||
| heading: 'At this point in your journey, you can explore the following paths:' | ||
| items: | ||
| - title: What is observability? | ||
| link: /docs/grafana-cloud/introduction/what-is-observability/ | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,61 @@ | ||
| { | ||
| "schemaVersion": "1.1.0", | ||
| "id": "monitor-aws-resources-connect-aws-account", | ||
| "title": "Connect to AWS account", | ||
| "blocks": [ | ||
| { | ||
| "type": "markdown", | ||
| "content": "In this milestone, you'll establish the connection between your AWS account and Grafana Cloud using the IAM role you created in the previous milestone. This connection enables Grafana Cloud to securely access your AWS metrics and begin monitoring your resources.\n\nNavigate to the **Create new account** page in Grafana Cloud if you're not already there." | ||
| }, | ||
| { | ||
| "type": "section", | ||
| "title": "Configure the integration", | ||
| "autoCollapse": false, | ||
| "blocks": [ | ||
| { | ||
| "type": "interactive", | ||
| "action": "formfill", | ||
| "reftarget": "#name", | ||
| "targetvalue": "aws-ec2-account", | ||
| "content": "In the **Account name** field, enter a unique name that contains only alphanumeric characters, dashes, and underscores, for example `aws-ec2-account`.", | ||
| "doIt": false, | ||
| "requirements": ["exists-reftarget", "on-page:/a/grafana-csp-app/aws/configuration"] | ||
| }, | ||
| { | ||
| "type": "interactive", | ||
| "action": "formfill", | ||
| "reftarget": "#arn", | ||
| "targetvalue": "arn:aws:iam::123456789012:role/GrafanaCloudMonitoringRole", | ||
| "content": "In the **ARN** field, paste the role ARN you copied from the previous milestone, for example `arn:aws:iam::123456789012:role/GrafanaCloudMonitoringRole`.", | ||
| "doIt": false, | ||
| "requirements": ["exists-reftarget"] | ||
| }, | ||
| { | ||
| "type": "interactive", | ||
| "action": "formfill", | ||
| "reftarget": "#regions-selector", | ||
| "targetvalue": "us-east-1", | ||
| "content": "In the AWS Regions field, select all regions where the AWS resources you want to monitor are located, for example `us-east-1`.", | ||
| "doIt": false, | ||
| "requirements": ["exists-reftarget"] | ||
| }, | ||
| { | ||
| "type": "interactive", | ||
| "action": "button", | ||
| "reftarget": "Add account", | ||
| "content": "Click **Add account** to verify the connection and complete the setup.", | ||
| "doIt": false, | ||
| "requirements": ["exists-reftarget"] | ||
| } | ||
| ] | ||
| }, | ||
| { | ||
| "type": "markdown", | ||
| "content": "Your AWS account is connected to Grafana Cloud and ready to collect metrics.\n\nIn your next milestone, you'll create a scrape job to customize metric collection for specific AWS services." | ||
| }, | ||
| { | ||
| "type": "markdown", | ||
| "content": "---\n\n### More to explore (optional)\n\n- [Manage AWS accounts](https://grafana.com/docs/grafana-cloud/monitor-infrastructure/monitor-cloud-provider/aws/cloudwatch-metrics/cw-accounts/)" | ||
| } | ||
| ] | ||
| } |
18 changes: 18 additions & 0 deletions
18
monitor-aws-resources-lj/connect-aws-account/manifest.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| { | ||
| "id": "monitor-aws-resources-connect-aws-account", | ||
| "type": "guide", | ||
| "description": "Configure the connection between your AWS account and Grafana Cloud using the IAM role you created.", | ||
| "category": "data-availability", | ||
| "author": { | ||
| "name": "Jack Baldry", | ||
| "team": "Grafana Documentation" | ||
| }, | ||
| "startingLocation": "/a/grafana-csp-app/aws/configuration", | ||
| "testEnvironment": { | ||
| "tier": "cloud" | ||
| }, | ||
| "depends": ["monitor-aws-resources-create-iam-role"], | ||
| "recommends": ["monitor-aws-resources-create-scrape-job"], | ||
| "suggests": [], | ||
| "provides": [] | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,19 @@ | ||
| menuTitle: Connect AWS account | ||
| weight: 500 | ||
| step: 6 | ||
| layout: single-journey | ||
| cta: | ||
| type: continue | ||
| description: Configure the connection between your AWS account and Grafana Cloud using the IAM role you created. | ||
| keywords: | ||
| - AWS connection | ||
| - IAM role | ||
| - authentication | ||
| - account setup | ||
| - integration | ||
| side_journeys: | ||
| title: More to explore (optional) | ||
| heading: 'At this point in your journey, you can explore the following paths:' | ||
| items: | ||
| - title: Manage AWS accounts | ||
| link: /docs/grafana-cloud/monitor-infrastructure/monitor-cloud-provider/aws/cloudwatch-metrics/cw-accounts/ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| { | ||
| "id": "monitor-aws-resources-lj", | ||
| "title": "Monitor AWS resources with Grafana Cloud", | ||
| "blocks": [ | ||
| { | ||
| "type": "markdown", | ||
| "content": "Welcome to the Grafana learning path that shows you how to monitor AWS resources using Grafana Cloud Provider Observability.\n\nYou'll use this path to connect your AWS account to Grafana Cloud and monitor your AWS services through comprehensive dashboards and metrics.\n\nThe Cloud provider AWS solution collects metrics from Amazon CloudWatch and presents them through pre-built dashboards optimized for AWS services.\n\nThe Cloud Provider AWS solution differs from traditional monitoring solutions by providing a unified observability platform that offers centralized access and management. This approach gives you complete visibility into your AWS environment alongside other infrastructure components." | ||
| }, | ||
| { | ||
| "type": "markdown", | ||
| "content": "## Here's what to expect\n\nWhen you complete this journey, you'll be able to:\n\n- Understand the value of observability and the advantages of Grafana Cloud Provider Observability\n- Navigate to the Cloud provider AWS configuration interface in Grafana Cloud\n- Create an AWS IAM role with appropriate permissions for monitoring\n- Connect your AWS account to Grafana Cloud\n- Create scrape jobs to collect metrics from AWS services\n- Verify data is collected and sent to Grafana Cloud\n- Explore AWS service data using pre-built dashboards" | ||
| }, | ||
| { | ||
| "type": "markdown", | ||
| "content": "## Before you begin\n\nBefore you monitor AWS resources, ensure that you have:\n\n- A Grafana Cloud account. To create a free account, go to [Grafana Cloud](https://grafana.com/signup/cloud/connect-account) and enter an email address and password.\n- An AWS account with administrative access or appropriate IAM permissions to create roles and policies.\n- AWS resources running that you want to monitor, such as EC2 instances, RDS databases, or Lambda functions, and at least one [Amazon tag](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html) on the resources in AWS so AWS can ingest metrics from CloudWatch into Grafana Cloud.\n- Basic familiarity with AWS services and understanding of their operation." | ||
| }, | ||
| { | ||
| "type": "markdown", | ||
| "content": "## Troubleshooting\n\nIf you get stuck, we've got your back! Where appropriate, troubleshooting information is just a click away.\n\n## More to explore\n\nWe understand you might want to explore other capabilities not strictly on this path. We'll provide you opportunities where it makes sense." | ||
| } | ||
| ] | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,57 @@ | ||
| { | ||
| "schemaVersion": "1.1.0", | ||
| "id": "monitor-aws-resources-create-iam-role", | ||
| "title": "Create an AWS IAM role", | ||
| "blocks": [ | ||
| { | ||
| "type": "markdown", | ||
| "content": "In this milestone, you'll create an AWS IAM role that grants Grafana Cloud the necessary permissions to collect metrics from your AWS account. This role uses the principle of least privilege, providing only the read-only access required for monitoring.\n\nThe IAM role establishes a secure trust relationship between your AWS account and Grafana Cloud, allowing metric collection without sharing long-term credentials or compromising security.\n\nYou can configure the AWS role automatically with CloudFormation or Terraform, or manually in the AWS Management Console. This milestone uses CloudFormation, the recommended approach." | ||
| }, | ||
| { | ||
| "type": "section", | ||
| "title": "Start the IAM role setup in Grafana Cloud", | ||
| "autoCollapse": false, | ||
| "blocks": [ | ||
| { | ||
| "type": "interactive", | ||
| "action": "highlight", | ||
| "reftarget": "[data-testid='configuration-card-accounts']", | ||
| "content": "From the **Configuration** tab, click the **AWS accounts** tile.", | ||
| "requirements": ["exists-reftarget", "on-page:/a/grafana-csp-app/aws/configuration"] | ||
| }, | ||
| { | ||
| "type": "interactive", | ||
| "action": "button", | ||
| "reftarget": "Add new account", | ||
| "content": "On the **AWS accounts** page, click **Add new account** to open the **Create new account** page.", | ||
| "requirements": ["exists-reftarget"] | ||
| }, | ||
| { | ||
| "type": "interactive", | ||
| "action": "noop", | ||
| "content": "For **Create a new AWS role**, leave the **Automatically** and **Use CloudFormation** tiles selected." | ||
| }, | ||
| { | ||
| "type": "interactive", | ||
| "action": "highlight", | ||
| "reftarget": "a:contains('Launch stack')", | ||
| "content": "Click **Launch stack** to open a CloudFormation template in your AWS account in a new tab.\n\nThe AWS account you're logged into when you click this button is the account that opens. To use a different account, log out of the current account and log in to the account you want to use.", | ||
| "doIt": false, | ||
| "requirements": ["exists-reftarget"] | ||
| } | ||
| ] | ||
| }, | ||
| { | ||
| "type": "markdown", | ||
| "content": "Complete the remaining steps in the AWS console tab, then return to Grafana Cloud:\n\n1. Select the **I acknowledge that AWS CloudFormation might create IAM resources with custom names** checkbox.\n1. Click **Create stack**.\n1. Copy the `RoleARN` in the **Outputs** tab of the stack to use in the next milestone.\n1. Return to the **Create new account** page in Grafana Cloud when you have finished in AWS." | ||
| }, | ||
| { | ||
| "type": "markdown", | ||
| "content": "You created a read-only AWS IAM role and copied its role ARN for the next milestone.\n\nIn your next milestone, you'll use this IAM role to connect your AWS account to Grafana Cloud." | ||
| }, | ||
| { | ||
| "type": "markdown", | ||
| "content": "---\n\n### More to explore (optional)\n\n- [Additional ways to create an AWS IAM role](https://grafana.com/docs/grafana-cloud/monitor-infrastructure/monitor-cloud-provider/aws/cloudwatch-metrics/config-cw-metric-scrape/#create-an-aws-iam-role)" | ||
| } | ||
| ] | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| { | ||
| "id": "monitor-aws-resources-create-iam-role", | ||
| "type": "guide", | ||
| "description": "Learn how to create the required AWS IAM role and policies to allow Grafana Cloud to access your AWS metrics.", | ||
| "category": "data-availability", | ||
| "author": { | ||
| "name": "Jack Baldry", | ||
| "team": "Grafana Documentation" | ||
| }, | ||
| "startingLocation": "/a/grafana-csp-app/aws/configuration", | ||
| "testEnvironment": { | ||
| "tier": "cloud" | ||
| }, | ||
| "depends": ["monitor-aws-resources-navigate-aws-config"], | ||
| "recommends": ["monitor-aws-resources-connect-aws-account"], | ||
| "suggests": [], | ||
| "provides": [] | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,19 @@ | ||
| menuTitle: Create IAM role | ||
| weight: 400 | ||
| step: 5 | ||
| layout: single-journey | ||
| cta: | ||
| type: continue | ||
| description: Learn how to create the required AWS IAM role and policies to allow Grafana Cloud to access your AWS metrics. | ||
| keywords: | ||
| - AWS IAM | ||
| - IAM role | ||
| - permissions | ||
| - CloudWatch access | ||
| - security | ||
| side_journeys: | ||
| title: More to explore (optional) | ||
| heading: 'At this point in your journey, you can explore the following paths:' | ||
| items: | ||
| - title: Additional ways to create an AWS IAM role | ||
| link: /docs/grafana-cloud/monitor-infrastructure/monitor-cloud-provider/aws/cloudwatch-metrics/config-cw-metric-scrape/#create-an-aws-iam-role |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.