public async Task <bool> UpdateDevOpsMonitoringEvent(string requestBody)
        {
            MonitoringEvent monitoringEvent = new MonitoringEvent(requestBody);
            string          url             = $"/api/TableStorage/UpdateDevOpsMonitoringEvent";

            return(await PostResponse(Client, url, monitoringEvent));
        }
 /// <summary>
 /// Gets the alarm data.
 /// </summary>
 /// <param name="monitoringEvent">The monitoring event.</param>
 /// <returns>AlarmData.</returns>
 public static AlarmData GetAlarmData(this MonitoringEvent monitoringEvent)
 {
     using (StringReader sr = new StringReader(monitoringEvent.EventData))
     {
         XmlSerializer xz = new XmlSerializer(typeof(AlarmData));
         return(xz.Deserialize(sr) as AlarmData);
     }
 }
Exemple #3
0
        internal void SetErrorTestResult(EventId eventId, string strMessage)
        {
            this.SetResult(false, -1.0);
            MonitoringEvent item = new MonitoringEvent("MSExchange Monitoring ExchangeSearch", (int)eventId, EventTypeEnumeration.Error, strMessage, this.Database);

            this.Error = strMessage;
            this.DetailEvents.Add(item);
        }
Exemple #4
0
        internal void SetErrorTestResultWithTestThreadTimeOut()
        {
            this.SetResult(false, 0.0);
            this.resultTimeout = true;
            MonitoringEvent item = new MonitoringEvent("MSExchange Monitoring ExchangeSearch", 1020, EventTypeEnumeration.Error, Strings.TestSearchTestThreadTimeOut, this.Database);

            this.Error = Strings.TestSearchTestThreadTimeOut;
            this.DetailEvents.Add(item);
        }
