Exemple #1
0
        public ProbeResult Execute <T>(T snapshot)
        {
            QueueSnapshot data = snapshot as QueueSnapshot;
            ProbeResult   result;

            if (_config.IsNull() || _config.Probes.IsNull())
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.NA, out var article);
                result = new NotApplicableProbeResult(null,
                                                      null,
                                                      Metadata.Id,
                                                      Metadata.Name,
                                                      ComponentType,
                                                      article);

                NotifyObservers(result);

                return(result);
            }

            var probeData = new List <ProbeData>
            {
                new ProbeDataImpl("Messages.Incoming.Total", data.Messages.Incoming.Total.ToString()),
                new ProbeDataImpl("QueueLowFlowThreshold", _config.Probes.QueueLowFlowThreshold.ToString())
            };

            if (data.Messages.Incoming.Total <= _config.Probes.QueueLowFlowThreshold)
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Unhealthy, out var article);
                result = new UnhealthyProbeResult(data.Node,
                                                  data.Identifier,
                                                  Metadata.Id,
                                                  Metadata.Name,
                                                  ComponentType,
                                                  probeData,
                                                  article);
            }
            else
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Healthy, out var article);
                result = new HealthyProbeResult(data.Node,
                                                data.Identifier,
                                                Metadata.Id,
                                                Metadata.Name,
                                                ComponentType,
                                                probeData,
                                                article);
            }

            NotifyObservers(result);

            return(result);
        }
Exemple #2
0
        public ProbeResult Execute <T>(T snapshot)
        {
            DiskSnapshot data = snapshot as DiskSnapshot;
            ProbeResult  result;

            var probeData = new List <ProbeData>
            {
                new ProbeDataImpl("Disk.FreeAlarm", data.AlarmInEffect.ToString()),
                new ProbeDataImpl("Disk.Limit", data.Limit.ToString()),
                new ProbeDataImpl("Disk.Capacity.Available", data.Capacity.Available.ToString())
            };

            if (data.AlarmInEffect)
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Unhealthy, out var article);
                result = new UnhealthyProbeResult(data.NodeIdentifier,
                                                  null,
                                                  Metadata.Id,
                                                  Metadata.Name,
                                                  ComponentType,
                                                  probeData,
                                                  article);
            }
            else
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Healthy, out var article);
                result = new HealthyProbeResult(data.NodeIdentifier,
                                                null,
                                                Metadata.Id,
                                                Metadata.Name,
                                                ComponentType,
                                                probeData,
                                                article);
            }

            NotifyObservers(result);

            return(result);
        }
Exemple #3
0
        public ProbeResult Execute <T>(T snapshot)
        {
            QueueSnapshot data = snapshot as QueueSnapshot;
            ProbeResult   result;

            var probeData = new List <ProbeData>
            {
                new ProbeDataImpl("Messages.Incoming.Total", data.Messages.Incoming.Total.ToString())
            };

            if (data.Messages.Incoming.Total == 0)
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Unhealthy, out var article);
                result = new UnhealthyProbeResult(data.Node,
                                                  data.Identifier,
                                                  Metadata.Id,
                                                  Metadata.Name,
                                                  ComponentType,
                                                  probeData,
                                                  article);
            }
            else
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Healthy, out var article);
                result = new HealthyProbeResult(data.Node,
                                                data.Identifier,
                                                Metadata.Id,
                                                Metadata.Name,
                                                ComponentType,
                                                probeData,
                                                article);
            }

            NotifyObservers(result);

            return(result);
        }
        public ProbeResult Execute <T>(T snapshot)
        {
            NodeSnapshot data = snapshot as NodeSnapshot;
            ProbeResult  result;

            var probeData = new List <ProbeData>
            {
                new ProbeDataImpl("NetworkPartitions", data.NetworkPartitions.ToString())
            };

            if (data.NetworkPartitions.Any())
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Unhealthy, out var article);
                result = new UnhealthyProbeResult(data.ClusterIdentifier,
                                                  data.Identifier,
                                                  Metadata.Id,
                                                  Metadata.Name,
                                                  ComponentType,
                                                  probeData,
                                                  article);
            }
            else
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Healthy, out var article);
                result = new HealthyProbeResult(data.ClusterIdentifier,
                                                data.Identifier,
                                                Metadata.Id,
                                                Metadata.Name,
                                                ComponentType,
                                                probeData,
                                                article);
            }

            NotifyObservers(result);

            return(result);
        }
        public ProbeResult Execute <T>(T snapshot)
        {
            ProbeResult  result;
            NodeSnapshot data = snapshot as NodeSnapshot;

            var probeData = new List <ProbeData>
            {
                new ProbeDataImpl("AvailableCoresDetected", data.AvailableCoresDetected.ToString())
            };

            if (data.AvailableCoresDetected <= 0)
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Unhealthy, out var article);
                result = new UnhealthyProbeResult(data.ClusterIdentifier,
                                                  data.Identifier,
                                                  Metadata.Id,
                                                  Metadata.Name,
                                                  ComponentType,
                                                  probeData,
                                                  article);
            }
            else
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Healthy, out var article);
                result = new HealthyProbeResult(data.ClusterIdentifier,
                                                data.Identifier,
                                                Metadata.Id,
                                                Metadata.Name,
                                                ComponentType,
                                                probeData,
                                                article);
            }

            NotifyObservers(result);

            return(result);
        }
