Server Event Log Dashboard

The perf monitor can parse / read this already to some extent in case you didn’t know

1 Like

I did not.

It’ll load it into a grid and give you times and such is not the best in the world but it works

As Epicor Public Cloud transitions the Kinetic AppServer Infrastructure to be managed by, and run under, Azure Kubernetes Services (AKS), Server Logs will be available to Security Manager users via the standard File Download UI - Admin folder.

For all Datacenters except those in the US, the AKS transition is complete.

For Companies hosted out of Azure US Central, all Pilot and Additional instances are now AKS. Production systems will be migrating to AKS in April.

Companies hosted out of Azure Gov will be migrating to AKS over the next couple of months.

5 Likes

Thanks @Rich, do we have to request the logs be turned on, or will they be on by default?

1 Like

On by Default with AKS.

Once a day?

I just downloaded the last dated one twice and verified, the last one is live data.

Time is Zulu time.

Modified time is when it was closed for the not live ones, and when it was started for the last (live one).

So we are all good! :tada:

1 Like

Yes, we have it enabled in Pilot and Live.

How did you get it? I asked through support and was told its not possible so I didn’t ask the right person or use the right words . . .

This was my original request. I eventually had to get the case transferred to Tier 2 because what Tier 1 did didn’t work. Bradley Johnson got it done.

1 Like

It worked!!!

Ok, now go make us a parser and dashboard.

You got this.

Since they :smiling_imp: are gonna kill this project, I started on the Server Log…

From this:

<Op Utc="2024-09-05T05:00:00.6470697Z" act="Ice:BO:SysAgent/SysAgentSvcContract/GetByIdForTaskAgent" correlationId="d2ae761f-c94d-4a6b-854f-bf09fd8b5d1d" dur="39.233" cli="10.19.11.142:57587" usr="EpicAdmin" machine="PLT67964" pid="2628" tid="16"/>
<Op Utc="2024-09-05T05:00:00.6978094Z" act="Ice:BO:SysTaskAgentRule/SysTaskAgentRuleSvcContract/GetRows" correlationId="24ff78bf-5ced-4605-b00b-7a2e0d0cbad0" dur="6.1312" cli="10.19.11.142:57587" usr="EpicAdmin" machine="PLT67964" pid="2628" tid="16"/>
<Op Utc="2024-09-05T05:00:00.7115024Z" act="Ice:BO:SysAgent/SysAgentSvcContract/Update" correlationId="6e0b2178-ea4d-460c-8d6f-90f6decd95b4" dur="11.3253" cli="10.19.11.142:57587" usr="EpicAdmin" machine="PLT67964" pid="2628" tid="16">
  <BpmCustomization Source="BO" BpMethodCode="Ice.BO.SysAgent.Update" Type="BO Customization" Duration="0">
    <BpmDirective Type="1" ID="2a38a47f-c189-425a-8c27-e1868fb62f5b" Name="BlockDelete" VisibilityScope="2" Duration="0" />
  </BpmCustomization>
</Op>
<Op Utc="2024-09-05T05:00:00.7304859Z" act="Ice:BO:SysAgent/SysAgentSvcContract/ResetScheduleProcessingStartedOn" correlationId="399507b4-6e34-4aeb-b1d0-60eeba293234" dur="3.6844" cli="10.19.11.142:57587" usr="EpicAdmin" machine="PLT67964" pid="2628" tid="16"/>
<Op Utc="2024-09-05T05:00:03.7555565Z" act="Ice:BO:SysAgent/SysAgentSvcContract/GetByIdForTaskAgent" correlationId="3d04eee8-306a-4f9e-9c8e-2ec1ce06641b" dur="8.2369" cli="10.19.11.142:57587" usr="EpicAdmin" machine="PLT67964" pid="2628" tid="41"/>
<Op Utc="2024-09-05T05:00:05.9741930Z" act="Ice:Lib:RunTask/RunTaskSvcContract/RunSystemTasks" correlationId="5ad867b4-2e07-424e-9dc5-594852bee0ed" dur="20.2242" cli="10.19.11.142:57604" usr="EpicAdmin" machine="PLT67964" pid="2628" tid="41"/>
<Op Utc="2024-09-05T05:00:06.7773283Z" act="Ice:BO:SysAgent/SysAgentSvcContract/GetByIdForTaskAgent" correlationId="ad880e8e-e28a-4d74-8e9e-29a846f33eae" dur="7.0049" cli="10.19.11.142:57604" usr="EpicAdmin" machine="PLT67964" pid="2628" tid="41"/>
<Op Utc="2024-09-05T05:00:09.7957022Z" act="Ice:BO:SysAgent/SysAgentSvcContract/GetByIdForTaskAgent" correlationId="4d270c85-bd55-4e28-a3ed-7db3373dc2d8" dur="7.5345" cli="10.19.11.142:57604" usr="EpicAdmin" machine="PLT67964" pid="2628" tid="16"/>

