Beispiel #1
0
        public static ICollection <ChartInfo> ListAllChartsForSqlDatabaseServer(string servername, string username, string password)
        {
            var client = SQLDatabaseUsageClient.CreateServerUsagesClient(servername, username, password);

            Func <string, string, string, ChartInfo> initChartInfo = (databaseName, uriPath, counterName) =>
                                                                     new ChartInfo {
                ResourceName = databaseName,
                ResourceType = "database",
                ServiceName  = servername,
                ServiceType  = "Azure SQL Database",
                Name         = string.Format("{0} {1} (SQL Database)", databaseName, counterName),
                Uri          = string.Format("wadgraphes://sql-database/{0}/{1}/{2}", client.ServerName, databaseName, uriPath)
            };


            var res = new List <ChartInfo>();

            foreach (var database in client.ListDatabases())
            {
                res.Add(initChartInfo(database, "logio", "Log I/O"));
                res.Add(initChartInfo(database, "dataio", "Data I/O"));
                res.Add(initChartInfo(database, "cpu", "CPU"));
                res.Add(initChartInfo(database, "storage", "Storage"));
                res.Add(initChartInfo(database, "memory", "Memory"));
                res.Add(initChartInfo(database, "sessions", "Sessions"));
            }

            return(res);
        }
Beispiel #2
0
        private Task <ChartData> GetSQLDatabaseChartData(TimeSpan interval)
        {
            var client = SQLDatabaseUsageClient.CreateServerUsagesClient(_path[0], SqlCredentialsProvider(_path[0]).Username, SqlCredentialsProvider(_path[0]).Password);
            var usages = client.GetUsages(DateTime.UtcNow.Add(interval.Negate()));

            var serverName = _path[0];
            var counter    = _path[_path.Length - 1];
            var database   = _path[_path.Length - 2];

            switch (counter)
            {
            case "logio":
                return(FilterSQLUsages(usages, serverName, database, "Log I/O", "avg_log_write_percent"));

            case "dataio":
                return(FilterSQLUsages(usages, serverName, database, "Data I/O", "avg_physical_data_read_percent", "avg_data_io_percent"));

            case "cpu":
                return(FilterSQLUsages(usages, serverName, database, "CPU", "avg_cpu_percent"));

            case "storage":
                return(FilterSQLUsages(usages, serverName, database, "Storage", "storage_in_megabytes"));

            case "memory":
                return(FilterSQLUsages(usages, serverName, database, "Memory", "active_memory_used_kb"));

            case "sessions":
                return(FilterSQLUsages(usages, serverName, database, "Sessions", "active_session_count"));

            default:
                throw new Exception("Unknown counter " + counter);
            }
        }
Beispiel #3
0
        private Task <ChartData> GetRealTimeData(string serverName, string database, string counter)
        {
            var client = SQLDatabaseUsageClient.CreateDatabaseUsagesClient(
                serverName,
                database,
                SqlCredentialsProvider(_path[0]).Username,
                SqlCredentialsProvider(_path[0]).Password);

            var usages = client.GetUsages();

            switch (counter)
            {
            case "logwrite":
                return(FilterSQLRealTimeUsages(usages, serverName, database, "Log write %", "avg_log_write_percent"));

            case "cpu":
                return(FilterSQLRealTimeUsages(usages, serverName, database, "CPU %", "avg_cpu_percent"));

            case "dataio":
                return(FilterSQLRealTimeUsages(usages, serverName, database, "Data IO %", "avg_data_io_percent"));

            case "memory":
                return(FilterSQLRealTimeUsages(usages, serverName, database, "Memory %", "avg_memory_usage_percent"));

            default:
                throw new Exception("Unknown counter " + counter);
            }
        }
Beispiel #4
0
        internal static bool AlreadyHasServer(string servername)
        {
            var normalized = SQLDatabaseUsageClient.NormalizeServername(servername);

            return(DataContext.Do(ctx => {
                var db = ctx.SQLDatabases.FirstOrDefault(_ => _.Servername == normalized);
                return db != null;
            }));
        }
Beispiel #5
0
 internal static void FinishSession(string sessionId)
 {
     DataContext.Do(ctx => {
         var session = ctx.AddSQLDatabaseSessions.Find(sessionId);
         ctx.SQLDatabases.Add(new SQLDatabase {
             Servername = SQLDatabaseUsageClient.NormalizeServername(session.Servername),
             Password   = session.Password,
             Username   = session.Username,
             Version    = GetVersionFromSession(session)
         });
         ctx.SaveChanges();
     });
 }
Beispiel #6
0
        internal static SqlCredentials GetCredentials(string forServer)
        {
            return(DataContext.Do(ctx => {
                forServer = SQLDatabaseUsageClient.NormalizeServername(forServer);
                var record = ctx.SQLDatabases.FirstOrDefault(_ => _.Servername == forServer);
                if (record == null)
                {
                    throw new InvalidOperationException(string.Format("Couldn't fetch credentials for database server {0}", forServer));
                }

                return record.Credentials;
            }));
        }
        private ICollection <UsageObject> GetDatabaseUsages(DataAccess.SQLDatabase database)
        {
            var result = new List <UsageObject>();

            result.AddRange(SQLDatabaseUsageClient.CreateServerUsagesClient(database.Servername, database.Username, database.Password).GetUsages(DateTime.UtcNow.AddHours(-1)));

            var databaseNames = SQLDatabaseUsageClient.ListUserDatabases(database.Servername, database.Username, database.Password);

            foreach (var dbName in databaseNames)
            {
                result.AddRange(SQLDatabaseUsageClient.CreateDatabaseUsagesClient(database.Servername, dbName, database.Username, database.Password).GetUsages());
            }

            return(result);
        }
Beispiel #8
0
 private static string GetVersionFromSession(AddSQLDatabaseSession session)
 {
     return(SQLDatabaseUsageClient.CreateServerUsagesClient(session.Servername, session.Username, session.Password).GetVersionString());
 }
Beispiel #9
0
 internal static TestConnectionResult TestConnection(MVC.Commands.CreateAzureSQLDatabaseCommand cmd)
 {
     return(SQLDatabaseUsageClient.CreateServerUsagesClient(cmd.Servername, cmd.Username, cmd.Password).TestConnection());
 }
Beispiel #10
0
 private ICollection <UsageObject> GetDatabaseUsages(DataAccess.SQLDatabase database)
 {
     return(SQLDatabaseUsageClient.CreateServerUsagesClient(database.Servername, database.Username, database.Password).GetUsages(DateTime.UtcNow.AddHours(-1)));
 }