Skip to content

Commit 389130e

Browse files
authored
Merge pull request #1 from newrelic/queries
Queries and Makefile changes
2 parents c86163b + bcaedd1 commit 389130e

5 files changed

Lines changed: 212 additions & 10 deletions

File tree

Makefile

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
WORKDIR := $(shell pwd)
2+
TARGET := target
3+
TARGET_DIR = $(WORKDIR)/$(TARGET)
14
NATIVEOS := $(shell go version | awk -F '[ /]' '{print $$4}')
25
NATIVEARCH := $(shell go version | awk -F '[ /]' '{print $$5}')
3-
INTEGRATION := $(shell basename $(shell pwd) | cut -d '-' -f 2)
6+
INTEGRATION := mssql
47
BINARY_NAME = nr-$(INTEGRATION)
5-
GO_PKGS := $(shell go list ./... | grep -v "/vendor/")
6-
GO_FILES := $(shell find src -type f -name "*.go")
8+
GO_FILES := ./src/
79
GOTOOLS = github.com/kardianos/govendor \
810
gopkg.in/alecthomas/gometalinter.v2 \
911
github.com/axw/gocov/gocov \
@@ -16,7 +18,7 @@ build: check-version clean validate test compile
1618

1719
clean:
1820
@echo "=== $(INTEGRATION) === [ clean ]: Removing binaries and coverage file..."
19-
@rm -rfv bin coverage.xml
21+
@rm -rfv bin coverage.xml $(TARGET)
2022

2123
tools: check-version
2224
@echo "=== $(INTEGRATION) === [ tools ]: Installing tools required by the project..."
@@ -36,23 +38,26 @@ deps-only:
3638

3739
validate: deps
3840
@echo "=== $(INTEGRATION) === [ validate ]: Validating source code running gometalinter..."
39-
@gometalinter.v2 --config=.gometalinter.json ./...
41+
@gometalinter.v2 --config=.gometalinter.json $(GO_FILES)...
4042

4143
validate-all: deps
4244
@echo "=== $(INTEGRATION) === [ validate ]: Validating source code running gometalinter..."
43-
@gometalinter.v2 --config=.gometalinter.json --enable=interfacer --enable=gosimple ./...
45+
@gometalinter.v2 --config=.gometalinter.json --enable=interfacer --enable=gosimple $(GO_FILES)...
4446

4547
compile: deps
4648
@echo "=== $(INTEGRATION) === [ compile ]: Building $(BINARY_NAME)..."
47-
@go build -o bin/$(BINARY_NAME) ./src
49+
@go build -o bin/$(BINARY_NAME) $(GO_FILE)
4850

4951
compile-only: deps-only
5052
@echo "=== $(INTEGRATION) === [ compile ]: Building $(BINARY_NAME)..."
51-
@go build -o bin/$(BINARY_NAME) ./src
53+
@go build -o bin/$(BINARY_NAME) $(GO_FILE)
5254

5355
test: deps
5456
@echo "=== $(INTEGRATION) === [ test ]: Running unit tests..."
55-
@gocov test $(GO_PKGS) | gocov-xml > coverage.xml
57+
@gocov test $(GO_FILES)... | gocov-xml > coverage.xml
58+
59+
# Include thematic Makefiles
60+
include Makefile-*.mk
5661

5762
check-version:
5863
ifdef GOOS
@@ -66,4 +71,4 @@ ifneq "$(GOARCH)" "$(NATIVEARCH)"
6671
endif
6772
endif
6873

69-
.PHONY: all build clean tools tools-update deps validate compile test check-version
74+
.PHONY: all build clean tools tools-update deps validate compile test check-version