To this:

Sample

[
  {
    "Utc": "2024-09-05T15:52:29.6242748Z",
    "Act": "Ice:Lib:FileStore/FileStoreSvcContract/ReadAllBytes",
    "CorrelationId": "19443c4b-da8b-4263-98b6-f258ecb51cbf",
    "Dur": "9.7161",
    "Cli": "10.19.0.145:50556",
    "Usr": "REDACTED",
    "Machine": "PLT67964",
    "Pid": "2628",
    "Tid": "38",
    "Content": {
      "Exceptions": [
        {
          "ExceptionMessage": "Ice.Common.RecordNotFoundException: Record Not Found.\nat Ice.Lib.FileStore.ReadAllBytes(Guid id, String& fileName) in C:\\_releases\\ICE\\ICE4.3.100.0\\Source\\Server\\Internal\\Lib\\FileStore\\FileStore.cs:line 102\nat Ice.Services.Lib.FileStoreSvc.ReadAllBytes(Guid id, String& fileName) in C:\\_releases\\ICE\\ICE4.3.100.0\\Source\\Server\\Services\\Lib\\FileStore\\FileStore.cs:line 51\nat Ice.Services.Lib.FileStoreSvcFacade.ReadAllBytes(Guid id, String& fileName) in C:\\_releases\\ICE\\ICE4.3.100.0\\Source\\Server\\Services\\Lib\\FileStore\\FileStoreSvcFacade.cs:line 149\nat Ice.Controllers.Lib.FileStoreController.ReadAllBytes(ReadAllBytes_InputModel model) in C:\\_releases\\ICE\\ICE4.3.100.0\\Source\\Server\\Services\\Lib\\FileStore\\Generated\\FileStoreController.cs:line 77\nat lambda_method29065(Closure, Object, Object[])\nat Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()\nat Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)\nat Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()\n--- End of stack trace from previous location ---\nat Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)\nat Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)\nat Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()\n--- End of stack trace from previous location ---\nat Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeFilterPipelineAsync>g__Awaited|20_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)\nat Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)\nat Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeAsync>g__Awaited|17_0(ResourceInvoker invoker, Task task, IDisposable scope)\nat Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)\nat CoreWCF.Channels.ServiceModelHttpMiddleware.InvokeAsync(HttpContext context)\nat CoreWCF.Channels.MetadataMiddleware.InvokeAsync(HttpContext context)\nat Ice.Hosting.AspNetCore.Middleware.DynamicAssemblyPartMiddleware.Invoke(HttpContext context, CurrentCallInformationService currentCallInformation, ControllerLoader controllerLoader) in C:\\_releases\\ICE\\ICE4.3.100.0\\Source\\Server\\Hosting\\AspNetCore\\Ice.Hosting.AspNetCore\\Middleware\\DynamicAssemblyPartMiddleware.cs:line 32\nat Ice.Hosting.AspNetCore.Middleware.IPEnforcerMiddleware.Invoke(HttpContext httpContext) in C:\\_releases\\ICE\\ICE4.3.100.0\\Source\\Server\\Hosting\\AspNetCore\\Ice.Hosting.AspNetCore\\Middleware\\IPEnforcerMiddleware.cs:line 42\nat Ice.Hosting.AspNetCore.ETags.ETagMiddleware.Invoke(HttpContext httpContext) in C:\\_releases\\ICE\\ICE4.3.100.0\\Source\\Server\\Hosting\\AspNetCore\\Ice.Hosting.AspNetCore\\ETags\\ETagMiddleware.cs:line 89\nat Ice.Hosting.AspNetCore.ETags.ETagMiddleware.Invoke(HttpContext httpContext) in C:\\_releases\\ICE\\ICE4.3.100.0\\Source\\Server\\Hosting\\AspNetCore\\Ice.Hosting.AspNetCore\\ETags\\ETagMiddleware.cs:line 107\nat Ice.Hosting.AspNetCore.Middleware.DecompressRequestMiddleware.Invoke(HttpContext context) in C:\\_releases\\ICE\\ICE4.3.100.0\\Source\\Server\\Hosting\\AspNetCore\\Ice.Hosting.AspNetCore\\Middleware\\DecompressRequestMiddleware.cs:line 41\nat Ice.Hosting.AspNetCore.Middleware.AuthenticationMiddleware.InvokeAsync(HttpContext httpContext, CurrentCallInformationService callInformation) in C:\\_releases\\ICE\\ICE4.3.100.0\\Source\\Server\\Hosting\\AspNetCore\\Ice.Hosting.AspNetCore\\Middleware\\AuthenticationMiddleware.cs:line 71\nat Ice.Hosting.AspNetCore.Middleware.CallHeaderMiddleware.InvokeAsync(HttpContext httpContext) in C:\\_releases\\ICE\\ICE4.3.100.0\\Source\\Server\\Hosting\\AspNetCore\\Ice.Hosting.AspNetCore\\Middleware\\CallHeaderMiddleware.cs:line 51\nat Ice.Hosting.AspNetCore.Middleware.OperationDisposerMiddleware.InvokeAsync(HttpContext httpContext) in C:\\_releases\\ICE\\ICE4.3.100.0\\Source\\Server\\Hosting\\AspNetCore\\Ice.Hosting.AspNetCore\\Middleware\\OperationDisposerMiddleware.cs:line 23"
        }
      ]
    }
  },
  {
    "Utc": "2024-09-05T20:23:38.7015492Z",
    "Act": "Ice:BO:DynamicQuery/DynamicQuerySvcContract/ExecuteByID",
    "CorrelationId": "dae334d0-4504-44a2-a9a1-bbd8dbabb3f7",
    "Dur": "116.6622",
    "Cli": "10.19.0.30:48956",
    "Usr": "REDACTED",
    "Machine": "PLT67964",
    "Pid": "2628",
    "Tid": "36",
    "Content": {
      "Customization": {
        "CallService": {
          "Message": "Calling service 'Ice.Contracts.SysTagSvcContract'."
        }
      },
      "BPMCustomization": [
        {
          "Source": "DQ",
          "BpMethodCode": "Ice.MS67964/FunctionRunnerBAQ.GetList",
          "Type": "UBAQ Update Processing",
          "ExecutionInterruptedOnDirective": "ba8ded9c-e2bc-45b0-be2d-461b957a17fc",
          "Duration": 108,
          "Directive": {
            "Type": 1,
            "ID": "ba8ded9c-e2bc-45b0-be2d-461b957a17fc",
            "Name": "FunctionRunnerBAQ",
            "VisibilityScope": 2,
            "Duration": 108
          }
        }
      ]
    }
  },
  {
    "Utc": "2024-09-05T20:26:38.9466312Z",
    "Act": "Ice:BO:DynamicQuery/DynamicQuerySvcContract/Execute",
    "CorrelationId": "407979d0-e233-4b8c-a440-adeaa27a227e",
    "Dur": "84.2153",
    "Cli": "10.19.0.30:38232",
    "Usr": "REDACTED",
    "Machine": "PLT67964",
    "Pid": "2628",
    "Tid": "45",
    "Content": {
      "BAQ": {
        "QueryID": "systag",
        "QueryCompany": "MS67964",
        "Company": "MS67964",
        "QueryPreparationTime": 11.1368,
        "SQLExecutionTime": 26.4903,
        "DataFetchTime": 0.2757,
        "TotalRows": 51,
        "ExecutionTime": 50.8964
      }
    }
  },
  {
    "Utc": "2024-09-05T05:00:00.6470697Z",
    "Act": "Ice:BO:SysAgent/SysAgentSvcContract/GetByIdForTaskAgent",
    "CorrelationId": "d2ae761f-c94d-4a6b-854f-bf09fd8b5d1d",
    "Dur": "39.233",
    "Cli": "10.19.11.142:57587",
    "Usr": "REDACTED",
    "Machine": "PLT67964",
    "Pid": "2628",
    "Tid": "16",
    "Content": null
  },
  {
    "Utc": "2024-09-05T05:00:00.6978094Z",
    "Act": "Ice:BO:SysTaskAgentRule/SysTaskAgentRuleSvcContract/GetRows",
    "CorrelationId": "24ff78bf-5ced-4605-b00b-7a2e0d0cbad0",
    "Dur": "6.1312",
    "Cli": "10.19.11.142:57587",
    "Usr": "REDACTED",
    "Machine": "PLT67964",
    "Pid": "2628",
    "Tid": "16",
    "Content": null
  },
,
  {
    "Utc": "2024-09-05T20:23:47.8315616Z",
    "Act": "Ice:Lib:RunTask/RunTaskSvcContract/RunTask",
    "CorrelationId": "e1268a58-b2b4-440d-bdb0-c13caef927f2",
    "Dur": "10933.0551",
    "Cli": "10.19.11.142:65499",
    "Usr": "REDACTED",
    "Machine": "PLT67964",
    "Pid": "2628",
    "Tid": "36",
    "Content": "TraceMessagesDisabled"
  }
]