Exemple #6
0
        public ProbeResult Execute <T>(T snapshot)
        {
            ProbeResult          result;
            BrokerQueuesSnapshot data = snapshot as BrokerQueuesSnapshot;

            var probeData = new List <ProbeData>
            {
                new ProbeDataImpl("Churn.NotRouted.Total", data.Churn.NotRouted.Total.ToString())
            };

            if (data.Churn.NotRouted.Total > 0)
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Unhealthy, out var article);
                result = new UnhealthyProbeResult(data.ClusterName,
                                                  null,
                                                  Metadata.Id,
                                                  Metadata.Name,
                                                  ComponentType,
                                                  probeData,
                                                  article);
            }
            else
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Healthy, out var article);
                result = new HealthyProbeResult(data.ClusterName,
                                                null,
                                                Metadata.Id,
                                                Metadata.Name,
                                                ComponentType,
                                                probeData,
                                                article);
            }

            NotifyObservers(result);

            return(result);
        }
Exemple #7
0
        public ProbeResult Execute <T>(T snapshot)
        {
            ConnectionSnapshot data = snapshot as ConnectionSnapshot;
            ProbeResult        result;

            var probeData = new List <ProbeData>
            {
                new ProbeDataImpl("Channels.Count", data.Channels.Count.ToString()),
                new ProbeDataImpl("OpenChannelLimit", data.OpenChannelsLimit.ToString())
            };

            if (Convert.ToUInt64(data.Channels.Count) >= data.OpenChannelsLimit)
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Unhealthy, out var article);
                result = new UnhealthyProbeResult(data.NodeIdentifier,
                                                  data.Identifier,
                                                  Metadata.Id,
                                                  Metadata.Name,
                                                  ComponentType,
                                                  probeData,
                                                  article);
            }
            else
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Healthy, out var article);
                result = new HealthyProbeResult(data.NodeIdentifier,
                                                data.Identifier,
                                                Metadata.Id,
                                                Metadata.Name,
                                                ComponentType,
                                                probeData, article);
            }

            NotifyObservers(result);

            return(result);
        }
Exemple #8
0
        public ProbeResult Execute <T>(T snapshot)
        {
            ProbeResult        result;
            ConnectionSnapshot data = snapshot as ConnectionSnapshot;

            var probeData = new List <ProbeData>
            {
                new ProbeDataImpl("State", data.State.ToString())
            };

            if (data.State == BrokerConnectionState.Blocked)
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Unhealthy, out var article);
                result = new UnhealthyProbeResult(data.NodeIdentifier,
                                                  data.Identifier,
                                                  Metadata.Id,
                                                  Metadata.Name,
                                                  ComponentType,
                                                  probeData,
                                                  article);
            }
            else
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Healthy, out var article);
                result = new HealthyProbeResult(data.NodeIdentifier,
                                                data.Identifier,
                                                Metadata.Id,
                                                Metadata.Name,
                                                ComponentType,
                                                probeData,
                                                article);
            }

            NotifyObservers(result);

            return(result);
        }