Makefile-package.mk

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
PACKAGE_TYPES ?= deb rpm
2+
PROJECT_NAME = nri-$(INTEGRATION)
3+
BINS_DIR = $(TARGET_DIR)/bin/linux_amd64
4+
SOURCE_DIR = $(TARGET_DIR)/source
5+
PACKAGES_DIR = $(TARGET_DIR)/packages
6+
VERSION ?= 0.0.0
7+
RELEASE ?= dev
8+
LICENSE = "https://newrelic.com/terms (also see LICENSE.txt installed with this package)"
9+
VENDOR = "New Relic, Inc."
10+
PACKAGER = "New Relic Infrastructure Team <infrastructure-eng@newrelic.com>"
11+
PACKAGE_URL = "https://www.newrelic.com/infrastructure"
12+
SUMMARY = "New Relic Infrastructure $(INTEGRATION) Integration"
13+
DESCRIPTION = "New Relic Infrastructure $(INTEGRATION) Integration extend the core New Relic\nInfrastructure agent's capabilities to allow you to collect metric and\nlive state data from $(INTEGRATION) components."
14+
FPM_COMMON_OPTIONS = --verbose -C $(SOURCE_DIR) -s dir -n $(PROJECT_NAME) -v $(VERSION) --iteration $(RELEASE) --prefix "" --license $(LICENSE) --vendor $(VENDOR) -m $(PACKAGER) --url $(PACKAGE_URL) --config-files /etc/newrelic-infra/ --description "$$(printf $(DESCRIPTION))" --depends "newrelic-infra >= 1.0.726"
15+
FPM_DEB_OPTIONS = -t deb -p $(PACKAGES_DIR)/deb/
16+
FPM_RPM_OPTIONS = -t rpm -p $(PACKAGES_DIR)/rpm/ --epoch 0 --rpm-summary $(SUMMARY)
17+
18+
package: create-bins prep-pkg-env $(PACKAGE_TYPES)
19+
20+
create-bins:
21+
echo "=== Main === [ create-bins ]: creating binary ..."
22+
go build -v -ldflags '-X main.buildVersion=$(VERSION)' -o $(BINS_DIR)/$(BINARY_NAME) $(GO_FILES) || exit 1
23+
@echo ""
24+
25+
prep-pkg-env:
26+
@if [ ! -d $(BINS_DIR) ]; then \
27+
echo "=== Main === [ prep-pkg-env ]: no built binaries found. Run 'make create-bins'" ;\
28+
exit 1 ;\
29+
fi
30+
@echo "=== Main === [ prep-pkg-env ]: preparing a clean packaging environment..."
31+
@rm -rf $(SOURCE_DIR)
32+
@mkdir -p $(SOURCE_DIR)/var/db/newrelic-infra/newrelic-integrations/bin $(SOURCE_DIR)/etc/newrelic-infra/integrations.d
33+
@echo "=== Main === [ prep-pkg-env ]: adding built binaries and configuration and definition files..."
34+
@cp $(BINS_DIR)/$(BINARY_NAME) $(SOURCE_DIR)/var/db/newrelic-infra/newrelic-integrations/bin
35+
@chmod 755 $(SOURCE_DIR)/var/db/newrelic-infra/newrelic-integrations/bin/*
36+
@cp ./*.yml $(SOURCE_DIR)/var/db/newrelic-infra/newrelic-integrations/
37+
@chmod 644 $(SOURCE_DIR)/var/db/newrelic-infra/newrelic-integrations/*.yml
38+
@cp ./*.sample $(SOURCE_DIR)/etc/newrelic-infra/integrations.d/
39+
@chmod 644 $(SOURCE_DIR)/etc/newrelic-infra/integrations.d/*.sample
40+
41+
deb: prep-pkg-env
42+
@echo "=== Main === [ deb ]: building DEB package..."
43+
@mkdir -p $(PACKAGES_DIR)/deb
44+
@fpm $(FPM_COMMON_OPTIONS) $(FPM_DEB_OPTIONS) .
45+
46+
rpm: prep-pkg-env
47+
@echo "=== Main === [ rpm ]: building RPM package..."
48+
@mkdir -p $(PACKAGES_DIR)/rpm
49+
@fpm $(FPM_COMMON_OPTIONS) $(FPM_RPM_OPTIONS) .
50+
51+
.PHONY: package create-bins prep-pkg-env $(PACKAGE_TYPES)

queries/database_queries.sql

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
select database_id, name from sys.databases
2+
3+
select
4+
t1.instance_name as db_name,
5+
t1.cntr_value as log_growth
6+
from (SELECT * FROM sys.dm_os_performance_counters WITH (NOLOCK) WHERE object_name = 'SQLServer:Databases' and counter_name = 'Log Growths' and instance_name NOT IN ('_Total', 'mssqlsystemresource')) t1
7+
8+
select
9+
DB_NAME(database_id) AS database_name,
10+
SUM(io_stall_write_ms) + SUM(num_of_writes) as io_stalls
11+
FROM sys.dm_io_virtual_file_stats(null,null)
12+
GROUP BY database_id
13+
14+
/*replace with database name*/
15+
USE "master"
16+
;WITH reserved_space(database_name, reserved_space_kb, reserved_space_not_used_kb)
17+
AS
18+
(
19+
SELECT
20+
DB_NAME() AS database_name,
21+
sum(a.total_pages)*8.0 reserved_space_kb,
22+
sum(a.total_pages)*8.0 -sum(a.used_pages)*8.0 reserved_space_not_used_kb
23+
FROM sys.partitions p
24+
INNER JOIN sys.allocation_units a ON p.partition_id = a.container_id
25+
LEFT JOIN sys.internal_tables it ON p.object_id = it.object_id
26+
)
27+
SELECT
28+
max(reserved_space_kb) * 1024 AS reserved_space,
29+
max(reserved_space_not_used_kb) * 1024 AS reserved_space_not_used
30+
FROM reserved_space
31+
GROUP BY database_name
32+
33+
SELECT
34+
DB_NAME(database_id) AS database_name,
35+
COUNT_BIG(*) * (8*1024) AS buffer_pool_size
36+
FROM sys.dm_os_buffer_descriptors WITH (NOLOCK)
37+
WHERE database_id <> 32767 -- ResourceDB
38+
GROUP BY database_id