Gotta few bugs and parsing errors I’m working out, but it’s a good start.
Should be able to do something cool with this.

3 Likes

Think I got something that’ll work

  {
    "Attributes": {
      "Utc": "2024-09-05T20:23:38.1958455Z",
      "act": "Ice:BO:DynamicQuery/DynamicQuerySvcContract/ExecuteByID",
      "correlationId": "69c468c4-8a2c-4c72-992f-07a184245184",
      "dur": "439.5954",
      "cli": "10.19.0.30:48940",
      "usr": "KLINCECUM",
      "machine": "PLT67964",
      "pid": "2628",
      "tid": "36"
    },
    "Elements": {
      "BpmCustomization": [
        {
          "Attributes": {
            "Source": "DQ",
            "BpMethodCode": "Ice.MS67964/FunctionRunnerBAQ.GetList",
            "Type": "UBAQ Update Processing",
            "ExecutionInterruptedOnDirective": "ba8ded9c-e2bc-45b0-be2d-461b957a17fc",
            "Duration": "34"
          },
          "Elements": {
            "BpmDirective": [
              {
                "Attributes": {
                  "Type": "1",
                  "ID": "ba8ded9c-e2bc-45b0-be2d-461b957a17fc",
                  "Name": "FunctionRunnerBAQ",
                  "VisibilityScope": "2",
                  "Duration": "33"
                }
              }
            ]
          }
        }
      ]
    }
  },
  {
    "Attributes": {
      "Utc": "2024-09-05T20:23:38.7015492Z",
      "act": "Ice:BO:DynamicQuery/DynamicQuerySvcContract/ExecuteByID",
      "correlationId": "dae334d0-4504-44a2-a9a1-bbd8dbabb3f7",
      "dur": "116.6622",
      "cli": "10.19.0.30:48956",
      "usr": "KLINCECUM",
      "machine": "PLT67964",
      "pid": "2628",
      "tid": "36"
    },
    "Elements": {
      "Customization.CallService": [
        {
          "Attributes": {
            "msg": "Calling service 'Ice.Contracts.SysTagSvcContract'."
          }
        }
      ],
      "BpmCustomization": [
        {
          "Attributes": {
            "Source": "DQ",
            "BpMethodCode": "Ice.MS67964/FunctionRunnerBAQ.GetList",
            "Type": "UBAQ Update Processing",
            "ExecutionInterruptedOnDirective": "ba8ded9c-e2bc-45b0-be2d-461b957a17fc",
            "Duration": "108"
          },
          "Elements": {
            "BpmDirective": [
              {
                "Attributes": {
                  "Type": "1",
                  "ID": "ba8ded9c-e2bc-45b0-be2d-461b957a17fc",
                  "Name": "FunctionRunnerBAQ",
                  "VisibilityScope": "2",
                  "Duration": "108"
                }
              }
            ]
          }
        }
      ]
    }
  }

Just starting down this path, looking for all BAQ executions within our serverlog files with the goal to determine the most used, most resource intensive, etc. The faux(?) XML format to these logs is confounding to me. @klincecum: Do you have anything you can share for the transformation you describe here?

1 Like

I have done some preliminary work on parsing these efficiently, and it looks promising. However, I just don’t currently have the time to get back to it. :sob:

You Got This Harry Potter GIF by Sky