diff --git a/packages/microsoft_sqlserver/changelog.yml b/packages/microsoft_sqlserver/changelog.yml index 531783343586..02b5c775f6b4 100644 --- a/packages/microsoft_sqlserver/changelog.yml +++ b/packages/microsoft_sqlserver/changelog.yml @@ -1,4 +1,9 @@ # newer versions go on top +- version: "2.2.1" + changes: + - description: Add support for fetch_from_all_databases for mssql + type: enhancement + link: https://github.com/elastic/integrations/pull/7500 - version: "2.1.1" changes: - description: Add ecs mapping for error.code to avoid type conflicts diff --git a/packages/microsoft_sqlserver/data_stream/transaction_log/agent/stream/stream.yml.hbs b/packages/microsoft_sqlserver/data_stream/transaction_log/agent/stream/stream.yml.hbs index 71c6c2aa0295..017759f36599 100644 --- a/packages/microsoft_sqlserver/data_stream/transaction_log/agent/stream/stream.yml.hbs +++ b/packages/microsoft_sqlserver/data_stream/transaction_log/agent/stream/stream.yml.hbs @@ -5,15 +5,26 @@ hosts: period: {{period}} driver: mssql raw_data.enabled: true -# Collect the transaction logs from the system database +fetch_from_all_databases: {{fetch_from_all_databases}} + +# Collect the transaction logs from the database(s) sql_queries: -{{#if databases}} -{{#each databases as |database_name i|}} - - query: "SELECT @@servername AS server_name, @@servicename AS instance_name, name As 'database_name', database_id FROM sys.databases WHERE name='{{database_name}}';" - response_format: table - - query: "SELECT @@servername AS server_name, @@servicename AS instance_name, name As 'database_name', l.database_id, l.total_log_size_mb, l.active_log_size_mb,l.log_backup_time,l.log_since_last_log_backup_mb,l.log_since_last_checkpoint_mb,l.log_recovery_size_mb from sys.dm_db_log_stats(DB_ID('{{database_name}}')) l INNER JOIN sys.databases s ON l.database_id = s.database_id WHERE s.database_id = DB_ID('{{database_name}}') ;" - response_format: table - - query: "USE [{{database_name}}] ; SELECT @@servername AS server_name, @@servicename AS instance_name, name As 'database_name', l.database_id, l.total_log_size_in_bytes As total_log_size_bytes, l.used_log_space_in_bytes As used_log_space_bytes, l.used_log_space_in_percent As used_log_space_pct, l.log_space_in_bytes_since_last_backup from sys.dm_db_log_space_usage l INNER JOIN sys.databases s ON l.database_id = s.database_id WHERE s.database_id = DB_ID('{{database_name}}') ;" - response_format: table -{{/each}} +{{#if fetch_from_all_databases}} +- query: "SELECT @@servername AS server_name, @@servicename AS instance_name, DB_NAME() AS 'database_name', DB_ID() AS database_id;" + response_format: table +- query: "SELECT @@servername AS server_name, @@servicename AS instance_name, DB_NAME() AS 'database_name', l.database_id, l.total_log_size_mb, l.active_log_size_mb,l.log_backup_time,l.log_since_last_log_backup_mb,l.log_since_last_checkpoint_mb,l.log_recovery_size_mb from sys.dm_db_log_stats(DB_ID()) l INNER JOIN sys.databases s ON l.database_id = s.database_id WHERE s.database_id = DB_ID();" + response_format: table +- query: "SELECT @@servername AS server_name, @@servicename AS instance_name, name As 'database_name', l.database_id, l.total_log_size_in_bytes As total_log_size_bytes, l.used_log_space_in_bytes As used_log_space_bytes, l.used_log_space_in_percent As used_log_space_pct, l.log_space_in_bytes_since_last_backup from sys.dm_db_log_space_usage l INNER JOIN sys.databases s ON l.database_id = s.database_id WHERE s.database_id = DB_ID();" + response_format: table +{{else}} + {{#if databases}} + {{#each databases as |database_name i|}} + - query: "SELECT @@servername AS server_name, @@servicename AS instance_name, name As 'database_name', database_id FROM sys.databases WHERE name='{{database_name}}';" + response_format: table + - query: "SELECT @@servername AS server_name, @@servicename AS instance_name, name As 'database_name', l.database_id, l.total_log_size_mb, l.active_log_size_mb,l.log_backup_time,l.log_since_last_log_backup_mb,l.log_since_last_checkpoint_mb,l.log_recovery_size_mb from sys.dm_db_log_stats(DB_ID('{{database_name}}')) l INNER JOIN sys.databases s ON l.database_id = s.database_id WHERE s.database_id = DB_ID('{{database_name}}') ;" + response_format: table + - query: "USE [{{database_name}}]; SELECT @@servername AS server_name, @@servicename AS instance_name, name As 'database_name', l.database_id, l.total_log_size_in_bytes As total_log_size_bytes, l.used_log_space_in_bytes As used_log_space_bytes, l.used_log_space_in_percent As used_log_space_pct, l.log_space_in_bytes_since_last_backup from sys.dm_db_log_space_usage l INNER JOIN sys.databases s ON l.database_id = s.database_id WHERE s.database_id = DB_ID('{{database_name}}') ;" + response_format: table + {{/each}} + {{/if}} {{/if}} \ No newline at end of file diff --git a/packages/microsoft_sqlserver/data_stream/transaction_log/manifest.yml b/packages/microsoft_sqlserver/data_stream/transaction_log/manifest.yml index b30584614f69..c86065768aad 100644 --- a/packages/microsoft_sqlserver/data_stream/transaction_log/manifest.yml +++ b/packages/microsoft_sqlserver/data_stream/transaction_log/manifest.yml @@ -1,5 +1,5 @@ type: metrics -title: Microsoft SQL Server transaction_log metrics +title: Microsoft SQL Server transaction log metrics streams: - input: sql/metrics vars: @@ -16,9 +16,17 @@ streams: multi: true required: true show_user: true - description: Default system databases are preloaded. For user defined databases please add additional rows and enter the database name. + description: Database names to query the transaction logs metrics from. User-defined and system database names can be provided as input. The system databases are automatically included by default. default: ["master", "model", "tempdb", "msdb"] - title: Microsoft SQL Server transaction_log metrics - description: Collect Microsoft SQL Server transaction_log metrics + - name: fetch_from_all_databases + type: bool + title: Fetch from all databases + multi: false + required: false + show_user: false + description: Option to enable fetching the transaction logs metrics from all databases including system and user-defined databases. Overrides database names provided in the "Databases" field and instead considers all databases. + default: false + title: Microsoft SQL Server transaction log metrics + description: Collect Microsoft SQL Server transaction log metrics elasticsearch: index_mode: "time_series" \ No newline at end of file diff --git a/packages/microsoft_sqlserver/manifest.yml b/packages/microsoft_sqlserver/manifest.yml index a7b5bec87a59..8494afa24a15 100644 --- a/packages/microsoft_sqlserver/manifest.yml +++ b/packages/microsoft_sqlserver/manifest.yml @@ -1,7 +1,7 @@ format_version: 1.0.0 name: microsoft_sqlserver title: "Microsoft SQL Server" -version: "2.1.1" +version: "2.2.1" license: basic description: Collect events from Microsoft SQL Server with Elastic Agent type: integration