Home

Enabling diagnostics for Migration reports

You can enable diagnostics for migration report runs. When enabled, Unravel creates detailed diagnostic logs and JSON data for each report run. You can locate these diagnostics in a compressed format at the following location:

<Unravel installation directory>/logs/migration_reports/<report_name>

For example, if you are tracking logs for a Cluster Discovery report, you will find the compressed file at

<Unravel installation directory>logs/migration_reports/cluster_discovery/task_entity_140293025757034_2022_04_05-11:48:29_PM.tar.gz

To enable diagnostics for Migration reports, you must set the following properties to true. By default, these properties are disabled or set to false.

  1. Stop Unravel

    <Unravel installation directory>/unravel/manager stop
    
  2. Set the properties for each of the migration reports.

    • Cluster Discovery

      <Unravel installation directory>/unravel/manager config properties set com.unraveldata.migrationplanning.clusterdiscovery.diagnostics true
      
    • Cloud Mapping Per Host

      <Unravel installation directory>/unravel/manager config properties set com.unraveldata.migrationplanning.cmph.diagnostics true
      
    • Workload Fit

      • Cloud Topology

        <Unravel installation directory>/unravel/manager config properties set com.unraveldata.migrationplanning.slicedice.diagnostics true
        
      • Heatmap

        <Unravel installation directory>/unravel/manager config properties set com.unraveldata.migrationplanning.workload_fit_heatmap.diagnostics true
        
    • Services and Versions Compatibility

      <Unravel installation directory>/unravel/manager config properties set com.unraveldata.migrationplanning.services_compatibility.diagnostics true
      
  3. Apply the changes.

    <Unravel installation directory>/unravel/manager config apply
    
  4. Start Unravel

    <Unravel installation directory>/unravel/manager start