Exemple #9
0
        public ProbeResult Execute <T>(T snapshot)
        {
            ChannelSnapshot data = snapshot as ChannelSnapshot;
            ProbeResult     result;

            var probeData = new List <ProbeData>
            {
                new ProbeDataImpl("UnacknowledgedMessages", data.UnacknowledgedMessages.ToString()),
                new ProbeDataImpl("PrefetchCount", data.PrefetchCount.ToString())
            };

            if (data.UnacknowledgedMessages > data.PrefetchCount)
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Unhealthy, out var article);
                result = new UnhealthyProbeResult(data.ConnectionIdentifier,
                                                  data.Identifier,
                                                  Metadata.Id,
                                                  Metadata.Name,
                                                  ComponentType,
                                                  probeData,
                                                  article);
            }
            else
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Healthy, out var article);
                result = new HealthyProbeResult(data.ConnectionIdentifier,
                                                data.Identifier,
                                                Metadata.Id,
                                                Metadata.Name,
                                                ComponentType,
                                                probeData, article);
            }

            NotifyObservers(result);

            return(result);
        }
        public ProbeResult Execute <T>(T snapshot)
        {
            ProbeResult             result;
            OperatingSystemSnapshot data = snapshot as OperatingSystemSnapshot;

            if (_config.IsNull() || _config.Probes.IsNull())
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.NA, out var article);
                result = new NotApplicableProbeResult(!data.IsNull() ? data.NodeIdentifier : null,
                                                      !data.IsNull() ? data.ProcessId : null,
                                                      Metadata.Id,
                                                      Metadata.Name,
                                                      ComponentType,
                                                      article);

                NotifyObservers(result);

                return(result);
            }

            ulong threshold = ComputeThreshold(data.FileDescriptors.Available);

            var probeData = new List <ProbeData>
            {
                new ProbeDataImpl("FileDescriptors.Available", data.FileDescriptors.Available.ToString()),
                new ProbeDataImpl("FileDescriptors.Used", data.FileDescriptors.Used.ToString()),
                new ProbeDataImpl("FileDescriptorUsageThresholdCoefficient", _config.Probes.FileDescriptorUsageThresholdCoefficient.ToString()),
                new ProbeDataImpl("CalculatedThreshold", threshold.ToString())
            };

            if (data.FileDescriptors.Used < threshold && threshold < data.FileDescriptors.Available)
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Healthy, out var article);
                result = new HealthyProbeResult(data.NodeIdentifier,
                                                data.ProcessId,
                                                Metadata.Id,
                                                Metadata.Name,
                                                ComponentType,
                                                probeData,
                                                article);
            }
            else if (data.FileDescriptors.Used == data.FileDescriptors.Available)
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Unhealthy, out var article);
                result = new UnhealthyProbeResult(data.NodeIdentifier,
                                                  data.ProcessId,
                                                  Metadata.Id,
                                                  Metadata.Name,
                                                  ComponentType,
                                                  probeData,
                                                  article);
            }
            else
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Warning, out var article);
                result = new WarningProbeResult(data.NodeIdentifier,
                                                data.ProcessId,
                                                Metadata.Id,
                                                Metadata.Name,
                                                ComponentType,
                                                probeData,
                                                article);
            }

            NotifyObservers(result);

            return(result);
        }
