Skip to content

Commit

Permalink
Add support for fetch_from_all_databases for mssql
Browse files Browse the repository at this point in the history
  • Loading branch information
shmsr committed Aug 29, 2023
1 parent 08b81d3 commit 3e80ac9
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 15 deletions.
5 changes: 5 additions & 0 deletions 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
Expand Down
Expand Up @@ -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}}
@@ -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:
Expand All @@ -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"
2 changes: 1 addition & 1 deletion 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
Expand Down

0 comments on commit 3e80ac9

Please sign in to comment.