public void CreateDefaultConfig()
        {
            var instances     = LoadAll <Collector>().ToList();
            var verifiers     = LoadAll <Verifier>().ToList();
            var notifications = LoadAll <Notification>().ToList();

            foreach (var v in verifiers)
            {
                v.Notifications.AddRange(notifications.Select(x => x.Id));
            }

            foreach (var c in instances)
            {
                c.Verifiers.AddRange(verifiers);
            }

            var config = new CollectorConfig {
                Collectors    = instances,
                Notifications = notifications
            };

            string configPath = GetConfigPath();

            WriteConfig(config, configPath);
        }
Пример #2
0
 /*
  * Creates the target table from the
  * output definition of the query
  */
 protected override String createTargetTable(
     CollectorConfig cfg,
     CollectionItemConfig itm
     )
 {
     return(checkTable(cfg, itm));
 }
        private void installCollectorTypeInMDW(CollectorConfig cfg, Guid CollectorTypeGuid)
        {
            int    ConnectionTimeout = 15;
            int    QueryTimeout      = 600;
            String ConnectionString  = String.Format("Server={0};Database={1};Integrated Security=True;Connect Timeout={2}", cfg.MDWInstance, cfg.MDWDatabase, ConnectionTimeout);

            SqlConnection conn = new SqlConnection();

            conn.ConnectionString = ConnectionString;

            try
            {
                conn.Open();

                SqlCommand cmd = new SqlCommand("core.sp_add_collector_type", conn);
                cmd.CommandType    = System.Data.CommandType.StoredProcedure;
                cmd.CommandTimeout = QueryTimeout;

                cmd.Parameters.AddWithValue("@collector_type_uid", CollectorTypeGuid);

                cmd.ExecuteNonQuery();
            }
            finally
            {
                conn.Close();
            }
        }
 public CollectorConfig GetCollectorConfiguration(bool forceReload = false)
 {
     if (_currentCollectorConfig == null || forceReload)
     {
         _currentCollectorConfig =
             _collectorConfigurationReadService.LoadSchedulerConfiguration(_schedulerConfiguration);
         _configurationWatcher.BeginCollectorConfigurationChangePolling(_schedulerConfiguration, _currentCollectorConfig);
     }
     return(_currentCollectorConfig);
 }
Пример #5
0
        public static CollectorConfigChangeResult AnalyzeConfigurationChanges(CollectorConfig newCollectorConfig,
                                                                              CollectorConfig currentCollectorConfig)
        {
            var configurationChangeResult = new CollectorConfigChangeResult();

            AnalyzeNotificationChanges(configurationChangeResult, newCollectorConfig.Notifications,
                                       currentCollectorConfig.Notifications);

            AnalyzeCollectorChanges(configurationChangeResult, newCollectorConfig.Collectors,
                                    currentCollectorConfig.Collectors);

            return(configurationChangeResult);
        }
        public void BeginCollectorConfigurationChangePolling(SchedulerConfiguration compareConfiguration,
                                                             CollectorConfig compareCollectorConfig)
        {
            _compareCollectorConfig = compareCollectorConfig;
            _compareConfiguration   = compareConfiguration;
            if (_compareConfiguration.CollectorPollingInterval < MinimumPollingInterval)
            {
                // Log this away or throw exception
                return;
            }

            Observable.Timer(_compareConfiguration.CollectorPollingInterval,
                             _compareConfiguration.CollectorPollingInterval)
            .TakeUntil(_stopTimer)
            .Subscribe(_ => PollConfigurationForChanges());
        }