Exemple #11
0
        public ProbeResult Execute <T>(T snapshot)
        {
            ProbeResult   result;
            QueueSnapshot data = snapshot as QueueSnapshot;

            if (_config.IsNull() || _config.Probes.IsNull())
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.NA, out var article);
                result = new NotApplicableProbeResult(data.IsNotNull() ? data.Node : null,
                                                      data.IsNotNull() ? data.Identifier : null,
                                                      Metadata.Id,
                                                      Metadata.Name,
                                                      ComponentType,
                                                      article);

                NotifyObservers(result);

                return(result);
            }

            var probeData = new List <ProbeData>
            {
                new ProbeDataImpl("ConsumerUtilization", data.ConsumerUtilization.ToString()),
                new ProbeDataImpl("ConsumerUtilizationThreshold", _config.Probes.ConsumerUtilizationThreshold.ToString())
            };

            if (data.ConsumerUtilization >= _config.Probes.ConsumerUtilizationThreshold &&
                data.ConsumerUtilization < 1.0M &&
                _config.Probes.ConsumerUtilizationThreshold <= 1.0M)
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Warning, out var article);
                result = new WarningProbeResult(data.Node,
                                                data.Identifier,
                                                Metadata.Id,
                                                Metadata.Name,
                                                ComponentType,
                                                probeData,
                                                article);
            }
            else if (data.ConsumerUtilization < _config.Probes.ConsumerUtilizationThreshold &&
                     _config.Probes.ConsumerUtilizationThreshold <= 1.0M)
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Unhealthy, out var article);
                result = new UnhealthyProbeResult(data.Node,
                                                  data.Identifier,
                                                  Metadata.Id,
                                                  Metadata.Name,
                                                  ComponentType,
                                                  probeData,
                                                  article);
            }
            else
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Healthy, out var article);
                result = new HealthyProbeResult(data.Node,
                                                data.Identifier,
                                                Metadata.Id,
                                                Metadata.Name,
                                                ComponentType,
                                                probeData,
                                                article);
            }

            NotifyObservers(result);

            return(result);
        }
Exemple #12
0
        public ProbeResult Execute <T>(T snapshot)
        {
            ProbeResult           result;
            BrokerRuntimeSnapshot data = snapshot as BrokerRuntimeSnapshot;

            if (_config.IsNull() || _config.Probes.IsNull())
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.NA, out var article);
                result = new NotApplicableProbeResult(null,
                                                      null,
                                                      Metadata.Id,
                                                      Metadata.Name,
                                                      ComponentType,
                                                      article);

                NotifyObservers(result);

                return(result);
            }

            ulong threshold = ComputeThreshold(data.Processes.Limit);

            var probeData = new List <ProbeData>
            {
                new ProbeDataImpl("Processes.Limit", data.Processes.Limit.ToString()),
                new ProbeDataImpl("Processes.Used", data.Processes.Used.ToString()),
                new ProbeDataImpl("CalculatedThreshold", threshold.ToString())
            };

            if (data.Processes.Used >= data.Processes.Limit)
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Unhealthy, out var article);
                result = new UnhealthyProbeResult(data.ClusterIdentifier,
                                                  data.Identifier,
                                                  Metadata.Id,
                                                  Metadata.Name,
                                                  ComponentType,
                                                  probeData,
                                                  article);
            }
            else if (data.Processes.Used >= threshold && threshold < data.Processes.Limit)
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Healthy, out var article);
                result = new WarningProbeResult(data.ClusterIdentifier,
                                                data.Identifier,
                                                Metadata.Id,
                                                Metadata.Name,
                                                ComponentType,
                                                probeData,
                                                article);
            }
            else
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Healthy, out var article);
                result = new HealthyProbeResult(data.ClusterIdentifier,
                                                data.Identifier,
                                                Metadata.Id,
                                                Metadata.Name,
                                                ComponentType,
                                                probeData,
                                                article);
            }

            NotifyObservers(result);

            return(result);
        }
