Dashboard and Log Gap

This page describes the APIs that can be used to retrieve Dashboard information together with log gap report

Dashboard full information with current states API

Purpose:

Allows getting up-to-date information about Configuration(s), including the Configurations states (Busy, in Failover State, etc.) and Databases states (ONLINE, RECOVERING, etc), log gap, and others.

API:

POST /api/dashboard

to get information about all Configurations

POST /api/dashboard/{configurationId}

to get information about the specific one

Request body:

None.

Curl example:

curl -k -u admin:admin -d '{}' https://localhost:4433/api/dashboard

Successful response body:

{ "Status": 200, "Result": [ { "ConfigurationId": 1, "ConfigurationType": "Oracle", "ConfigurationName": "DEV", "PrimaryHost": { "HostAddress": "oracle1", "OS": "linux", "DefaultBackupDir": "/usr/local/dbvisit/multiplatform/backup", "IPAddresses": [ "172.22.0.4" ], "ServiceUser": "oracle", "FileTransferListenAddress": "", "FileTransferListenPort": 7890 }, "StandbyHost": { "HostAddress": "oracle2", "OS": "linux", "DefaultBackupDir": "/usr/local/dbvisit/multiplatform/backup", "IPAddresses": [ "172.22.0.8" ], "ServiceUser": "oracle", "FileTransferListenAddress": "", "FileTransferListenPort": 7890 }, "Settings": { "ApplicationDelayMinutes": 0, "StandbyMode": { "UndoFilePath": "", "Enabled": false }, "AutomatedStandbyUpdate": { "Enabled": true, "IntervalSeconds": 600, "BackupType": "l" }, "Notifications": { "To": null }, "Observer": { "Enabled": true, "NotificationOnly": true, "CheckIntervalSeconds": 60, "MaxFailCount": 3, "SendEmail": false, "SendSlack": false, "HeartbeatEnabled": false, "HeartbeatHour": 7, "HeartbeatMinute": 0, "Rule": "" } }, "HasFailedOver": false, "LicenseInfo": { "LicenseKey": "4jo6z-8aaai-u09b6-ijjwh-2a276-1phe9-k1quu", "ExpiryDate": "2020-07-10" }, "PrimaryDatabaseState": "ONLINE", "StandbyDatabaseState": "RECOVERING", "ConfigurationBusy": false, "GapTimeSeconds": 17984, "GapTime": "4 hours 59 minutes 44 seconds" }, { "ConfigurationId": 3, "ConfigurationType": "SqlServer", "ConfigurationName": "SQLTestBigDB", "PrimaryHost": { "HostAddress": "sql1", "OS": "linux", "DefaultBackupDir": "/usr/local/dbvisit/multiplatform/backup", "IPAddresses": [ "172.22.0.6" ], "ServiceUser": "sqlsrv", "FileTransferListenAddress": "", "FileTransferListenPort": 7890 }, "PrimaryInstanceName": "MSSQLSERVER", "StandbyHost": { "HostAddress": "sql2", "OS": "linux", "DefaultBackupDir": "/usr/local/dbvisit/multiplatform/backup", "IPAddresses": [ "172.22.0.9" ], "ServiceUser": "sqlsrv", "FileTransferListenAddress": "", "FileTransferListenPort": 7890 }, "StandbyInstanceName": "MSSQLSERVER", "Settings": { "ApplicationDelayMinutes": 0, "StandbyMode": { "UndoFilePath": "", "Enabled": false }, "AutomatedStandbyUpdate": { "Enabled": true, "IntervalSeconds": 300, "BackupType": "l" }, "Notifications": { "To": null }, "Observer": { "Enabled": true, "NotificationOnly": true, "CheckIntervalSeconds": 60, "MaxFailCount": 3, "SendEmail": false, "SendSlack": false, "HeartbeatEnabled": false, "HeartbeatHour": 7, "HeartbeatMinute": 0, "Rule": "" } }, "HasFailedOver": false, "LicenseInfo": { "LicenseKey": "4jo70-qwp4l-7gplh-g1ejv-z7t8p-20tah-iodzn", "ExpiryDate": "2022-03-11" }, "PrimaryDatabaseState": "ONLINE", "StandbyDatabaseState": "RESTORING", "ConfigurationBusy": false, "GapTimeSeconds": 304, "GapTime": "5 minutes 4 seconds" }, { "ConfigurationId": 2, "ConfigurationType": "SqlServer", "ConfigurationName": "SQLTestDB", "PrimaryHost": { "HostAddress": "sql1", "OS": "linux", "DefaultBackupDir": "/usr/local/dbvisit/multiplatform/backup", "IPAddresses": [ "172.22.0.6" ], "ServiceUser": "sqlsrv", "FileTransferListenAddress": "", "FileTransferListenPort": 7890 }, "PrimaryInstanceName": "MSSQLSERVER", "StandbyHost": { "HostAddress": "sql2", "OS": "linux", "DefaultBackupDir": "/usr/local/dbvisit/multiplatform/backup", "IPAddresses": [ "172.22.0.9" ], "ServiceUser": "sqlsrv", "FileTransferListenAddress": "", "FileTransferListenPort": 7890 }, "StandbyInstanceName": "MSSQLSERVER", "Settings": { "ApplicationDelayMinutes": 0, "StandbyMode": { "UndoFilePath": "", "Enabled": false }, "AutomatedStandbyUpdate": { "Enabled": true, "IntervalSeconds": 300, "BackupType": "l" }, "Notifications": { "To": null }, "Observer": { "Enabled": true, "NotificationOnly": true, "CheckIntervalSeconds": 60, "MaxFailCount": 3, "SendEmail": false, "SendSlack": false, "HeartbeatEnabled": false, "HeartbeatHour": 7, "HeartbeatMinute": 0, "Rule": "" } }, "HasFailedOver": false, "LicenseInfo": { "LicenseKey": "4jo70-qwp4l-7gplh-g1ejv-z7t8p-20tah-iodzn", "ExpiryDate": "2022-03-11" }, "PrimaryDatabaseState": "ONLINE", "StandbyDatabaseState": "RESTORING", "ConfigurationBusy": false, "GapTimeSeconds": 304, "GapTime": "5 minutes 4 seconds" } ] }