queries/instance_queries.sql

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
select
2+
t1.cntr_value as buffer_cache_hit_ratio,
3+
(t1.cntr_value * 1.0 / t2.cntr_value) * 100.0 as buffer_pool_hit_percent,
4+
t3.cntr_value as sql_compilations,
5+
t4.cntr_value as sql_recompilations,
6+
t5.cntr_value as user_connections,
7+
t6.cntr_value as lock_wait_time_ms,
8+
t7.cntr_value as page_splits_sec,
9+
t8.cntr_value as checkpoint_pages_sec,
10+
t9.cntr_value as deadlocks_sec,
11+
t10.cntr_value as user_errors,
12+
t11.cntr_value as kill_connection_errors,
13+
t12.cntr_value as batch_request_sec,
14+
t13.cntr_value as page_life_expectancy_sec,
15+
t14.cntr_value as transactions_sec,
16+
t15.cntr_value as forced_parameterizations_sec
17+
from (SELECT * FROM sys.dm_os_performance_counters WITH (NOLOCK) WHERE counter_name = 'Buffer cache hit ratio') t1,
18+
(SELECT * FROM sys.dm_os_performance_counters WITH (NOLOCK) WHERE counter_name = 'Buffer cache hit ratio base') t2,
19+
(SELECT * FROM sys.dm_os_performance_counters with (NOLOCK) WHERE counter_name = 'SQL Compilations/sec') t3,
20+
(SELECT * FROM sys.dm_os_performance_counters with (NOLOCK) WHERE counter_name = 'SQL Re-Compilations/sec') t4,
21+
(SELECT * FROM sys.dm_os_performance_counters WITH (NOLOCK) WHERE counter_name = 'User Connections') t5,
22+
(SELECT * FROM sys.dm_os_performance_counters WITH (NOLOCK) where counter_name = 'Lock Wait Time (ms)' AND instance_name = '_Total') t6,
23+
(SELECT * FROM sys.dm_os_performance_counters WITH (NOLOCK) where counter_name = 'Page Splits/sec') t7,
24+
(SELECT * FROM sys.dm_os_performance_counters WITH (NOLOCK) WHERE counter_name = 'Checkpoint pages/sec') t8,
25+
(SELECT * FROM sys.dm_os_performance_counters WITH (NOLOCK) where counter_name = 'Number of Deadlocks/sec' AND instance_name = '_Total') t9,
26+
(SELECT * FROM sys.dm_os_performance_counters WITH (NOLOCK) where object_name = 'SQLServer:SQL Errors' and instance_name = 'User Errors') t10,
27+
(SELECT * FROM sys.dm_os_performance_counters WITH (NOLOCK) where object_name = 'SQLServer:SQL Errors' and instance_name like 'Kill Connection Errors%') t11,
28+
(SELECT * FROM sys.dm_os_performance_counters WITH (NOLOCK) WHERE counter_name = 'Batch Requests/sec') t12,
29+
(SELECT * FROM sys.dm_os_performance_counters WITH (NOLOCK) WHERE counter_name = 'Page life expectancy' AND object_name LIKE '%Manager%') t13,
30+
(SELECT SUM(cntr_value) as cntr_value FROM sys.dm_os_performance_counters WITH (NOLOCK) WHERE counter_name = 'Transactions/sec') t14,
31+
(SELECT * FROM sys.dm_os_performance_counters WITH (NOLOCK) WHERE counter_name = 'Forced Parameterizations/sec') t15
32+
33+
SELECT
34+
SUM(wait_time_ms) as wait_time
35+
FROM sys.dm_os_wait_stats
36+
WHERE [wait_type] NOT IN (
37+
N'CLR_SEMAPHORE', N'LAZYWRITER_SLEEP',
38+
N'RESOURCE_QUEUE', N'SQLTRACE_BUFFER_FLUSH',
39+
N'SLEEP_TASK', N'SLEEP_SYSTEMTASK',
40+
N'WAITFOR', N'HADR_FILESTREAM_IOMGR_IOCOMPLETION',
41+
N'CHECKPOINT_QUEUE', N'REQUEST_FOR_DEADLOCK_SEARCH',
42+
N'XE_TIMER_EVENT', N'XE_DISPATCHER_JOIN',
43+
N'LOGMGR_QUEUE', N'FT_IFTS_SCHEDULER_IDLE_WAIT',
44+
N'BROKER_TASK_STOP', N'CLR_MANUAL_EVENT',
45+
N'CLR_AUTO_EVENT', N'DISPATCHER_QUEUE_SEMAPHORE',
46+
N'TRACEWRITE', N'XE_DISPATCHER_WAIT',
47+
N'BROKER_TO_FLUSH', N'BROKER_EVENTHANDLER',
48+
N'FT_IFTSHC_MUTEX', N'SQLTRACE_INCREMENTAL_FLUSH_SLEEP',
49+
N'DIRTY_PAGE_POLL', N'SP_SERVER_DIAGNOSTICS_SLEEP')
50+
51+
SELECT wait_type, wait_time_ms AS wait_time, waiting_tasks_count
52+
FROM sys.dm_os_wait_stats wait_stats
53+
WHERE wait_time_ms != 0
54+
55+
SELECT
56+
MAX(CASE WHEN sessions.status = 'preconnect' then counts else 0 end) AS preconnect,
57+
MAX(CASE WHEN sessions.status = 'background' then counts else 0 end) AS background,
58+
MAX(CASE WHEN sessions.status = 'dormant' then counts else 0 end) AS dormant,
59+
MAX(CASE WHEN sessions.status = 'runnable' then counts else 0 end) AS runnable,
60+
MAX(CASE WHEN sessions.status = 'suspended' then counts else 0 end) AS suspended,
61+
MAX(CASE WHEN sessions.status = 'running' then counts else 0 end) AS running,
62+
MAX(CASE WHEN sessions.status = 'blocked' then counts else 0 end) AS blocked,
63+
MAX(CASE WHEN sessions.status = 'sleeping' then counts else 0 end) AS sleeping
64+
FROM (SELECT status, count(*) counts FROM (
65+
SELECT CASE WHEN req.status IS NOT NULL THEN
66+
CASE WHEN req.blocking_session_id <> 0 THEN 'blocked' ELSE req.status END
67+
ELSE sess.status END status, req.blocking_session_id
68+
FROM sys.dm_exec_sessions sess
69+
LEFT JOIN sys.dm_exec_requests req
70+
on sess.session_id = req.session_id
71+
WHERE sess.session_id > 50 ) statuses
72+
GROUP BY status) sessions
73+
74+
select Sum(total_bytes) AS total_disk_space from (
75+
select DISTINCT
76+
dovs.volume_mount_point,
77+
dovs.available_bytes available_bytes,
78+
dovs.total_bytes total_bytes
79+
FROM sys.master_files mf
80+
CROSS APPLY sys.dm_os_volume_stats(mf.database_id, mf.FILE_ID) dovs
81+
) drives
82+
83+
select SUM(runnable_tasks_count) AS runnable_tasks_count
84+
from sys.dm_os_schedulers
85+
WHERE scheduler_id < 255 AND [status] = 'VISIBLE ONLINE'
86+
87+
SELECT SUM(db.buffer_pool_size) as instance_buffer_pool_size from (
88+
SELECT
89+
COUNT_BIG(*) * (8*1024) AS buffer_pool_size
90+
FROM sys.dm_os_buffer_descriptors WITH (NOLOCK)
91+
WHERE database_id <> 32767 -- ResourceDB
92+
GROUP BY database_id) db
93+
94+
SELECT SUM(db.active_connections) as instance_active_connections from (
95+
SELECT
96+
COUNT(syssp.dbid) AS active_connections
97+
FROM sys.databases db WITH (NOLOCK)
98+
LEFT JOIN sys.sysprocesses syssp WITH (NOLOCK) ON syssp.dbid = db.database_id
99+
GROUP BY db.name) db
100+
101+
select
102+
MAX(sys_mem.total_physical_memory_kb * 1024.0) AS total_physical_memory,
103+
MAX(sys_mem.available_physical_memory_kb * 1024.0) AS available_physical_memory,
104+
(Max(proc_mem.physical_memory_in_use_kb) / (Max(sys_mem.total_physical_memory_kb) * 1.0)) * 100 as memory_utilization
105+
FROM sys.dm_os_process_memory proc_mem,
106+
sys.dm_os_sys_memory sys_mem,
107+
sys.dm_os_performance_counters perf_count WHERE object_name = 'SQLServer:Memory Manager'

queries/inventory_queries.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
EXEC sp_configure

0 commit comments

Comments
 (0)