Пример #7
0
        /*
         * Creates the target table from the
         * output definition of the query
         */
        protected override String createTargetTable(
            CollectorConfig cfg,
            CollectionItemConfig itm
            )
        {
            String TableName = itm.OutputTable;
            TSQLCollectionItemConfig itemCfg = (TSQLCollectionItemConfig)itm;

            String CollectorId = CollectorUtils.getCacheFilePrefix(SourceServerInstance, CollectionSetUid, ItemId) + "_" + itm.Index;

            //
            // checks if the table exists and which schema it belongs
            //
            String checkedTableName = checkTable(cfg, itm);

            if (checkedTableName != null)
            {
                return(checkedTableName);
            }

            String statement = @"

	        IF NOT EXISTS (
		        SELECT *
		        FROM sys.servers
		        WHERE NAME = 'LOOPBACK'
	        )
	        BEGIN

		        DECLARE @srv nvarchar(4000);
		        SET @srv = @@SERVERNAME; -- gather this server name
                 
		        -- Create the linked server
		        EXEC master.dbo.sp_addlinkedserver
		            @server     = N'LOOPBACK',
		            @srvproduct = N'SQLServ', -- it's not a typo: it can't be 'SQLServer'
		            @provider   = N'SQLNCLI', -- change to SQLOLEDB for SQLServer 2000
		            @datasrc    = @srv;
                 
		        -- Set the authentication to 'current security context'
		        EXEC master.dbo.sp_addlinkedsrvlogin
		            @rmtsrvname  = N'LOOPBACK',
		            @useself     = N'True',
		            @locallogin  = NULL,
		            @rmtuser     = NULL,
		            @rmtpassword = NULL;

	        END
             
	        USE tempdb;
	        GO

	        IF OBJECT_ID('{0}') IS NOT NULL
		        DROP PROCEDURE [{0}]
	        GO
             
	        CREATE PROCEDURE [{0}]
	        AS
	        BEGIN
	            SET NOCOUNT ON;
             
	            {1}
	        END
	        GO

	        IF SCHEMA_ID('custom_snapshots') IS NULL
		        EXEC('CREATE SCHEMA [custom_snapshots]')

	        IF OBJECT_ID('custom_snapshots.{2}') IS NOT NULL
		        DROP TABLE [custom_snapshots].[{2}]
	        GO

	        SELECT TOP 0 *, 
		        CAST(NULL AS sysname) AS _database_name, 
		        CAST(NULL AS datetimeoffset(7)) AS _collection_time,
		        CAST(NULL AS int) AS _snapshot_id
	        INTO tempdb.[custom_snapshots].[{2}]
	        FROM OPENQUERY(LOOPBACK, 'SET FMTONLY OFF; EXEC tempdb.dbo.[{0}]');
             
	        DROP PROCEDURE [{0}];
	        GO
            
	        IF EXISTS(
		        SELECT 1 
		        FROM sys.columns 
		        WHERE name = 'database_name'
		        AND object_id = OBJECT_ID('[custom_snapshots].[{2}]')
	        )
	        BEGIN
		        EXEC sp_rename '[custom_snapshots].[{2}].[database_name]', '__database_name', 'COLUMN';
	        END
	        EXEC sp_rename '[custom_snapshots].[{2}].[_database_name]', 'database_name', 'COLUMN';


	        IF EXISTS(
		        SELECT 1 
		        FROM sys.columns 
		        WHERE name = 'collection_time'
		        AND object_id = OBJECT_ID('[custom_snapshots].[{2}]')
	        )
	        BEGIN
		        EXEC sp_rename '[custom_snapshots].[{2}].[collection_time]', '__collection_time', 'COLUMN';
	        END
	        EXEC sp_rename '[custom_snapshots].[{2}].[_collection_time]', 'collection_time', 'COLUMN';

            
	        IF EXISTS(
		        SELECT 1 
		        FROM sys.columns 
		        WHERE name = 'snapshot_id'
		        AND object_id = OBJECT_ID('[custom_snapshots].[{2}]')
	        )
	        BEGIN
		        EXEC sp_rename '[custom_snapshots].[{2}].[snapshot_id]', '__snapshot_id', 'COLUMN';
	        END
	        EXEC sp_rename '[custom_snapshots].[{2}].[_snapshot_id]', 'snapshot_id', 'COLUMN';

	        "    ;

            statement = String.Format(statement, CollectorId, itemCfg.Query, itm.OutputTable);

            CollectorUtils.InvokeSqlBatch(SourceServerInstance, "tempdb", statement);

            String scriptText = CollectorUtils.ScriptTable(SourceServerInstance, "tempdb", TableName);

            CollectorUtils.InvokeSqlCmd(cfg.MDWInstance, cfg.MDWDatabase, scriptText);

            return("[custom_snapshots].[" + TableName + "]");
        }