Log Gap Report

Purpose:

Allows Running log gap report for specific configuration

API:

POST /api/oracle/log-gap-report/{Primary_Agent_ID}

Request body:

{ "Params":{ "ConfigurationName":"MEGA" } }

Curl example:

curl -sku admin:admin -d '{"Params":{"ConfigurationName":"MEGA"}}' https://localhost:4433/api/oracle/log-gap-report/30rvnz6xb2i3j

Successful response body:

{ "Status": 200, "Result": { "log_gap_report": { "cascade": "N", "time_diff": { "std": "+25:35:54", "formatted": "+01 DAY 01:35:54" }, "info": [ { "source": { "last_transferred_timestamp": "2022-04-12 12:46:33", "last_transferred_seq": 549, "current_seq": "555", "archived_seq": "554" }, "log_gap": { "apply": 5, "transfer": 5 }, "destination": { "recovery_seq": 550 }, "thread": "1" } ], "source": { "tz": "+02:00", "timestamp": "2022-04-13:14:22:24", "scn": "47102018" }, "apply_delay_lag_min": "0", "destination": { "tz": "+02:00", "timestamp": "2022-04-12:12:46:30", "scn": "46986545" } }, "ready": 0, "trace_file_basename": "214460_5_dbvctl_i_MEGA_202204131422.trc", "trace_file": "/usr/dbvisit/standbymp/oracle/trace/214460_5_dbvctl_i_MEGA_202204131422.trc", "pid": "214460_5", "done": 1 } }

Log Gap Report Example

For getting comprehensive JSON output results, while using API, we parse all outputs with “jq” which can be easily installed by for example as root:

In all below examples we use authentication method via “-u” for authentication method via cookie, check the https://dbvisit.atlassian.net/wiki/spaces/DSMP/pages/3432972289 page

To find out transfer and archive log gap for given configuration: