Esempio n. 1
0
        public void ParseData(LogAnalytics logAnalytics)
        {
            try
            {
                var stopwatch = Stopwatch.StartNew();

                ParsingStatus = ParsingStatus.Parsing;

                var parsedLog = logAnalytics.Parser.ParseLog(FileInfo.FullName);
                var log       = logAnalytics.Processor.GetProcessedLog(parsedLog);

                var encounter = logAnalytics.Analyser.GetEncounter(log);
                EncounterName   = encounter.GetName();
                EncounterResult = encounter.GetResult();
                Players         = logAnalytics.Analyser.GetPlayers(log).Where(x => x.Identified).Select(x =>
                                                                                                        new LogPlayer(x.Name, x.AccountName, x.Subgroup, x.Profession, x.EliteSpecialization,
                                                                                                                      GetGuildGuid(x.GuildGuid))
                                                                                                        ).ToArray();

                EncounterStartTime = log.StartTime.ServerTime;
                EncounterDuration  = logAnalytics.Analyser.GetEncounterDuration(encounter);

                stopwatch.Stop();

                ParseMilliseconds = stopwatch.ElapsedMilliseconds;
                ParseTime         = DateTimeOffset.Now;
                ParsingStatus     = ParsingStatus.Parsed;
            }
            catch (Exception e)
            {
                ParsingStatus    = ParsingStatus.Failed;
                ParsingException = e;
            }
        }
Esempio n. 2
0
        public void ParseData(LogAnalytics logAnalytics)
        {
            try
            {
                var stopwatch = Stopwatch.StartNew();

                ParsingStatus = ParsingStatus.Parsing;

                var parsedLog = logAnalytics.Parser.ParseLog(FileInfo.FullName);
                var log       = logAnalytics.Processor.ProcessLog(parsedLog);
                var analyzer  = logAnalytics.AnalyzerFactory(log);

                GameLanguage = log.GameLanguage;
                GameBuild    = log.GameBuild;
                EvtcVersion  = log.EvtcVersion;
                PointOfView  = new PointOfView
                {
                    AccountName   = log.PointOfView.AccountName,
                    CharacterName = log.PointOfView.Name
                };
                Encounter        = log.EncounterData.Encounter;
                MapId            = log.MapId;
                MainTargetName   = log.MainTarget?.Name ?? UnknownMainTargetName;
                EncounterResult  = analyzer.GetResult();
                EncounterMode    = analyzer.GetMode();
                HealthPercentage = GetHealthPercentage(log);
                if (EncounterResult == EncounterResult.Success)
                {
                    HealthPercentage = 0;
                }

                var tagEvents = log.Events.OfType <AgentTagEvent>().Where(x => x.Id != 0 && x.Agent is Player);
                Players = analyzer.GetPlayers().Where(x => x.Identified).Select(p =>
                                                                                new LogPlayer(p.Name, p.AccountName, p.Subgroup, p.Profession, p.EliteSpecialization,
                                                                                              GetGuildGuid(p.GuildGuid))
                {
                    Tag = tagEvents.Any(e => e.Agent == p) ? PlayerTag.Commander : PlayerTag.None
                }
                                                                                ).ToArray();

                EncounterStartTime = log.StartTime.ServerTime;
                EncounterDuration  = analyzer.GetEncounterDuration();

                stopwatch.Stop();

                ParseMilliseconds = stopwatch.ElapsedMilliseconds;
                ParseTime         = DateTimeOffset.Now;
                ParsingStatus     = ParsingStatus.Parsed;
            }
            catch (Exception e)
            {
                ParsingStatus    = ParsingStatus.Failed;
                ParsingException = new ExceptionData(e);
            }
            finally
            {
                ParsingVersion = typeof(LogAnalytics).Assembly.GetName().Version;
            }
        }