Exemple #13
0
        public ProbeResult Execute <T>(T snapshot)
        {
            ProbeResult  result;
            NodeSnapshot data = snapshot as NodeSnapshot;

            if (_config.IsNull() || _config.Probes.IsNull())
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.NA, out var article);
                result = new NotApplicableProbeResult(!data.IsNull() ? data.ClusterIdentifier : null,
                                                      !data.IsNull() ? data.Identifier : null,
                                                      Metadata.Id,
                                                      Metadata.Name,
                                                      ComponentType,
                                                      article);

                NotifyObservers(result);

                return(result);
            }

            ulong warningThreshold = ComputeThreshold(data.OS.SocketDescriptors.Available);

            var probeData = new List <ProbeData>
            {
                new ProbeDataImpl("OS.Sockets.Available", data.OS.SocketDescriptors.Available.ToString()),
                new ProbeDataImpl("OS.Sockets.Used", data.OS.SocketDescriptors.Used.ToString()),
                new ProbeDataImpl("CalculatedThreshold", warningThreshold.ToString())
            };

            if (data.OS.SocketDescriptors.Used < warningThreshold && warningThreshold < data.OS.SocketDescriptors.Available)
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Healthy, out var article);
                result = new HealthyProbeResult(data.ClusterIdentifier,
                                                data.Identifier,
                                                Metadata.Id,
                                                Metadata.Name,
                                                ComponentType,
                                                probeData,
                                                article);
            }
            else if (data.OS.SocketDescriptors.Used == data.OS.SocketDescriptors.Available)
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Unhealthy, out var article);
                result = new UnhealthyProbeResult(data.ClusterIdentifier,
                                                  data.Identifier,
                                                  Metadata.Id,
                                                  Metadata.Name,
                                                  ComponentType,
                                                  probeData,
                                                  article);
            }
            else
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Warning, out var article);
                result = new WarningProbeResult(data.ClusterIdentifier,
                                                data.Identifier,
                                                Metadata.Id,
                                                Metadata.Name,
                                                ComponentType,
                                                probeData,
                                                article);
            }

            NotifyObservers(result);

            return(result);
        }
Exemple #14
0
        public ProbeResult Execute <T>(T snapshot)
        {
            ProbeResult   result;
            QueueSnapshot data = snapshot as QueueSnapshot;

            if (_config.IsNull() || _config.Probes.IsNull())
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.NA, out var article);
                result = new NotApplicableProbeResult(!data.IsNull() ? data.Node : string.Empty,
                                                      !data.IsNull() ? data.Identifier : string.Empty,
                                                      Metadata.Id,
                                                      Metadata.Name,
                                                      ComponentType,
                                                      article);

                NotifyObservers(result);

                return(result);
            }

            ulong warningThreshold = ComputeThreshold(data.Messages.Incoming.Total);

            var probeData = new List <ProbeData>
            {
                new ProbeDataImpl("Messages.Incoming.Total", data.Messages.Incoming.Total.ToString()),
                new ProbeDataImpl("Messages.Redelivered.Total", data.Messages.Redelivered.Total.ToString()),
                new ProbeDataImpl("MessageRedeliveryThresholdCoefficient", _config.Probes.MessageRedeliveryThresholdCoefficient.ToString()),
                new ProbeDataImpl("CalculatedThreshold", warningThreshold.ToString())
            };

            if (data.Messages.Redelivered.Total >= warningThreshold &&
                data.Messages.Redelivered.Total < data.Messages.Incoming.Total &&
                warningThreshold < data.Messages.Incoming.Total)
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Warning, out var article);
                result = new WarningProbeResult(data.Node,
                                                data.Identifier,
                                                Metadata.Id,
                                                Metadata.Name,
                                                ComponentType,
                                                probeData,
                                                article);
            }
            else if (data.Messages.Redelivered.Total >= data.Messages.Incoming.Total)
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Unhealthy, out var article);
                result = new UnhealthyProbeResult(data.Node,
                                                  data.Identifier,
                                                  Metadata.Id,
                                                  Metadata.Name,
                                                  ComponentType,
                                                  probeData,
                                                  article);
            }
            else
            {
                _kb.TryGet(Metadata.Id, ProbeResultStatus.Healthy, out var article);
                result = new HealthyProbeResult(data.Node,
                                                data.Identifier,
                                                Metadata.Id,
                                                Metadata.Name,
                                                ComponentType,
                                                probeData,
                                                article);
            }

            NotifyObservers(result);

            return(result);
        }