public ServerStatisticsSummarizer(
     IOptions <DnsServersSettings> dnsServersSettings,
     IDnsServerStatisticsStore dnsServerStatisticsStore)
 {
     _dnsServersSettings       = dnsServersSettings.Value;
     _dnsServerStatisticsStore = dnsServerStatisticsStore;
     _logger = Log.ForContext("SourceContext", nameof(ServerStatisticsSummarizer));
 }
 public GetStatisticsApi(
     IOptions <DnsServerApiSettings> dnsServerApiSettings,
     IOptions <BlitzServerSettings> blitzServerSettings,
     IDnsServerStatisticsStore dnsServerStatisticsStore)
 {
     _logger = Log.ForContext("SourceContext", FunctionName);
     _dnsServerApiSettings     = dnsServerApiSettings.Value;
     _blitzServerSettings      = blitzServerSettings.Value;
     _dnsServerStatisticsStore = dnsServerStatisticsStore;
 }
 public DnsServerStatisticsIngresser(
     IOptions <DnsServerApiSettings> dnsServerApiSettings,
     IDnsServerStatisticsRetriever dnsServerStatisticsRetreiver,
     IDnsServerStatisticsStore dnsServerStatisticsStore)
 {
     _dnsServerApiSettings         = dnsServerApiSettings.Value;
     _dnsServerStatisticsRetreiver = dnsServerStatisticsRetreiver;
     _dnsServerStatisticsStore     = dnsServerStatisticsStore;
     _logger = Log.ForContext("SourceContext", nameof(DnsServerStatisticsIngresser));
 }
Example #4
0
 public HomeController(
     IOptions <DisplayableDnsServerSettings> dnsServersSetting,
     IDnsServerStatisticsStore dnsServerStatisticsStore,
     IMemoryCache memoryCache)
 {
     _dnsServersSettings       = dnsServersSetting.Value;
     _dnsServerStatisticsStore = dnsServerStatisticsStore;
     _memoryCache = memoryCache;
     _logger      = Log.ForContext("SourceContext", nameof(HomeController));
 }
Example #5
0
        public static async Task Run(
            [TimerTrigger("0 0 19 * * *")] TimerInfo myTimer,
            [Inject] IOptions <DnsServersSettings> dnsServersSettings,
            [Inject] IDnsServerStatisticsStore dnsServerStatisticsStore,
            [Inject] IEnumerable <IAlertClient> alertClients)
        {
            var logger = Log.ForContext("SourceContext", FunctionName);

            try
            {
                var hoursOfIncrements = DateTime.UtcNow.GetHoursOfIncrements();
                var printableTimeSpan = hoursOfIncrements.PrintableTimeSpan();

                // Get statistics for all servers
                var allDnsServerStatistics = new List <DnsServerStatistics>();

                foreach (var server in dnsServersSettings.Value.DnsServers)
                {
                    allDnsServerStatistics.AddRange(await dnsServerStatisticsStore.GetServerStatisticsFromDate(server.ServerName, DateTime.UtcNow.AddHours(-hoursOfIncrements)));
                }

                if (allDnsServerStatistics.Count == 0)
                {
                    throw new InvalidOperationException($"Did not get any statistical increments for pidns servers for hours {hoursOfIncrements}");
                }

                var totalNumQueries = allDnsServerStatistics.Sum(s => s.TotalNumQueries);
                var totalAdsBlocked = allDnsServerStatistics.Sum(s => s.NumAnswerNXDOMAIN);

                foreach (var alertClient in alertClients)
                {
                    logger.Information("Sending pidns statistics totalNumQueries {TotalNumQueries} and totalAdsBlocked {TotalAdsBlocked} to {Integration} client",
                                       totalNumQueries, totalAdsBlocked, alertClient.Integration);

                    if (!(await alertClient.TrySendPiDnsStatistics(totalNumQueries, totalAdsBlocked, printableTimeSpan)))
                    {
                        logger.Warning("AlertClient {Client} returned false when sending pidns statistics alert, indicating a failure", alertClient.Integration);
                    }
                }
            }
            catch (Exception e)
            {
                logger.Error(e, "Got an exception while processing pidns statistics alert");
            }
        }