Following are some samples of the diagnostic logs.

  • Cluster Discovery diagnostic log sample

    # The logs & JSON data gets written to the below location
    [unravel@host cluster_discovery]$ pwd
    /opt/unravel/logs/migration_reports/cluster_discovery
    [unravel@host cluster_discovery]$ ls
    task_entity_140293025757034_2022_04_05-11:48:29_PM.tar.gz
    
    [unravel@host cluster_discovery]$ mkdir task_entity_140293025757034 && tar -xzvf task_entity_140293025757034_2022_04_05-11:48:29_PM.tar.gz -C task_entity_140293025757034 --force-local
    [unravel@host task_entity_140293025757034]$ ls
    cluster_discovery_final.json  cluster_summary.json  heatmap_hourly_means.json  hosts_summary.json  metrics_summary_hourly_means.json
    cluster_discovery_task.log  heatmap_hourly_maxs.json  hosts.json  metrics_summary_hourly_maxs.json
    
    # Note that all logs from `appstore_tasks.out` would get redirected to the new log. This is how it appears in `appstore_tasks.out`` for a successful run:
    2022-04-05T23:48:29.979Z |INFO| [CLUSTER_DISCOVERY_TASK]: unravel_task.py:286->run() - Running task "cluster_discovery_task" of type CLUSTER_DISCOVERY_REPORT, request id:559e2165-6646-44c6-a3e3-f2180ad05f4c, object id:140291489419328
    2022-04-05T23:48:29.985Z |WARNING| [CLUSTER_DISCOVERY_TASK]: migration_planning_task.py:114->check_diagnostics() - Diagnostics enabled for cluster_discovery_task
    2022-04-05T23:48:29.987Z |WARNING| [CLUSTER_DISCOVERY_TASK]: migration_planning_task.py:115->check_diagnostics() - com.unraveldata.migrationplanning.clusterdiscovery.diagnostics is set to True
    2022-04-05T23:48:29.988Z |WARNING| [CLUSTER_DISCOVERY_TASK]: migration_planning_task.py:118->check_diagnostics() - Creating a new directory structure to store diag logs & JSON data
    2022-04-05T23:48:29.991Z |WARNING| [CLUSTER_DISCOVERY_TASK]: migration_planning_task.py:134->check_diagnostics() - New directory created for task: cluster_discovery_task, entity_id:140293025757034, path: /opt/unravel/logs/migration_reports/cluster_discovery/task_entity_140293025757034_2022_04_05-11:48:29_PM
    2022-04-05 23:48:29.993Z |WARNING| Logging APPSTORE to '/opt/unravel/logs/migration_reports/cluster_discovery/task_entity_140293025757034_2022_04_05-11:48:29_PM/cluster_discovery_task.log'
    2022-04-05 23:48:37.122Z |WARNING| Successfully compressed diag directory as '/opt/unravel/logs/migration_reports/cluster_discovery/task_entity_140293025757034_2022_04_05-11:48:29_PM.tar.gz'
    2022-04-05 23:48:37.125Z |WARNING| Logging APPSTORE to '/opt/unravel/logs/appstore_tasks.out'
    2022-04-05 23:48:37.135Z |INFO| Task cluster_discovery_task[559e2165-6646-44c6-a3e3-f2180ad05f4c] succeeded in 7.261254329234362s: ('done', None)
  • Services and Versions Compatibility diagnostic log sample

    # The logs & JSON data gets written to the below location
    [unravel@host services_compatibility]$ pwd
    /opt/unravel/logs/migration_reports/services_compatibility
    [unravel@host services_compatibility]$ ls
    task_entity_140293025804266_2022_04_06-12:05:49_AM.tar.gz
    
    [unravel@host services_compatibility]$ mkdir task_entity_140293025804266 && tar -zxvf task_entity_140293025804266_2022_04_06-12:05:49_AM.tar.gz -C task_entity_140293025804266 --force-local
    [unravel@host task_entity_140293025804266]$ ls
    services_compatibility_task.log  services_mapping.json
    
    # Note that all logs from `appstore_tasks.out` would get redirected to the new log. This is how it appears in `appstore_tasks.out` for a successful run:
    2022-04-06T05:11:24.849Z |INFO| [SERVICES_COMPATIBILITY_TASK]: unravel_task.py:286->run() - Running task "services_compatibility_task" of type SERVICES_COMPATIBILITY_TASK, request id:d158cae9-5a37-40cb-844c-b3493ed2d1a7, object id:140070179829552
    2022-04-06T05:11:24.855Z |WARNING| [SERVICES_COMPATIBILITY_TASK]: migration_planning_task.py:117->check_diagnostics() - Diagnostics enabled for services_compatibility_task
    2022-04-06T05:11:24.856Z |WARNING| [SERVICES_COMPATIBILITY_TASK]: migration_planning_task.py:118->check_diagnostics() - com.unraveldata.migrationplanning.services_compatibility.diagnostics is set to True
    2022-04-06T05:11:24.857Z |WARNING| [SERVICES_COMPATIBILITY_TASK]: migration_planning_task.py:121->check_diagnostics() - Creating a new directory structure to store diag logs & JSON data
    2022-04-06T05:11:24.859Z |WARNING| [SERVICES_COMPATIBILITY_TASK]: migration_planning_task.py:137->check_diagnostics() - New directory created for task: services_compatibility_task, entity_id:140072290864107, path: /opt/unravel/logs/migration_reports/services_compatibility/task_entity_140072290864107_2022_04_06-05:11:24_AM
    2022-04-06T05:11:24.861Z |WARNING| Logging APPSTORE to '/opt/unravel/logs/migration_reports/services_compatibility/task_entity_140072290864107_2022_04_06-05:11:24_AM/services_compatibility_task.log'
    2022-04-06T05:11:26.301Z |WARNING| Successfully compressed diag directory as '/opt/unravel/logs/migration_reports/services_compatibility/task_entity_140072290864107_2022_04_06-05:11:24_AM.tar.gz'
    2022-04-06T05:11:26.302Z |WARNING| Resetting the diagnostics logger to original state
    2022-04-06T05:11:26.303Z |WARNING| Logging APPSTORE to '/opt/unravel/logs/appstore_tasks.out'
    2022-04-06T05:11:26.318Z |INFO| Task services_compatibility_task[d158cae9-5a37-40cb-844c-b3493ed2d1a7] succeeded in 1.5931894164532423s: ('done', None)