Esempio n. 3
0
        public IWithCreate WithLogAnalytics(string workspaceId, string workspaceKey)
        {
            LogAnalytics logAnalytics = new LogAnalytics();

            logAnalytics.WorkspaceId            = workspaceId;
            logAnalytics.WorkspaceKey           = workspaceKey;
            this.Inner.Diagnostics              = new ContainerGroupDiagnostics();
            this.Inner.Diagnostics.LogAnalytics = logAnalytics;
            return(this);
        }
        public static ContainerGroup CreateTestContainerGroup(string containerGroupName)
        {
            var containers = new Container[]
            {
                new Container(
                    name: containerGroupName,
                    image: "alpine",
                    ports: new List <ContainerPort>()
                {
                    new ContainerPort(80)
                },
                    command: new List <string>()
                {
                    "/bin/sh", "-c", "while true; do sleep 10; done"
                },
                    environmentVariables: new List <EnvironmentVariable>
                {
                    new EnvironmentVariable(name: "secretEnv", secureValue: "secretValue1")
                },
                    livenessProbe: new ContainerProbe(
                        exec: new ContainerExec(command: new List <string> {
                    "cat", "/tmp/healthy"
                }),
                        periodSeconds: 20),
                    resources: new ResourceRequirements(requests: new ResourceRequests(memoryInGB: 1.5, cpu: 1.0)))
            };

            var ipAddress = new IpAddress(
                ports: new List <Port>()
            {
                new Port(80, "TCP")
            },
                dnsNameLabel: containerGroupName,
                type: ContainerGroupIpAddressType.Public);

            var logAnalytics = new LogAnalytics(
                workspaceId: "workspaceid",
                workspaceKey: "workspacekey");

            var msiIdentity = new ContainerGroupIdentity(type: ResourceIdentityType.SystemAssigned);

            var containerGroup = new ContainerGroup(
                name: containerGroupName,
                location: "westus",
                osType: OperatingSystemTypes.Linux,
                ipAddress: ipAddress,
                restartPolicy: "Never",
                containers: containers,
                identity: msiIdentity,
                diagnostics: new ContainerGroupDiagnostics(logAnalytics: logAnalytics));

            return(containerGroup);
        }
Esempio n. 5
0
        public IWithCreate WithLogAnalytics(string workspaceId, string workspaceKey, LogAnalyticsLogType logType, IDictionary <string, string> metadata)
        {
            LogAnalytics logAnalytics = new LogAnalytics();

            logAnalytics.WorkspaceId            = workspaceId;
            logAnalytics.WorkspaceKey           = workspaceKey;
            logAnalytics.LogType                = logType;
            logAnalytics.Metadata               = metadata;
            this.Inner.Diagnostics              = new ContainerGroupDiagnostics();
            this.Inner.Diagnostics.LogAnalytics = logAnalytics;
            return(this);
        }
Esempio n. 6
0
        public void QueueForIngest(FileObject fileObject)
        {
            Log.Debug("enter");

            if (Config.IsKustoConfigured())
            {
                TaskManager.QueueTaskAction(() => Kusto.AddFile(fileObject));
            }

            if (Config.IsLogAnalyticsConfigured())
            {
                TaskManager.QueueTaskAction(() => LogAnalytics.AddFile(fileObject));
            }
        }
Esempio n. 7
0
        public void ParseData(LogAnalytics logAnalytics)
        {
            try
            {
                var stopwatch = Stopwatch.StartNew();

                ParsingStatus = ParsingStatus.Parsing;

                var parsedLog = logAnalytics.Parser.ParseLog(FileInfo.FullName);
                var log       = logAnalytics.Processor.ProcessLog(parsedLog);
                var analyzer  = logAnalytics.AnalyzerFactory(log);

                GameLanguage = log.GameLanguage;
                GameBuild    = log.GameBuild;
                EvtcVersion  = log.EvtcVersion;
                PointOfView  = new PointOfView
                {
                    AccountName   = log.PointOfView.AccountName,
                    CharacterName = log.PointOfView.Name
                };
                Encounter       = log.EncounterData.Encounter;
                MapId           = log.MapId;
                MainTargetName  = log.MainTarget?.Name ?? UnknownMainTargetName;
                EncounterResult = analyzer.GetResult();
                EncounterMode   = analyzer.GetMode();
                Players         = analyzer.GetPlayers().Where(x => x.Identified).Select(x =>
                                                                                        new LogPlayer(x.Name, x.AccountName, x.Subgroup, x.Profession, x.EliteSpecialization,
                                                                                                      GetGuildGuid(x.GuildGuid))
                                                                                        ).ToArray();

                EncounterStartTime = log.StartTime.ServerTime;
                EncounterDuration  = analyzer.GetEncounterDuration();

                stopwatch.Stop();

                ParseMilliseconds = stopwatch.ElapsedMilliseconds;
                ParseTime         = DateTimeOffset.Now;
                ParsingStatus     = ParsingStatus.Parsed;
            }
            catch (Exception e)
            {
                ParsingStatus    = ParsingStatus.Failed;
                ParsingException = new ExceptionData(e);
            }
            finally
            {
                ParsingVersion = typeof(LogAnalytics).Assembly.GetName().Version;
            }
        }
