generated from amazon-archives/__template_Apache-2.0
-
Notifications
You must be signed in to change notification settings - Fork 40
Add Capture & Replay dashboard with dynamic stage #1322
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
jugal-chauhan
merged 15 commits into
opensearch-project:main
from
jugal-chauhan:feature/capture-replay-dashboard
Mar 19, 2025
Merged
Changes from 9 commits
Commits
Show all changes
15 commits
Select commit
Hold shift + click to select a range
3440220
Add capture and replay dashboard with dynamic stage
jugal-chauhan c57ae2b
Merge branch 'opensearch-project:main' into feature/capture-replay-da…
jugal-chauhan 496868d
Add capture and replay dashboard with dynamic stage
jugal-chauhan 56e6103
Merge branch 'feature/capture-replay-dashboard' of https://github.com…
jugal-chauhan 8b87e8d
cleaning up work done in incorrect file
jugal-chauhan ad934eb
cleaning up work done in incorrect file
jugal-chauhan 3a4bb56
Merge remote-tracking branch 'upstream/feature/capture-replay-dashboa…
jugal-chauhan 7b50f93
applying changes in traffic-replayer-stack.ts
jugal-chauhan 9900122
update widgets and metrics
jugal-chauhan bf53f8e
create new construct for cleaner code
jugal-chauhan 4e12d98
RFS stack utilizes dashboard construct
jugal-chauhan 00c1764
new widget update
jugal-chauhan 1185664
Rename dashboard file and dashboard name
jugal-chauhan 7fad58b
minor test error fix
jugal-chauhan 7f8b731
Make statistic changes
jugal-chauhan 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
375 changes: 375 additions & 0 deletions
375
...nsearch-service-migration/lib/components/migrationassistant-capture-replay-dashboard.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,375 @@ | ||
{ | ||
"variables": [ | ||
{ | ||
"type": "property", | ||
"property": "SourceDomainName", | ||
"inputType": "select", | ||
"id": "SRC_DOMAIN_NAME", | ||
"label": "Source Cluster Domain", | ||
"search": "{AWS/ES,DomainName} MetricName=\"ClusterStatus.green\"", | ||
"populateFrom": "DomainName", | ||
"defaultValue": "placeholder-source", | ||
"visible": true | ||
}, | ||
{ | ||
"type": "property", | ||
"property": "region", | ||
"inputType": "input", | ||
"id": "REGION", | ||
"label": "Region", | ||
"defaultValue": "us-west-1", | ||
"visible": false | ||
}, | ||
{ | ||
"type": "property", | ||
"property": "TargetDomainName", | ||
"inputType": "select", | ||
"id": "TGT_DOMAIN_NAME", | ||
"label": "Target Cluster Domain", | ||
"search": "{AWS/ES,DomainName} MetricName=\"ClusterStatus.green\"", | ||
"populateFrom": "DomainName", | ||
"defaultValue": "placeholder-target", | ||
"visible": true | ||
}, | ||
{ | ||
"type": "pattern", | ||
"pattern": "MA_STAGE", | ||
"inputType": "input", | ||
"id": "MA_STAGE", | ||
"label": "Migration Stage", | ||
"defaultValue": "dev", | ||
"visible": true | ||
}, | ||
{ | ||
"type": "pattern", | ||
"pattern": "ACCOUNT_ID", | ||
"inputType": "input", | ||
"id": "ACCOUNT_ID", | ||
"label": "Account ID", | ||
"defaultValue": "123456789", | ||
"visible": false | ||
} | ||
], | ||
"widgets": [ | ||
{ | ||
"height": 1, | ||
"width": 24, | ||
"y": 0, | ||
"x": 0, | ||
"type": "text", | ||
"properties": { | ||
"markdown": "# Traffic Capture", | ||
"background": "transparent" | ||
} | ||
}, | ||
{ | ||
"height": 9, | ||
"width": 12, | ||
"y": 1, | ||
"x": 0, | ||
"type": "metric", | ||
"properties": { | ||
"metrics": [ | ||
[ { "expression": "(m1-m2)/(m2*100)", "label": "Data Loss %", "id": "e1", "region": "us-west-1" } ], | ||
jugal-chauhan marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
[ "OpenSearchMigrations", "bytesWrittenToTarget", "OTelLib", "replayer", { "region": "us-west-1", "id": "m1", "label": "Replayed on T" } ], | ||
[ ".", "bytesRead", ".", "captureProxy", { "label": "Captured from S", "region": "us-west-1", "id": "m2" } ] | ||
], | ||
"view": "timeSeries", | ||
"stacked": false, | ||
"region": "us-west-1", | ||
"stat": "Sum", | ||
"period": 60, | ||
"title": "Captured vs Replayed Bytes with Data Loss %", | ||
"yAxis": { | ||
"left": { | ||
"label": "Bytes" | ||
} | ||
} | ||
} | ||
}, | ||
{ | ||
"height": 9, | ||
"width": 12, | ||
"y": 1, | ||
"x": 12, | ||
"type": "metric", | ||
"properties": { | ||
"metrics": [ | ||
[ "OpenSearchMigrations", "activeConnection", "OTelLib", "captureProxy" ], | ||
[ "OpenSearchMigrations", "activeTargetConnections", "OTelLib", "replayer" ], | ||
[ "OpenSearchMigrations", "connectionsOpened", "OTelLib", "replayer" ], | ||
[ "OpenSearchMigrations", "connectionsClosedCount", "OTelLib", "replayer" ], | ||
[ "OpenSearchMigrations", "gatheringRequestCount", "OTelLib", "captureProxy" ], | ||
[ "OpenSearchMigrations", "gatheringResponseCount", "OTelLib", "captureProxy" ] | ||
], | ||
"sparkline": true, | ||
"view": "singleValue", | ||
"region": "us-west-1", | ||
"stat": "Average", | ||
"period": 60, | ||
"title": "Active Capture Proxy & Replayer Connections", | ||
"liveData": true | ||
} | ||
}, | ||
{ | ||
"height": 1, | ||
"width": 24, | ||
"y": 10, | ||
"x": 0, | ||
"type": "text", | ||
"properties": { | ||
"markdown": "# Error Analysis", | ||
"background": "transparent" | ||
} | ||
}, | ||
{ | ||
"height": 1, | ||
"width": 24, | ||
"y": 31, | ||
"x": 0, | ||
"type": "text", | ||
"properties": { | ||
"markdown": "# Kafka Integration", | ||
"background": "transparent" | ||
} | ||
}, | ||
{ | ||
"height": 10, | ||
"width": 12, | ||
"y": 32, | ||
"x": 0, | ||
"type": "metric", | ||
"properties": { | ||
"metrics": [ | ||
[ "OpenSearchMigrations", "kafkaCommitCount", "OTelLib", "replayer" ], | ||
[ ".", "kafkaCommitDuration", ".", ".", { "stat": "Average" } ], | ||
[ "AWS/Kafka", "MessagesInPerSec", "Cluster Name", "migration-msk-cluster-dev", "Broker ID", "1" ], | ||
jugal-chauhan marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
[ "...", "2" ] | ||
], | ||
"view": "timeSeries", | ||
"stacked": false, | ||
"title": "Kafka Message Commit Rate", | ||
"region": "us-west-1", | ||
"stat": "Sum", | ||
"period": 60, | ||
"setPeriodToTimeRange": true | ||
} | ||
}, | ||
{ | ||
"height": 10, | ||
"width": 12, | ||
"y": 32, | ||
"x": 12, | ||
"type": "metric", | ||
"properties": { | ||
"metrics": [ | ||
[ "OpenSearchMigrations", "lagBetweenSourceAndTargetRequests", "OTelLib", "replayer" ], | ||
[ ".", "scheduleLag", ".", "." ] | ||
], | ||
"sparkline": true, | ||
"view": "singleValue", | ||
"title": "Replayer Consumer Lag (ms)", | ||
"region": "us-west-1", | ||
"stat": "Maximum", | ||
"period": 60, | ||
"setPeriodToTimeRange": false, | ||
"trend": true, | ||
"liveData": true | ||
} | ||
}, | ||
{ | ||
"height": 1, | ||
"width": 24, | ||
"y": 42, | ||
"x": 0, | ||
"type": "text", | ||
"properties": { | ||
"markdown": "# Replayer Performance" | ||
} | ||
}, | ||
{ | ||
"height": 10, | ||
"width": 12, | ||
"y": 21, | ||
"x": 0, | ||
"type": "metric", | ||
"properties": { | ||
"metrics": [ | ||
[ { "expression": "(m1/m2)*10", "label": "Replay Speed Multiplier", "id": "e1" } ], | ||
[ "OpenSearchMigrations", "kafkaBytesRead", "OTelLib", "replayer", { "id": "m1", "visible": false } ], | ||
[ ".", "bytesWrittenToTarget", ".", ".", { "id": "m2", "visible": false } ] | ||
], | ||
"view": "gauge", | ||
"title": "Current Replay Speed Multiplier", | ||
"region": "us-west-1", | ||
"stat": "Sum", | ||
"period": 60, | ||
"yAxis": { | ||
"left": { | ||
"min": 1, | ||
"max": 10 | ||
} | ||
} | ||
} | ||
}, | ||
{ | ||
"height": 9, | ||
"width": 12, | ||
"y": 43, | ||
"x": 12, | ||
"type": "metric", | ||
"properties": { | ||
"metrics": [ | ||
[ "AWS/ECS", "CPUUtilization", "ServiceName", "migration-dev-traffic-replayer-default", "ClusterName", "migration-dev-ecs-cluster" ], | ||
jugal-chauhan marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
[ ".", "MemoryUtilization", ".", ".", ".", "." ] | ||
], | ||
"view": "timeSeries", | ||
"stacked": false, | ||
"title": "Replayer Task Resources", | ||
"region": "us-west-1", | ||
"stat": "Average", | ||
"period": 60, | ||
"yAxis": { | ||
"left": { | ||
"label": "Utilization %" | ||
} | ||
} | ||
} | ||
}, | ||
{ | ||
"height": 1, | ||
"width": 24, | ||
"y": 52, | ||
"x": 0, | ||
"type": "text", | ||
"properties": { | ||
"markdown": "# Cluster Health" | ||
} | ||
}, | ||
{ | ||
"height": 9, | ||
"width": 12, | ||
"y": 53, | ||
"x": 0, | ||
"type": "metric", | ||
"properties": { | ||
"metrics": [ | ||
[ "AWS/ES", "SearchableDocuments", "DomainName", "target-cali", "ClientId", "116981770455", { "label": "Target Cluster" } ], | ||
[ "...", "source-cali", ".", ".", { "label": "Source Cluster" } ] | ||
], | ||
"sparkline": true, | ||
"view": "singleValue", | ||
"region": "us-west-1", | ||
"stat": "Sum", | ||
"period": 60, | ||
"title": "Source vs Target Document Count" | ||
} | ||
}, | ||
{ | ||
"height": 9, | ||
"width": 12, | ||
"y": 53, | ||
"x": 12, | ||
"type": "metric", | ||
"properties": { | ||
"metrics": [ | ||
[ "AWS/ES", "IndexingLatency", "DomainName", "source-cali", "ClientId", "116981770455", { "label": "Source Cluster" } ], | ||
[ "...", "target-cali", ".", ".", { "label": "Target Cluster" } ] | ||
], | ||
"view": "timeSeries", | ||
"stacked": false, | ||
"title": "Indexing Latency Comparison", | ||
"region": "us-west-1", | ||
"stat": "Average", | ||
"period": 60, | ||
"yAxis": { | ||
"left": { | ||
"label": "Latency (ms)" | ||
} | ||
} | ||
} | ||
}, | ||
{ | ||
"height": 10, | ||
"width": 12, | ||
"y": 11, | ||
"x": 0, | ||
"type": "metric", | ||
"properties": { | ||
"metrics": [ | ||
[ { "expression": "(m2/m1)*100", "label": "Replay Ratio %", "id": "e1" } ], | ||
[ "OpenSearchMigrations", "gatheringRequestCount", "OTelLib", "captureProxy", { "label": "Captured Requests", "id": "m1" } ], | ||
[ ".", "httpTransactionCount", ".", "replayer", { "label": "Replayed Requests", "id": "m2" } ] | ||
], | ||
"view": "timeSeries", | ||
"stacked": false, | ||
"region": "us-west-1", | ||
"stat": "Sum", | ||
"period": 60, | ||
"title": "Request Count Comparison" | ||
} | ||
}, | ||
{ | ||
"height": 10, | ||
"width": 12, | ||
"y": 11, | ||
"x": 12, | ||
"type": "metric", | ||
"properties": { | ||
"metrics": [ | ||
[ { "expression": "(m1/(m1+m2))*100", "label": "Mismatch Percentage", "id": "e1" } ], | ||
[ "OpenSearchMigrations", "tupleComparison", "OTelLib", "replayer", "statusCodesMatch", "false", { "label": "Mismatched Status Code", "id": "m1" } ], | ||
[ "...", "true", { "label": "Matched Status Codes", "id": "m2" } ] | ||
], | ||
"view": "timeSeries", | ||
"stacked": false, | ||
"title": "Status Code Mismatch Analyzer", | ||
"region": "us-west-1", | ||
"stat": "Sum", | ||
"period": 60 | ||
} | ||
}, | ||
{ | ||
"height": 10, | ||
"width": 12, | ||
"y": 21, | ||
"x": 12, | ||
"type": "metric", | ||
"properties": { | ||
"metrics": [ | ||
[ "OpenSearchMigrations", "tupleComparison", "OTelLib", "replayer", "statusCodesMatch", "false", { "label": "All Mismatches" } ], | ||
[ "...", "method", "GET", "OTelLib", "replayer", { "label": "GET Mismatches" } ], | ||
[ "...", "PUT", ".", ".", { "label": "PUT Mismatches" } ] | ||
], | ||
"view": "timeSeries", | ||
"stacked": true, | ||
"region": "us-west-1", | ||
"stat": "Sum", | ||
"period": 60, | ||
"title": "HTTP Method-Specific Error Analysis" | ||
} | ||
}, | ||
{ | ||
"type": "metric", | ||
"x": 0, | ||
"y": 43, | ||
"width": 12, | ||
"height": 9, | ||
"properties": { | ||
"metrics": [ | ||
[ { "expression": "((m2+m3)/m1) *100", "label": "Transformation Success Rate %", "id": "e1" } ], | ||
[ "OpenSearchMigrations", "transformSuccess", "OTelLib", "replayer", { "label": "Total Transformations", "id": "m1" } ], | ||
[ ".", "transformedJsonSucceeded", ".", ".", { "label": "JSON Transformations Succeeded", "id": "m2" } ], | ||
[ ".", "transformedTextSucceeded", ".", ".", { "label": "Text Transformations Succeeded", "id": "m3" } ] | ||
], | ||
"view": "singleValue", | ||
"stacked": false, | ||
"region": "us-west-1", | ||
"stat": "Sum", | ||
"period": 60, | ||
"sparkline": true, | ||
"singleValueFullPrecision": true | ||
} | ||
} | ||
] | ||
} |
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.