Exemple #5
0
        public async Task AzureMonitorProcessingTest()
        {
            //Arrange
            TableStorageAuth tableStorageAuth = Common.GenerateTableAuthorization(Configuration);
            MonitoringEvent  monitoringEvent  = new MonitoringEvent(@"
{
  ""schemaId"": ""AzureMonitorMetricAlert"",
  ""data"": {
    ""version"": ""2.0"",
    ""properties"": null,
    ""status"": ""Activated"",
    ""context"": {
      ""timestamp"": ""2020-05-25T00:11:28.7763615Z"",
      ""id"": ""/subscriptions/07db7d0b-a6cb-4e58-b07e-e1d541c39f5b/resourceGroups/SamLearnsAzureFeatureFlags/providers/microsoft.insights/metricAlerts/ServerErrors%20featureflags-data-eu-service"",
      ""name"": ""ServerErrors featureflags-data-eu-service"",
      ""description"": """",
      ""conditionType"": ""SingleResourceMultipleMetricCriteria"",
      ""severity"": ""3"",
      ""condition"": {
        ""windowSize"": ""PT5M"",
        ""allOf"": [
          {
            ""metricName"": ""Http5xx"",
            ""metricNamespace"": ""Microsoft.Web/sites"",
            ""operator"": ""GreaterThan"",
            ""threshold"": ""10"",
            ""timeAggregation"": ""Total"",
            ""dimensions"": [
              {
                ""name"": ""ResourceId"",
                ""value"": ""featureflags-data-eu-service.azurewebsites.net""
              }
            ],
            ""metricValue"": 11.0,
            ""webTestName"": null
          }
        ]
      },
      ""subscriptionId"": ""07db7d0b-a6cb-4e58-b07e-e1d541c39f5b"",
      ""resourceGroupName"": ""SamLearnsAzureTest"",
      ""resourceName"": ""featureflags-data-eu-service"",
      ""resourceType"": ""Microsoft.Web/sites"",
      ""resourceId"": ""/subscriptions/07db7d0b-a6cb-4e58-b07e-e1d541c39f5b/resourceGroups/SamLearnsAzureFeatureFlags/providers/Microsoft.Web/sites/featureflags-data-eu-service"",
      ""portalLink"": ""https://portal.azure.com/#resource/subscriptions/07db7d0b-a6cb-4e58-b07e-e1d541c39f5b/resourceGroups/SamLearnsAzureFeatureFlags/providers/Microsoft.Web/sites/featureflags-data-eu-service""
    }
  }
}
");

            //Act
            AzureTableStorageDA da = new AzureTableStorageDA();
            bool result            = await da.UpdateDevOpsMonitoringEvent(tableStorageAuth, monitoringEvent);

            //Assert
            Assert.IsTrue(result == true);
        }
Exemple #6
0
        public void Handle(MonitoringEvent evt)
        {
            var heartbeatEvent = evt as HeartbeatEvent;

            if (heartbeatEvent != null)
            {
                _repository.SaveOrUpdate(heartbeatEvent);
                // notify the clients (signalr)
                MonitoringHub.Heartbeat(heartbeatEvent);
            }
        }
Exemple #7
0
        public void Handle(MonitoringEvent evt)
        {
            var logEvent = evt as LogEvent;

            if (logEvent != null)
            {
                _repository.SaveOrUpdate(logEvent);
                // notify the clients (signalr)
                MonitoringHub.Log(logEvent);
            }
        }
 private void OnMonitoringEvent(ResourceMonitorEventArgs e)
 {
     try
     {
         MonitoringEvent?.Invoke(this, e);
     }
     catch (Exception ex)
     {
         _logger.LogCritical(0, ex, "The event handler has thrown an exception. The Exception will be re-thrown and the Monitoring will stop.");
         throw;
     }
 }
Exemple #9
0
 internal void SetTestResult(bool bResult, double SearchTimeInSeconds)
 {
     if (bResult)
     {
         MonitoringEvent item = new MonitoringEvent("MSExchange Monitoring ExchangeSearch", 1000, EventTypeEnumeration.Success, Strings.TestSearchSucceeded(this.Database), this.Database);
         this.DetailEvents.Add(item);
     }
     else if (!this.resultTimeout)
     {
         MonitoringEvent item = new MonitoringEvent("MSExchange Monitoring ExchangeSearch", 1001, EventTypeEnumeration.Error, Strings.TestSearchFailed(this.Mailbox, this.Database, this.Server), this.Database);
         this.Error = Strings.TestSearchFailed(this.Mailbox, this.Database, this.Server);
         this.DetailEvents.Add(item);
     }
     this.SetResult(bResult, SearchTimeInSeconds);
 }
        public async Task UpdateDevOpsMonitoringEventTest()
        {
            //Arrange
            Mock <IConfiguration>       mockConfig = new Mock <IConfiguration>();
            Mock <IAzureTableStorageDA> mockDA     = new Mock <IAzureTableStorageDA>();

            mockDA.Setup(repo => repo.UpdateDevOpsMonitoringEvent(It.IsAny <TableStorageAuth>(), It.IsAny <MonitoringEvent>())).Returns(Task.FromResult(true));
            TableStorageController controller = new TableStorageController(mockConfig.Object, mockDA.Object);
            MonitoringEvent        newEvent   = new MonitoringEvent();

            //Act
            bool result = await controller.UpdateDevOpsMonitoringEvent(newEvent);

            //Assert
            Assert.AreEqual(true, result);
        }
Exemple #11
0
        private void ReportDkmAclStatus(bool aclStatusCorrect, StringBuilder detailStatus)
        {
            if (!string.IsNullOrEmpty(this.earrfNotExistsWarning))
            {
                detailStatus.Append(this.earrfNotExistsWarning);
            }
            if (this.MonitoringContext)
            {
                MonitoringEvent item = new MonitoringEvent("MSExchange Monitoring DataCenterDKMAccess", aclStatusCorrect ? 1000 : 1001, aclStatusCorrect ? EventTypeEnumeration.Information : EventTypeEnumeration.Error, detailStatus.ToString());
                this.monitoringData.Events.Add(item);
                base.WriteObject(this.monitoringData);
                return;
            }
            TestDataCenterDKMAccessResult sendToPipeline = new TestDataCenterDKMAccessResult(aclStatusCorrect, detailStatus.ToString());

            base.WriteObject(sendToPipeline);
        }
Exemple #12
0
        private void ReportMomStatus(List <EdgeSubscriptionStatus> statusList)
        {
            int num = 1000;
            EventTypeEnumeration eventType     = EventTypeEnumeration.Success;
            StringBuilder        stringBuilder = null;

            foreach (EdgeSubscriptionStatus edgeSubscriptionStatus in statusList)
            {
                switch (edgeSubscriptionStatus.SyncStatus)
                {
                case ValidationStatus.NoSyncConfigured:
                    num       = 1004;
                    eventType = EventTypeEnumeration.Warning;
                    break;

                case ValidationStatus.Failed:
                    num       = 1001;
                    eventType = EventTypeEnumeration.Error;
                    break;

                case ValidationStatus.Inconclusive:
                    if (num == 1000)
                    {
                        num       = 1003;
                        eventType = EventTypeEnumeration.Information;
                    }
                    break;
                }
                if (stringBuilder == null)
                {
                    string text = edgeSubscriptionStatus.ToStringForm();
                    stringBuilder = new StringBuilder(text.Length * statusList.Count + 256);
                    stringBuilder.Append(text);
                }
                else
                {
                    stringBuilder.Append(edgeSubscriptionStatus.ToStringForm());
                }
            }
            MonitoringEvent item = new MonitoringEvent("MSExchange Monitoring EdgeSynchronization", num, eventType, stringBuilder.ToString());

            this.monitoringData.Events.Add(item);
            base.WriteObject(this.monitoringData);
        }
        private async Task <bool> PostResponse(HttpClient client, string url, MonitoringEvent monitoringEvent)
        {
            if (client != null && url != null)
            {
                StringContent content = new StringContent(JsonConvert.SerializeObject(monitoringEvent), Encoding.UTF8, "application/json");

                Debug.WriteLine("Running url: " + client.BaseAddress.ToString() + url);
                using (HttpResponseMessage response = await client.PostAsync(url, content))
                {
                    response.EnsureSuccessStatusCode();
                    //string responseBody = await response.Content.ReadAsStringAsync();
                    //if (string.IsNullOrEmpty(responseBody) == false)
                    //{
                    //    obj = JsonConvert.DeserializeObject<T>(responseBody);
                    //}
                }
            }
            return(true);
        }
        private void ReportMomStatus(EdgeSyncRecord record)
        {
            int eventIdentifier            = 1000;
            EventTypeEnumeration eventType = EventTypeEnumeration.Success;

            switch (record.Status)
            {
            case ValidationStatus.NoSyncConfigured:
                eventIdentifier = 1005;
                eventType       = EventTypeEnumeration.Warning;
                break;

            case ValidationStatus.Warning:
                eventIdentifier = 1001;
                eventType       = EventTypeEnumeration.Warning;
                break;

            case ValidationStatus.Failed:
                eventIdentifier = 1002;
                eventType       = EventTypeEnumeration.Error;
                break;

            case ValidationStatus.Inconclusive:
                eventIdentifier = 1004;
                eventType       = EventTypeEnumeration.Information;
                break;

            case ValidationStatus.FailedUrgent:
                eventIdentifier = 1006;
                eventType       = EventTypeEnumeration.Error;
                break;
            }
            MonitoringEvent item = new MonitoringEvent(this.CmdletMonitoringEventSource, eventIdentifier, eventType, record.ToString());

            this.monitoringData.Events.Add(item);
        }
Exemple #15
0
        public async Task <bool> UpdateDevOpsMonitoringEvent(TableStorageAuth tableStorageAuth, MonitoringEvent monitoringEvent)
        {
            string partitionKey            = monitoringEvent.PartitionKey;
            string rowKey                  = monitoringEvent.RowKey;
            string json                    = monitoringEvent.RequestBody;
            AzureStorageTableModel newItem = new AzureStorageTableModel(partitionKey, rowKey, json);
            TableStorageCommonDA   tableDA = new TableStorageCommonDA(tableStorageAuth, tableStorageAuth.TableMTTR);

            return(await tableDA.SaveItem(newItem));
        }
Exemple #16
0
        public async Task <bool> UpdateDevOpsMonitoringEvent([FromBody] MonitoringEvent monitoringEvent)
        {
            TableStorageAuth tableStorageAuth = Common.GenerateTableAuthorization(Configuration);

            return(await AzureTableStorageDA.UpdateDevOpsMonitoringEvent(tableStorageAuth, monitoringEvent));
        }