Esempio n. 8
0
        public static ContainerGroup CreateTestContainerGroup(string containerGroupName, bool doNotEncrypt = false)
        {
            var containers = new Container[]
            {
                new Container(
                    name: containerGroupName,
                    image: "alpine",
                    ports: new List <ContainerPort>()
                {
                    new ContainerPort(80)
                },
                    command: new List <string>()
                {
                    "/bin/sh", "-c", "while true; do sleep 10; done"
                },
                    environmentVariables: new List <EnvironmentVariable>
                {
                    new EnvironmentVariable(name: "secretEnv", secureValue: "secretValue1")
                },
                    livenessProbe: new ContainerProbe(
                        exec: new ContainerExec(command: new List <string> {
                    "ls"
                }),
                        periodSeconds: 20),
                    resources: new ResourceRequirements(requests: new ResourceRequests(memoryInGB: 1.5, cpu: 1.0)))
            };

            var initContainers = new InitContainerDefinition[]
            {
                new InitContainerDefinition(
                    name: $"{containerGroupName}init",
                    image: "alpine",
                    command: new List <string>()
                {
                    "/bin/sh", "-c", "sleep 5"
                },
                    environmentVariables: new List <EnvironmentVariable>
                {
                    new EnvironmentVariable(name: "secretEnv", secureValue: "secretValue1")
                })
            };

            var ipAddress = new IpAddress(
                ports: new List <Port>()
            {
                new Port(80, "TCP")
            },
                dnsNameLabel: containerGroupName,
                type: ContainerGroupIpAddressType.Public);

            var logAnalytics = new LogAnalytics(
                workspaceId: "workspaceid",
                workspaceKey: "workspacekey");

            var msiIdentity = new ContainerGroupIdentity(type: ResourceIdentityType.SystemAssigned);

            var encryptionProps = doNotEncrypt ? null : new EncryptionProperties(
                vaultBaseUrl: "https://cloudaci-cloudtest.vault.azure.net/",
                keyName: "testencryptionkey",
                keyVersion: "804d3f1d5ce2456b9bc3dc9e35aaa67e");

            var containerGroup = new ContainerGroup(
                name: containerGroupName,
                location: "westus",
                osType: OperatingSystemTypes.Linux,
                ipAddress: ipAddress,
                restartPolicy: "Never",
                containers: containers,
                identity: msiIdentity,
                diagnostics: new ContainerGroupDiagnostics(logAnalytics: logAnalytics),
                sku: "Standard",
                initContainers: initContainers,
                encryptionProperties: encryptionProps);

            return(containerGroup);
        }
Esempio n. 9
0
 public LogDataProcessor(LogCache logCache, ApiProcessor apiProcessor, LogAnalytics analytics)
 {
     this.analytics    = analytics ?? throw new ArgumentNullException(nameof(analytics));
     this.logCache     = logCache ?? throw new ArgumentNullException(nameof(logCache));
     this.apiProcessor = apiProcessor ?? throw new ArgumentNullException(nameof(apiProcessor));
 }
Esempio n. 10
0
 internal ContainerGroupDiagnostics(LogAnalytics logAnalytics)
 {
     LogAnalytics = logAnalytics;
 }