diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000000000..c95fe71f026a1 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,49 @@ +--- +defaults: &defaults + docker: + - image: 'circleci/golang:1.9.2' + working_directory: '/go/src/github.com/influxdata/telegraf' +version: 2 +jobs: + build: + <<: *defaults + steps: + - checkout + - run: 'make ci-test' + release: + <<: *defaults + steps: + - checkout + - run: './scripts/release.sh' + - store_artifacts: + path: './artifacts' + destination: '.' + nightly: + <<: *defaults + steps: + - checkout + - run: './scripts/release.sh' + - store_artifacts: + path: './artifacts' + destination: '.' +workflows: + version: 2 + build_and_release: + jobs: + - 'build' + - 'release': + requires: + - 'build' + nightly: + jobs: + - 'build' + - 'nightly': + requires: + - 'build' + triggers: + - schedule: + cron: "0 18 * * *" + filters: + branches: + only: + - master diff --git a/.gitignore b/.gitignore index 8269337dfe47f..459ae7d79d042 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,5 @@ build -tivan -.vagrant /telegraf -.idea +/telegraf.gz *~ *# diff --git a/CHANGELOG.md b/CHANGELOG.md index b950a4e27710a..b8b3a2fdc9ae7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,22 @@ In environments where TCP connections are terminated the `max_lifetime` setting should be set less than the collection `interval` to prevent errors. +- The `sqlserver` input plugin has a new query and data model that can be enabled + by setting `query_version = 2`. It is encouraged to migrate to the new + model when possible as the old version is deprecated and will be removed in + a future version. + +- An option has been added to the `openldap` input plugin that reverses metric + name to improve grouping. This change is enabled when `reverse_metric_names = true` + is set. It is encouraged to enable this option when possible as the old + ordering is deprecated. + + +### New Plugins + +- [ipset](./plugins/inputs/ipset/README.md) - Thanks to @sajoupa +- [nats](./plugins/inputs/nats/README.md) - Thanks to @mjs & @levex + ### Features - [#3551](https://github.com/influxdata/telegraf/pull/3551): Add health status mapping from string to int in elasticsearch input. @@ -30,20 +46,45 @@ - [#2846](https://github.com/influxdata/telegraf/pull/2846): Add support for dropwizard input format. - [#3666](https://github.com/influxdata/telegraf/pull/3666): Add container health metrics to docker input. - [#3687](https://github.com/influxdata/telegraf/pull/3687): Add support for using globs in devices list of diskio input plugin. +- [#2754](https://github.com/influxdata/telegraf/pull/2754): Allow running as console application on Windows. +- [#3703](https://github.com/influxdata/telegraf/pull/3703): Add listener counts and node running status to rabbitmq input. +- [#3674](https://github.com/influxdata/telegraf/pull/3674): Add NATS Monitoring Input Plugin. +- [#3702](https://github.com/influxdata/telegraf/pull/3702): Add ability to select which queues will be gathered in rabbitmq input. +- [#3726](https://github.com/influxdata/telegraf/pull/3726): Add support for setting bsd source address to the ping input. +- [#3346](https://github.com/influxdata/telegraf/pull/3346): Add Ipset input plugin. +- [#3719](https://github.com/influxdata/telegraf/pull/3719): Add TLS and HTTP basic auth to prometheus_client output. +- [#3618](https://github.com/influxdata/telegraf/pull/3618): Add new sqlserver output data model. +- [#3559](https://github.com/influxdata/telegraf/pull/3559): Add native Go method for finding pids to procstat. +- [#3722](https://github.com/influxdata/telegraf/pull/3722): Add additional metrics and reverse metric names option to openldap. +- [#3769](https://github.com/influxdata/telegraf/pull/3769): Add TLS support to the mesos input plugin. ### Bugfixes - [#1896](https://github.com/influxdata/telegraf/issues/1896): Fix various mysql data type conversions. -## v1.5.2 [unreleased] +## v1.5.3 [unreleased] + +### Bugfixes + +- [#3729](https://github.com/influxdata/telegraf/issues/3729): Set path to / if HOST_MOUNT_PREFIX matches full path. +- [#3739](https://github.com/influxdata/telegraf/issues/3739): Remove userinfo from url tag in prometheus input. +- [#3778](https://github.com/influxdata/telegraf/issues/3778): Fix ping plugin not reporting zero durations. + +## v1.5.2 [2018-01-30] ### Bugfixes - [#3684](https://github.com/influxdata/telegraf/pull/3684): Ignore empty lines in Graphite plaintext. - [#3604](https://github.com/influxdata/telegraf/issues/3604): Fix index out of bounds error in solr input plugin. - [#3680](https://github.com/influxdata/telegraf/pull/3680): Reconnect before sending graphite metrics if disconnected. - -## v1.5.1 [2017-01-10] +- [#3693](https://github.com/influxdata/telegraf/pull/3693): Align aggregator period with internal ticker to avoid skipping metrics. +- [#3629](https://github.com/influxdata/telegraf/issues/3629): Fix a potential deadlock when using aggregators. +- [#3697](https://github.com/influxdata/telegraf/issues/3697): Limit wait time for writes in mqtt output. +- [#3698](https://github.com/influxdata/telegraf/issues/3698): Revert change in graphite output where dot in field key was replaced by underscore. +- [#3710](https://github.com/influxdata/telegraf/issues/3710): Add timeout to wavefront output write. +- [#3725](https://github.com/influxdata/telegraf/issues/3725): Exclude master_replid fields from redis input. + +## v1.5.1 [2018-01-10] ### Bugfixes diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 21ae5738e3fb5..949f733008756 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -79,7 +79,10 @@ func (s *Simple) Description() string { } func (s *Simple) SampleConfig() string { - return "ok = true # indicate if everything is fine" + return ` + ## Indicate if everything is fine + ok = true +` } func (s *Simple) Gather(acc telegraf.Accumulator) error { @@ -207,7 +210,9 @@ func (s *Simple) Description() string { } func (s *Simple) SampleConfig() string { - return "url = localhost" + return ` + ok = true +` } func (s *Simple) Connect() error { diff --git a/Godeps b/Godeps index c659227caad83..80d92d39a8d6a 100644 --- a/Godeps +++ b/Godeps @@ -16,7 +16,7 @@ github.com/docker/go-connections 990a1a1a70b0da4c4cb70e117971a4f0babfbf1a github.com/eapache/go-resiliency b86b1ec0dd4209a588dc1285cdd471e73525c0b3 github.com/eapache/go-xerial-snappy bb955e01b9346ac19dc29eb16586c90ded99a98c github.com/eapache/queue 44cc805cf13205b55f69e14bcb69867d1ae92f98 -github.com/eclipse/paho.mqtt.golang d4f545eb108a2d19f9b1a735689dbfb719bc21fb +github.com/eclipse/paho.mqtt.golang aff15770515e3c57fc6109da73d42b0d46f7f483 github.com/go-logfmt/logfmt 390ab7935ee28ec6b286364bba9b4dd6410cb3d5 github.com/go-sql-driver/mysql 2e00b5cd70399450106cec6431c2e2ce3cae5034 github.com/gobwas/glob bea32b9cd2d6f55753d94a28e959b13f0244797a @@ -45,6 +45,7 @@ github.com/miekg/dns 99f84ae56e75126dd77e5de4fae2ea034a468ca1 github.com/mitchellh/mapstructure d0303fe809921458f417bcf828397a65db30a7e4 github.com/multiplay/go-ts3 07477f49b8dfa3ada231afc7b7b17617d42afe8e github.com/naoina/go-stringutil 6b638e95a32d0c1131db0e7fe83775cbea4a0d0b +github.com/nats-io/gnatsd 393bbb7c031433e68707c8810fda0bfcfbe6ab9b github.com/nats-io/go-nats ea9585611a4ab58a205b9b125ebd74c389a6b898 github.com/nats-io/nats ea9585611a4ab58a205b9b125ebd74c389a6b898 github.com/nats-io/nuid 289cccf02c178dc782430d534e3c1f5b72af807f diff --git a/Makefile b/Makefile index a0c340eebc1f9..3250e69ede863 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,9 @@ PREFIX := /usr/local VERSION := $(shell git describe --exact-match --tags 2>/dev/null) BRANCH := $(shell git rev-parse --abbrev-ref HEAD) COMMIT := $(shell git rev-parse --short HEAD) +GOFILES ?= $(shell git ls-files '*.go') +GOFMT ?= $(shell gofmt -l $(GOFILES)) + ifdef GOBIN PATH := $(GOBIN):$(PATH) else @@ -16,10 +19,18 @@ ifdef VERSION endif all: + $(MAKE) fmtcheck $(MAKE) deps $(MAKE) telegraf +ci-test: + $(MAKE) deps + $(MAKE) fmtcheck + $(MAKE) vet + $(MAKE) test + deps: + go get -u github.com/golang/lint/golint go get github.com/sparrc/gdm gdm restore @@ -36,92 +47,53 @@ install: telegraf test: go test -short ./... +fmt: + @gofmt -w $(GOFILES) + +fmtcheck: + @echo '[INFO] running gofmt to identify incorrectly formatted code...' + @if [ ! -z $(GOFMT) ]; then \ + echo "[ERROR] gofmt has found errors in the following files:" ; \ + echo "$(GOFMT)" ; \ + echo "" ;\ + echo "Run make fmt to fix them." ; \ + exit 1 ;\ + fi + @echo '[INFO] done.' + +lint: + golint ./... + test-windows: go test ./plugins/inputs/ping/... go test ./plugins/inputs/win_perf_counters/... go test ./plugins/inputs/win_services/... - -lint: - go vet ./... - -test-all: lint + go test ./plugins/inputs/procstat/... + +# vet runs the Go source code static analysis tool `vet` to find +# any common errors. +vet: + @echo 'go vet $$(go list ./...)' + @go vet $$(go list ./...) ; if [ $$? -eq 1 ]; then \ + echo ""; \ + echo "go vet has found suspicious constructs. Please remediate any reported errors"; \ + echo "to fix them before submitting code for review."; \ + exit 1; \ + fi + +test-all: vet go test ./... package: ./scripts/build.py --package --platform=all --arch=all clean: - -rm -f telegraf - -rm -f telegraf.exe + rm -f telegraf + rm -f telegraf.exe docker-image: ./scripts/build.py --package --platform=linux --arch=amd64 cp build/telegraf*$(COMMIT)*.deb . docker build -f scripts/dev.docker --build-arg "package=telegraf*$(COMMIT)*.deb" -t "telegraf-dev:$(COMMIT)" . -# Run all docker containers necessary for integration tests -docker-run: - docker run --name aerospike -p "3000:3000" -d aerospike/aerospike-server:3.9.0 - docker run --name zookeeper -p "2181:2181" -d wurstmeister/zookeeper - docker run --name kafka \ - --link zookeeper:zookeeper \ - -e KAFKA_ADVERTISED_HOST_NAME=localhost \ - -e KAFKA_ADVERTISED_PORT=9092 \ - -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \ - -e KAFKA_CREATE_TOPICS="test:1:1" \ - -p "9092:9092" \ - -d wurstmeister/kafka - docker run --name elasticsearch -p "9200:9200" -p "9300:9300" -d elasticsearch:5 - docker run --name mysql -p "3306:3306" -e MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mysql - docker run --name memcached -p "11211:11211" -d memcached - docker run --name postgres -p "5432:5432" -d postgres - docker run --name rabbitmq -p "15672:15672" -p "5672:5672" -d rabbitmq:3-management - docker run --name redis -p "6379:6379" -d redis - docker run --name nsq -p "4150:4150" -d nsqio/nsq /nsqd - docker run --name mqtt -p "1883:1883" -d ncarlier/mqtt - docker run --name riemann -p "5555:5555" -d stealthly/docker-riemann - docker run --name nats -p "4222:4222" -d nats - docker run --name openldap \ - -e SLAPD_CONFIG_ROOTDN="cn=manager,cn=config" \ - -e SLAPD_CONFIG_ROOTPW="secret" \ - -p "389:389" -p "636:636" \ - -d cobaugh/openldap-alpine - docker run --name cratedb \ - -p "6543:5432" \ - -d crate:2.2 \ - -Cnetwork.host=0.0.0.0 \ - -Ctransport.host=localhost \ - -Clicense.enterprise=false - -# Run docker containers necessary for integration tests; skipping services provided -# by CircleCI -docker-run-circle: - docker run --name aerospike -p "3000:3000" -d aerospike/aerospike-server:3.9.0 - docker run --name zookeeper -p "2181:2181" -d wurstmeister/zookeeper - docker run --name kafka \ - --link zookeeper:zookeeper \ - -e KAFKA_ADVERTISED_HOST_NAME=localhost \ - -e KAFKA_ADVERTISED_PORT=9092 \ - -e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \ - -e KAFKA_CREATE_TOPICS="test:1:1" \ - -p "9092:9092" \ - -d wurstmeister/kafka - docker run --name elasticsearch -p "9200:9200" -p "9300:9300" -d elasticsearch:5 - docker run --name nsq -p "4150:4150" -d nsqio/nsq /nsqd - docker run --name mqtt -p "1883:1883" -d ncarlier/mqtt - docker run --name riemann -p "5555:5555" -d stealthly/docker-riemann - docker run --name nats -p "4222:4222" -d nats - docker run --name openldap \ - -e SLAPD_CONFIG_ROOTDN="cn=manager,cn=config" \ - -e SLAPD_CONFIG_ROOTPW="secret" \ - -p "389:389" -p "636:636" \ - -d cobaugh/openldap-alpine - -docker-kill: - -docker kill aerospike elasticsearch kafka memcached mqtt mysql nats nsq \ - openldap postgres rabbitmq redis riemann zookeeper cratedb - -docker rm aerospike elasticsearch kafka memcached mqtt mysql nats nsq \ - openldap postgres rabbitmq redis riemann zookeeper cratedb - -.PHONY: deps telegraf telegraf.exe install test test-windows lint test-all \ - package clean docker-run docker-run-circle docker-kill docker-image +.PHONY: deps telegraf install test test-windows lint vet test-all package clean docker-image fmtcheck diff --git a/README.md b/README.md index 917975c788075..d52327f4c5c7f 100644 --- a/README.md +++ b/README.md @@ -159,6 +159,7 @@ configuration options. * [interrupts](./plugins/inputs/interrupts) * [ipmi_sensor](./plugins/inputs/ipmi_sensor) * [iptables](./plugins/inputs/iptables) +* [ipset](./plugins/inputs/ipset) * [jolokia](./plugins/inputs/jolokia) (deprecated, use [jolokia2](./plugins/inputs/jolokia2)) * [jolokia2](./plugins/inputs/jolokia2) * [kapacitor](./plugins/inputs/kapacitor) @@ -171,6 +172,7 @@ configuration options. * [minecraft](./plugins/inputs/minecraft) * [mongodb](./plugins/inputs/mongodb) * [mysql](./plugins/inputs/mysql) +* [nats](./plugins/inputs/nats) * [net_response](./plugins/inputs/net_response) * [nginx](./plugins/inputs/nginx) * [nginx_plus](./plugins/inputs/nginx_plus) diff --git a/agent/accumulator.go b/agent/accumulator.go index 1fa9b13ee9862..51c213a8109eb 100644 --- a/agent/accumulator.go +++ b/agent/accumulator.go @@ -26,7 +26,7 @@ type MetricMaker interface { func NewAccumulator( maker MetricMaker, metrics chan telegraf.Metric, -) *accumulator { +) telegraf.Accumulator { acc := accumulator{ maker: maker, metrics: metrics, diff --git a/agent/accumulator_test.go b/agent/accumulator_test.go index e13446bac4cc0..c3f552d9e7e5c 100644 --- a/agent/accumulator_test.go +++ b/agent/accumulator_test.go @@ -115,15 +115,15 @@ func TestAddNoIntervalWithPrecision(t *testing.T) { map[string]interface{}{"value": float64(101)}, map[string]string{"acc": "test"}, now) - testm := <-a.metrics + testm := <-metrics actual := testm.String() assert.Contains(t, actual, "acctest value=101") - testm = <-a.metrics + testm = <-metrics actual = testm.String() assert.Contains(t, actual, "acctest,acc=test value=101") - testm = <-a.metrics + testm = <-metrics actual = testm.String() assert.Equal(t, fmt.Sprintf("acctest,acc=test value=101 %d\n", int64(1139572800000000000)), @@ -147,15 +147,15 @@ func TestAddDisablePrecision(t *testing.T) { map[string]interface{}{"value": float64(101)}, map[string]string{"acc": "test"}, now) - testm := <-a.metrics + testm := <-metrics actual := testm.String() assert.Contains(t, actual, "acctest value=101") - testm = <-a.metrics + testm = <-metrics actual = testm.String() assert.Contains(t, actual, "acctest,acc=test value=101") - testm = <-a.metrics + testm = <-metrics actual = testm.String() assert.Equal(t, fmt.Sprintf("acctest,acc=test value=101 %d\n", int64(1139572800082912748)), @@ -179,15 +179,15 @@ func TestAddNoPrecisionWithInterval(t *testing.T) { map[string]interface{}{"value": float64(101)}, map[string]string{"acc": "test"}, now) - testm := <-a.metrics + testm := <-metrics actual := testm.String() assert.Contains(t, actual, "acctest value=101") - testm = <-a.metrics + testm = <-metrics actual = testm.String() assert.Contains(t, actual, "acctest,acc=test value=101") - testm = <-a.metrics + testm = <-metrics actual = testm.String() assert.Equal(t, fmt.Sprintf("acctest,acc=test value=101 %d\n", int64(1139572800000000000)), @@ -204,7 +204,7 @@ func TestDifferentPrecisions(t *testing.T) { a.AddFields("acctest", map[string]interface{}{"value": float64(101)}, map[string]string{"acc": "test"}, now) - testm := <-a.metrics + testm := <-metrics actual := testm.String() assert.Equal(t, fmt.Sprintf("acctest,acc=test value=101 %d\n", int64(1139572800000000000)), @@ -214,7 +214,7 @@ func TestDifferentPrecisions(t *testing.T) { a.AddFields("acctest", map[string]interface{}{"value": float64(101)}, map[string]string{"acc": "test"}, now) - testm = <-a.metrics + testm = <-metrics actual = testm.String() assert.Equal(t, fmt.Sprintf("acctest,acc=test value=101 %d\n", int64(1139572800083000000)), @@ -224,7 +224,7 @@ func TestDifferentPrecisions(t *testing.T) { a.AddFields("acctest", map[string]interface{}{"value": float64(101)}, map[string]string{"acc": "test"}, now) - testm = <-a.metrics + testm = <-metrics actual = testm.String() assert.Equal(t, fmt.Sprintf("acctest,acc=test value=101 %d\n", int64(1139572800082913000)), @@ -234,7 +234,7 @@ func TestDifferentPrecisions(t *testing.T) { a.AddFields("acctest", map[string]interface{}{"value": float64(101)}, map[string]string{"acc": "test"}, now) - testm = <-a.metrics + testm = <-metrics actual = testm.String() assert.Equal(t, fmt.Sprintf("acctest,acc=test value=101 %d\n", int64(1139572800082912748)), diff --git a/agent/agent.go b/agent/agent.go index af96718cd405a..5ca3de8824746 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -143,7 +143,7 @@ func (a *Agent) gatherer( func gatherWithTimeout( shutdown chan struct{}, input *models.RunningInput, - acc *accumulator, + acc telegraf.Accumulator, timeout time.Duration, ) { ticker := time.NewTicker(timeout) @@ -308,7 +308,13 @@ func (a *Agent) flusher(shutdown chan struct{}, metricC chan telegraf.Metric, ag metrics = processor.Apply(metrics...) } for _, m := range metrics { - outMetricC <- m + for i, o := range a.Config.Outputs { + if i == len(a.Config.Outputs)-1 { + o.AddMetric(m) + } else { + o.AddMetric(m.Copy()) + } + } } } } @@ -364,8 +370,6 @@ func (a *Agent) Run(shutdown chan struct{}) error { metricC := make(chan telegraf.Metric, 100) aggC := make(chan telegraf.Metric, 100) - now := time.Now() - // Start all ServicePlugins for _, input := range a.Config.Inputs { input.SetDefaultTags(a.Config.Tags) @@ -406,7 +410,7 @@ func (a *Agent) Run(shutdown chan struct{}) error { acc := NewAccumulator(agg, aggC) acc.SetPrecision(a.Config.Agent.Precision.Duration, a.Config.Agent.Interval.Duration) - agg.Run(acc, now, shutdown) + agg.Run(acc, shutdown) }(aggregator) } diff --git a/appveyor.yml b/appveyor.yml index 35cbcbc1a8b04..99387020984c9 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -23,7 +23,8 @@ install: - go env build_script: - - cmd: C:\GnuWin32\bin\make + - cmd: C:\GnuWin32\bin\make deps + - cmd: C:\GnuWin32\bin\make telegraf test_script: - cmd: C:\GnuWin32\bin\make test-windows diff --git a/circle.yml b/circle.yml deleted file mode 100644 index 41fb2e31a67b3..0000000000000 --- a/circle.yml +++ /dev/null @@ -1,19 +0,0 @@ -machine: - services: - - docker - - memcached - - redis - - rabbitmq-server - post: - - sudo rm -rf /usr/local/go - - wget https://storage.googleapis.com/golang/go1.9.2.linux-amd64.tar.gz - - sudo tar -C /usr/local -xzf go1.9.2.linux-amd64.tar.gz - - go version - -dependencies: - override: - - docker info - -test: - override: - - bash scripts/circle-test.sh diff --git a/cmd/telegraf/telegraf.go b/cmd/telegraf/telegraf.go index 2f7b0c8e507a4..4abfd0a3ee7d4 100644 --- a/cmd/telegraf/telegraf.go +++ b/cmd/telegraf/telegraf.go @@ -54,6 +54,7 @@ var fUsage = flag.String("usage", "", "print usage for a plugin, ie, 'telegraf --usage mysql'") var fService = flag.String("service", "", "operate on the service") +var fRunAsConsole = flag.Bool("console", false, "run as console application (windows only)") var ( nextVersion = "1.6.0" @@ -358,7 +359,7 @@ func main() { return } - if runtime.GOOS == "windows" { + if runtime.GOOS == "windows" && !(*fRunAsConsole) { svcConfig := &service.Config{ Name: "telegraf", DisplayName: "Telegraf Data Collector Service", diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000000000..7dd3feeb41b05 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,93 @@ +version: '3' + +services: + aerospike: + image: aerospike/aerospike-server:3.9.0 + ports: + - "3000:3000" + zookeeper: + image: wurstmeister/zookeeper + environment: + - JAVA_OPTS="-Xms256m -Xmx256m" + ports: + - "2181:2181" + kafka: + image: wurstmeister/kafka + environment: + - KAFKA_ADVERTISED_HOST_NAME=localhost + - KAFKA_ADVERTISED_PORT=9092 + - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 + - KAFKA_CREATE_TOPICS="test:1:1" + - JAVA_OPTS="-Xms256m -Xmx256m" + ports: + - "9092:9092" + depends_on: + - zookeeper + elasticsearch: + image: elasticsearch:5 + environment: + - JAVA_OPTS="-Xms256m -Xmx256m" + ports: + - "9200:9200" + - "9300:9300" + mysql: + image: mysql + environment: + - MYSQL_ALLOW_EMPTY_PASSWORD=yes + ports: + - "3306:3306" + memcached: + image: memcached + ports: + - "11211:11211" + postgres: + image: postgres:alpine + ports: + - "5432:5432" + rabbitmq: + image: rabbitmq:3-management + ports: + - "15672:15672" + - "5672:5672" + redis: + image: redis:alpine + ports: + - "6379:6379" + nsq: + image: nsqio/nsq + ports: + - "4150:4150" + command: "/nsqd" + mqtt: + image: ncarlier/mqtt + ports: + - "1883:1883" + riemann: + image: stealthly/docker-riemann + ports: + - "5555:5555" + nats: + image: nats + ports: + - "4222:4222" + openldap: + image: cobaugh/openldap-alpine + environment: + - SLAPD_CONFIG_ROOTDN="cn=manager,cn=config" + - SLAPD_CONFIG_ROOTPW="secret" + ports: + - "389:389" + - "636:636" + crate: + image: crate/crate + ports: + - "4200:4200" + - "4230:4230" + command: + - crate + - -Cnetwork.host=0.0.0.0 + - -Ctransport.host=localhost + - -Clicense.enterprise=false + environment: + - CRATE_HEAP_SIZE=128m + - JAVA_OPTS='-Xms256m -Xmx256m' diff --git a/docs/LICENSE_OF_DEPENDENCIES.md b/docs/LICENSE_OF_DEPENDENCIES.md index 92acc32704d7a..cdf991c5ab8f6 100644 --- a/docs/LICENSE_OF_DEPENDENCIES.md +++ b/docs/LICENSE_OF_DEPENDENCIES.md @@ -54,6 +54,7 @@ following works: - github.com/miekg/dns [BSD](https://github.com/miekg/dns/blob/master/LICENSE) - github.com/naoina/go-stringutil [MIT](https://github.com/naoina/go-stringutil/blob/master/LICENSE) - github.com/naoina/toml [MIT](https://github.com/naoina/toml/blob/master/LICENSE) +- github.com/nats-io/gnatsd [MIT](https://github.com/nats-io/gnatsd/blob/master/LICENSE) - github.com/nats-io/go-nats [MIT](https://github.com/nats-io/go-nats/blob/master/LICENSE) - github.com/nats-io/nats [MIT](https://github.com/nats-io/nats/blob/master/LICENSE) - github.com/nats-io/nuid [MIT](https://github.com/nats-io/nuid/blob/master/LICENSE) diff --git a/internal/internal_test.go b/internal/internal_test.go index 5be5b08d2b777..ee1d24418ad18 100644 --- a/internal/internal_test.go +++ b/internal/internal_test.go @@ -44,6 +44,9 @@ var ( ) func TestRunTimeout(t *testing.T) { + if testing.Short() { + t.Skip("Skipping test due to random failures.") + } if sleepbin == "" { t.Skip("'sleep' binary not available on OS, skipping.") } @@ -58,6 +61,8 @@ func TestRunTimeout(t *testing.T) { } func TestCombinedOutputTimeout(t *testing.T) { + // TODO: Fix this test + t.Skip("Test failing too often, skip for now and revisit later.") if sleepbin == "" { t.Skip("'sleep' binary not available on OS, skipping.") } @@ -109,6 +114,8 @@ func TestRunError(t *testing.T) { } func TestRandomSleep(t *testing.T) { + // TODO: Fix this test + t.Skip("Test failing too often, skip for now and revisit later.") // test that zero max returns immediately s := time.Now() RandomSleep(time.Duration(0), make(chan struct{})) diff --git a/internal/models/running_aggregator.go b/internal/models/running_aggregator.go index 91e5334e8f2b1..8189a6667aa2d 100644 --- a/internal/models/running_aggregator.go +++ b/internal/models/running_aggregator.go @@ -114,7 +114,6 @@ func (r *RunningAggregator) reset() { // for period ticks to tell it when to push and reset the aggregator. func (r *RunningAggregator) Run( acc telegraf.Accumulator, - now time.Time, shutdown chan struct{}, ) { // The start of the period is truncated to the nearest second. @@ -133,6 +132,7 @@ func (r *RunningAggregator) Run( // 2nd interval: 00:10 - 00:20.5 // etc. // + now := time.Now() r.periodStart = now.Truncate(time.Second) truncation := now.Sub(r.periodStart) r.periodEnd = r.periodStart.Add(r.Config.Period) diff --git a/internal/models/running_aggregator_test.go b/internal/models/running_aggregator_test.go index cb56dc4ef89bc..30279f0ee1c28 100644 --- a/internal/models/running_aggregator_test.go +++ b/internal/models/running_aggregator_test.go @@ -24,7 +24,7 @@ func TestAdd(t *testing.T) { }) assert.NoError(t, ra.Config.Filter.Compile()) acc := testutil.Accumulator{} - go ra.Run(&acc, time.Now(), make(chan struct{})) + go ra.Run(&acc, make(chan struct{})) m := ra.MakeMetric( "RITest", @@ -55,7 +55,7 @@ func TestAddMetricsOutsideCurrentPeriod(t *testing.T) { }) assert.NoError(t, ra.Config.Filter.Compile()) acc := testutil.Accumulator{} - go ra.Run(&acc, time.Now(), make(chan struct{})) + go ra.Run(&acc, make(chan struct{})) // metric before current period m := ra.MakeMetric( @@ -113,7 +113,7 @@ func TestAddAndPushOnePeriod(t *testing.T) { wg.Add(1) go func() { defer wg.Done() - ra.Run(&acc, time.Now(), shutdown) + ra.Run(&acc, shutdown) }() m := ra.MakeMetric( diff --git a/plugins/inputs/all/all.go b/plugins/inputs/all/all.go index 85d210a15bf52..55ddc48d184a9 100644 --- a/plugins/inputs/all/all.go +++ b/plugins/inputs/all/all.go @@ -36,6 +36,7 @@ import ( _ "github.com/influxdata/telegraf/plugins/inputs/internal" _ "github.com/influxdata/telegraf/plugins/inputs/interrupts" _ "github.com/influxdata/telegraf/plugins/inputs/ipmi_sensor" + _ "github.com/influxdata/telegraf/plugins/inputs/ipset" _ "github.com/influxdata/telegraf/plugins/inputs/iptables" _ "github.com/influxdata/telegraf/plugins/inputs/jolokia" _ "github.com/influxdata/telegraf/plugins/inputs/jolokia2" @@ -54,6 +55,7 @@ import ( _ "github.com/influxdata/telegraf/plugins/inputs/mongodb" _ "github.com/influxdata/telegraf/plugins/inputs/mqtt_consumer" _ "github.com/influxdata/telegraf/plugins/inputs/mysql" + _ "github.com/influxdata/telegraf/plugins/inputs/nats" _ "github.com/influxdata/telegraf/plugins/inputs/nats_consumer" _ "github.com/influxdata/telegraf/plugins/inputs/net_response" _ "github.com/influxdata/telegraf/plugins/inputs/nginx" diff --git a/plugins/inputs/apache/README.md b/plugins/inputs/apache/README.md index 634abd11ad0d4..0edac31664c4b 100644 --- a/plugins/inputs/apache/README.md +++ b/plugins/inputs/apache/README.md @@ -2,7 +2,7 @@ The Apache plugin collects server performance information using the [`mod_status`](https://httpd.apache.org/docs/2.4/mod/mod_status.html) module of the [Apache HTTP Server](https://httpd.apache.org/). -Typically, the `mod_status` module is configured to expose a page at the `/server-status?auto` location of the Apache server. The [ExtendedStatus](https://httpd.apache.org/docs/2.4/mod/core.html#extendedstatus) option must be enabled in order to collect all available fields. For information about how to configure your server reference the [module documenation](https://httpd.apache.org/docs/2.4/mod/mod_status.html#enable). +Typically, the `mod_status` module is configured to expose a page at the `/server-status?auto` location of the Apache server. The [ExtendedStatus](https://httpd.apache.org/docs/2.4/mod/core.html#extendedstatus) option must be enabled in order to collect all available fields. For information about how to configure your server reference the [module documentation](https://httpd.apache.org/docs/2.4/mod/mod_status.html#enable). ### Configuration: diff --git a/plugins/inputs/ipset/README.md b/plugins/inputs/ipset/README.md new file mode 100644 index 0000000000000..2209de91159f6 --- /dev/null +++ b/plugins/inputs/ipset/README.md @@ -0,0 +1,62 @@ +# Ipset Plugin + +The ipset plugin gathers packets and bytes counters from Linux ipset. +It uses the output of the command "ipset save". +Ipsets created without the "counters" option are ignored. + +Results are tagged with: +- ipset name +- ipset entry + +There are 3 ways to grant telegraf the right to run ipset: +* Run as root (strongly discouraged) +* Use sudo +* Configure systemd to run telegraf with CAP_NET_ADMIN and CAP_NET_RAW capabilities. + +### Using systemd capabilities + +You may run `systemctl edit telegraf.service` and add the following: + +``` +[Service] +CapabilityBoundingSet=CAP_NET_RAW CAP_NET_ADMIN +AmbientCapabilities=CAP_NET_RAW CAP_NET_ADMIN +``` + +### Using sudo + +You may edit your sudo configuration with the following: + +```sudo +telegraf ALL=(root) NOPASSWD: /sbin/ipset save +``` + +### Configuration + +```toml + [[inputs.ipset]] + ## By default, we only show sets which have already matched at least 1 packet. + ## set include_unmatched_sets = true to gather them all. + include_unmatched_sets = false + ## Adjust your sudo settings appropriately if using this option ("sudo ipset save") + ## You can avoid using sudo or root, by setting appropriate privileges for + ## the telegraf.service systemd service. + use_sudo = false + ## The default timeout of 1s for ipset execution can be overridden here: + # timeout = "1s" + +``` + +### Example Output + +``` +$ sudo ipset save +create myset hash:net family inet hashsize 1024 maxelem 65536 counters comment +add myset 10.69.152.1 packets 8 bytes 672 comment "machine A" +``` + +``` +$ telegraf --config telegraf.conf --input-filter ipset --test --debug +* Plugin: inputs.ipset, Collection 1 +> ipset,rule=10.69.152.1,host=trashme,set=myset bytes_total=8i,packets_total=672i 1507615028000000000 +``` diff --git a/plugins/inputs/ipset/ipset.go b/plugins/inputs/ipset/ipset.go new file mode 100644 index 0000000000000..c459ebf4cfe26 --- /dev/null +++ b/plugins/inputs/ipset/ipset.go @@ -0,0 +1,126 @@ +package ipset + +import ( + "bufio" + "bytes" + "fmt" + "os/exec" + "strconv" + "strings" + "time" + + "github.com/influxdata/telegraf" + "github.com/influxdata/telegraf/internal" + "github.com/influxdata/telegraf/plugins/inputs" +) + +// Ipsets is a telegraf plugin to gather packets and bytes counters from ipset +type Ipset struct { + IncludeUnmatchedSets bool + UseSudo bool + Timeout internal.Duration + lister setLister +} + +type setLister func(Timeout internal.Duration, UseSudo bool) (*bytes.Buffer, error) + +const measurement = "ipset" + +var defaultTimeout = internal.Duration{Duration: time.Second} + +// Description returns a short description of the plugin +func (ipset *Ipset) Description() string { + return "Gather packets and bytes counters from Linux ipsets" +} + +// SampleConfig returns sample configuration options. +func (ipset *Ipset) SampleConfig() string { + return ` + ## By default, we only show sets which have already matched at least 1 packet. + ## set include_unmatched_sets = true to gather them all. + include_unmatched_sets = false + ## Adjust your sudo settings appropriately if using this option ("sudo ipset save") + use_sudo = false + ## The default timeout of 1s for ipset execution can be overridden here: + # timeout = "1s" +` +} + +func (ips *Ipset) Gather(acc telegraf.Accumulator) error { + out, e := ips.lister(ips.Timeout, ips.UseSudo) + if e != nil { + acc.AddError(e) + } + + scanner := bufio.NewScanner(out) + for scanner.Scan() { + line := scanner.Text() + // Ignore sets created without the "counters" option + nocomment := strings.Split(line, "\"")[0] + if !(strings.Contains(nocomment, "packets") && + strings.Contains(nocomment, "bytes")) { + continue + } + + data := strings.Fields(line) + if len(data) < 7 { + acc.AddError(fmt.Errorf("Error parsing line (expected at least 7 fields): %s", line)) + continue + } + if data[0] == "add" && (data[4] != "0" || ips.IncludeUnmatchedSets) { + tags := map[string]string{ + "set": data[1], + "rule": data[2], + } + packets_total, err := strconv.ParseUint(data[4], 10, 64) + if err != nil { + acc.AddError(err) + } + bytes_total, err := strconv.ParseUint(data[6], 10, 64) + if err != nil { + acc.AddError(err) + } + fields := map[string]interface{}{ + "packets_total": packets_total, + "bytes_total": bytes_total, + } + acc.AddCounter(measurement, fields, tags) + } + } + return nil +} + +func setList(Timeout internal.Duration, UseSudo bool) (*bytes.Buffer, error) { + // Is ipset installed ? + ipsetPath, err := exec.LookPath("ipset") + if err != nil { + return nil, err + } + var args []string + cmdName := ipsetPath + if UseSudo { + cmdName = "sudo" + args = append(args, ipsetPath) + } + args = append(args, "save") + + cmd := exec.Command(cmdName, args...) + + var out bytes.Buffer + cmd.Stdout = &out + err = internal.RunTimeout(cmd, Timeout.Duration) + if err != nil { + return &out, fmt.Errorf("error running ipset save: %s", err) + } + + return &out, nil +} + +func init() { + inputs.Add("ipset", func() telegraf.Input { + return &Ipset{ + lister: setList, + Timeout: defaultTimeout, + } + }) +} diff --git a/plugins/inputs/ipset/ipset_test.go b/plugins/inputs/ipset/ipset_test.go new file mode 100644 index 0000000000000..9438c806d9e19 --- /dev/null +++ b/plugins/inputs/ipset/ipset_test.go @@ -0,0 +1,135 @@ +package ipset + +import ( + "bytes" + "errors" + "fmt" + "reflect" + "testing" + + "github.com/influxdata/telegraf/internal" + "github.com/influxdata/telegraf/testutil" +) + +func TestIpset(t *testing.T) { + tests := []struct { + name string + value string + tags []map[string]string + fields [][]map[string]interface{} + err error + }{ + { + name: "0 sets, no results", + value: "", + }, + { + name: "Empty sets, no values", + value: `create myset hash:net family inet hashsize 1024 maxelem 65536 + create myset2 hash:net,port family inet hashsize 16384 maxelem 524288 counters comment + `, + }, + { + name: "Non-empty sets, but no counters, no results", + value: `create myset hash:net family inet hashsize 1024 maxelem 65536 + add myset 1.2.3.4 + `, + }, + { + name: "Line with data but not enough fields", + value: `create hash:net family inet hashsize 1024 maxelem 65536 counters + add myset 4.5.6.7 packets 123 bytes + `, + err: fmt.Errorf("Error parsing line (expected at least 7 fields): \t\t\t\tadd myset 4.5.6.7 packets 123 bytes"), + }, + { + name: "Non-empty sets, counters, no comment", + value: `create myset hash:net family inet hashsize 1024 maxelem 65536 counters + add myset 1.2.3.4 packets 1328 bytes 79680 + add myset 2.3.4.5 packets 0 bytes 0 + add myset 3.4.5.6 packets 3 bytes 222 + `, + tags: []map[string]string{ + map[string]string{"set": "myset", "rule": "1.2.3.4"}, + map[string]string{"set": "myset", "rule": "3.4.5.6"}, + }, + fields: [][]map[string]interface{}{ + {map[string]interface{}{"packets_total": uint64(1328), "bytes_total": uint64(79680)}}, + {map[string]interface{}{"packets_total": uint64(3), "bytes_total": uint64(222)}}, + }, + }, + { + name: "Sets with counters and comment", + value: `create myset hash:net family inet hashsize 1024 maxelem 65536 counters comment + add myset 1.2.3.4 packets 1328 bytes 79680 comment "first IP" + add myset 2.3.4.5 packets 0 bytes 0 comment "2nd IP" + add myset 3.4.5.6 packets 3 bytes 222 "3rd IP" + `, + tags: []map[string]string{ + map[string]string{"set": "myset", "rule": "1.2.3.4"}, + map[string]string{"set": "myset", "rule": "3.4.5.6"}, + }, + fields: [][]map[string]interface{}{ + {map[string]interface{}{"packets_total": uint64(1328), "bytes_total": uint64(79680)}}, + {map[string]interface{}{"packets_total": uint64(3), "bytes_total": uint64(222)}}, + }, + }, + } + + for i, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + i++ + ips := &Ipset{ + lister: func(Timeout internal.Duration, UseSudo bool) (*bytes.Buffer, error) { + return bytes.NewBufferString(tt.value), nil + }, + } + acc := new(testutil.Accumulator) + err := acc.GatherError(ips.Gather) + if !reflect.DeepEqual(tt.err, err) { + t.Errorf("%d: expected error '%#v' got '%#v'", i, tt.err, err) + } + if len(tt.tags) == 0 { + n := acc.NFields() + if n != 0 { + t.Errorf("%d: expected 0 values got %d", i, n) + } + return + } + n := 0 + for j, tags := range tt.tags { + for k, fields := range tt.fields[j] { + if len(acc.Metrics) < n+1 { + t.Errorf("%d: expected at least %d values got %d", i, n+1, len(acc.Metrics)) + break + } + m := acc.Metrics[n] + if !reflect.DeepEqual(m.Measurement, measurement) { + t.Errorf("%d %d %d: expected measurement '%#v' got '%#v'\n", i, j, k, measurement, m.Measurement) + } + if !reflect.DeepEqual(m.Tags, tags) { + t.Errorf("%d %d %d: expected tags\n%#v got\n%#v\n", i, j, k, tags, m.Tags) + } + if !reflect.DeepEqual(m.Fields, fields) { + t.Errorf("%d %d %d: expected fields\n%#v got\n%#v\n", i, j, k, fields, m.Fields) + } + n++ + } + } + }) + } +} + +func TestIpset_Gather_listerError(t *testing.T) { + errFoo := errors.New("error foobar") + ips := &Ipset{ + lister: func(Timeout internal.Duration, UseSudo bool) (*bytes.Buffer, error) { + return new(bytes.Buffer), errFoo + }, + } + acc := new(testutil.Accumulator) + err := acc.GatherError(ips.Gather) + if !reflect.DeepEqual(err, errFoo) { + t.Errorf("Expected error %#v got\n%#v\n", errFoo, err) + } +} diff --git a/plugins/inputs/mesos/README.md b/plugins/inputs/mesos/README.md index 67590c3ff2f8f..46df267aad2f6 100644 --- a/plugins/inputs/mesos/README.md +++ b/plugins/inputs/mesos/README.md @@ -11,7 +11,7 @@ For more information, please check the [Mesos Observability Metrics](http://meso ## Timeout, in ms. timeout = 100 ## A list of Mesos masters. - masters = ["localhost:5050"] + masters = ["http://localhost:5050"] ## Master metrics groups to be collected, by default, all enabled. master_collections = [ "resources", @@ -35,6 +35,13 @@ For more information, please check the [Mesos Observability Metrics](http://meso # "tasks", # "messages", # ] + + ## Optional SSL Config + # ssl_ca = "/etc/telegraf/ca.pem" + # ssl_cert = "/etc/telegraf/cert.pem" + # ssl_key = "/etc/telegraf/key.pem" + ## Use SSL but skip chain & host verification + # insecure_skip_verify = false ``` By default this plugin is not configured to gather metrics from mesos. Since a mesos cluster can be deployed in numerous ways it does not provide any default @@ -235,7 +242,8 @@ Mesos slave metric groups ### Tags: - All master/slave measurements have the following tags: - - server + - server (network location of server: `host:port`) + - url (URL origin of server: `scheme://host:port`) - role (master/slave) - All master measurements have the extra tags: diff --git a/plugins/inputs/mesos/mesos.go b/plugins/inputs/mesos/mesos.go index e37eabf5d7be5..5b0697cabaa56 100644 --- a/plugins/inputs/mesos/mesos.go +++ b/plugins/inputs/mesos/mesos.go @@ -7,11 +7,14 @@ import ( "log" "net" "net/http" + "net/url" "strconv" + "strings" "sync" "time" "github.com/influxdata/telegraf" + "github.com/influxdata/telegraf/internal" "github.com/influxdata/telegraf/plugins/inputs" jsonparser "github.com/influxdata/telegraf/plugins/parsers/json" ) @@ -30,6 +33,20 @@ type Mesos struct { Slaves []string SlaveCols []string `toml:"slave_collections"` //SlaveTasks bool + + // Path to CA file + SSLCA string `toml:"ssl_ca"` + // Path to host cert file + SSLCert string `toml:"ssl_cert"` + // Path to cert key file + SSLKey string `toml:"ssl_key"` + // Use SSL but skip chain & host verification + InsecureSkipVerify bool + + initialized bool + client *http.Client + masterURLs []*url.URL + slaveURLs []*url.URL } var allMetrics = map[Role][]string{ @@ -41,7 +58,7 @@ var sampleConfig = ` ## Timeout, in ms. timeout = 100 ## A list of Mesos masters. - masters = ["localhost:5050"] + masters = ["http://localhost:5050"] ## Master metrics groups to be collected, by default, all enabled. master_collections = [ "resources", @@ -65,6 +82,13 @@ var sampleConfig = ` # "tasks", # "messages", # ] + + ## Optional SSL Config + # ssl_ca = "/etc/telegraf/ca.pem" + # ssl_cert = "/etc/telegraf/cert.pem" + # ssl_key = "/etc/telegraf/key.pem" + ## Use SSL but skip chain & host verification + # insecure_skip_verify = false ` // SampleConfig returns a sample configuration block @@ -77,7 +101,28 @@ func (m *Mesos) Description() string { return "Telegraf plugin for gathering metrics from N Mesos masters" } -func (m *Mesos) SetDefaults() { +func parseURL(s string, role Role) (*url.URL, error) { + if !strings.HasPrefix(s, "http://") && !strings.HasPrefix(s, "https://") { + host, port, err := net.SplitHostPort(s) + // no port specified + if err != nil { + host = s + switch role { + case MASTER: + port = "5050" + case SLAVE: + port = "5051" + } + } + + s = "http://" + host + ":" + port + log.Printf("W! [inputs.mesos] Using %q as connection URL; please update your configuration to use an URL", s) + } + + return url.Parse(s) +} + +func (m *Mesos) initialize() error { if len(m.MasterCols) == 0 { m.MasterCols = allMetrics[MASTER] } @@ -87,33 +132,71 @@ func (m *Mesos) SetDefaults() { } if m.Timeout == 0 { - log.Println("I! [mesos] Missing timeout value, setting default value (100ms)") + log.Println("I! [inputs.mesos] Missing timeout value, setting default value (100ms)") m.Timeout = 100 } + + rawQuery := "timeout=" + strconv.Itoa(m.Timeout) + "ms" + + m.masterURLs = make([]*url.URL, 0, len(m.Masters)) + for _, master := range m.Masters { + u, err := parseURL(master, MASTER) + if err != nil { + return err + } + + u.RawQuery = rawQuery + m.masterURLs = append(m.masterURLs, u) + } + + m.slaveURLs = make([]*url.URL, 0, len(m.Slaves)) + for _, slave := range m.Slaves { + u, err := parseURL(slave, SLAVE) + if err != nil { + return err + } + + u.RawQuery = rawQuery + m.slaveURLs = append(m.slaveURLs, u) + } + + client, err := m.createHttpClient() + if err != nil { + return err + } + m.client = client + + return nil } // Gather() metrics from given list of Mesos Masters func (m *Mesos) Gather(acc telegraf.Accumulator) error { - var wg sync.WaitGroup + if !m.initialized { + err := m.initialize() + if err != nil { + return err + } + m.initialized = true + } - m.SetDefaults() + var wg sync.WaitGroup - for _, v := range m.Masters { + for _, master := range m.masterURLs { wg.Add(1) - go func(c string) { - acc.AddError(m.gatherMainMetrics(c, ":5050", MASTER, acc)) + go func(master *url.URL) { + acc.AddError(m.gatherMainMetrics(master, MASTER, acc)) wg.Done() return - }(v) + }(master) } - for _, v := range m.Slaves { + for _, slave := range m.slaveURLs { wg.Add(1) - go func(c string) { - acc.AddError(m.gatherMainMetrics(c, ":5051", SLAVE, acc)) + go func(slave *url.URL) { + acc.AddError(m.gatherMainMetrics(slave, SLAVE, acc)) wg.Done() return - }(v) + }(slave) // if !m.SlaveTasks { // continue @@ -121,7 +204,7 @@ func (m *Mesos) Gather(acc telegraf.Accumulator) error { // wg.Add(1) // go func(c string) { - // acc.AddError(m.gatherSlaveTaskMetrics(c, ":5051", acc)) + // acc.AddError(m.gatherSlaveTaskMetrics(slave, acc)) // wg.Done() // return // }(v) @@ -132,6 +215,24 @@ func (m *Mesos) Gather(acc telegraf.Accumulator) error { return nil } +func (m *Mesos) createHttpClient() (*http.Client, error) { + tlsCfg, err := internal.GetTLSConfig( + m.SSLCert, m.SSLKey, m.SSLCA, m.InsecureSkipVerify) + if err != nil { + return nil, err + } + + client := &http.Client{ + Transport: &http.Transport{ + Proxy: http.ProxyFromEnvironment, + TLSClientConfig: tlsCfg, + }, + Timeout: 4 * time.Second, + } + + return client, nil +} + // metricsDiff() returns set names for removal func metricsDiff(role Role, w []string) []string { b := []string{} @@ -393,15 +494,6 @@ func (m *Mesos) filterMetrics(role Role, metrics *map[string]interface{}) { } } -var tr = &http.Transport{ - ResponseHeaderTimeout: time.Duration(3 * time.Second), -} - -var client = &http.Client{ - Transport: tr, - Timeout: time.Duration(4 * time.Second), -} - // TaskStats struct for JSON API output /monitor/statistics type TaskStats struct { ExecutorID string `json:"executor_id"` @@ -409,22 +501,15 @@ type TaskStats struct { Statistics map[string]interface{} `json:"statistics"` } -func (m *Mesos) gatherSlaveTaskMetrics(address string, defaultPort string, acc telegraf.Accumulator) error { +func (m *Mesos) gatherSlaveTaskMetrics(u *url.URL, acc telegraf.Accumulator) error { var metrics []TaskStats - host, _, err := net.SplitHostPort(address) - if err != nil { - host = address - address = address + defaultPort - } - tags := map[string]string{ - "server": host, + "server": u.Hostname(), + "url": urlTag(u), } - ts := strconv.Itoa(m.Timeout) + "ms" - - resp, err := client.Get("http://" + address + "/monitor/statistics?timeout=" + ts) + resp, err := m.client.Get(withPath(u, "/monitor/statistics").String()) if err != nil { return err @@ -459,24 +544,31 @@ func (m *Mesos) gatherSlaveTaskMetrics(address string, defaultPort string, acc t return nil } +func withPath(u *url.URL, path string) *url.URL { + c := *u + c.Path = path + return &c +} + +func urlTag(u *url.URL) string { + c := *u + c.Path = "" + c.User = nil + c.RawQuery = "" + return c.String() +} + // This should not belong to the object -func (m *Mesos) gatherMainMetrics(a string, defaultPort string, role Role, acc telegraf.Accumulator) error { +func (m *Mesos) gatherMainMetrics(u *url.URL, role Role, acc telegraf.Accumulator) error { var jsonOut map[string]interface{} - host, _, err := net.SplitHostPort(a) - if err != nil { - host = a - a = a + defaultPort - } - tags := map[string]string{ - "server": host, + "server": u.Hostname(), + "url": urlTag(u), "role": string(role), } - ts := strconv.Itoa(m.Timeout) + "ms" - - resp, err := client.Get("http://" + a + "/metrics/snapshot?timeout=" + ts) + resp, err := m.client.Get(withPath(u, "/metrics/snapshot").String()) if err != nil { return err diff --git a/plugins/inputs/mesos/mesos_test.go b/plugins/inputs/mesos/mesos_test.go index a7705d11ee436..905adb6e3d44d 100644 --- a/plugins/inputs/mesos/mesos_test.go +++ b/plugins/inputs/mesos/mesos_test.go @@ -6,10 +6,12 @@ import ( "math/rand" "net/http" "net/http/httptest" + "net/url" "os" "testing" "github.com/influxdata/telegraf/testutil" + "github.com/stretchr/testify/require" ) var masterMetrics map[string]interface{} @@ -378,3 +380,19 @@ func TestSlaveFilter(t *testing.T) { } } } + +func TestWithPathDoesNotModify(t *testing.T) { + u, err := url.Parse("http://localhost:5051") + require.NoError(t, err) + v := withPath(u, "/xyzzy") + require.Equal(t, u.String(), "http://localhost:5051") + require.Equal(t, v.String(), "http://localhost:5051/xyzzy") +} + +func TestURLTagDoesNotModify(t *testing.T) { + u, err := url.Parse("http://a:b@localhost:5051?timeout=1ms") + require.NoError(t, err) + v := urlTag(u) + require.Equal(t, u.String(), "http://a:b@localhost:5051?timeout=1ms") + require.Equal(t, v, "http://localhost:5051") +} diff --git a/plugins/inputs/mysql/mysql.go b/plugins/inputs/mysql/mysql.go index 1e75bf6b51bee..d15f4610161a3 100644 --- a/plugins/inputs/mysql/mysql.go +++ b/plugins/inputs/mysql/mysql.go @@ -147,7 +147,7 @@ func (m *Mysql) Gather(acc telegraf.Accumulator) error { tlsConfig, err := internal.GetTLSConfig(m.SSLCert, m.SSLKey, m.SSLCA, false) if err != nil { - log.Printf("E! MySQL Error registering TLS config: %s", err) + return fmt.Errorf("registering TLS config: %s", err) } if tlsConfig != nil { diff --git a/plugins/inputs/nats/README.md b/plugins/inputs/nats/README.md new file mode 100644 index 0000000000000..362ee17b2aa65 --- /dev/null +++ b/plugins/inputs/nats/README.md @@ -0,0 +1,42 @@ +# NATS Input Plugin + +The [NATS](http://www.nats.io/about/) monitoring plugin gathers metrics from +the NATS [monitoring http server](https://www.nats.io/documentation/server/gnatsd-monitoring/). + +### Configuration + +```toml +[[inputs.nats]] + ## The address of the monitoring endpoint of the NATS server + server = "http://localhost:8222" + + ## Maximum time to receive response + # response_timeout = "5s" +``` + +### Metrics: + +- nats + - tags + - server + - fields: + - uptime (integer, nanoseconds) + - mem (integer, bytes) + - subscriptions (integer, count) + - out_bytes (integer, bytes) + - connections (integer, count) + - in_msgs (integer, bytes) + - total_connections (integer, count) + - cores (integer, count) + - cpu (integer, count) + - slow_consumers (integer, count) + - routes (integer, count) + - remotes (integer, count) + - out_msgs (integer, count) + - in_bytes (integer, bytes) + +### Example Output: + +``` +nats,server=http://localhost:8222 uptime=117158348682i,mem=6647808i,subscriptions=0i,out_bytes=0i,connections=0i,in_msgs=0i,total_connections=0i,cores=2i,cpu=0,slow_consumers=0i,routes=0i,remotes=0i,out_msgs=0i,in_bytes=0i 1517015107000000000 +``` diff --git a/plugins/inputs/nats/nats.go b/plugins/inputs/nats/nats.go new file mode 100644 index 0000000000000..ba1cc803c6d45 --- /dev/null +++ b/plugins/inputs/nats/nats.go @@ -0,0 +1,114 @@ +// +build !freebsd + +package nats + +import ( + "io/ioutil" + "net/http" + "net/url" + "path" + "time" + + "encoding/json" + + "github.com/influxdata/telegraf" + "github.com/influxdata/telegraf/internal" + "github.com/influxdata/telegraf/plugins/inputs" + + gnatsd "github.com/nats-io/gnatsd/server" +) + +type Nats struct { + Server string + ResponseTimeout internal.Duration + + client *http.Client +} + +var sampleConfig = ` + ## The address of the monitoring endpoint of the NATS server + server = "http://localhost:8222" + + ## Maximum time to receive response + # response_timeout = "5s" +` + +func (n *Nats) SampleConfig() string { + return sampleConfig +} + +func (n *Nats) Description() string { + return "Provides metrics about the state of a NATS server" +} + +func (n *Nats) Gather(acc telegraf.Accumulator) error { + url, err := url.Parse(n.Server) + if err != nil { + return err + } + url.Path = path.Join(url.Path, "varz") + + if n.client == nil { + n.client = n.createHTTPClient() + } + resp, err := n.client.Get(url.String()) + if err != nil { + return err + } + defer resp.Body.Close() + + bytes, err := ioutil.ReadAll(resp.Body) + if err != nil { + return err + } + + stats := new(gnatsd.Varz) + err = json.Unmarshal([]byte(bytes), &stats) + if err != nil { + return err + } + + acc.AddFields("nats", + map[string]interface{}{ + "in_msgs": stats.InMsgs, + "out_msgs": stats.OutMsgs, + "in_bytes": stats.InBytes, + "out_bytes": stats.OutBytes, + "uptime": stats.Now.Sub(stats.Start).Nanoseconds(), + "cores": stats.Cores, + "cpu": stats.CPU, + "mem": stats.Mem, + "connections": stats.Connections, + "total_connections": stats.TotalConnections, + "subscriptions": stats.Subscriptions, + "slow_consumers": stats.SlowConsumers, + "routes": stats.Routes, + "remotes": stats.Remotes, + }, + map[string]string{"server": n.Server}, + time.Now()) + + return nil +} + +func (n *Nats) createHTTPClient() *http.Client { + transport := &http.Transport{ + Proxy: http.ProxyFromEnvironment, + } + timeout := n.ResponseTimeout.Duration + if timeout == time.Duration(0) { + timeout = 5 * time.Second + } + return &http.Client{ + Transport: transport, + Timeout: timeout, + } +} + +func init() { + inputs.Add("nats", func() telegraf.Input { + return &Nats{ + Server: "http://localhost:8222", + } + }) +} diff --git a/plugins/inputs/nats/nats_freebsd.go b/plugins/inputs/nats/nats_freebsd.go new file mode 100644 index 0000000000000..c23a6eec5ab91 --- /dev/null +++ b/plugins/inputs/nats/nats_freebsd.go @@ -0,0 +1,3 @@ +// +build freebsd + +package nats diff --git a/plugins/inputs/nats/nats_test.go b/plugins/inputs/nats/nats_test.go new file mode 100644 index 0000000000000..ef387f7e4a649 --- /dev/null +++ b/plugins/inputs/nats/nats_test.go @@ -0,0 +1,114 @@ +// +build !freebsd + +package nats + +import ( + "fmt" + "net/http" + "net/http/httptest" + "testing" + + "github.com/influxdata/telegraf/testutil" + "github.com/stretchr/testify/require" +) + +var sampleVarz = ` +{ + "server_id": "n2afhLHLl64Gcaj7S7jaNa", + "version": "1.0.0", + "go": "go1.8", + "host": "0.0.0.0", + "auth_required": false, + "ssl_required": false, + "tls_required": false, + "tls_verify": false, + "addr": "0.0.0.0", + "max_connections": 65536, + "ping_interval": 120000000000, + "ping_max": 2, + "http_host": "0.0.0.0", + "http_port": 1337, + "https_port": 0, + "auth_timeout": 1, + "max_control_line": 1024, + "cluster": { + "addr": "0.0.0.0", + "cluster_port": 0, + "auth_timeout": 1 + }, + "tls_timeout": 0.5, + "port": 4222, + "max_payload": 1048576, + "start": "1861-04-12T10:15:26.841483489-05:00", + "now": "2011-10-05T15:24:23.722084098-07:00", + "uptime": "150y5md237h8m57s", + "mem": 15581184, + "cores": 48, + "cpu": 9, + "connections": 5, + "total_connections": 109, + "routes": 1, + "remotes": 2, + "in_msgs": 74148556, + "out_msgs": 68863261, + "in_bytes": 946267004717, + "out_bytes": 948110960598, + "slow_consumers": 2, + "subscriptions": 4, + "http_req_stats": { + "/": 1, + "/connz": 100847, + "/routez": 0, + "/subsz": 1, + "/varz": 205785 + }, + "config_load_time": "2017-07-24T10:15:26.841483489-05:00" +} +` + +func TestMetricsCorrect(t *testing.T) { + var acc testutil.Accumulator + + srv := newTestNatsServer() + defer srv.Close() + + n := &Nats{Server: srv.URL} + err := n.Gather(&acc) + require.NoError(t, err) + + fields := map[string]interface{}{ + "in_msgs": int64(74148556), + "out_msgs": int64(68863261), + "in_bytes": int64(946267004717), + "out_bytes": int64(948110960598), + "uptime": int64(4748742536880600609), + "cores": 48, + "cpu": float64(9), + "mem": int64(15581184), + "connections": int(5), + "total_connections": uint64(109), + "subscriptions": uint32(4), + "slow_consumers": int64(2), + "routes": int(1), + "remotes": int(2), + } + tags := map[string]string{ + "server": srv.URL, + } + acc.AssertContainsTaggedFields(t, "nats", fields, tags) +} + +func newTestNatsServer() *httptest.Server { + return httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + var rsp string + + switch r.URL.Path { + case "/varz": + rsp = sampleVarz + default: + panic("Cannot handle request") + } + + fmt.Fprintln(w, rsp) + })) +} diff --git a/plugins/inputs/openldap/README.md b/plugins/inputs/openldap/README.md index e55d1650914fa..44e751f5ee8e6 100644 --- a/plugins/inputs/openldap/README.md +++ b/plugins/inputs/openldap/README.md @@ -25,50 +25,62 @@ To use this plugin you must enable the [monitoring](https://www.openldap.org/dev # dn/password to bind with. If bind_dn is empty, an anonymous bind is performed. bind_dn = "" bind_password = "" + + # reverse metric names so they sort more naturally + # Defaults to false if unset, but is set to true when generating a new config + reverse_metric_names = true ``` ### Measurements & Fields: -All **monitorCounter**, **monitorOpInitiated**, and **monitorOpCompleted** attributes are gathered based on this LDAP query: +All **monitorCounter**, **monitoredInfo**, **monitorOpInitiated**, and **monitorOpCompleted** attributes are gathered based on this LDAP query: -```(|(objectClass=monitorCounterObject)(objectClass=monitorOperation))``` +```(|(objectClass=monitorCounterObject)(objectClass=monitorOperation)(objectClass=monitoredObject))``` -Metric names are based on their entry DN. +Metric names are based on their entry DN with the cn=Monitor base removed. If `reverse_metric_names` is not set, metrics are based on their DN. If `reverse_metric_names` is set to `true`, the names are reversed. This is recommended as it allows the names to sort more naturally. -Metrics for the **monitorOp*** attributes have **_initiated** and **_completed** added to the base name. +Metrics for the **monitorOp*** attributes have **_initiated** and **_completed** added to the base name as appropriate. An OpenLDAP 2.4 server will provide these metrics: - openldap - - max_file_descriptors_connections - - current_connections - - total_connections - - abandon_operations_completed - - abandon_operations_initiated - - add_operations_completed - - add_operations_initiated - - bind_operations_completed - - bind_operations_initiated - - compare_operations_completed - - compare_operations_initiated - - delete_operations_completed - - delete_operations_initiated - - extended_operations_completed - - extended_operations_initiated - - modify_operations_completed - - modify_operations_initiated - - modrdn_operations_completed - - modrdn_operations_initiated - - search_operations_completed - - search_operations_initiated - - unbind_operations_completed - - unbind_operations_initiated - - bytes_statistics - - entries_statistics - - pdu_statistics - - referrals_statistics - - read_waiters - - write_waiters + - connections_current + - connections_max_file_descriptors + - connections_total + - operations_abandon_completed + - operations_abandon_initiated + - operations_add_completed + - operations_add_initiated + - operations_bind_completed + - operations_bind_initiated + - operations_compare_completed + - operations_compare_initiated + - operations_delete_completed + - operations_delete_initiated + - operations_extended_completed + - operations_extended_initiated + - operations_modify_completed + - operations_modify_initiated + - operations_modrdn_completed + - operations_modrdn_initiated + - operations_search_completed + - operations_search_initiated + - operations_unbind_completed + - operations_unbind_initiated + - statistics_bytes + - statistics_entries + - statistics_pdu + - statistics_referrals + - threads_active + - threads_backload + - threads_max + - threads_max_pending + - threads_open + - threads_pending + - threads_starting + - time_uptime + - waiters_read + - waiters_write ### Tags: @@ -80,5 +92,5 @@ An OpenLDAP 2.4 server will provide these metrics: ``` $ telegraf -config telegraf.conf -input-filter openldap -test --debug * Plugin: inputs.openldap, Collection 1 -> openldap,server=localhost,port=389,host=zirzla search_operations_completed=2i,delete_operations_completed=0i,read_waiters=1i,total_connections=1004i,bind_operations_completed=3i,unbind_operations_completed=3i,referrals_statistics=0i,current_connections=1i,bind_operations_initiated=3i,compare_operations_completed=0i,add_operations_completed=2i,delete_operations_initiated=0i,unbind_operations_initiated=3i,search_operations_initiated=3i,add_operations_initiated=2i,max_file_descriptors_connections=4096i,abandon_operations_initiated=0i,write_waiters=0i,modrdn_operations_completed=0i,abandon_operations_completed=0i,pdu_statistics=23i,modify_operations_initiated=0i,bytes_statistics=1660i,entries_statistics=17i,compare_operations_initiated=0i,modrdn_operations_initiated=0i,extended_operations_completed=0i,modify_operations_completed=0i,extended_operations_initiated=0i 1499990455000000000 +> openldap,server=localhost,port=389,host=niska.ait.psu.edu operations_bind_initiated=10i,operations_unbind_initiated=6i,operations_modrdn_completed=0i,operations_delete_initiated=0i,operations_add_completed=2i,operations_delete_completed=0i,operations_abandon_completed=0i,statistics_entries=1516i,threads_open=2i,threads_active=1i,waiters_read=1i,operations_modify_completed=0i,operations_extended_initiated=4i,threads_pending=0i,operations_search_initiated=36i,operations_compare_initiated=0i,connections_max_file_descriptors=4096i,operations_modify_initiated=0i,operations_modrdn_initiated=0i,threads_max=16i,time_uptime=6017i,connections_total=1037i,connections_current=1i,operations_add_initiated=2i,statistics_bytes=162071i,operations_unbind_completed=6i,operations_abandon_initiated=0i,statistics_pdu=1566i,threads_max_pending=0i,threads_backload=1i,waiters_write=0i,operations_bind_completed=10i,operations_search_completed=35i,operations_compare_completed=0i,operations_extended_completed=4i,statistics_referrals=0i,threads_starting=0i 1516912070000000000 ``` diff --git a/plugins/inputs/openldap/openldap.go b/plugins/inputs/openldap/openldap.go index a70cfd13a9347..e413ecbed9718 100644 --- a/plugins/inputs/openldap/openldap.go +++ b/plugins/inputs/openldap/openldap.go @@ -20,6 +20,7 @@ type Openldap struct { SslCa string BindDn string BindPassword string + ReverseMetricNames bool } const sampleConfig string = ` @@ -40,13 +41,18 @@ const sampleConfig string = ` # dn/password to bind with. If bind_dn is empty, an anonymous bind is performed. bind_dn = "" bind_password = "" + + # Reverse metric names so they sort more naturally. Recommended. + # This defaults to false if unset, but is set to true when generating a new config + reverse_metric_names = true ` var searchBase = "cn=Monitor" -var searchFilter = "(|(objectClass=monitorCounterObject)(objectClass=monitorOperation))" -var searchAttrs = []string{"monitorCounter", "monitorOpInitiated", "monitorOpCompleted"} +var searchFilter = "(|(objectClass=monitorCounterObject)(objectClass=monitorOperation)(objectClass=monitoredObject))" +var searchAttrs = []string{"monitorCounter", "monitorOpInitiated", "monitorOpCompleted", "monitoredInfo"} var attrTranslate = map[string]string{ "monitorCounter": "", + "monitoredInfo": "", "monitorOpInitiated": "_initiated", "monitorOpCompleted": "_completed", } @@ -69,6 +75,7 @@ func NewOpenldap() *Openldap { SslCa: "", BindDn: "", BindPassword: "", + ReverseMetricNames: false, } } @@ -149,7 +156,7 @@ func gatherSearchResult(sr *ldap.SearchResult, o *Openldap, acc telegraf.Accumul "port": strconv.Itoa(o.Port), } for _, entry := range sr.Entries { - metricName := dnToMetric(entry.DN, searchBase) + metricName := dnToMetric(entry.DN, o) for _, attr := range entry.Attributes { if len(attr.Values[0]) >= 1 { if v, err := strconv.ParseInt(attr.Values[0], 10, 64); err == nil { @@ -162,15 +169,30 @@ func gatherSearchResult(sr *ldap.SearchResult, o *Openldap, acc telegraf.Accumul return } -// Convert a DN to metric name, eg cn=Read,cn=Waiters,cn=Monitor to read_waiters -func dnToMetric(dn, searchBase string) string { - metricName := strings.Trim(dn, " ") - metricName = strings.Replace(metricName, " ", "_", -1) - metricName = strings.ToLower(metricName) - metricName = strings.TrimPrefix(metricName, "cn=") - metricName = strings.Replace(metricName, strings.ToLower(searchBase), "", -1) - metricName = strings.Replace(metricName, "cn=", "_", -1) - return strings.Replace(metricName, ",", "", -1) +// Convert a DN to metric name, eg cn=Read,cn=Waiters,cn=Monitor becomes waiters_read +// Assumes the last part of the DN is cn=Monitor and we want to drop it +func dnToMetric(dn string, o *Openldap) string { + if o.ReverseMetricNames { + var metricParts []string + + dn = strings.Trim(dn, " ") + dn = strings.Replace(dn, " ", "_", -1) + dn = strings.Replace(dn, "cn=", "", -1) + dn = strings.ToLower(dn) + metricParts = strings.Split(dn, ",") + for i, j := 0, len(metricParts)-1; i < j; i, j = i+1, j-1 { + metricParts[i], metricParts[j] = metricParts[j], metricParts[i] + } + return strings.Join(metricParts[1:], "_") + } else { + metricName := strings.Trim(dn, " ") + metricName = strings.Replace(metricName, " ", "_", -1) + metricName = strings.ToLower(metricName) + metricName = strings.TrimPrefix(metricName, "cn=") + metricName = strings.Replace(metricName, strings.ToLower("cn=Monitor"), "", -1) + metricName = strings.Replace(metricName, "cn=", "_", -1) + return strings.Replace(metricName, ",", "", -1) + } } func init() { diff --git a/plugins/inputs/openldap/openldap_test.go b/plugins/inputs/openldap/openldap_test.go index 489ef86363283..b33354ece890f 100644 --- a/plugins/inputs/openldap/openldap_test.go +++ b/plugins/inputs/openldap/openldap_test.go @@ -148,3 +148,24 @@ func commonTests(t *testing.T, o *Openldap, acc *testutil.Accumulator) { assert.Equal(t, strconv.Itoa(o.Port), acc.TagValue("openldap", "port"), "Has a tag value of port=o.Port") assert.True(t, acc.HasInt64Field("openldap", "total_connections"), "Has an integer field called total_connections") } + +func TestOpenldapReverseMetrics(t *testing.T) { + if testing.Short() { + t.Skip("Skipping integration test in short mode") + } + + o := &Openldap{ + Host: testutil.GetLocalHost(), + Port: 389, + Ssl: "", + InsecureSkipVerify: true, + BindDn: "cn=manager,cn=config", + BindPassword: "secret", + ReverseMetricNames: true, + } + + var acc testutil.Accumulator + err := o.Gather(&acc) + require.NoError(t, err) + assert.True(t, acc.HasInt64Field("openldap", "connections_total"), "Has an integer field called connections_total") +} diff --git a/plugins/inputs/ping/README.md b/plugins/inputs/ping/README.md index 914477c54c203..5e4c637f537f8 100644 --- a/plugins/inputs/ping/README.md +++ b/plugins/inputs/ping/README.md @@ -17,7 +17,8 @@ urls = ["www.google.com"] # required # ping_interval = 1.0 ## per-ping timeout, in s. 0 == no timeout (ping -W ) # timeout = 1.0 -## interface to send ping from (ping -I ) +## interface or source address to send ping from (ping -I ) +## on Darwin and Freebsd only source address possible: (ping -S ) # interface = "" ``` diff --git a/plugins/inputs/ping/ping.go b/plugins/inputs/ping/ping.go index cae575bfd5357..2fb48a20b5d49 100644 --- a/plugins/inputs/ping/ping.go +++ b/plugins/inputs/ping/ping.go @@ -34,7 +34,7 @@ type Ping struct { // Ping timeout, in seconds. 0 means no timeout (ping -W ) Timeout float64 - // Interface to send ping from (ping -I ) + // Interface or source address to send ping from (ping -I/-S ) Interface string // URLs to ping @@ -60,7 +60,8 @@ const sampleConfig = ` # ping_interval = 1.0 ## per-ping timeout, in s. 0 == no timeout (ping -W ) # timeout = 1.0 - ## interface to send ping from (ping -I ) + ## interface or source address to send ping from (ping -I ) + ## on Darwin and Freebsd only source address possible: (ping -S ) # interface = "" ` @@ -128,16 +129,16 @@ func (p *Ping) Gather(acc telegraf.Accumulator) error { fields["packets_transmitted"] = trans fields["packets_received"] = rec fields["percent_packet_loss"] = loss - if min > 0 { + if min >= 0 { fields["minimum_response_ms"] = min } - if avg > 0 { + if avg >= 0 { fields["average_response_ms"] = avg } - if max > 0 { + if max >= 0 { fields["maximum_response_ms"] = max } - if stddev > 0 { + if stddev >= 0 { fields["standard_deviation_ms"] = stddev } acc.AddFields("ping", fields, tags) @@ -179,7 +180,15 @@ func (p *Ping) args(url string) []string { } } if p.Interface != "" { - args = append(args, "-I", p.Interface) + switch runtime.GOOS { + case "linux": + args = append(args, "-I", p.Interface) + case "freebsd", "darwin": + args = append(args, "-S", p.Interface) + default: + // Not sure the best option here, just assume GNU ping? + args = append(args, "-I", p.Interface) + } } args = append(args, url) return args @@ -198,7 +207,7 @@ func (p *Ping) args(url string) []string { // It returns (, , ) func processPingOutput(out string) (int, int, float64, float64, float64, float64, error) { var trans, recv int - var min, avg, max, stddev float64 + var min, avg, max, stddev float64 = -1.0, -1.0, -1.0, -1.0 // Set this error to nil if we find a 'transmitted' line err := errors.New("Fatal error processing ping output") lines := strings.Split(out, "\n") diff --git a/plugins/inputs/ping/ping_windows.go b/plugins/inputs/ping/ping_windows.go index 862c82c5f30e5..06a7f590e3325 100644 --- a/plugins/inputs/ping/ping_windows.go +++ b/plugins/inputs/ping/ping_windows.go @@ -93,32 +93,32 @@ func processPingOutput(out string) (int, int, int, int, int, int, error) { // stats data should contain 4 members: entireExpression + ( Send, Receive, Lost ) if len(stats) != 4 { - return 0, 0, 0, 0, 0, 0, err + return 0, 0, 0, -1, -1, -1, err } trans, err := strconv.Atoi(stats[1]) if err != nil { - return 0, 0, 0, 0, 0, 0, err + return 0, 0, 0, -1, -1, -1, err } receivedPacket, err := strconv.Atoi(stats[2]) if err != nil { - return 0, 0, 0, 0, 0, 0, err + return 0, 0, 0, -1, -1, -1, err } // aproxs data should contain 4 members: entireExpression + ( min, max, avg ) if len(aproxs) != 4 { - return trans, receivedReply, receivedPacket, 0, 0, 0, err + return trans, receivedReply, receivedPacket, -1, -1, -1, err } min, err := strconv.Atoi(aproxs[1]) if err != nil { - return trans, receivedReply, receivedPacket, 0, 0, 0, err + return trans, receivedReply, receivedPacket, -1, -1, -1, err } max, err := strconv.Atoi(aproxs[2]) if err != nil { - return trans, receivedReply, receivedPacket, 0, 0, 0, err + return trans, receivedReply, receivedPacket, -1, -1, -1, err } avg, err := strconv.Atoi(aproxs[3]) if err != nil { - return 0, 0, 0, 0, 0, 0, err + return 0, 0, 0, -1, -1, -1, err } return trans, receivedReply, receivedPacket, avg, min, max, err @@ -201,13 +201,13 @@ func (p *Ping) Gather(acc telegraf.Accumulator) error { fields["packets_received"] = receivePacket fields["percent_packet_loss"] = lossPackets fields["percent_reply_loss"] = lossReply - if avg > 0 { + if avg >= 0 { fields["average_response_ms"] = float64(avg) } - if min > 0 { + if min >= 0 { fields["minimum_response_ms"] = float64(min) } - if max > 0 { + if max >= 0 { fields["maximum_response_ms"] = float64(max) } acc.AddFields("ping", fields, tags) diff --git a/plugins/inputs/postgresql_extensible/README.md b/plugins/inputs/postgresql_extensible/README.md index 50f745d4132ed..29c5e36d853e4 100644 --- a/plugins/inputs/postgresql_extensible/README.md +++ b/plugins/inputs/postgresql_extensible/README.md @@ -43,7 +43,11 @@ The example below has two queries are specified, with the following parameters: # withdbname was true. # Be careful that if the withdbname is set to false you don't have to define # the where clause (aka with the dbname) - # the tagvalue field is used to define custom tags (separated by comas) + # + # the tagvalue field is used to define custom tags (separated by comas). + # the query is expected to return columns which match the names of the + # defined tags. The values in these columns must be of a string-type, + # a number-type or a blob-type. # # Structure : # [[inputs.postgresql_extensible.query]] @@ -109,6 +113,15 @@ using postgreql extensions ([pg_stat_statements](http://www.postgresql.org/docs/ version=901 withdbname=false tagvalue="db" +[[inputs.postgresql_extensible.query]] + sqlquery=""" + SELECT type, (enabled || '') AS enabled, COUNT(*) + FROM application_users + GROUP BY type, enabled + """ + version=901 + withdbname=false + tagvalue="type,enabled" ``` # Postgresql Side diff --git a/plugins/inputs/procstat/README.md b/plugins/inputs/procstat/README.md index 00820be9a1b1f..0ff9884b2516d 100644 --- a/plugins/inputs/procstat/README.md +++ b/plugins/inputs/procstat/README.md @@ -1,121 +1,138 @@ -# Telegraf plugin: procstat +# Procstat Input Plugin -#### Description +The procstat plugin can be used to monitor the system resource usage of one or more processes. -The procstat plugin can be used to monitor system resource usage by an -individual process using their /proc data. +Processes can be selected for monitoring using one of several methods: +- pidfile +- exe +- pattern +- user +- systemd_unit +- cgroup -Processes can be specified either by pid file, by executable name, by command -line pattern matching, by username, by systemd unit name, or by cgroup name/path -(in this order or priority). Procstat plugin will use `pgrep` when executable -name is provided to obtain the pid. Procstat plugin will transmit IO, memory, -cpu, file descriptor related measurements for every process specified. A prefix -can be set to isolate individual process specific measurements. +### Configuration: -The plugin will tag processes according to how they are specified in the configuration. If a pid file is used, a "pidfile" tag will be generated. -On the other hand, if an executable is used an "exe" tag will be generated. Possible tag names: - -* pidfile -* exe -* pattern -* user -* systemd_unit -* cgroup - -Additionally the plugin will tag processes by their PID (pid_tag = true in the config) and their process name: - -* pid -* process_name +```toml +# Monitor process cpu and memory usage +[[inputs.procstat]] + ## PID file to monitor process + pid_file = "/var/run/nginx.pid" + ## executable name (ie, pgrep ) + # exe = "nginx" + ## pattern as argument for pgrep (ie, pgrep -f ) + # pattern = "nginx" + ## user as argument for pgrep (ie, pgrep -u ) + # user = "nginx" + ## Systemd unit name + # systemd_unit = "nginx.service" + ## CGroup name or path + # cgroup = "systemd/system.slice/nginx.service" + + ## override for process_name + ## This is optional; default is sourced from /proc//status + # process_name = "bar" + + ## Field name prefix + # prefix = "" + + ## Add PID as a tag instead of a field; useful to differentiate between + ## processes whose tags are otherwise the same. Can create a large number + ## of series, use judiciously. + # pid_tag = false + + ## Method to use when finding process IDs. Can be one of 'pgrep', or + ## 'native'. The pgrep finder calls the pgrep executable in the PATH while + ## the native finder performs the search directly in a manor dependent on the + ## platform. Default is 'pgrep' + # pid_finder = "pgrep" +``` -Example: +#### Windows support -``` -[[inputs.procstat]] - exe = "influxd" - prefix = "influxd" +Preliminary support for Windows has been added, however you may prefer using +the `win_perf_counters` input plugin as a more mature alternative. +When using the `pid_finder = "native"` in Windows, the pattern lookup method is +implemented as a WMI query. The pattern allows fuzzy matching using only +[WMI query patterns](https://msdn.microsoft.com/en-us/library/aa392263(v=vs.85).aspx): +```toml [[inputs.procstat]] - pid_file = "/var/run/lxc/dnsmasq.pid" + pattern = "%influx%" + pid_finder = "native" ``` -The above configuration would result in output like: +### Metrics: + +- procstat + - tags: + - pid (when `pid_tag` is true) + - process_name + - pidfile (when defined) + - exe (when defined) + - pattern (when defined) + - user (when selected) + - systemd_unit (when defined) + - cgroup (when defined) + - fields: + - cpu_time (int) + - cpu_time_guest (float) + - cpu_time_guest_nice (float) + - cpu_time_idle (float) + - cpu_time_iowait (float) + - cpu_time_irq (float) + - cpu_time_nice (float) + - cpu_time_soft_irq (float) + - cpu_time_steal (float) + - cpu_time_stolen (float) + - cpu_time_system (float) + - cpu_time_user (float) + - cpu_usage (float) + - involuntary_context_switches (int) + - memory_data (int) + - memory_locked (int) + - memory_rss (int) + - memory_stack (int) + - memory_swap (int) + - memory_vms (int) + - nice_priority (int) + - num_fds (int, *telegraf* may need to be ran as **root**) + - num_threads (int) + - pid (int) + - read_bytes (int, *telegraf* may need to be ran as **root**) + - read_count (int, *telegraf* may need to be ran as **root**) + - realtime_priority (int) + - rlimit_cpu_time_hard (int) + - rlimit_cpu_time_soft (int) + - rlimit_file_locks_hard (int) + - rlimit_file_locks_soft (int) + - rlimit_memory_data_hard (int) + - rlimit_memory_data_soft (int) + - rlimit_memory_locked_hard (int) + - rlimit_memory_locked_soft (int) + - rlimit_memory_rss_hard (int) + - rlimit_memory_rss_soft (int) + - rlimit_memory_stack_hard (int) + - rlimit_memory_stack_soft (int) + - rlimit_memory_vms_hard (int) + - rlimit_memory_vms_soft (int) + - rlimit_nice_priority_hard (int) + - rlimit_nice_priority_soft (int) + - rlimit_num_fds_hard (int) + - rlimit_num_fds_soft (int) + - rlimit_realtime_priority_hard (int) + - rlimit_realtime_priority_soft (int) + - rlimit_signals_pending_hard (int) + - rlimit_signals_pending_soft (int) + - signals_pending (int) + - voluntary_context_switches (int) + - write_bytes (int, *telegraf* may need to be ran as **root**) + - write_count (int, *telegraf* may need to be ran as **root**) + +*NOTE: Resource limit > 2147483647 will be reported as 2147483647.* + +### Example Output: ``` -> procstat,pidfile=/var/run/lxc/dnsmasq.pid,process_name=dnsmasq rlimit_file_locks_soft=2147483647i,rlimit_signals_pending_hard=1758i,voluntary_context_switches=478i,read_bytes=307200i,cpu_time_user=0.01,cpu_time_guest=0,memory_swap=0i,memory_locked=0i,rlimit_num_fds_hard=4096i,rlimit_nice_priority_hard=0i,num_fds=11i,involuntary_context_switches=20i,read_count=23i,memory_rss=1388544i,rlimit_memory_rss_soft=2147483647i,rlimit_memory_rss_hard=2147483647i,nice_priority=20i,rlimit_cpu_time_hard=2147483647i,cpu_time=0i,write_bytes=0i,cpu_time_idle=0,cpu_time_nice=0,memory_data=229376i,memory_stack=135168i,rlimit_cpu_time_soft=2147483647i,rlimit_memory_data_hard=2147483647i,rlimit_memory_locked_hard=65536i,rlimit_signals_pending_soft=1758i,write_count=11i,cpu_time_iowait=0,cpu_time_steal=0,cpu_time_stolen=0,rlimit_memory_stack_soft=8388608i,cpu_time_system=0.02,cpu_time_guest_nice=0,rlimit_memory_locked_soft=65536i,rlimit_memory_vms_soft=2147483647i,rlimit_file_locks_hard=2147483647i,rlimit_realtime_priority_hard=0i,pid=828i,num_threads=1i,cpu_time_soft_irq=0,rlimit_memory_vms_hard=2147483647i,rlimit_realtime_priority_soft=0i,memory_vms=15884288i,rlimit_memory_stack_hard=2147483647i,cpu_time_irq=0,rlimit_memory_data_soft=2147483647i,rlimit_num_fds_soft=1024i,signals_pending=0i,rlimit_nice_priority_soft=0i,realtime_priority=0i -> procstat,exe=influxd,process_name=influxd rlimit_num_fds_hard=16384i,rlimit_signals_pending_hard=1758i,realtime_priority=0i,rlimit_memory_vms_hard=2147483647i,rlimit_signals_pending_soft=1758i,cpu_time_stolen=0,rlimit_memory_stack_hard=2147483647i,rlimit_realtime_priority_hard=0i,cpu_time=0i,pid=500i,voluntary_context_switches=975i,cpu_time_idle=0,memory_rss=3072000i,memory_locked=0i,rlimit_nice_priority_soft=0i,signals_pending=0i,nice_priority=20i,read_bytes=823296i,cpu_time_soft_irq=0,rlimit_memory_data_hard=2147483647i,rlimit_memory_locked_soft=65536i,write_count=8i,cpu_time_irq=0,memory_vms=33501184i,rlimit_memory_stack_soft=8388608i,cpu_time_iowait=0,rlimit_memory_vms_soft=2147483647i,rlimit_nice_priority_hard=0i,num_fds=29i,memory_data=229376i,rlimit_cpu_time_soft=2147483647i,rlimit_file_locks_soft=2147483647i,num_threads=1i,write_bytes=0i,cpu_time_steal=0,rlimit_memory_rss_hard=2147483647i,cpu_time_guest=0,cpu_time_guest_nice=0,cpu_usage=0,rlimit_memory_locked_hard=65536i,rlimit_file_locks_hard=2147483647i,involuntary_context_switches=38i,read_count=16851i,memory_swap=0i,rlimit_memory_data_soft=2147483647i,cpu_time_user=0.11,rlimit_cpu_time_hard=2147483647i,rlimit_num_fds_soft=16384i,rlimit_realtime_priority_soft=0i,cpu_time_system=0.27,cpu_time_nice=0,memory_stack=135168i,rlimit_memory_rss_soft=2147483647i +procstat,pidfile=/var/run/lxc/dnsmasq.pid,process_name=dnsmasq rlimit_file_locks_soft=2147483647i,rlimit_signals_pending_hard=1758i,voluntary_context_switches=478i,read_bytes=307200i,cpu_time_user=0.01,cpu_time_guest=0,memory_swap=0i,memory_locked=0i,rlimit_num_fds_hard=4096i,rlimit_nice_priority_hard=0i,num_fds=11i,involuntary_context_switches=20i,read_count=23i,memory_rss=1388544i,rlimit_memory_rss_soft=2147483647i,rlimit_memory_rss_hard=2147483647i,nice_priority=20i,rlimit_cpu_time_hard=2147483647i,cpu_time=0i,write_bytes=0i,cpu_time_idle=0,cpu_time_nice=0,memory_data=229376i,memory_stack=135168i,rlimit_cpu_time_soft=2147483647i,rlimit_memory_data_hard=2147483647i,rlimit_memory_locked_hard=65536i,rlimit_signals_pending_soft=1758i,write_count=11i,cpu_time_iowait=0,cpu_time_steal=0,cpu_time_stolen=0,rlimit_memory_stack_soft=8388608i,cpu_time_system=0.02,cpu_time_guest_nice=0,rlimit_memory_locked_soft=65536i,rlimit_memory_vms_soft=2147483647i,rlimit_file_locks_hard=2147483647i,rlimit_realtime_priority_hard=0i,pid=828i,num_threads=1i,cpu_time_soft_irq=0,rlimit_memory_vms_hard=2147483647i,rlimit_realtime_priority_soft=0i,memory_vms=15884288i,rlimit_memory_stack_hard=2147483647i,cpu_time_irq=0,rlimit_memory_data_soft=2147483647i,rlimit_num_fds_soft=1024i,signals_pending=0i,rlimit_nice_priority_soft=0i,realtime_priority=0i +procstat,exe=influxd,process_name=influxd rlimit_num_fds_hard=16384i,rlimit_signals_pending_hard=1758i,realtime_priority=0i,rlimit_memory_vms_hard=2147483647i,rlimit_signals_pending_soft=1758i,cpu_time_stolen=0,rlimit_memory_stack_hard=2147483647i,rlimit_realtime_priority_hard=0i,cpu_time=0i,pid=500i,voluntary_context_switches=975i,cpu_time_idle=0,memory_rss=3072000i,memory_locked=0i,rlimit_nice_priority_soft=0i,signals_pending=0i,nice_priority=20i,read_bytes=823296i,cpu_time_soft_irq=0,rlimit_memory_data_hard=2147483647i,rlimit_memory_locked_soft=65536i,write_count=8i,cpu_time_irq=0,memory_vms=33501184i,rlimit_memory_stack_soft=8388608i,cpu_time_iowait=0,rlimit_memory_vms_soft=2147483647i,rlimit_nice_priority_hard=0i,num_fds=29i,memory_data=229376i,rlimit_cpu_time_soft=2147483647i,rlimit_file_locks_soft=2147483647i,num_threads=1i,write_bytes=0i,cpu_time_steal=0,rlimit_memory_rss_hard=2147483647i,cpu_time_guest=0,cpu_time_guest_nice=0,cpu_usage=0,rlimit_memory_locked_hard=65536i,rlimit_file_locks_hard=2147483647i,involuntary_context_switches=38i,read_count=16851i,memory_swap=0i,rlimit_memory_data_soft=2147483647i,cpu_time_user=0.11,rlimit_cpu_time_hard=2147483647i,rlimit_num_fds_soft=16384i,rlimit_realtime_priority_soft=0i,cpu_time_system=0.27,cpu_time_nice=0,memory_stack=135168i,rlimit_memory_rss_soft=2147483647i ``` - -# Measurements -Note: prefix can be set by the user, per process. - - -Threads related measurement names: -- procstat_[prefix_]num_threads value=5 - -File descriptor related measurement names (*telegraf* needs to run as **root**): -- procstat_[prefix_]num_fds value=4 - -Priority related measurement names: -- procstat_[prefix_]realtime_priority value=0 -- procstat_[prefix_]nice_priority value=20 - -Signals related measurement names: -- procstat_[prefix_]signals_pending value=0 - -Context switch related measurement names: -- procstat_[prefix_]voluntary_context_switches value=250 -- procstat_[prefix_]involuntary_context_switches value=0 - -I/O related measurement names (*telegraf* needs to run as **root**): -- procstat_[prefix_]read_count value=396 -- procstat_[prefix_]write_count value=1 -- procstat_[prefix_]read_bytes value=1019904 -- procstat_[prefix_]write_bytes value=1 - -CPU related measurement names: -- procstat_[prefix_]cpu_time value=0.01 -- procstat_[prefix_]cpu_time_user value=0 -- procstat_[prefix_]cpu_time_system value=0.01 -- procstat_[prefix_]cpu_time_idle value=0 -- procstat_[prefix_]cpu_time_nice value=0 -- procstat_[prefix_]cpu_time_iowait value=0 -- procstat_[prefix_]cpu_time_irq value=0 -- procstat_[prefix_]cpu_time_soft_irq value=0 -- procstat_[prefix_]cpu_time_steal value=0 -- procstat_[prefix_]cpu_time_stolen value=0 -- procstat_[prefix_]cpu_time_guest value=0 -- procstat_[prefix_]cpu_time_guest_nice value=0 - -Memory related measurement names: -- procstat_[prefix_]memory_rss value=1777664 -- procstat_[prefix_]memory_vms value=24227840 -- procstat_[prefix_]memory_swap value=282624 -- procstat_[prefix_]memory_data value=229376 -- procstat_[prefix_]memory_stack value=135168 -- procstat_[prefix_]memory_locked value=0 - -Resource limits: -- procstat_[prefix_]rlimit_cpu_time_hard value=2147483647 -- procstat_[prefix_]rlimit_cpu_time_soft value=2147483647 -- procstat_[prefix_]rlimit_file_locks_hard value=2147483647 -- procstat_[prefix_]rlimit_file_locks_soft value=2147483647 -- procstat_[prefix_]rlimit_memory_data_hard value=2147483647 -- procstat_[prefix_]rlimit_memory_data_soft value=2147483647 -- procstat_[prefix_]rlimit_memory_locked_hard value=65536 -- procstat_[prefix_]rlimit_memory_locked_soft value=65536 -- procstat_[prefix_]rlimit_memory_rss_hard value=2147483647 -- procstat_[prefix_]rlimit_memory_rss_soft value=2147483647 -- procstat_[prefix_]rlimit_memory_stack_hard value=2147483647 -- procstat_[prefix_]rlimit_memory_stack_soft value=8388608 -- procstat_[prefix_]rlimit_memory_vms_hard value=2147483647 -- procstat_[prefix_]rlimit_memory_vms_soft value=2147483647 -- procstat_[prefix_]rlimit_nice_priority_hard value=0 -- procstat_[prefix_]rlimit_nice_priority_soft value=0 -- procstat_[prefix_]rlimit_num_fds_hard value=16384 -- procstat_[prefix_]rlimit_num_fds_soft value=16384 -- procstat_[prefix_]rlimit_realtime_priority_hard value=0 -- procstat_[prefix_]rlimit_realtime_priority_soft value=0 -- procstat_[prefix_]rlimit_signals_pending_hard value=1758 -- procstat_[prefix_]rlimit_signals_pending_soft value=1758 - -*NOTE: Due to a limitation in an underlying library Telegraf uses, any resource limit > 2147483647 will be misreported as 2147483647.* diff --git a/plugins/inputs/procstat/native_finder.go b/plugins/inputs/procstat/native_finder.go new file mode 100644 index 0000000000000..583e56d063ef1 --- /dev/null +++ b/plugins/inputs/procstat/native_finder.go @@ -0,0 +1,57 @@ +package procstat + +import ( + "fmt" + "io/ioutil" + "strconv" + "strings" + + "github.com/shirou/gopsutil/process" +) + +//NativeFinder uses gopsutil to find processes +type NativeFinder struct { +} + +//NewNativeFinder ... +func NewNativeFinder() (PIDFinder, error) { + return &NativeFinder{}, nil +} + +//Uid will return all pids for the given user +func (pg *NativeFinder) Uid(user string) ([]PID, error) { + var dst []PID + procs, err := process.Processes() + if err != nil { + return dst, err + } + for _, p := range procs { + username, err := p.Username() + if err != nil { + //skip, this can happen if we don't have permissions or + //the pid no longer exists + continue + } + if username == user { + dst = append(dst, PID(p.Pid)) + } + } + return dst, nil +} + +//PidFile returns the pid from the pid file given. +func (pg *NativeFinder) PidFile(path string) ([]PID, error) { + var pids []PID + pidString, err := ioutil.ReadFile(path) + if err != nil { + return pids, fmt.Errorf("Failed to read pidfile '%s'. Error: '%s'", + path, err) + } + pid, err := strconv.Atoi(strings.TrimSpace(string(pidString))) + if err != nil { + return pids, err + } + pids = append(pids, PID(pid)) + return pids, nil + +} diff --git a/plugins/inputs/procstat/native_finder_notwindows.go b/plugins/inputs/procstat/native_finder_notwindows.go new file mode 100644 index 0000000000000..533b7333a9fad --- /dev/null +++ b/plugins/inputs/procstat/native_finder_notwindows.go @@ -0,0 +1,59 @@ +// +build !windows + +package procstat + +import ( + "regexp" + + "github.com/shirou/gopsutil/process" +) + +//Pattern matches on the process name +func (pg *NativeFinder) Pattern(pattern string) ([]PID, error) { + var pids []PID + regxPattern, err := regexp.Compile(pattern) + if err != nil { + return pids, err + } + procs, err := process.Processes() + if err != nil { + return pids, err + } + for _, p := range procs { + name, err := p.Exe() + if err != nil { + //skip, this can be caused by the pid no longer existing + //or you having no permissions to access it + continue + } + if regxPattern.MatchString(name) { + pids = append(pids, PID(p.Pid)) + } + } + return pids, err +} + +//FullPattern matches on the command line when the proccess was executed +func (pg *NativeFinder) FullPattern(pattern string) ([]PID, error) { + var pids []PID + regxPattern, err := regexp.Compile(pattern) + if err != nil { + return pids, err + } + procs, err := process.Processes() + if err != nil { + return pids, err + } + for _, p := range procs { + cmd, err := p.Cmdline() + if err != nil { + //skip, this can be caused by the pid no longer existing + //or you having no permissions to access it + continue + } + if regxPattern.MatchString(cmd) { + pids = append(pids, PID(p.Pid)) + } + } + return pids, err +} diff --git a/plugins/inputs/procstat/native_finder_windows.go b/plugins/inputs/procstat/native_finder_windows.go new file mode 100644 index 0000000000000..f9c1013ca4c64 --- /dev/null +++ b/plugins/inputs/procstat/native_finder_windows.go @@ -0,0 +1,91 @@ +package procstat + +import ( + "context" + "fmt" + "regexp" + "time" + + "github.com/StackExchange/wmi" + "github.com/shirou/gopsutil/process" +) + +//Timeout is the timeout used when making wmi calls +var Timeout = 5 * time.Second + +type queryType string + +const ( + like = queryType("LIKE") + equals = queryType("=") + notEqual = queryType("!=") +) + +//Pattern matches on the process name +func (pg *NativeFinder) Pattern(pattern string) ([]PID, error) { + var pids []PID + regxPattern, err := regexp.Compile(pattern) + if err != nil { + return pids, err + } + procs, err := process.Processes() + if err != nil { + return pids, err + } + for _, p := range procs { + name, err := p.Name() + if err != nil { + //skip, this can be caused by the pid no longer existing + //or you having no permissions to access it + continue + } + if regxPattern.MatchString(name) { + pids = append(pids, PID(p.Pid)) + } + } + return pids, err +} + +//FullPattern matches the cmdLine on windows and will find a pattern using a WMI like query +func (pg *NativeFinder) FullPattern(pattern string) ([]PID, error) { + var pids []PID + procs, err := getWin32ProcsByVariable("CommandLine", like, pattern, Timeout) + if err != nil { + return pids, err + } + for _, p := range procs { + pids = append(pids, PID(p.ProcessID)) + } + return pids, nil +} + +//GetWin32ProcsByVariable allows you to query any variable with a like query +func getWin32ProcsByVariable(variable string, qType queryType, value string, timeout time.Duration) ([]process.Win32_Process, error) { + var dst []process.Win32_Process + var query string + // should look like "WHERE CommandLine LIKE "procstat" + query = fmt.Sprintf("WHERE %s %s %q", variable, qType, value) + q := wmi.CreateQuery(&dst, query) + ctx, cancel := context.WithTimeout(context.Background(), timeout) + defer cancel() + err := WMIQueryWithContext(ctx, q, &dst) + if err != nil { + return []process.Win32_Process{}, fmt.Errorf("could not get win32Proc: %s", err) + } + return dst, nil +} + +// WMIQueryWithContext - wraps wmi.Query with a timed-out context to avoid hanging +func WMIQueryWithContext(ctx context.Context, query string, dst interface{}, connectServerArgs ...interface{}) error { + errChan := make(chan error, 1) + go func() { + errChan <- wmi.Query(query, dst, connectServerArgs...) + }() + + select { + case <-ctx.Done(): + return ctx.Err() + case err := <-errChan: + return err + } +} diff --git a/plugins/inputs/procstat/native_finder_windows_test.go b/plugins/inputs/procstat/native_finder_windows_test.go new file mode 100644 index 0000000000000..2f51a3f92851a --- /dev/null +++ b/plugins/inputs/procstat/native_finder_windows_test.go @@ -0,0 +1,40 @@ +package procstat + +import ( + "fmt" + "testing" + + "os/user" + + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func TestGather_RealPattern(t *testing.T) { + pg, err := NewNativeFinder() + require.NoError(t, err) + pids, err := pg.Pattern(`procstat`) + require.NoError(t, err) + fmt.Println(pids) + assert.Equal(t, len(pids) > 0, true) +} + +func TestGather_RealFullPattern(t *testing.T) { + pg, err := NewNativeFinder() + require.NoError(t, err) + pids, err := pg.FullPattern(`%procstat%`) + require.NoError(t, err) + fmt.Println(pids) + assert.Equal(t, len(pids) > 0, true) +} + +func TestGather_RealUser(t *testing.T) { + user, err := user.Current() + require.NoError(t, err) + pg, err := NewNativeFinder() + require.NoError(t, err) + pids, err := pg.Uid(user.Username) + require.NoError(t, err) + fmt.Println(pids) + assert.Equal(t, len(pids) > 0, true) +} diff --git a/plugins/inputs/procstat/pgrep.go b/plugins/inputs/procstat/pgrep.go index bae5161e4fe6d..cf0754e6dca32 100644 --- a/plugins/inputs/procstat/pgrep.go +++ b/plugins/inputs/procstat/pgrep.go @@ -8,13 +8,6 @@ import ( "strings" ) -type PIDFinder interface { - PidFile(path string) ([]PID, error) - Pattern(pattern string) ([]PID, error) - Uid(user string) ([]PID, error) - FullPattern(path string) ([]PID, error) -} - // Implemention of PIDGatherer that execs pgrep to find processes type Pgrep struct { path string diff --git a/plugins/inputs/procstat/process.go b/plugins/inputs/procstat/process.go index 3470a8a94cbf5..361582c334119 100644 --- a/plugins/inputs/procstat/process.go +++ b/plugins/inputs/procstat/process.go @@ -23,6 +23,13 @@ type Process interface { RlimitUsage(bool) ([]process.RlimitStat, error) } +type PIDFinder interface { + PidFile(path string) ([]PID, error) + Pattern(pattern string) ([]PID, error) + Uid(user string) ([]PID, error) + FullPattern(path string) ([]PID, error) +} + type Proc struct { hasCPUTimes bool tags map[string]string diff --git a/plugins/inputs/procstat/procstat.go b/plugins/inputs/procstat/procstat.go index 3bd92f3b5e81e..51f71f6a18360 100644 --- a/plugins/inputs/procstat/procstat.go +++ b/plugins/inputs/procstat/procstat.go @@ -22,6 +22,7 @@ var ( type PID int32 type Procstat struct { + PidFinder string `toml:"pid_finder"` PidFile string `toml:"pid_file"` Exe string Pattern string @@ -32,14 +33,14 @@ type Procstat struct { CGroup string `toml:"cgroup"` PidTag bool - pidFinder PIDFinder + finder PIDFinder + createPIDFinder func() (PIDFinder, error) procs map[PID]Process createProcess func(PID) (Process, error) } var sampleConfig = ` - ## Must specify one of: pid_file, exe, or pattern ## PID file to monitor process pid_file = "/var/run/nginx.pid" ## executable name (ie, pgrep ) @@ -56,12 +57,20 @@ var sampleConfig = ` ## override for process_name ## This is optional; default is sourced from /proc//status # process_name = "bar" + ## Field name prefix - prefix = "" - ## comment this out if you want raw cpu_time stats - fielddrop = ["cpu_time_*"] - ## This is optional; moves pid into a tag instead of a field - pid_tag = false + # prefix = "" + + ## Add PID as a tag instead of a field; useful to differentiate between + ## processes whose tags are otherwise the same. Can create a large number + ## of series, use judiciously. + # pid_tag = false + + ## Method to use when finding process IDs. Can be one of 'pgrep', or + ## 'native'. The pgrep finder calls the pgrep executable in the PATH while + ## the native finder performs the search directly in a manor dependent on the + ## platform. Default is 'pgrep' + # pid_finder = "pgrep" ` func (_ *Procstat) SampleConfig() string { @@ -74,7 +83,15 @@ func (_ *Procstat) Description() string { func (p *Procstat) Gather(acc telegraf.Accumulator) error { if p.createPIDFinder == nil { - p.createPIDFinder = defaultPIDFinder + switch p.PidFinder { + case "native": + p.createPIDFinder = NewNativeFinder + case "pgrep": + p.createPIDFinder = NewPgrep + default: + p.createPIDFinder = defaultPIDFinder + } + } if p.createProcess == nil { p.createProcess = defaultProcess @@ -252,14 +269,15 @@ func (p *Procstat) updateProcesses(prevInfo map[PID]Process) (map[PID]Process, e // Create and return PIDGatherer lazily func (p *Procstat) getPIDFinder() (PIDFinder, error) { - if p.pidFinder == nil { + + if p.finder == nil { f, err := p.createPIDFinder() if err != nil { return nil, err } - p.pidFinder = f + p.finder = f } - return p.pidFinder, nil + return p.finder, nil } // Get matching PIDs and their initial tags @@ -292,7 +310,7 @@ func (p *Procstat) findPids() ([]PID, map[string]string, error) { pids, err = p.cgroupPIDs() tags = map[string]string{"cgroup": p.CGroup} } else { - err = fmt.Errorf("Either exe, pid_file, user, or pattern has to be specified") + err = fmt.Errorf("Either exe, pid_file, user, pattern, systemd_unit, or cgroup must be specified") } return pids, tags, err diff --git a/plugins/inputs/procstat/procstat_test.go b/plugins/inputs/procstat/procstat_test.go index 7b9d6f0c3a4b1..d77391fc2053e 100644 --- a/plugins/inputs/procstat/procstat_test.go +++ b/plugins/inputs/procstat/procstat_test.go @@ -6,6 +6,7 @@ import ( "os" "os/exec" "path/filepath" + "runtime" "strings" "testing" "time" @@ -349,6 +350,10 @@ func TestGather_systemdUnitPIDs(t *testing.T) { } func TestGather_cgroupPIDs(t *testing.T) { + //no cgroups in windows + if runtime.GOOS == "windows" { + t.Skip("no cgroups in windows") + } td, err := ioutil.TempDir("", "") require.NoError(t, err) defer os.RemoveAll(td) diff --git a/plugins/inputs/prometheus/README.md b/plugins/inputs/prometheus/README.md index d2d19520c4f73..ac7405014a8ce 100644 --- a/plugins/inputs/prometheus/README.md +++ b/plugins/inputs/prometheus/README.md @@ -67,7 +67,7 @@ Measurement names are based on the Metric Family and tags are created for each label. The value is added to a field named based on the metric type. All metrics receive the `url` tag indicating the related URL specified in the -Telegraf configuration. If using Kubernetes service discovery the `address` +Telegraf configuration. If using Kubernetes service discovery the `address` tag is also added indicating the discovered ip address. ### Example Output: diff --git a/plugins/inputs/prometheus/prometheus.go b/plugins/inputs/prometheus/prometheus.go index c929a5b2644b6..2a8a6b284b206 100644 --- a/plugins/inputs/prometheus/prometheus.go +++ b/plugins/inputs/prometheus/prometheus.go @@ -20,7 +20,7 @@ const acceptHeader = `application/vnd.google.protobuf;proto=io.prometheus.client type Prometheus struct { // An array of urls to scrape metrics from. - Urls []string + URLs []string `toml:"urls"` // An array of Kubernetes services to scrape metrics from. KubernetesServices []string @@ -73,12 +73,12 @@ func (p *Prometheus) Description() string { var ErrProtocolError = errors.New("prometheus protocol error") -func (p *Prometheus) AddressToURL(u *url.URL, address string) string { +func (p *Prometheus) AddressToURL(u *url.URL, address string) *url.URL { host := address if u.Port() != "" { host = address + ":" + u.Port() } - reconstructedUrl := url.URL{ + reconstructedURL := &url.URL{ Scheme: u.Scheme, Opaque: u.Opaque, User: u.User, @@ -89,36 +89,42 @@ func (p *Prometheus) AddressToURL(u *url.URL, address string) string { Fragment: u.Fragment, Host: host, } - return reconstructedUrl.String() + return reconstructedURL } -type UrlAndAddress struct { - OriginalUrl string - Url string +type URLAndAddress struct { + OriginalURL *url.URL + URL *url.URL Address string } -func (p *Prometheus) GetAllURLs() ([]UrlAndAddress, error) { - allUrls := make([]UrlAndAddress, 0) - for _, url := range p.Urls { - allUrls = append(allUrls, UrlAndAddress{Url: url, OriginalUrl: url}) +func (p *Prometheus) GetAllURLs() ([]URLAndAddress, error) { + allURLs := make([]URLAndAddress, 0) + for _, u := range p.URLs { + URL, err := url.Parse(u) + if err != nil { + log.Printf("prometheus: Could not parse %s, skipping it. Error: %s", u, err) + continue + } + + allURLs = append(allURLs, URLAndAddress{URL: URL, OriginalURL: URL}) } for _, service := range p.KubernetesServices { - u, err := url.Parse(service) + URL, err := url.Parse(service) if err != nil { return nil, err } - resolvedAddresses, err := net.LookupHost(u.Hostname()) + resolvedAddresses, err := net.LookupHost(URL.Hostname()) if err != nil { - log.Printf("prometheus: Could not resolve %s, skipping it. Error: %s", u.Host, err) + log.Printf("prometheus: Could not resolve %s, skipping it. Error: %s", URL.Host, err) continue } for _, resolved := range resolvedAddresses { - serviceUrl := p.AddressToURL(u, resolved) - allUrls = append(allUrls, UrlAndAddress{Url: serviceUrl, Address: resolved, OriginalUrl: service}) + serviceURL := p.AddressToURL(URL, resolved) + allURLs = append(allURLs, URLAndAddress{URL: serviceURL, Address: resolved, OriginalURL: URL}) } } - return allUrls, nil + return allURLs, nil } // Reads stats from all configured servers accumulates stats. @@ -134,16 +140,16 @@ func (p *Prometheus) Gather(acc telegraf.Accumulator) error { var wg sync.WaitGroup - allUrls, err := p.GetAllURLs() + allURLs, err := p.GetAllURLs() if err != nil { return err } - for _, url := range allUrls { + for _, URL := range allURLs { wg.Add(1) - go func(serviceUrl UrlAndAddress) { + go func(serviceURL URLAndAddress) { defer wg.Done() - acc.AddError(p.gatherURL(serviceUrl, acc)) - }(url) + acc.AddError(p.gatherURL(serviceURL, acc)) + }(URL) } wg.Wait() @@ -178,8 +184,8 @@ func (p *Prometheus) createHttpClient() (*http.Client, error) { return client, nil } -func (p *Prometheus) gatherURL(url UrlAndAddress, acc telegraf.Accumulator) error { - var req, err = http.NewRequest("GET", url.Url, nil) +func (p *Prometheus) gatherURL(u URLAndAddress, acc telegraf.Accumulator) error { + var req, err = http.NewRequest("GET", u.URL.String(), nil) req.Header.Add("Accept", acceptHeader) var token []byte var resp *http.Response @@ -194,11 +200,11 @@ func (p *Prometheus) gatherURL(url UrlAndAddress, acc telegraf.Accumulator) erro resp, err = p.client.Do(req) if err != nil { - return fmt.Errorf("error making HTTP request to %s: %s", url.Url, err) + return fmt.Errorf("error making HTTP request to %s: %s", u.URL, err) } defer resp.Body.Close() if resp.StatusCode != http.StatusOK { - return fmt.Errorf("%s returned HTTP status %s", url.Url, resp.Status) + return fmt.Errorf("%s returned HTTP status %s", u.URL, resp.Status) } body, err := ioutil.ReadAll(resp.Body) @@ -209,14 +215,16 @@ func (p *Prometheus) gatherURL(url UrlAndAddress, acc telegraf.Accumulator) erro metrics, err := Parse(body, resp.Header) if err != nil { return fmt.Errorf("error reading metrics for %s: %s", - url.Url, err) + u.URL, err) } // Add (or not) collected metrics for _, metric := range metrics { tags := metric.Tags() - tags["url"] = url.OriginalUrl - if url.Address != "" { - tags["address"] = url.Address + // strip user and password from URL + u.OriginalURL.User = nil + tags["url"] = u.OriginalURL.String() + if u.Address != "" { + tags["address"] = u.Address } switch metric.Type() { diff --git a/plugins/inputs/prometheus/prometheus_test.go b/plugins/inputs/prometheus/prometheus_test.go index 5bf07eb3f8bb9..9a2982ff989bf 100644 --- a/plugins/inputs/prometheus/prometheus_test.go +++ b/plugins/inputs/prometheus/prometheus_test.go @@ -37,7 +37,7 @@ func TestPrometheusGeneratesMetrics(t *testing.T) { defer ts.Close() p := &Prometheus{ - Urls: []string{ts.URL}, + URLs: []string{ts.URL}, } var acc testutil.Accumulator @@ -89,7 +89,7 @@ func TestPrometheusGeneratesMetricsAlthoughFirstDNSFails(t *testing.T) { defer ts.Close() p := &Prometheus{ - Urls: []string{ts.URL}, + URLs: []string{ts.URL}, KubernetesServices: []string{"http://random.telegraf.local:88/metrics"}, } diff --git a/plugins/inputs/rabbitmq/README.md b/plugins/inputs/rabbitmq/README.md index a1dfc879a605d..5dae5e091ed1b 100644 --- a/plugins/inputs/rabbitmq/README.md +++ b/plugins/inputs/rabbitmq/README.md @@ -44,6 +44,11 @@ For additional details reference the [RabbitMQ Management HTTP Stats](https://cd ## A list of exchanges to gather as the rabbitmq_exchange measurement. If not ## specified, metrics for all exchanges are gathered. # exchanges = ["telegraf"] + + ## Queues to include and exclude. Globs accepted. + ## Note that an empty array for both will include all queues + # queue_name_include = [] + # queue_name_exclude = [] ``` ### Measurements & Fields: @@ -61,6 +66,8 @@ For additional details reference the [RabbitMQ Management HTTP Stats](https://cd - messages_ready (int, messages) - messages_unacked (int, messages) - queues (int, queues) + - clustering_listeners (int, cluster nodes) + - amqp_listeners (int, amqp nodes up) - rabbitmq_node - disk_free (int, bytes) @@ -74,6 +81,7 @@ For additional details reference the [RabbitMQ Management HTTP Stats](https://cd - run_queue (int, erlang processes) - sockets_total (int, sockets) - sockets_used (int, sockets) + - running (int, node up) - rabbitmq_queue - consumer_utilisation (float, percent) @@ -144,7 +152,7 @@ FROM rabbitmq_overview WHERE time > now() - 10m GROUP BY time(1m) ``` rabbitmq_queue,url=http://amqp.example.org:15672,queue=telegraf,vhost=influxdb,node=rabbit@amqp.example.org,durable=true,auto_delete=false,host=amqp.example.org messages_deliver_get=0i,messages_publish=329i,messages_publish_rate=0.2,messages_redeliver_rate=0,message_bytes_ready=0i,message_bytes_unacked=0i,messages_deliver=329i,messages_unack=0i,consumers=1i,idle_since="",messages=0i,messages_deliver_rate=0.2,messages_deliver_get_rate=0.2,messages_redeliver=0i,memory=43032i,message_bytes_ram=0i,messages_ack=329i,messages_ready=0i,messages_ack_rate=0.2,consumer_utilisation=1,message_bytes=0i,message_bytes_persist=0i 1493684035000000000 -rabbitmq_overview,url=http://amqp.example.org:15672,host=amqp.example.org channels=2i,consumers=1i,exchanges=17i,messages_acked=329i,messages=0i,messages_ready=0i,messages_unacked=0i,connections=2i,queues=1i,messages_delivered=329i,messages_published=329i 1493684035000000000 -rabbitmq_node,url=http://amqp.example.org:15672,node=rabbit@amqp.example.org,host=amqp.example.org fd_total=1024i,fd_used=32i,mem_limit=8363329126i,sockets_total=829i,disk_free=8175935488i,disk_free_limit=50000000i,mem_used=58771080i,proc_total=1048576i,proc_used=267i,run_queue=0i,sockets_used=2i 149368403500000000 +rabbitmq_overview,url=http://amqp.example.org:15672,host=amqp.example.org channels=2i,consumers=1i,exchanges=17i,messages_acked=329i,messages=0i,messages_ready=0i,messages_unacked=0i,connections=2i,queues=1i,messages_delivered=329i,messages_published=329i,clustering_listeners=2i,amqp_listeners=1i 1493684035000000000 +rabbitmq_node,url=http://amqp.example.org:15672,node=rabbit@amqp.example.org,host=amqp.example.org fd_total=1024i,fd_used=32i,mem_limit=8363329126i,sockets_total=829i,disk_free=8175935488i,disk_free_limit=50000000i,mem_used=58771080i,proc_total=1048576i,proc_used=267i,run_queue=0i,sockets_used=2i,running=1i 149368403500000000 rabbitmq_exchange,url=http://amqp.example.org:15672,exchange=telegraf,type=fanout,vhost=influxdb,internal=false,durable=true,auto_delete=false,host=amqp.example.org messages_publish_in=2i,messages_publish_out=1i 149368403500000000 ``` diff --git a/plugins/inputs/rabbitmq/rabbitmq.go b/plugins/inputs/rabbitmq/rabbitmq.go index 775ea75dfa460..e0d12c3db31d3 100644 --- a/plugins/inputs/rabbitmq/rabbitmq.go +++ b/plugins/inputs/rabbitmq/rabbitmq.go @@ -9,6 +9,7 @@ import ( "time" "github.com/influxdata/telegraf" + "github.com/influxdata/telegraf/filter" "github.com/influxdata/telegraf/internal" "github.com/influxdata/telegraf/plugins/inputs" ) @@ -52,7 +53,14 @@ type RabbitMQ struct { Queues []string Exchanges []string + QueueInclude []string `toml:"queue_name_include"` + QueueExclude []string `toml:"queue_name_exclude"` + Client *http.Client + + filterCreated bool + excludeEveryQueue bool + queueFilter filter.Filter } // OverviewResponse ... @@ -60,6 +68,12 @@ type OverviewResponse struct { MessageStats *MessageStats `json:"message_stats"` ObjectTotals *ObjectTotals `json:"object_totals"` QueueTotals *QueueTotals `json:"queue_totals"` + Listeners []Listeners `json:"listeners"` +} + +// Listeners ... +type Listeners struct { + Protocol string `json:"protocol"` } // Details ... @@ -134,6 +148,7 @@ type Node struct { RunQueue int64 `json:"run_queue"` SocketsTotal int64 `json:"sockets_total"` SocketsUsed int64 `json:"sockets_used"` + Running bool `json:"running"` } type Exchange struct { @@ -186,8 +201,13 @@ var sampleConfig = ` # queues = ["telegraf"] ## A list of exchanges to gather as the rabbitmq_exchange measurement. If not - ## specified, metrics for all exchanges are gathered. + ## specified, metrics for all exchanges are gathered. # exchanges = ["telegraf"] + + ## Queues to include and exclude. Globs accepted. + ## Note that an empty array for both will include all queues + queue_name_include = [] + queue_name_exclude = [] ` // SampleConfig ... @@ -218,6 +238,15 @@ func (r *RabbitMQ) Gather(acc telegraf.Accumulator) error { } } + // Create queue filter if not already created + if !r.filterCreated { + err := r.createQueueFilter() + if err != nil { + return err + } + r.filterCreated = true + } + var wg sync.WaitGroup wg.Add(len(gatherFunctions)) for _, f := range gatherFunctions { @@ -275,11 +304,20 @@ func gatherOverview(r *RabbitMQ, acc telegraf.Accumulator) { return } - if overview.QueueTotals == nil || overview.ObjectTotals == nil || overview.MessageStats == nil { + if overview.QueueTotals == nil || overview.ObjectTotals == nil || overview.MessageStats == nil || overview.Listeners == nil { acc.AddError(fmt.Errorf("Wrong answer from rabbitmq. Probably auth issue")) return } + var clustering_listeners, amqp_listeners int64 = 0, 0 + for _, listener := range overview.Listeners { + if listener.Protocol == "clustering" { + clustering_listeners++ + } else if listener.Protocol == "amqp" { + amqp_listeners++ + } + } + tags := map[string]string{"url": r.URL} if r.Name != "" { tags["name"] = r.Name @@ -297,6 +335,8 @@ func gatherOverview(r *RabbitMQ, acc telegraf.Accumulator) { "messages_delivered": overview.MessageStats.Deliver, "messages_delivered_get": overview.MessageStats.DeliverGet, "messages_published": overview.MessageStats.Publish, + "clustering_listeners": clustering_listeners, + "amqp_listeners": amqp_listeners, } acc.AddFields("rabbitmq_overview", fields, tags) } @@ -319,6 +359,11 @@ func gatherNodes(r *RabbitMQ, acc telegraf.Accumulator) { tags := map[string]string{"url": r.URL} tags["node"] = node.Name + var running int64 = 0 + if node.Running { + running = 1 + } + fields := map[string]interface{}{ "disk_free": node.DiskFree, "disk_free_limit": node.DiskFreeLimit, @@ -331,12 +376,16 @@ func gatherNodes(r *RabbitMQ, acc telegraf.Accumulator) { "run_queue": node.RunQueue, "sockets_total": node.SocketsTotal, "sockets_used": node.SocketsUsed, + "running": running, } acc.AddFields("rabbitmq_node", fields, tags, now) } } func gatherQueues(r *RabbitMQ, acc telegraf.Accumulator) { + if r.excludeEveryQueue { + return + } // Gather information about queues queues := make([]Queue, 0) err := r.requestJSON("/api/queues", &queues) @@ -346,7 +395,7 @@ func gatherQueues(r *RabbitMQ, acc telegraf.Accumulator) { } for _, queue := range queues { - if !r.shouldGatherQueue(queue) { + if !r.queueFilter.Match(queue.Name) { continue } tags := map[string]string{ @@ -439,18 +488,25 @@ func (r *RabbitMQ) shouldGatherNode(node Node) bool { return false } -func (r *RabbitMQ) shouldGatherQueue(queue Queue) bool { - if len(r.Queues) == 0 { - return true +func (r *RabbitMQ) createQueueFilter() error { + // Backwards compatibility for deprecated `queues` parameter. + if len(r.Queues) > 0 { + r.QueueInclude = append(r.QueueInclude, r.Queues...) } - for _, name := range r.Queues { - if name == queue.Name { - return true + filter, err := filter.NewIncludeExcludeFilter(r.QueueInclude, r.QueueExclude) + if err != nil { + return err + } + r.queueFilter = filter + + for _, q := range r.QueueExclude { + if q == "*" { + r.excludeEveryQueue = true } } - return false + return nil } func (r *RabbitMQ) shouldGatherExchange(exchange Exchange) bool { diff --git a/plugins/inputs/rabbitmq/rabbitmq_test.go b/plugins/inputs/rabbitmq/rabbitmq_test.go index 759c71c4175b4..5e9829cc00d28 100644 --- a/plugins/inputs/rabbitmq/rabbitmq_test.go +++ b/plugins/inputs/rabbitmq/rabbitmq_test.go @@ -51,7 +51,25 @@ const sampleOverviewResponse = ` "messages_unacknowledged_details": { "rate": 0.0 } - } + }, + "listeners": [ + { + "name": "rabbit@node-a", + "protocol": "amqp" + }, + { + "name": "rabbit@node-b", + "protocol": "amqp" + }, + { + "name": "rabbit@node-a", + "protocol": "clustering" + }, + { + "name": "rabbit@node-b", + "protocol": "clustering" + } + ] } ` @@ -514,6 +532,8 @@ func TestRabbitMQGeneratesMetrics(t *testing.T) { "consumers", "exchanges", "queues", + "clustering_listeners", + "amqp_listeners", } for _, metric := range intMetrics { @@ -532,6 +552,7 @@ func TestRabbitMQGeneratesMetrics(t *testing.T) { "run_queue", "sockets_total", "sockets_used", + "running", } for _, metric := range nodeIntMetrics { diff --git a/plugins/inputs/redis/README.md b/plugins/inputs/redis/README.md index 60f4ac5d9612b..c68f6624e5f7f 100644 --- a/plugins/inputs/redis/README.md +++ b/plugins/inputs/redis/README.md @@ -90,6 +90,7 @@ Additionally the plugin also calculates the hit/miss ratio (keyspace\_hitrate) a - master_link_down_since_seconds(int, number) - master_link_status(string) - master_repl_offset(int, number) + - second_repl_offset(int, number) - repl_backlog_active(int, number) - repl_backlog_size(int, bytes) - repl_backlog_first_byte_offset(int, number) diff --git a/plugins/inputs/redis/redis.go b/plugins/inputs/redis/redis.go index c809aa437626e..5c5238f5d2acc 100644 --- a/plugins/inputs/redis/redis.go +++ b/plugins/inputs/redis/redis.go @@ -207,6 +207,10 @@ func gatherInfoOutput( } } + if strings.HasPrefix(name, "master_replid") { + continue + } + if name == "mem_allocator" { continue } diff --git a/plugins/inputs/redis/redis_test.go b/plugins/inputs/redis/redis_test.go index 7d2fd1b515899..fd16bbdd91eb4 100644 --- a/plugins/inputs/redis/redis_test.go +++ b/plugins/inputs/redis/redis_test.go @@ -86,6 +86,7 @@ func TestRedis_ParseMetrics(t *testing.T) { "repl_backlog_size": int64(1048576), "repl_backlog_first_byte_offset": int64(0), "repl_backlog_histlen": int64(0), + "second_repl_offset": int64(-1), "used_cpu_sys": float64(0.14), "used_cpu_user": float64(0.05), "used_cpu_sys_children": float64(0.00), @@ -189,7 +190,10 @@ latest_fork_usec:0 # Replication role:master connected_slaves:0 +master_replid:8c4d7b768b26826825ceb20ff4a2c7c54616350b +master_replid2:0000000000000000000000000000000000000000 master_repl_offset:0 +second_repl_offset:-1 repl_backlog_active:0 repl_backlog_size:1048576 repl_backlog_first_byte_offset:0 diff --git a/plugins/inputs/smart/README.md b/plugins/inputs/smart/README.md index 6af962793f0e3..4826edbc69ad1 100644 --- a/plugins/inputs/smart/README.md +++ b/plugins/inputs/smart/README.md @@ -1,4 +1,4 @@ -# Telegraf S.M.A.R.T. plugin +# S.M.A.R.T. Input Plugin Get metrics using the command line utility `smartctl` for S.M.A.R.T. (Self-Monitoring, Analysis and Reporting Technology) storage devices. SMART is a monitoring system included in computer hard disk drives (HDDs) and solid-state drives (SSDs)[1] that detects and reports on various indicators of drive reliability, with the intent of enabling the anticipation of hardware failures. See smartmontools (https://www.smartmontools.org/). @@ -24,68 +24,7 @@ To enable SMART on a storage device run: smartctl -s on ``` -## Measurements - -- smart_device: - - * Tags: - - `capacity` - - `device` - - `device_model` - - `enabled` - - `health` - - `serial_no` - - `wwn` - * Fields: - - `exit_status` - - `health_ok` - - `read_error_rate` - - `seek_error` - - `temp_c` - - `udma_crc_errors` - -- smart_attribute: - - * Tags: - - `device` - - `fail` - - `flags` - - `id` - - `name` - - `serial_no` - - `wwn` - * Fields: - - `exit_status` - - `raw_value` - - `threshold` - - `value` - - `worst` - -### Flags - -The interpretation of the tag `flags` is: - - *K* auto-keep - - *C* event count - - *R* error rate - - *S* speed/performance - - *O* updated online - - *P* prefailure warning - -### Exit Status - -The `exit_status` field captures the exit status of the smartctl command which -is defined by a bitmask. For the interpretation of the bitmask see the man page for -smartctl. - -### Device Names - -Device names, e.g., `/dev/sda`, are *not persistent*, and may be -subject to change across reboots or system changes. Instead, you can the -*World Wide Name* (WWN) or serial number to identify devices. On Linux block -devices can be referenced by the WWN in the following location: -`/dev/disk/by-id/`. - -## Configuration +### Configuration: ```toml # Read metrics from storage devices supporting S.M.A.R.T. @@ -122,14 +61,72 @@ devices can be referenced by the WWN in the following location: # devices = [ "/dev/ada0 -d atacam" ] ``` +### Metrics: + +- smart_device: + - tags: + - capacity + - device + - device_model + - enabled + - health + - serial_no + - wwn + - fields: + - exit_status + - health_ok + - read_error_rate + - seek_error + - temp_c + - udma_crc_errors + +- smart_attribute: + - tags: + - device + - fail + - flags + - id + - name + - serial_no + - wwn + - fields: + - exit_status + - raw_value + - threshold + - value + - worst + +#### Flags + +The interpretation of the tag `flags` is: + - `K` auto-keep + - `C` event count + - `R` error rate + - `S` speed/performance + - `O` updated online + - `P` prefailure warning + +#### Exit Status + +The `exit_status` field captures the exit status of the smartctl command which +is defined by a bitmask. For the interpretation of the bitmask see the man page for +smartctl. + +#### Device Names + +Device names, e.g., `/dev/sda`, are *not persistent*, and may be +subject to change across reboots or system changes. Instead, you can the +*World Wide Name* (WWN) or serial number to identify devices. On Linux block +devices can be referenced by the WWN in the following location: +`/dev/disk/by-id/`. + To run `smartctl` with `sudo` create a wrapper script and use `path` in the configuration to execute that. -## Output +### Output -Example output from an _Apple SSD_: ``` -> smart_attribute,serial_no=S1K5NYCD964433,wwn=5002538655584d30,id=199,name=UDMA_CRC_Error_Count,flags=-O-RC-,fail=-,host=mbpro.local,device=rdisk0 threshold=0i,raw_value=0i,exit_status=0i,value=200i,worst=200i 1502536854000000000 -> smart_attribute,device=rdisk0,serial_no=S1K5NYCD964433,wwn=5002538655584d30,id=240,name=Unknown_SSD_Attribute,flags=-O---K,fail=-,host=mbpro.local exit_status=0i,value=100i,worst=100i,threshold=0i,raw_value=0i 1502536854000000000 -> smart_device,enabled=Enabled,host=mbpro.local,device=rdisk0,model=APPLE\ SSD\ SM0512F,serial_no=S1K5NYCD964433,wwn=5002538655584d30,capacity=500277790720 udma_crc_errors=0i,exit_status=0i,health_ok=true,read_error_rate=0i,temp_c=40i 1502536854000000000 +smart_device,enabled=Enabled,host=mbpro.local,device=rdisk0,model=APPLE\ SSD\ SM0512F,serial_no=S1K5NYCD964433,wwn=5002538655584d30,capacity=500277790720 udma_crc_errors=0i,exit_status=0i,health_ok=true,read_error_rate=0i,temp_c=40i 1502536854000000000 +smart_attribute,serial_no=S1K5NYCD964433,wwn=5002538655584d30,id=199,name=UDMA_CRC_Error_Count,flags=-O-RC-,fail=-,host=mbpro.local,device=rdisk0 threshold=0i,raw_value=0i,exit_status=0i,value=200i,worst=200i 1502536854000000000 +smart_attribute,device=rdisk0,serial_no=S1K5NYCD964433,wwn=5002538655584d30,id=240,name=Unknown_SSD_Attribute,flags=-O---K,fail=-,host=mbpro.local exit_status=0i,value=100i,worst=100i,threshold=0i,raw_value=0i 1502536854000000000 ``` diff --git a/plugins/inputs/snmp/snmp_test.go b/plugins/inputs/snmp/snmp_test.go index f9a7d95e26974..497461485cd82 100644 --- a/plugins/inputs/snmp/snmp_test.go +++ b/plugins/inputs/snmp/snmp_test.go @@ -333,6 +333,9 @@ func TestGetSNMPConnection_caching(t *testing.T) { } func TestGosnmpWrapper_walk_retry(t *testing.T) { + if testing.Short() { + t.Skip("Skipping test due to random failures.") + } srvr, err := net.ListenUDP("udp4", &net.UDPAddr{}) defer srvr.Close() require.NoError(t, err) @@ -379,6 +382,8 @@ func TestGosnmpWrapper_walk_retry(t *testing.T) { } func TestGosnmpWrapper_get_retry(t *testing.T) { + // TODO: Fix this test + t.Skip("Test failing too often, skip for now and revisit later.") srvr, err := net.ListenUDP("udp4", &net.UDPAddr{}) defer srvr.Close() require.NoError(t, err) diff --git a/plugins/inputs/sqlserver/README.md b/plugins/inputs/sqlserver/README.md index 7ff0752c27c56..6a5b62d6d3e9b 100644 --- a/plugins/inputs/sqlserver/README.md +++ b/plugins/inputs/sqlserver/README.md @@ -1,1275 +1,134 @@ -# SQL Server plugin +# SQL Server Input Plugin -This sqlserver plugin provides metrics for your SQL Server instance. -It currently works with SQL Server versions 2008+. -Recorded metrics are lightweight and use Dynamic Management Views supplied by SQL Server: -``` -Performance counters : 1000+ metrics from sys.dm_os_performance_counters -Performance metrics : special performance and ratio metrics -Wait stats : wait tasks categorized from sys.dm_os_wait_stats -Memory clerk : memory breakdown from sys.dm_os_memory_clerks -Database size : databases size trend from sys.dm_io_virtual_file_stats -Database IO : databases I/O from sys.dm_io_virtual_file_stats -Database latency : databases latency from sys.dm_io_virtual_file_stats -Database properties : databases properties, state and recovery model, from sys.databases -OS Volume : available, used and total space from sys.dm_os_volume_stats -CPU : cpu usage from sys.dm_os_ring_buffers -``` +The `sqlserver` plugin provides metrics for your SQL Server instance. It +currently works with SQL Server versions 2008+. Recorded metrics are +lightweight and use Dynamic Management Views supplied by SQL Server. -## Getting started : +### Additional Setup: You have to create a login on every instance you want to monitor, with following script: -```SQL -USE master; +```sql +USE master; GO CREATE LOGIN [telegraf] WITH PASSWORD = N'mystrongpassword'; GO -GRANT VIEW SERVER STATE TO [telegraf]; +GRANT VIEW SERVER STATE TO [telegraf]; GO -GRANT VIEW ANY DEFINITION TO [telegraf]; +GRANT VIEW ANY DEFINITION TO [telegraf]; GO ``` +### Configuration: -## Configuration: - -``` +```toml # Read metrics from Microsoft SQL Server [[inputs.sqlserver]] - # Specify instances to monitor with a list of connection strings. - # All connection parameters are optional. - # By default, the host is localhost, listening on default port (TCP/1433) - # for Windows, the user is the currently running AD user (SSO). - # See https://github.com/denisenkom/go-mssqldb for detailed connection parameters. - - servers = [ - "Server=192.168.1.30;Port=1433;User Id=telegraf;Password=T$l$gr@f69*;app name=telegraf;log=1;", - "Server=192.168.1.30;Port=2222;User Id=telegraf;Password=T$l$gr@f69*;app name=telegraf;log=1;" - ] + ## Specify instances to monitor with a list of connection strings. + ## All connection parameters are optional. + ## By default, the host is localhost, listening on default port, TCP 1433. + ## for Windows, the user is the currently running AD user (SSO). + ## See https://github.com/denisenkom/go-mssqldb for detailed connection + ## parameters. + # servers = [ + # "Server=192.168.1.10;Port=1433;User Id=;Password=;app name=telegraf;log=1;", + # ] + + ## Optional parameter, setting this to 2 will use a new version + ## of the collection queries that break compatibility with the original + ## dashboards. + query_version = 2 + + ## If you are using AzureDB, setting this to true will gather resource utilization metrics + # azuredb = false + + ## If you would like to exclude some of the metrics queries, list them here + ## Possible choices: + ## - PerformanceCounters + ## - WaitStatsCategorized + ## - DatabaseIO + ## - DatabaseProperties + ## - CPUHistory + ## - DatabaseSize + ## - DatabaseStats + ## - MemoryClerk + ## - VolumeSpace + ## - PerformanceMetrics + # exclude_query = [ 'PerformanceCounters','WaitStatsCatagorized' ] ``` - -## Measurement | Fields: - -- Wait stats - - Wait time (ms) | I/O, Latch, Lock, Network, Service broker, Memory, Buffer, CLR, XEvent, Other, Total - - Wait tasks | I/O, Latch, Lock, Network, Service broker, Memory, Buffer, CLR, XEvent, Other, Total -- Memory clerk - - Memory breakdown (%) | Buffer pool, Cache (objects), Cache (sql plans), Other - - Memory breakdown (bytes) | Buffer pool, Cache (objects), Cache (sql plans), Other -- Database size - - Log size (bytes) | databases (included sysdb) - - Rows size (bytes) | databases (included sysdb) -- Database IO - - Log writes (bytes/sec) | databases (included sysdb) - - Rows writes (bytes/sec) | databases (included sysdb) - - Log reads (bytes/sec) | databases (included sysdb) - - Rows reads (bytes/sec) | databases (included sysdb) - - Log (writes/sec) | databases (included sysdb) - - Rows (writes/sec) | databases (included sysdb) - - Log (reads/sec) | databases (included sysdb) - - Rows (reads/sec) | databases (included sysdb) -- Database latency - - Log read latency (ms) | databases (included sysdb) - - Log write latency (ms) | databases (included sysdb) - - Rows read latency (ms) | databases (included sysdb) - - Rows write latency (ms) | databases (included sysdb) - - Log (average bytes/read) | databases (included sysdb) - - Log (average bytes/write) | databases (included sysdb) - - Rows (average bytes/read) | databases (included sysdb) - - Rows (average bytes/write) | databases (included sysdb) -- Database properties - - Recovery Model FULL | databases (included sysdb) - - Recovery Model BULK_LOGGED | databases (included sysdb) - - Recovery Model SIMPLE | databases (included sysdb) - - State ONLINE | databases (included sysdb) - - State RESTORING | databases (included sysdb) - - State RECOVERING | databases (included sysdb) - - State RECOVERY_PENDING | databases (included sysdb) - - State SUSPECT | databases (included sysdb) - - State EMERGENCY | databases (included sysdb) - - State OFFLINE | databases (included sysdb) -- OS Volume - - Volume total space (bytes) | logical volumes - - Volume available space (bytes) | logical volumes - - Volume used space (bytes) | logical volumes - - Volume used space (%) | logical volumes -- CPU - - CPU (%) | SQL process, External process, SystemIdle -- Performance metrics - - Performance metrics | Point In Time Recovery, Available physical memory (bytes), Average pending disk IO, Average runnable tasks, Average tasks, Buffer pool rate (bytes/sec), Connection memory per connection (bytes), Memory grant pending, Page File Usage (%), Page lookup per batch request, Page split per batch request, Readahead per page read, Signal wait (%), Sql compilation per batch request, Sql recompilation per batch request, Total target memory ratio -- Performance counters - - AU cleanup batches/sec | Value - - ... 1000+ metrics - See https://msdn.microsoft.com/fr-fr/library/ms190382(v=sql.120).aspx - - -## Tags: -- All stats have the following tags: - - servername (server name:instance ID) - - type (type of stats to easily filter measurements) - - -## Overview in Grafana: - -![telegraf-sqlserver-0](https://cloud.githubusercontent.com/assets/16494280/12538189/ec1b70aa-c2d3-11e5-97ec-1a4f575e8a07.png) - -General Activity -![telegraf-sqlserver-1](https://cloud.githubusercontent.com/assets/16494280/12591410/f098b602-c467-11e5-9acf-2edea077ed7e.png) - -Memory -![telegraf-sqlserver-2](https://cloud.githubusercontent.com/assets/16494280/12591412/f2075688-c467-11e5-9d0f-d256e032cd0e.png) - -I/O -![telegraf-sqlserver-3](https://cloud.githubusercontent.com/assets/16494280/12591417/f40ccb84-c467-11e5-89ff-498fb1bc3110.png) - -Disks -![telegraf-sqlserver-4](https://cloud.githubusercontent.com/assets/16494280/12591420/f5de5f68-c467-11e5-90c8-9185444ac490.png) - -CPU -![telegraf-sqlserver-5](https://cloud.githubusercontent.com/assets/16494280/12591446/11dfe7b8-c468-11e5-9681-6e33296e70e8.png) - -Full view -![telegraf-sqlserver-full](https://cloud.githubusercontent.com/assets/16494280/12591426/fa2b17b4-c467-11e5-9c00-929f4c4aea57.png) - - -## Example Output: - -``` -./telegraf --config telegraf.conf --test -* Plugin: sqlserver, Collection 1 -> Memory\ breakdown\ (%),servername=WIN8-DEV,type=Memory\ clerk Buffer\ pool=27.20,Cache\ (objects)=6.50,Cache\ (sql\ plans)=31.50,Other=34.80 1453876411474582877 -> Memory\ breakdown\ (bytes),servername=WIN8-DEV,type=Memory\ clerk Buffer\ pool=100016128.00,Cache\ (objects)=23904256.00,Cache\ (sql\ plans)=115621888.00,Other=127942656.00 1453876411474655779 -> Log\ size\ (bytes),servername=WIN8-DEV,type=Database\ size AdventureWorks2014=538968064i,Australian=1048576i,DOC.Azure=786432i,ResumeCloud=786432i,master=2359296i,model=4325376i,msdb=30212096i,ngMon=1048576i,tempdb=4194304i 1453876411497506186 -> Rows\ size\ (bytes),servername=WIN8-DEV,type=Database\ size AdventureWorks2014=2362703872i,Australian=3211264i,DOC.Azure=26083328i,ResumeCloud=10551296i,master=5111808i,model=3342336i,msdb=24051712i,ngMon=46137344i,tempdb=1073741824i 1453876411497557587 -> CPU\ (%),servername=WIN8-DEV,type=CPU\ usage External\ process=1i,SQL\ process=0i,SystemIdle=99i 1453876411546452385 -> Log\ read\ latency\ (ms),servername=WIN8-DEV,type=Database\ stats AdventureWorks2014=28i,Australian=7i,DOC.Azure=2i,ResumeCloud=3i,master=13i,model=35i,msdb=33i,ngMon=12i,tempdb=2i 1453876411559643935 -> Log\ write\ latency\ (ms),servername=WIN8-DEV,type=Database\ stats AdventureWorks2014=0i,Australian=0i,DOC.Azure=0i,ResumeCloud=0i,master=1i,model=0i,msdb=0i,ngMon=0i,tempdb=15i 1453876411559700937 -> Rows\ read\ latency\ (ms),servername=WIN8-DEV,type=Database\ stats AdventureWorks2014=39i,Australian=18i,DOC.Azure=39i,ResumeCloud=48i,master=26i,model=9i,msdb=29i,ngMon=42i,tempdb=63i 1453876411559729338 -> Rows\ write\ latency\ (ms),servername=WIN8-DEV,type=Database\ stats AdventureWorks2014=0i,Australian=0i,DOC.Azure=0i,ResumeCloud=0i,master=7i,model=0i,msdb=5i,ngMon=0i,tempdb=3i 1453876411559767639 -> Rows\ (average\ bytes/read),servername=WIN8-DEV,type=Database\ stats AdventureWorks2014=786310i,Australian=62968i,DOC.Azure=515034i,ResumeCloud=203113i,master=63126i,model=60503i,msdb=56555i,ngMon=156254i,tempdb=148091i 1453876411559790439 -> Rows\ (average\ bytes/write),servername=WIN8-DEV,type=Database\ stats AdventureWorks2014=9011i,Australian=8192i,DOC.Azure=8192i,ResumeCloud=8192i,master=8192i,model=8192i,msdb=8960i,ngMon=8192i,tempdb=32768i 1453876411559815940 -> Log\ (average\ bytes/read),servername=WIN8-DEV,type=Database\ stats AdventureWorks2014=66560i,Australian=57856i,DOC.Azure=13312i,ResumeCloud=28086i,master=39384i,model=13653i,msdb=29857i,ngMon=50688i,tempdb=143945i 1453876411559838741 -> Log\ (average\ bytes/write),servername=WIN8-DEV,type=Database\ stats AdventureWorks2014=4949i,Australian=5213i,DOC.Azure=6264i,ResumeCloud=5213i,master=4256i,model=5120i,msdb=5412i,ngMon=5120i,tempdb=55033i 1453876411559861941 -> Performance\ metrics,servername=WIN8-DEV,type=Performance\ metrics Available\ physical\ memory\ (bytes)=5708369920i,Average\ pending\ disk\ IO=0i,Average\ runnable\ tasks=0i,Average\ tasks=9i,Buffer\ pool\ rate\ (bytes/sec)=2194i,Connection\ memory\ per\ connection\ (bytes)=120832i,Memory\ grant\ pending=0i,Page\ File\ Usage\ (%)=32i,Page\ lookup\ per\ batch\ request=162800i,Page\ split\ per\ batch\ request=377i,Point\ In\ Time\ Recovery=0i,Readahead\ per\ page\ read=19i,Signal\ wait\ (%)=18i,Sql\ compilation\ per\ batch\ request=501i,Sql\ recompilation\ per\ batch\ request=230i,Total\ target\ memory\ ratio=27i 1453876411621085067 -> Volume\ total\ space\ (bytes),servername=WIN8-DEV,type=OS\ Volume\ space C:=135338651648.00,D:\ (DATA)=32075874304.00,L:\ (LOG)=10701701120.00 1453876411645554817 -> Volume\ available\ space\ (bytes),servername=WIN8-DEV,type=OS\ Volume\ space C:=59092901888.00,D:\ (DATA)=28439674880.00,L:\ (LOG)=10107617280.00 1453876411645599018 -> Volume\ used\ space\ (bytes),servername=WIN8-DEV,type=OS\ Volume\ space C:=76245749760.00,D:\ (DATA)=3636199424.00,L:\ (LOG)=594083840.00 1453876411645619518 -> Volume\ used\ space\ (%),servername=WIN8-DEV,type=OS\ Volume\ space C:=56.00,D:\ (DATA)=11.00,L:\ (LOG)=6.00 1453876411645639419 -> Recovery\ Model\ FULL,servername=WIN8-DEV,type=Database\ properties AdventureWorks2014=1i,Australian=0i,DOC.Azure=0i,ResumeCloud=0i,master=0i,model=1i,msdb=0i,ngMon=0i,tempdb=0i,total=2i 1453876411649946833 -> Recovery\ Model\ BULK_LOGGED,servername=WIN8-DEV,type=Database\ properties AdventureWorks2014=0i,Australian=0i,DOC.Azure=0i,ResumeCloud=0i,master=0i,model=0i,msdb=0i,ngMon=0i,tempdb=0i,total=0i 1453876411650019335 -> Recovery\ Model\ SIMPLE,servername=WIN8-DEV,type=Database\ properties AdventureWorks2014=0i,Australian=1i,DOC.Azure=1i,ResumeCloud=1i,master=1i,model=0i,msdb=1i,ngMon=1i,tempdb=1i,total=7i 1453876411650045636 -> State\ ONLINE,servername=WIN8-DEV,type=Database\ properties AdventureWorks2014=1i,Australian=1i,DOC.Azure=1i,ResumeCloud=1i,master=1i,model=1i,msdb=1i,ngMon=1i,tempdb=1i,total=9i 1453876411650071137 -> State\ RESTORING,servername=WIN8-DEV,type=Database\ properties AdventureWorks2014=0i,Australian=0i,DOC.Azure=0i,ResumeCloud=0i,master=0i,model=0i,msdb=0i,ngMon=0i,tempdb=0i,total=0i 1453876411650095937 -> State\ RECOVERING,servername=WIN8-DEV,type=Database\ properties AdventureWorks2014=0i,Australian=0i,DOC.Azure=0i,ResumeCloud=0i,master=0i,model=0i,msdb=0i,ngMon=0i,tempdb=0i,total=0i 1453876411650119138 -> State\ RECOVERY_PENDING,servername=WIN8-DEV,type=Database\ properties AdventureWorks2014=0i,Australian=0i,DOC.Azure=0i,ResumeCloud=0i,master=0i,model=0i,msdb=0i,ngMon=0i,tempdb=0i,total=0i 1453876411650154939 -> State\ SUSPECT,servername=WIN8-DEV,type=Database\ properties AdventureWorks2014=0i,Australian=0i,DOC.Azure=0i,ResumeCloud=0i,master=0i,model=0i,msdb=0i,ngMon=0i,tempdb=0i,total=0i 1453876411650177939 -> State\ EMERGENCY,servername=WIN8-DEV,type=Database\ properties AdventureWorks2014=0i,Australian=0i,DOC.Azure=0i,ResumeCloud=0i,master=0i,model=0i,msdb=0i,ngMon=0i,tempdb=0i,total=0i 1453876411650201140 -> State\ OFFLINE,servername=WIN8-DEV,type=Database\ properties AdventureWorks2014=0i,Australian=0i,DOC.Azure=0i,ResumeCloud=0i,master=0i,model=0i,msdb=0i,ngMon=0i,tempdb=0i,total=0i 1453876411650222841 -> AU\ cleanup\ batches/sec\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412515666120 -> AU\ cleanups/sec\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412515723222 -> By-reference\ Lob\ Create\ Count\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412515741722 -> By-reference\ Lob\ Use\ Count\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412515754423 -> Count\ Lob\ Readahead\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412515780423 -> Count\ Pull\ In\ Row\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412515806724 -> Count\ Push\ Off\ Row\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412515818924 -> Deferred\ dropped\ AUs\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412515832925 -> Deferred\ Dropped\ rowsets\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412515844225 -> Dropped\ rowset\ cleanups/sec\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412515856425 -> Dropped\ rowsets\ skipped/sec\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412515882726 -> Extent\ Deallocations/sec\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=2i 1453876412515902227 -> Extents\ Allocated/sec\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=5i 1453876412515947828 -> Failed\ AU\ cleanup\ batches/sec\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412515963628 -> Failed\ leaf\ page\ cookie\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412515981729 -> Failed\ tree\ page\ cookie\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412516030230 -> Forwarded\ Records/sec\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412516043030 -> FreeSpace\ Page\ Fetches/sec\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=6i 1453876412516065131 -> FreeSpace\ Scans/sec\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=6i 1453876412516076631 -> Full\ Scans/sec\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=132i 1453876412516088332 -> Index\ Searches/sec\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=3387i 1453876412516122932 -> InSysXact\ waits/sec\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412516138833 -> LobHandle\ Create\ Count\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412516151733 -> LobHandle\ Destroy\ Count\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412516163134 -> LobSS\ Provider\ Create\ Count\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=5i 1453876412516176834 -> LobSS\ Provider\ Destroy\ Count\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=5i 1453876412516237036 -> LobSS\ Provider\ Truncation\ Count\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412516249536 -> Mixed\ page\ allocations/sec\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=36i 1453876412516261536 -> Page\ compression\ attempts/sec\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412516272536 -> Page\ Deallocations/sec\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=14i 1453876412516284237 -> Page\ Splits/sec\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=24i 1453876412516310037 -> Pages\ Allocated/sec\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=50i 1453876412516321338 -> Pages\ compressed/sec\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412516333038 -> Probe\ Scans/sec\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=724i 1453876412516343338 -> Range\ Scans/sec\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=610i 1453876412516356639 -> Scan\ Point\ Revalidations/sec\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=4i 1453876412516381539 -> Skipped\ Ghosted\ Records/sec\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=9i 1453876412516392940 -> Table\ Lock\ Escalations/sec\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412516404740 -> Used\ leaf\ page\ cookie\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412516415540 -> Used\ tree\ page\ cookie\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412516427241 -> Workfiles\ Created/sec\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=144i 1453876412516451441 -> Worktables\ Created/sec\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=46i 1453876412516464242 -> Worktables\ From\ Cache\ Base\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412516475942 -> Worktables\ From\ Cache\ Ratio\ |\ Access\ Methods,servername=WIN8-DEV,type=Performance\ counters value=1i 1453876412516487742 -> Bytes\ Received\ from\ Replica/sec\ |\ _Total\ |\ Availability\ Replica,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412516499642 -> Bytes\ Sent\ to\ Replica/sec\ |\ _Total\ |\ Availability\ Replica,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412516524443 -> Bytes\ Sent\ to\ Transport/sec\ |\ _Total\ |\ Availability\ Replica,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412516537143 -> Flow\ Control\ Time\ (ms/sec)\ |\ _Total\ |\ Availability\ Replica,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412516549644 -> Flow\ Control/sec\ |\ _Total\ |\ Availability\ Replica,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412516560444 -> Receives\ from\ Replica/sec\ |\ _Total\ |\ Availability\ Replica,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412516576045 -> Resent\ Messages/sec\ |\ _Total\ |\ Availability\ Replica,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412516624246 -> Sends\ to\ Replica/sec\ |\ _Total\ |\ Availability\ Replica,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412516643746 -> Sends\ to\ Transport/sec\ |\ _Total\ |\ Availability\ Replica,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412516656347 -> Batches\ >=000000ms\ &\ <000001ms\ |\ CPU\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=265i 1453876412516666947 -> Batches\ >=000000ms\ &\ <000001ms\ |\ CPU\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412516678947 -> Batches\ >=000000ms\ &\ <000001ms\ |\ Elapsed\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=261i 1453876412516719248 -> Batches\ >=000000ms\ &\ <000001ms\ |\ Elapsed\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412516731249 -> Batches\ >=000001ms\ &\ <000002ms\ |\ CPU\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=86i 1453876412516745149 -> Batches\ >=000001ms\ &\ <000002ms\ |\ CPU\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=86i 1453876412516756149 -> Batches\ >=000001ms\ &\ <000002ms\ |\ Elapsed\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=31i 1453876412516767750 -> Batches\ >=000001ms\ &\ <000002ms\ |\ Elapsed\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=31i 1453876412516794050 -> Batches\ >=000002ms\ &\ <000005ms\ |\ CPU\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=116i 1453876412516805351 -> Batches\ >=000002ms\ &\ <000005ms\ |\ CPU\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=257i 1453876412516817051 -> Batches\ >=000002ms\ &\ <000005ms\ |\ Elapsed\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=43i 1453876412516830151 -> Batches\ >=000002ms\ &\ <000005ms\ |\ Elapsed\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=108i 1453876412516842152 -> Batches\ >=000005ms\ &\ <000010ms\ |\ CPU\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=199i 1453876412516869752 -> Batches\ >=000005ms\ &\ <000010ms\ |\ CPU\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=1676i 1453876412516881053 -> Batches\ >=000005ms\ &\ <000010ms\ |\ Elapsed\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=60i 1453876412516918754 -> Batches\ >=000005ms\ &\ <000010ms\ |\ Elapsed\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=440i 1453876412516935054 -> Batches\ >=000010ms\ &\ <000020ms\ |\ CPU\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=193i 1453876412516947954 -> Batches\ >=000010ms\ &\ <000020ms\ |\ CPU\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=2327i 1453876412516976455 -> Batches\ >=000010ms\ &\ <000020ms\ |\ Elapsed\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=117i 1453876412516987855 -> Batches\ >=000010ms\ &\ <000020ms\ |\ Elapsed\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=1619i 1453876412516999656 -> Batches\ >=000020ms\ &\ <000050ms\ |\ CPU\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=586i 1453876412517010356 -> Batches\ >=000020ms\ &\ <000050ms\ |\ CPU\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=18826i 1453876412517021956 -> Batches\ >=000020ms\ &\ <000050ms\ |\ Elapsed\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=307i 1453876412517066858 -> Batches\ >=000020ms\ &\ <000050ms\ |\ Elapsed\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=10144i 1453876412517079258 -> Batches\ >=000050ms\ &\ <000100ms\ |\ CPU\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=283i 1453876412517095158 -> Batches\ >=000050ms\ &\ <000100ms\ |\ CPU\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=22015i 1453876412517112259 -> Batches\ >=000050ms\ &\ <000100ms\ |\ Elapsed\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=234i 1453876412517138159 -> Batches\ >=000050ms\ &\ <000100ms\ |\ Elapsed\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=16312i 1453876412517169260 -> Batches\ >=000100ms\ &\ <000200ms\ |\ CPU\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=338i 1453876412517180961 -> Batches\ >=000100ms\ &\ <000200ms\ |\ CPU\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=54584i 1453876412517192961 -> Batches\ >=000100ms\ &\ <000200ms\ |\ Elapsed\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=239i 1453876412517203761 -> Batches\ >=000100ms\ &\ <000200ms\ |\ Elapsed\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=37309i 1453876412517217362 -> Batches\ >=000200ms\ &\ <000500ms\ |\ CPU\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=101i 1453876412517245062 -> Batches\ >=000200ms\ &\ <000500ms\ |\ CPU\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=25711i 1453876412517256463 -> Batches\ >=000200ms\ &\ <000500ms\ |\ Elapsed\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=321i 1453876412517269763 -> Batches\ >=000200ms\ &\ <000500ms\ |\ Elapsed\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=85623i 1453876412517280463 -> Batches\ >=000500ms\ &\ <001000ms\ |\ CPU\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=2i 1453876412517292064 -> Batches\ >=000500ms\ &\ <001000ms\ |\ CPU\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=1270i 1453876412517320064 -> Batches\ >=000500ms\ &\ <001000ms\ |\ Elapsed\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=10i 1453876412517332465 -> Batches\ >=000500ms\ &\ <001000ms\ |\ Elapsed\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=6518i 1453876412517344465 -> Batches\ >=001000ms\ &\ <002000ms\ |\ CPU\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517354965 -> Batches\ >=001000ms\ &\ <002000ms\ |\ CPU\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517366666 -> Batches\ >=001000ms\ &\ <002000ms\ |\ Elapsed\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=184i 1453876412517406967 -> Batches\ >=001000ms\ &\ <002000ms\ |\ Elapsed\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=209039i 1453876412517420367 -> Batches\ >=002000ms\ &\ <005000ms\ |\ CPU\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517432467 -> Batches\ >=002000ms\ &\ <005000ms\ |\ CPU\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517443168 -> Batches\ >=002000ms\ &\ <005000ms\ |\ Elapsed\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517458668 -> Batches\ >=002000ms\ &\ <005000ms\ |\ Elapsed\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517486269 -> Batches\ >=005000ms\ &\ <010000ms\ |\ CPU\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517499269 -> Batches\ >=005000ms\ &\ <010000ms\ |\ CPU\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517512669 -> Batches\ >=005000ms\ &\ <010000ms\ |\ Elapsed\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=360i 1453876412517523870 -> Batches\ >=005000ms\ &\ <010000ms\ |\ Elapsed\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=1816241i 1453876412517535770 -> Batches\ >=010000ms\ &\ <020000ms\ |\ CPU\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517564171 -> Batches\ >=010000ms\ &\ <020000ms\ |\ CPU\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517575571 -> Batches\ >=010000ms\ &\ <020000ms\ |\ Elapsed\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517587571 -> Batches\ >=010000ms\ &\ <020000ms\ |\ Elapsed\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517597872 -> Batches\ >=020000ms\ &\ <050000ms\ |\ CPU\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=1i 1453876412517609472 -> Batches\ >=020000ms\ &\ <050000ms\ |\ CPU\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=20954i 1453876412517634873 -> Batches\ >=020000ms\ &\ <050000ms\ |\ Elapsed\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=1i 1453876412517645673 -> Batches\ >=020000ms\ &\ <050000ms\ |\ Elapsed\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=28069i 1453876412517657173 -> Batches\ >=050000ms\ &\ <100000ms\ |\ CPU\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517667574 -> Batches\ >=050000ms\ &\ <100000ms\ |\ CPU\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517679174 -> Batches\ >=050000ms\ &\ <100000ms\ |\ Elapsed\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517734775 -> Batches\ >=050000ms\ &\ <100000ms\ |\ Elapsed\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517747276 -> Batches\ >=100000ms\ |\ CPU\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517759476 -> Batches\ >=100000ms\ |\ CPU\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517771476 -> Batches\ >=100000ms\ |\ Elapsed\ Time:Requests\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517783377 -> Batches\ >=100000ms\ |\ Elapsed\ Time:Total(ms)\ |\ Batch\ Resp\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517809077 -> Stored\ Procedures\ Invoked/sec\ |\ _Total\ |\ Broker\ Activation,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517820378 -> Task\ Limit\ Reached\ |\ _Total\ |\ Broker\ Activation,servername=WIN8-DEV,type=Performance\ counters value=3i 1453876412517831978 -> Task\ Limit\ Reached/sec\ |\ _Total\ |\ Broker\ Activation,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517843478 -> Tasks\ Aborted/sec\ |\ _Total\ |\ Broker\ Activation,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517870579 -> Tasks\ Running\ |\ _Total\ |\ Broker\ Activation,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517915980 -> Tasks\ Started/sec\ |\ _Total\ |\ Broker\ Activation,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517930480 -> Activation\ Errors\ Total\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517942581 -> Broker\ Transaction\ Rollbacks\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517956181 -> Corrupted\ Messages\ Total\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517968982 -> Dequeued\ TransmissionQ\ Msgs/sec\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412517992382 -> Dialog\ Timer\ Event\ Count\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518002982 -> Dropped\ Messages\ Total\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518016083 -> Enqueued\ Local\ Messages\ Total\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518026883 -> Enqueued\ Local\ Messages/sec\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518038183 -> Enqueued\ Messages\ Total\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518061484 -> Enqueued\ Messages/sec\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518072084 -> Enqueued\ P1\ Messages/sec\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518083385 -> Enqueued\ P10\ Messages/sec\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518093785 -> Enqueued\ P2\ Messages/sec\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518111585 -> Enqueued\ P3\ Messages/sec\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518145586 -> Enqueued\ P4\ Messages/sec\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518166287 -> Enqueued\ P5\ Messages/sec\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518187587 -> Enqueued\ P6\ Messages/sec\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518203488 -> Enqueued\ P7\ Messages/sec\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518223488 -> Enqueued\ P8\ Messages/sec\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518286490 -> Enqueued\ P9\ Messages/sec\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518310291 -> Enqueued\ TransmissionQ\ Msgs/sec\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518330291 -> Enqueued\ Transport\ Msg\ Frag\ Tot\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518346092 -> Enqueued\ Transport\ Msg\ Frags/sec\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518363392 -> Enqueued\ Transport\ Msgs\ Total\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518404593 -> Enqueued\ Transport\ Msgs/sec\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518424494 -> Forwarded\ Messages\ Total\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518446394 -> Forwarded\ Messages/sec\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518486895 -> Forwarded\ Msg\ Byte\ Total\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518508596 -> Forwarded\ Msg\ Bytes/sec\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518548897 -> Forwarded\ Msg\ Discarded\ Total\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518572198 -> Forwarded\ Msgs\ Discarded/sec\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518592098 -> Forwarded\ Pending\ Msg\ Bytes\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518608698 -> Forwarded\ Pending\ Msg\ Count\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518626999 -> SQL\ RECEIVE\ Total\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518671100 -> SQL\ RECEIVEs/sec\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518683400 -> SQL\ SEND\ Total\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518694801 -> SQL\ SENDs/sec\ |\ Broker\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518705301 -> Avg.\ Length\ of\ Batched\ Writes\ |\ Broker\ TO\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518716501 -> Avg.\ Length\ of\ Batched\ Writes\ BS\ |\ Broker\ TO\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=1i 1453876412518741102 -> Avg.\ Time\ Between\ Batches\ (ms)\ |\ Broker\ TO\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=2062i 1453876412518752002 -> Avg.\ Time\ Between\ Batches\ Base\ |\ Broker\ TO\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=1i 1453876412518763803 -> Avg.\ Time\ to\ Write\ Batch\ (ms)\ |\ Broker\ TO\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518774503 -> Avg.\ Time\ to\ Write\ Batch\ Base\ |\ Broker\ TO\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=1i 1453876412518787903 -> Transmission\ Obj\ Gets/Sec\ |\ Broker\ TO\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518812104 -> Transmission\ Obj\ Set\ Dirty/Sec\ |\ Broker\ TO\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518824504 -> Transmission\ Obj\ Writes/Sec\ |\ Broker\ TO\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518853005 -> Current\ Bytes\ for\ Recv\ I/O\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518864005 -> Current\ Bytes\ for\ Send\ I/O\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518876906 -> Current\ Msg\ Frags\ for\ Send\ I/O\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518928607 -> Message\ Fragment\ P1\ Sends/sec\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518944407 -> Message\ Fragment\ P10\ Sends/sec\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518956508 -> Message\ Fragment\ P2\ Sends/sec\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518966908 -> Message\ Fragment\ P3\ Sends/sec\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412518978108 -> Message\ Fragment\ P4\ Sends/sec\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519004309 -> Message\ Fragment\ P5\ Sends/sec\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519016509 -> Message\ Fragment\ P6\ Sends/sec\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519027810 -> Message\ Fragment\ P7\ Sends/sec\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519038010 -> Message\ Fragment\ P8\ Sends/sec\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519049010 -> Message\ Fragment\ P9\ Sends/sec\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519074911 -> Message\ Fragment\ Receives/sec\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519087211 -> Message\ Fragment\ Sends/sec\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519104212 -> Msg\ Fragment\ Recv\ Size\ Avg\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519137113 -> Msg\ Fragment\ Recv\ Size\ Avg\ Base\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519150413 -> Msg\ Fragment\ Send\ Size\ Avg\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519175214 -> Msg\ Fragment\ Send\ Size\ Avg\ Base\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519186014 -> Open\ Connection\ Count\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519197514 -> Pending\ Bytes\ for\ Recv\ I/O\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519207814 -> Pending\ Bytes\ for\ Send\ I/O\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519221515 -> Pending\ Msg\ Frags\ for\ Recv\ I/O\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519245015 -> Pending\ Msg\ Frags\ for\ Send\ I/O\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519255516 -> Receive\ I/O\ bytes/sec\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519267116 -> Receive\ I/O\ Len\ Avg\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519277516 -> Receive\ I/O\ Len\ Avg\ Base\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519289017 -> Receive\ I/Os/sec\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519327718 -> Recv\ I/O\ Buffer\ Copies\ bytes/sec\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519339718 -> Recv\ I/O\ Buffer\ Copies\ Count\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519355918 -> Send\ I/O\ bytes/sec\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519372119 -> Send\ I/O\ Len\ Avg\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519383919 -> Send\ I/O\ Len\ Avg\ Base\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519414420 -> Send\ I/Os/sec\ |\ Broker/DBM\ Transport,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519425520 -> Background\ writer\ pages/sec\ |\ Buffer\ Manager,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519436720 -> Buffer\ cache\ hit\ ratio\ |\ Buffer\ Manager,servername=WIN8-DEV,type=Performance\ counters value=1i 1453876412519447021 -> Buffer\ cache\ hit\ ratio\ base\ |\ Buffer\ Manager,servername=WIN8-DEV,type=Performance\ counters value=7341i 1453876412519458421 -> Checkpoint\ pages/sec\ |\ Buffer\ Manager,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519481922 -> Database\ pages\ |\ Buffer\ Manager,servername=WIN8-DEV,type=Performance\ counters value=12217i 1453876412519493222 -> Extension\ allocated\ pages\ |\ Buffer\ Manager,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519518323 -> Extension\ free\ pages\ |\ Buffer\ Manager,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519529023 -> Extension\ in\ use\ as\ percentage\ |\ Buffer\ Manager,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519540323 -> Extension\ outstanding\ IO\ counter\ |\ Buffer\ Manager,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519567224 -> Extension\ page\ evictions/sec\ |\ Buffer\ Manager,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519582924 -> Extension\ page\ reads/sec\ |\ Buffer\ Manager,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519595025 -> Extension\ page\ unreferenced\ time\ |\ Buffer\ Manager,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519609425 -> Extension\ page\ writes/sec\ |\ Buffer\ Manager,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519621425 -> Free\ list\ stalls/sec\ |\ Buffer\ Manager,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519644326 -> Integral\ Controller\ Slope\ |\ Buffer\ Manager,servername=WIN8-DEV,type=Performance\ counters value=10i 1453876412519655926 -> Lazy\ writes/sec\ |\ Buffer\ Manager,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519683827 -> Page\ life\ expectancy\ |\ Buffer\ Manager,servername=WIN8-DEV,type=Performance\ counters value=45614i 1453876412519698327 -> Page\ lookups/sec\ |\ Buffer\ Manager,servername=WIN8-DEV,type=Performance\ counters value=7427i 1453876412519709828 -> Page\ reads/sec\ |\ Buffer\ Manager,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519732628 -> Page\ writes/sec\ |\ Buffer\ Manager,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519743529 -> Readahead\ pages/sec\ |\ Buffer\ Manager,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519754729 -> Readahead\ time/sec\ |\ Buffer\ Manager,servername=WIN8-DEV,type=Performance\ counters value=2i 1453876412519764929 -> Target\ pages\ |\ Buffer\ Manager,servername=WIN8-DEV,type=Performance\ counters value=16367616i 1453876412519779730 -> Database\ pages\ |\ 000\ |\ Buffer\ Node,servername=WIN8-DEV,type=Performance\ counters value=12217i 1453876412519818131 -> Local\ node\ page\ lookups/sec\ |\ 000\ |\ Buffer\ Node,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519830031 -> Page\ life\ expectancy\ |\ 000\ |\ Buffer\ Node,servername=WIN8-DEV,type=Performance\ counters value=45614i 1453876412519841831 -> Remote\ node\ page\ lookups/sec\ |\ 000\ |\ Buffer\ Node,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519852232 -> Cache\ Entries\ Count\ |\ _Total\ |\ Catalog\ Metadata,servername=WIN8-DEV,type=Performance\ counters value=2589i 1453876412519863832 -> Cache\ Entries\ Count\ |\ mssqlsystemresource\ |\ Catalog\ Metadata,servername=WIN8-DEV,type=Performance\ counters value=2212i 1453876412519893033 -> Cache\ Entries\ Pinned\ Count\ |\ _Total\ |\ Catalog\ Metadata,servername=WIN8-DEV,type=Performance\ counters value=5i 1453876412519916933 -> Cache\ Entries\ Pinned\ Count\ |\ mssqlsystemresource\ |\ Catalog\ Metadata,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412519932234 -> Cache\ Hit\ Ratio\ |\ _Total\ |\ Catalog\ Metadata,servername=WIN8-DEV,type=Performance\ counters value=1i 1453876412519943534 -> Cache\ Hit\ Ratio\ |\ mssqlsystemresource\ |\ Catalog\ Metadata,servername=WIN8-DEV,type=Performance\ counters value=1i 1453876412519955034 -> Cache\ Hit\ Ratio\ Base\ |\ _Total\ |\ Catalog\ Metadata,servername=WIN8-DEV,type=Performance\ counters value=1883i 1453876412519978935 -> Cache\ Hit\ Ratio\ Base\ |\ mssqlsystemresource\ |\ Catalog\ Metadata,servername=WIN8-DEV,type=Performance\ counters value=444i 1453876412519989735 -> CLR\ Execution\ |\ CLR,servername=WIN8-DEV,type=Performance\ counters value=339517i 1453876412520001435 -> Active\ cursors\ |\ _Total\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520011836 -> Active\ cursors\ |\ API\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520025336 -> Active\ cursors\ |\ TSQL\ Global\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520049937 -> Active\ cursors\ |\ TSQL\ Local\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520060837 -> Cache\ Hit\ Ratio\ |\ _Total\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520072437 -> Cache\ Hit\ Ratio\ |\ API\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520084438 -> Cache\ Hit\ Ratio\ |\ TSQL\ Global\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520101238 -> Cache\ Hit\ Ratio\ |\ TSQL\ Local\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520156440 -> Cache\ Hit\ Ratio\ Base\ |\ _Total\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520168740 -> Cache\ Hit\ Ratio\ Base\ |\ API\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520180740 -> Cache\ Hit\ Ratio\ Base\ |\ TSQL\ Global\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520193241 -> Cache\ Hit\ Ratio\ Base\ |\ TSQL\ Local\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520209441 -> Cached\ Cursor\ Counts\ |\ _Total\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520237442 -> Cached\ Cursor\ Counts\ |\ API\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520248742 -> Cached\ Cursor\ Counts\ |\ TSQL\ Global\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520260542 -> Cached\ Cursor\ Counts\ |\ TSQL\ Local\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520271243 -> Cursor\ Cache\ Use\ Counts/sec\ |\ _Total\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520285143 -> Cursor\ Cache\ Use\ Counts/sec\ |\ API\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520325944 -> Cursor\ Cache\ Use\ Counts/sec\ |\ TSQL\ Global\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520338144 -> Cursor\ Cache\ Use\ Counts/sec\ |\ TSQL\ Local\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520350145 -> Cursor\ memory\ usage\ |\ _Total\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520360945 -> Cursor\ memory\ usage\ |\ API\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520372545 -> Cursor\ memory\ usage\ |\ TSQL\ Global\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520397346 -> Cursor\ memory\ usage\ |\ TSQL\ Local\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520408246 -> Cursor\ Requests/sec\ |\ _Total\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520420147 -> Cursor\ Requests/sec\ |\ API\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520444947 -> Cursor\ Requests/sec\ |\ TSQL\ Global\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520458648 -> Cursor\ Requests/sec\ |\ TSQL\ Local\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520483948 -> Cursor\ worktable\ usage\ |\ _Total\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520494849 -> Cursor\ worktable\ usage\ |\ API\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520506249 -> Cursor\ worktable\ usage\ |\ TSQL\ Global\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520516749 -> Cursor\ worktable\ usage\ |\ TSQL\ Local\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520528349 -> Number\ of\ active\ cursor\ plans\ |\ _Total\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520552950 -> Number\ of\ active\ cursor\ plans\ |\ API\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520565650 -> Number\ of\ active\ cursor\ plans\ |\ TSQL\ Global\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520582651 -> Number\ of\ active\ cursor\ plans\ |\ TSQL\ Local\ Cursor\ |\ Cursor\ Manager\ by\ Type,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520595851 -> Async\ population\ count\ |\ Cursor\ Manager\ Total,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520607652 -> Cursor\ conversion\ rate\ |\ Cursor\ Manager\ Total,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520653453 -> Cursor\ flushes\ |\ Cursor\ Manager\ Total,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520676953 -> File\ Bytes\ Received/sec\ |\ _Total\ |\ Database\ Replica,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520691854 -> Log\ Bytes\ Received/sec\ |\ _Total\ |\ Database\ Replica,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520702454 -> Log\ remaining\ for\ undo\ |\ _Total\ |\ Database\ Replica,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520713954 -> Log\ Send\ Queue\ |\ _Total\ |\ Database\ Replica,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520737655 -> Mirrored\ Write\ Transactions/sec\ |\ _Total\ |\ Database\ Replica,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520750455 -> Recovery\ Queue\ |\ _Total\ |\ Database\ Replica,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520763456 -> Redo\ blocked/sec\ |\ _Total\ |\ Database\ Replica,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520773956 -> Redo\ Bytes\ Remaining\ |\ _Total\ |\ Database\ Replica,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520785256 -> Redone\ Bytes/sec\ |\ _Total\ |\ Database\ Replica,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520808457 -> Total\ Log\ requiring\ undo\ |\ _Total\ |\ Database\ Replica,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520818857 -> Transaction\ Delay\ |\ _Total\ |\ Database\ Replica,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520830357 -> Active\ Transactions\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520840458 -> Active\ Transactions\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520852958 -> Backup/Restore\ Throughput/sec\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520877359 -> Backup/Restore\ Throughput/sec\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520887959 -> Bulk\ Copy\ Rows/sec\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520899059 -> Bulk\ Copy\ Rows/sec\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520925360 -> Bulk\ Copy\ Throughput/sec\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520939560 -> Bulk\ Copy\ Throughput/sec\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520965161 -> Commit\ table\ entries\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520976061 -> Commit\ table\ entries\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412520999262 -> Data\ File(s)\ Size\ (KB)\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=3512576i 1453876412521010862 -> Data\ File(s)\ Size\ (KB)\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=40960i 1453876412521022563 -> DBCC\ Logical\ Scan\ Bytes/sec\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521048563 -> DBCC\ Logical\ Scan\ Bytes/sec\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521062964 -> Group\ Commit\ Time/sec\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521075064 -> Group\ Commit\ Time/sec\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521086864 -> Log\ Bytes\ Flushed/sec\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=483328i 1453876412521100065 -> Log\ Bytes\ Flushed/sec\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521160066 -> Log\ Cache\ Hit\ Ratio\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521177567 -> Log\ Cache\ Hit\ Ratio\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521190167 -> Log\ Cache\ Hit\ Ratio\ Base\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521200567 -> Log\ Cache\ Hit\ Ratio\ Base\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521212368 -> Log\ Cache\ Reads/sec\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521236568 -> Log\ Cache\ Reads/sec\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521247369 -> Log\ File(s)\ Size\ (KB)\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=570992i 1453876412521258769 -> Log\ File(s)\ Size\ (KB)\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=1016i 1453876412521269969 -> Log\ File(s)\ Used\ Size\ (KB)\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=317272i 1453876412521284270 -> Log\ File(s)\ Used\ Size\ (KB)\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=634i 1453876412521310470 -> Log\ Flush\ Wait\ Time\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521321671 -> Log\ Flush\ Wait\ Time\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521336771 -> Log\ Flush\ Waits/sec\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521347671 -> Log\ Flush\ Waits/sec\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521361972 -> Log\ Flush\ Write\ Time\ (ms)\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=13i 1453876412521387272 -> Log\ Flush\ Write\ Time\ (ms)\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521398473 -> Log\ Flushes/sec\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=8i 1453876412521410273 -> Log\ Flushes/sec\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521420973 -> Log\ Growths\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521432473 -> Log\ Growths\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521457774 -> Log\ Pool\ Cache\ Misses/sec\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521468574 -> Log\ Pool\ Cache\ Misses/sec\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521479975 -> Log\ Pool\ Disk\ Reads/sec\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521490375 -> Log\ Pool\ Disk\ Reads/sec\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521501775 -> Log\ Pool\ Requests/sec\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521527776 -> Log\ Pool\ Requests/sec\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521540876 -> Log\ Shrinks\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521556077 -> Log\ Shrinks\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521577877 -> Log\ Truncations\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=81i 1453876412521591878 -> Log\ Truncations\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521628379 -> Percent\ Log\ Used\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=55i 1453876412521639779 -> Percent\ Log\ Used\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=62i 1453876412521653179 -> Repl.\ Pending\ Xacts\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521663780 -> Repl.\ Pending\ Xacts\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521675280 -> Repl.\ Trans.\ Rate\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521701881 -> Repl.\ Trans.\ Rate\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521712981 -> Shrink\ Data\ Movement\ Bytes/sec\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521724581 -> Shrink\ Data\ Movement\ Bytes/sec\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521734982 -> Tracked\ transactions/sec\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521746582 -> Tracked\ transactions/sec\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521784183 -> Transactions/sec\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=111i 1453876412521798783 -> Transactions/sec\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=9i 1453876412521810484 -> Write\ Transactions/sec\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=54i 1453876412521820884 -> Write\ Transactions/sec\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521832084 -> XTP\ Memory\ Used\ (KB)\ |\ _Total\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521858885 -> XTP\ Memory\ Used\ (KB)\ |\ mssqlsystemresource\ |\ Databases,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521869885 -> Usage\ |\ '#'\ and\ '##'\ as\ the\ name\ of\ temporary\ tables\ and\ stored\ procedures\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521881185 -> Usage\ |\ '::'\ function\ calling\ syntax\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521892486 -> Usage\ |\ '@'\ and\ names\ that\ start\ with\ '@@'\ as\ Transact-SQL\ identifiers\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521914186 -> Usage\ |\ ADDING\ TAPE\ DEVICE\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521944987 -> Usage\ |\ ALL\ Permission\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521956487 -> Usage\ |\ ALTER\ DATABASE\ WITH\ TORN_PAGE_DETECTION\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521971288 -> Usage\ |\ ALTER\ LOGIN\ WITH\ SET\ CREDENTIAL\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412521985288 -> Usage\ |\ asymmetric_keys\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522000189 -> Usage\ |\ asymmetric_keys.attested_by\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522049290 -> Usage\ |\ Azeri_Cyrillic_90\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522066290 -> Usage\ |\ Azeri_Latin_90\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522082791 -> Usage\ |\ BACKUP\ DATABASE\ or\ LOG\ TO\ TAPE\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522102491 -> Usage\ |\ certificates\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522124292 -> Usage\ |\ certificates.attested_by\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522150593 -> Usage\ |\ Create/alter\ SOAP\ endpoint\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522161493 -> Usage\ |\ CREATE_DROP_DEFAULT\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522175393 -> Usage\ |\ CREATE_DROP_RULE\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522186093 -> Usage\ |\ Data\ types:\ text\ ntext\ or\ image\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522197594 -> Usage\ |\ Database\ compatibility\ level\ 100\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522223894 -> Usage\ |\ Database\ compatibility\ level\ 110\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=4i 1453876412522234995 -> Usage\ |\ Database\ compatibility\ level\ 90\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522249695 -> Usage\ |\ Database\ Mirroring\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522260995 -> Usage\ |\ DATABASEPROPERTY\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522272596 -> Usage\ |\ DATABASEPROPERTYEX('IsFullTextEnabled')\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522297496 -> Usage\ |\ DBCC\ [UN]PINTABLE\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522308597 -> Usage\ |\ DBCC\ DBREINDEX\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522320097 -> Usage\ |\ DBCC\ INDEXDEFRAG\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522330797 -> Usage\ |\ DBCC\ SHOWCONTIG\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522342298 -> Usage\ |\ DBCC_EXTENTINFO\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522367798 -> Usage\ |\ DBCC_IND\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522378699 -> Usage\ |\ DEFAULT\ keyword\ as\ a\ default\ value\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522390399 -> Usage\ |\ Deprecated\ Attested\ Option\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522400899 -> Usage\ |\ Deprecated\ encryption\ algorithm\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522425100 -> Usage\ |\ DESX\ algorithm\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522467701 -> Usage\ |\ dm_fts_active_catalogs\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522483201 -> Usage\ |\ dm_fts_active_catalogs.is_paused\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522494802 -> Usage\ |\ dm_fts_active_catalogs.previous_status\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522505102 -> Usage\ |\ dm_fts_active_catalogs.previous_status_description\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522518302 -> Usage\ |\ dm_fts_active_catalogs.row_count_in_thousands\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522543103 -> Usage\ |\ dm_fts_active_catalogs.status\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522559203 -> Usage\ |\ dm_fts_active_catalogs.status_description\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522572204 -> Usage\ |\ dm_fts_active_catalogs.worker_count\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522595904 -> Usage\ |\ dm_fts_memory_buffers\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522611105 -> Usage\ |\ dm_fts_memory_buffers.row_count\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522635505 -> Usage\ |\ DROP\ INDEX\ with\ two-part\ name\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522646406 -> Usage\ |\ endpoint_webmethods\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522658106 -> Usage\ |\ EXTPROP_LEVEL0TYPE\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522668306 -> Usage\ |\ EXTPROP_LEVEL0USER\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522681607 -> Usage\ |\ FILE_ID\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522705307 -> Usage\ |\ fn_get_sql\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522717808 -> Usage\ |\ fn_servershareddrives\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522731008 -> Usage\ |\ fn_trace_geteventinfo\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522741408 -> Usage\ |\ fn_trace_getfilterinfo\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522752709 -> Usage\ |\ fn_trace_getinfo\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522778009 -> Usage\ |\ fn_trace_gettable\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522788809 -> Usage\ |\ fn_virtualservernodes\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522800010 -> Usage\ |\ fulltext_catalogs\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522810210 -> Usage\ |\ fulltext_catalogs.data_space_id\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522823010 -> Usage\ |\ fulltext_catalogs.file_id\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522864011 -> Usage\ |\ fulltext_catalogs.path\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522877112 -> Usage\ |\ FULLTEXTCATALOGPROPERTY('LogSize')\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522889212 -> Usage\ |\ FULLTEXTCATALOGPROPERTY('PopulateStatus')\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522899712 -> Usage\ |\ FULLTEXTSERVICEPROPERTY('ConnectTimeout')\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522939013 -> Usage\ |\ FULLTEXTSERVICEPROPERTY('DataTimeout')\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522982115 -> Usage\ |\ FULLTEXTSERVICEPROPERTY('ResourceUsage')\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412522994915 -> Usage\ |\ GROUP\ BY\ ALL\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523006415 -> Usage\ |\ Hindi\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523019416 -> Usage\ |\ IDENTITYCOL\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523030816 -> Usage\ |\ IN\ PATH\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523054817 -> Usage\ |\ Index\ view\ select\ list\ without\ COUNT_BIG(*)\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523070517 -> Usage\ |\ INDEX_OPTION\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523082917 -> Usage\ |\ INDEXKEY_PROPERTY\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523093118 -> Usage\ |\ Indirect\ TVF\ hints\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523109018 -> Usage\ |\ INSERT\ NULL\ into\ TIMESTAMP\ columns\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523136519 -> Usage\ |\ INSERT_HINTS\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523149419 -> Usage\ |\ Korean_Wansung_Unicode\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523164019 -> Usage\ |\ Lithuanian_Classic\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523174620 -> Usage\ |\ Macedonian\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523186520 -> Usage\ |\ MODIFY\ FILEGROUP\ READONLY\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523214321 -> Usage\ |\ MODIFY\ FILEGROUP\ READWRITE\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523225521 -> Usage\ |\ More\ than\ two-part\ column\ name\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523237121 -> Usage\ |\ Multiple\ table\ hints\ without\ comma\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523247822 -> Usage\ |\ NOLOCK\ or\ READUNCOMMITTED\ in\ UPDATE\ or\ DELETE\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523259522 -> Usage\ |\ Numbered\ stored\ procedures\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523285723 -> Usage\ |\ numbered_procedure_parameters\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523296823 -> Usage\ |\ numbered_procedures\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523309923 -> Usage\ |\ objidupdate\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523320524 -> Usage\ |\ Old\ NEAR\ Syntax\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523335124 -> Usage\ |\ OLEDB\ for\ ad\ hoc\ connections\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523374225 -> Usage\ |\ PERMISSIONS\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523400326 -> Usage\ |\ READTEXT\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523412626 -> Usage\ |\ REMSERVER\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523425326 -> Usage\ |\ RESTORE\ DATABASE\ or\ LOG\ WITH\ MEDIAPASSWORD\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523436927 -> Usage\ |\ RESTORE\ DATABASE\ or\ LOG\ WITH\ PASSWORD\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523461727 -> Usage\ |\ Returning\ results\ from\ trigger\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523472828 -> Usage\ |\ ROWGUIDCOL\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523486128 -> Usage\ |\ SET\ ANSI_NULLS\ OFF\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523496828 -> Usage\ |\ SET\ ANSI_PADDING\ OFF\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523510229 -> Usage\ |\ SET\ CONCAT_NULL_YIELDS_NULL\ OFF\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523539229 -> Usage\ |\ SET\ ERRLVL\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523551030 -> Usage\ |\ SET\ FMTONLY\ ON\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523564530 -> Usage\ |\ SET\ OFFSETS\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523576930 -> Usage\ |\ SET\ REMOTE_PROC_TRANSACTIONS\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523591931 -> Usage\ |\ SET\ ROWCOUNT\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523625132 -> Usage\ |\ SETUSER\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523636932 -> Usage\ |\ soap_endpoints\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523648532 -> Usage\ |\ sp_addapprole\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523659133 -> Usage\ |\ sp_addextendedproc\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523670433 -> Usage\ |\ sp_addlogin\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523695334 -> Usage\ |\ sp_addremotelogin\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523706634 -> Usage\ |\ sp_addrole\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523718134 -> Usage\ |\ sp_addrolemember\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523728534 -> Usage\ |\ sp_addserver\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523740035 -> Usage\ |\ sp_addsrvrolemember\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523764935 -> Usage\ |\ sp_addtype\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523777236 -> Usage\ |\ sp_adduser\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523788836 -> Usage\ |\ sp_approlepassword\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523798936 -> Usage\ |\ sp_attach_db\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523811837 -> Usage\ |\ sp_attach_single_file_db\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523856038 -> Usage\ |\ sp_bindefault\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523868238 -> Usage\ |\ sp_bindrule\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523879738 -> Usage\ |\ sp_bindsession\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523889939 -> Usage\ |\ sp_certify_removable\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523901139 -> Usage\ |\ sp_change_users_login\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523943340 -> Usage\ |\ sp_changedbowner\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523954940 -> Usage\ |\ sp_changeobjectowner\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523966741 -> Usage\ |\ sp_configure\ 'affinity\ mask'\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523978741 -> Usage\ |\ sp_configure\ 'affinity64\ mask'\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412523990641 -> Usage\ |\ sp_configure\ 'allow\ updates'\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524016742 -> Usage\ |\ sp_configure\ 'c2\ audit\ mode'\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524031542 -> Usage\ |\ sp_configure\ 'default\ trace\ enabled'\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524046343 -> Usage\ |\ sp_configure\ 'disallow\ results\ from\ triggers'\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524057343 -> Usage\ |\ sp_configure\ 'ft\ crawl\ bandwidth\ (max)'\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524069043 -> Usage\ |\ sp_configure\ 'ft\ crawl\ bandwidth\ (min)'\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524093444 -> Usage\ |\ sp_configure\ 'ft\ notify\ bandwidth\ (max)'\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524111545 -> Usage\ |\ sp_configure\ 'ft\ notify\ bandwidth\ (min)'\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524144745 -> Usage\ |\ sp_configure\ 'locks'\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524155646 -> Usage\ |\ sp_configure\ 'open\ objects'\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524167246 -> Usage\ |\ sp_configure\ 'priority\ boost'\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524192247 -> Usage\ |\ sp_configure\ 'remote\ proc\ trans'\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524206447 -> Usage\ |\ sp_configure\ 'set\ working\ set\ size'\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524218347 -> Usage\ |\ sp_control_dbmasterkey_password\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524230848 -> Usage\ |\ sp_create_removable\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524242348 -> Usage\ |\ sp_db_increased_partitions\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524281149 -> Usage\ |\ sp_db_selective_xml_index\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524294249 -> Usage\ |\ sp_db_vardecimal_storage_format\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524305750 -> Usage\ |\ sp_dbcmptlevel\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524316050 -> Usage\ |\ sp_dbfixedrolepermission\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524329050 -> Usage\ |\ sp_dbremove\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524352651 -> Usage\ |\ sp_defaultdb\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524363451 -> Usage\ |\ sp_defaultlanguage\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524374852 -> Usage\ |\ sp_denylogin\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524384952 -> Usage\ |\ sp_depends\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524399052 -> Usage\ |\ sp_detach_db\ @keepfulltextindexfile\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524423953 -> Usage\ |\ sp_dropapprole\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524434753 -> Usage\ |\ sp_dropextendedproc\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524446053 -> Usage\ |\ sp_droplogin\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524456454 -> Usage\ |\ sp_dropremotelogin\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524467554 -> Usage\ |\ sp_droprole\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524492655 -> Usage\ |\ sp_droprolemember\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524506655 -> Usage\ |\ sp_dropsrvrolemember\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524518355 -> Usage\ |\ sp_droptype\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524528756 -> Usage\ |\ sp_dropuser\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524539756 -> Usage\ |\ sp_estimated_rowsize_reduction_for_vardecimal\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524565457 -> Usage\ |\ sp_fulltext_catalog\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524576357 -> Usage\ |\ sp_fulltext_column\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524587457 -> Usage\ |\ sp_fulltext_database\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524605858 -> Usage\ |\ sp_fulltext_service\ @action=clean_up\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524617758 -> Usage\ |\ sp_fulltext_service\ @action=connect_timeout\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524659159 -> Usage\ |\ sp_fulltext_service\ @action=data_timeout\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524674860 -> Usage\ |\ sp_fulltext_service\ @action=resource_usage\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524686560 -> Usage\ |\ sp_fulltext_table\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524697160 -> Usage\ |\ sp_getbindtoken\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524708460 -> Usage\ |\ sp_grantdbaccess\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524736461 -> Usage\ |\ sp_grantlogin\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524747662 -> Usage\ |\ sp_help_fulltext_catalog_components\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524759062 -> Usage\ |\ sp_help_fulltext_catalogs\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524782162 -> Usage\ |\ sp_help_fulltext_catalogs_cursor\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524806463 -> Usage\ |\ sp_help_fulltext_columns\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524838864 -> Usage\ |\ sp_help_fulltext_columns_cursor\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524850564 -> Usage\ |\ sp_help_fulltext_tables\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524862165 -> Usage\ |\ sp_help_fulltext_tables_cursor\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524872665 -> Usage\ |\ sp_helpdevice\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524884065 -> Usage\ |\ sp_helpextendedproc\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524922766 -> Usage\ |\ sp_helpremotelogin\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524936967 -> Usage\ |\ sp_indexoption\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524948967 -> Usage\ |\ sp_lock\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524959267 -> Usage\ |\ sp_password\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524970667 -> Usage\ |\ sp_remoteoption\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412524993668 -> Usage\ |\ sp_renamedb\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525007168 -> Usage\ |\ sp_resetstatus\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525018969 -> Usage\ |\ sp_revokedbaccess\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525032869 -> Usage\ |\ sp_revokelogin\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525059370 -> Usage\ |\ sp_srvrolepermission\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525086671 -> Usage\ |\ sp_trace_create\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525102771 -> Usage\ |\ sp_trace_getdata\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525118471 -> Usage\ |\ sp_trace_setevent\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525128972 -> Usage\ |\ sp_trace_setfilter\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525140272 -> Usage\ |\ sp_trace_setstatus\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525184773 -> Usage\ |\ sp_unbindefault\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525197073 -> Usage\ |\ sp_unbindrule\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525208574 -> Usage\ |\ SQL_AltDiction_CP1253_CS_AS\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525218674 -> Usage\ |\ sql_dependencies\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525230174 -> Usage\ |\ String\ literals\ as\ column\ aliases\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=4i 1453876412525257075 -> Usage\ |\ sysaltfiles\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525268475 -> Usage\ |\ syscacheobjects\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525279876 -> Usage\ |\ syscolumns\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525299176 -> Usage\ |\ syscomments\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525313677 -> Usage\ |\ sysconfigures\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525340677 -> Usage\ |\ sysconstraints\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525351478 -> Usage\ |\ syscurconfigs\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525362778 -> Usage\ |\ sysdatabases\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=2i 1453876412525372978 -> Usage\ |\ sysdepends\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525384178 -> Usage\ |\ sysdevices\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525407279 -> Usage\ |\ sysfilegroups\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525421379 -> Usage\ |\ sysfiles\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525432780 -> Usage\ |\ sysforeignkeys\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525442980 -> Usage\ |\ sysfulltextcatalogs\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525454180 -> Usage\ |\ sysindexes\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525476481 -> Usage\ |\ sysindexkeys\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525486781 -> Usage\ |\ syslockinfo\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525503582 -> Usage\ |\ syslogins\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=8i 1453876412525514682 -> Usage\ |\ sysmembers\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525525982 -> Usage\ |\ sysmessages\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525553883 -> Usage\ |\ sysobjects\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525564483 -> Usage\ |\ sysoledbusers\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525575683 -> Usage\ |\ sysopentapes\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525585884 -> Usage\ |\ sysperfinfo\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525596984 -> Usage\ |\ syspermissions\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525639885 -> Usage\ |\ sysprocesses\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525651786 -> Usage\ |\ sysprotects\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525663186 -> Usage\ |\ sysreferences\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525673286 -> Usage\ |\ sysremotelogins\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525687986 -> Usage\ |\ sysservers\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525720987 -> Usage\ |\ systypes\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525740588 -> Usage\ |\ sysusers\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525752688 -> Usage\ |\ Table\ hint\ without\ WITH\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525762788 -> Usage\ |\ Text\ in\ row\ table\ option\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525774389 -> Usage\ |\ TEXTPTR\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525798089 -> Usage\ |\ TEXTVALID\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525808390 -> Usage\ |\ TIMESTAMP\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525819790 -> Usage\ |\ UPDATETEXT\ or\ WRITETEXT\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525830090 -> Usage\ |\ USER_ID\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=1i 1453876412525841291 -> Usage\ |\ Using\ OLEDB\ for\ linked\ servers\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525877392 -> Usage\ |\ Vardecimal\ storage\ format\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525889492 -> Usage\ |\ XMLDATA\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525901192 -> Usage\ |\ XP_API\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=7i 1453876412525952493 -> Usage\ |\ xp_grantlogin\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412525964994 -> Usage\ |\ xp_loginconfig\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526001095 -> Usage\ |\ xp_revokelogin\ |\ Deprecated\ Features,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526015695 -> Distributed\ Query\ |\ Average\ execution\ time\ (ms)\ |\ Exec\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526035096 -> Distributed\ Query\ |\ Cumulative\ execution\ time\ (ms)\ per\ second\ |\ Exec\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526046596 -> Distributed\ Query\ |\ Execs\ in\ progress\ |\ Exec\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526061696 -> Distributed\ Query\ |\ Execs\ started\ per\ second\ |\ Exec\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526116398 -> DTC\ calls\ |\ Average\ execution\ time\ (ms)\ |\ Exec\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526137598 -> DTC\ calls\ |\ Cumulative\ execution\ time\ (ms)\ per\ second\ |\ Exec\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526153299 -> DTC\ calls\ |\ Execs\ in\ progress\ |\ Exec\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526164599 -> DTC\ calls\ |\ Execs\ started\ per\ second\ |\ Exec\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526176299 -> Extended\ Procedures\ |\ Average\ execution\ time\ (ms)\ |\ Exec\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526201600 -> Extended\ Procedures\ |\ Cumulative\ execution\ time\ (ms)\ per\ second\ |\ Exec\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526212600 -> Extended\ Procedures\ |\ Execs\ in\ progress\ |\ Exec\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526230901 -> Extended\ Procedures\ |\ Execs\ started\ per\ second\ |\ Exec\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526244401 -> OLEDB\ calls\ |\ Average\ execution\ time\ (ms)\ |\ Exec\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526256002 -> OLEDB\ calls\ |\ Cumulative\ execution\ time\ (ms)\ per\ second\ |\ Exec\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526282802 -> OLEDB\ calls\ |\ Execs\ in\ progress\ |\ Exec\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526294103 -> OLEDB\ calls\ |\ Execs\ started\ per\ second\ |\ Exec\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526305703 -> Avg\ time\ delete\ FileTable\ item\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526316203 -> Avg\ time\ FileTable\ enumeration\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526327703 -> Avg\ time\ FileTable\ handle\ kill\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526350504 -> Avg\ time\ move\ FileTable\ item\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526361104 -> Avg\ time\ per\ file\ I/O\ request\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526372405 -> Avg\ time\ per\ file\ I/O\ response\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526386705 -> Avg\ time\ rename\ FileTable\ item\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526398605 -> Avg\ time\ to\ get\ FileTable\ item\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526421406 -> Avg\ time\ update\ FileTable\ item\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526432106 -> FileTable\ db\ operations/sec\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526457907 -> FileTable\ enumeration\ reqs/sec\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526468807 -> FileTable\ file\ I/O\ requests/sec\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526480108 -> FileTable\ file\ I/O\ response/sec\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526507008 -> FileTable\ item\ delete\ reqs/sec\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526525809 -> FileTable\ item\ get\ requests/sec\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526540209 -> FileTable\ item\ move\ reqs/sec\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526550709 -> FileTable\ item\ rename\ reqs/sec\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526565010 -> FileTable\ item\ update\ reqs/sec\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526609511 -> FileTable\ kill\ handle\ ops/sec\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526621511 -> FileTable\ table\ operations/sec\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526633012 -> Time\ delete\ FileTable\ item\ BASE\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526643112 -> Time\ FileTable\ enumeration\ BASE\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526654312 -> Time\ FileTable\ handle\ kill\ BASE\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526677313 -> Time\ move\ FileTable\ item\ BASE\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526692713 -> Time\ per\ file\ I/O\ request\ BASE\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526704613 -> Time\ per\ file\ I/O\ response\ BASE\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526715014 -> Time\ rename\ FileTable\ item\ BASE\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526726314 -> Time\ to\ get\ FileTable\ item\ BASE\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526753015 -> Time\ update\ FileTable\ item\ BASE\ |\ FileTable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526763915 -> Active\ Temp\ Tables\ |\ General\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=26i 1453876412526775915 -> Connection\ Reset/sec\ |\ General\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526801716 -> Event\ Notifications\ Delayed\ Drop\ |\ General\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526816616 -> HTTP\ Authenticated\ Requests\ |\ General\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526839717 -> Logical\ Connections\ |\ General\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=9i 1453876412526850217 -> Logins/sec\ |\ General\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=3i 1453876412526861518 -> Logouts/sec\ |\ General\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=7i 1453876412526871718 -> Mars\ Deadlocks\ |\ General\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526882918 -> Non-atomic\ yield\ rate\ |\ General\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526920619 -> Processes\ blocked\ |\ General\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526938020 -> SOAP\ Empty\ Requests\ |\ General\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526950020 -> SOAP\ Method\ Invocations\ |\ General\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526960220 -> SOAP\ Session\ Initiate\ Requests\ |\ General\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412526971521 -> SOAP\ Session\ Terminate\ Requests\ |\ General\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527004821 -> SOAP\ SQL\ Requests\ |\ General\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527015822 -> SOAP\ WSDL\ Requests\ |\ General\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527027222 -> SQL\ Trace\ IO\ Provider\ Lock\ Waits\ |\ General\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527040822 -> Temp\ Tables\ Creation\ Rate\ |\ General\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=11i 1453876412527052523 -> Temp\ Tables\ For\ Destruction\ |\ General\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527095024 -> Tempdb\ recovery\ unit\ id\ |\ General\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527114824 -> Tempdb\ rowset\ id\ |\ General\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527136125 -> Trace\ Event\ Notification\ Queue\ |\ General\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527147925 -> Transactions\ |\ General\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=1i 1453876412527168326 -> User\ Connections\ |\ General\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=9i 1453876412527195927 -> Avg.\ Bytes/Read\ |\ _Total\ |\ HTTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527206527 -> Avg.\ Bytes/Read\ BASE\ |\ _Total\ |\ HTTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527217927 -> Avg.\ Bytes/Transfer\ |\ _Total\ |\ HTTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527228427 -> Avg.\ Bytes/Transfer\ BASE\ |\ _Total\ |\ HTTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527239828 -> Avg.\ Bytes/Write\ |\ _Total\ |\ HTTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527266328 -> Avg.\ Bytes/Write\ BASE\ |\ _Total\ |\ HTTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527277429 -> Avg.\ microsec/Read\ |\ _Total\ |\ HTTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527289029 -> Avg.\ microsec/Read\ BASE\ |\ _Total\ |\ HTTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527299229 -> Avg.\ microsec/Transfer\ |\ _Total\ |\ HTTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527310630 -> Avg.\ microsec/Transfer\ BASE\ |\ _Total\ |\ HTTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527334230 -> Avg.\ microsec/Write\ |\ _Total\ |\ HTTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527344830 -> Avg.\ microsec/Write\ BASE\ |\ _Total\ |\ HTTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527360331 -> HTTP\ Storage\ IO\ retry/sec\ |\ _Total\ |\ HTTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527374031 -> Outstanding\ HTTP\ Storage\ IO\ |\ _Total\ |\ HTTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527385632 -> Read\ Bytes/Sec\ |\ _Total\ |\ HTTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527415432 -> Reads/Sec\ |\ _Total\ |\ HTTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527427033 -> Total\ Bytes/Sec\ |\ _Total\ |\ HTTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527441733 -> Transfers/Sec\ |\ _Total\ |\ HTTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527452233 -> Write\ Bytes/Sec\ |\ _Total\ |\ HTTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527466634 -> Writes/Sec\ |\ _Total\ |\ HTTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527496134 -> Average\ Latch\ Wait\ Time\ (ms)\ |\ Latches,servername=WIN8-DEV,type=Performance\ counters value=1i 1453876412527507035 -> Average\ Latch\ Wait\ Time\ Base\ |\ Latches,servername=WIN8-DEV,type=Performance\ counters value=33i 1453876412527518435 -> Latch\ Waits/sec\ |\ Latches,servername=WIN8-DEV,type=Performance\ counters value=39i 1453876412527528935 -> Number\ of\ SuperLatches\ |\ Latches,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527540136 -> SuperLatch\ Demotions/sec\ |\ Latches,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527562936 -> SuperLatch\ Promotions/sec\ |\ Latches,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527573137 -> Total\ Latch\ Wait\ Time\ (ms)\ |\ Latches,servername=WIN8-DEV,type=Performance\ counters value=33i 1453876412527587337 -> Average\ Wait\ Time\ (ms)\ |\ _Total\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527606237 -> Average\ Wait\ Time\ (ms)\ |\ AllocUnit\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527622138 -> Average\ Wait\ Time\ (ms)\ |\ Application\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527662339 -> Average\ Wait\ Time\ (ms)\ |\ Database\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527674539 -> Average\ Wait\ Time\ (ms)\ |\ Extent\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527686040 -> Average\ Wait\ Time\ (ms)\ |\ File\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527696540 -> Average\ Wait\ Time\ (ms)\ |\ HoBT\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527707640 -> Average\ Wait\ Time\ (ms)\ |\ Key\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527730341 -> Average\ Wait\ Time\ (ms)\ |\ Metadata\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527754641 -> Average\ Wait\ Time\ (ms)\ |\ Object\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527767442 -> Average\ Wait\ Time\ (ms)\ |\ OIB\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527784142 -> Average\ Wait\ Time\ (ms)\ |\ Page\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527795842 -> Average\ Wait\ Time\ (ms)\ |\ RID\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527826443 -> Average\ Wait\ Time\ (ms)\ |\ RowGroup\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527844244 -> Average\ Wait\ Time\ Base\ |\ _Total\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527865044 -> Average\ Wait\ Time\ Base\ |\ AllocUnit\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527875645 -> Average\ Wait\ Time\ Base\ |\ Application\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527887045 -> Average\ Wait\ Time\ Base\ |\ Database\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527924846 -> Average\ Wait\ Time\ Base\ |\ Extent\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527939346 -> Average\ Wait\ Time\ Base\ |\ File\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527951347 -> Average\ Wait\ Time\ Base\ |\ HoBT\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527961847 -> Average\ Wait\ Time\ Base\ |\ Key\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527973347 -> Average\ Wait\ Time\ Base\ |\ Metadata\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412527999748 -> Average\ Wait\ Time\ Base\ |\ Object\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412528010848 -> Average\ Wait\ Time\ Base\ |\ OIB\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412528022348 -> Average\ Wait\ Time\ Base\ |\ Page\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412528032549 -> Average\ Wait\ Time\ Base\ |\ RID\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412528043949 -> Average\ Wait\ Time\ Base\ |\ RowGroup\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412528075750 -> Lock\ Requests/sec\ |\ _Total\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=8075i 1453876412528086950 -> Lock\ Requests/sec\ |\ AllocUnit\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=2i 1453876412528098250 -> Lock\ Requests/sec\ |\ Application\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412528127151 -> Lock\ Requests/sec\ |\ Database\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=229i 1453876412528146652 -> Lock\ Requests/sec\ |\ Extent\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=70i 1453876412528197753 -> Lock\ Requests/sec\ |\ File\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412528213754 -> Lock\ Requests/sec\ |\ HoBT\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=49i 1453876412528232254 -> Lock\ Requests/sec\ |\ Key\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=2282i 1453876412528242954 -> Lock\ Requests/sec\ |\ Metadata\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=3501i 1453876412528254355 -> Lock\ Requests/sec\ |\ Object\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=1799i 1453876412528277055 -> Lock\ Requests/sec\ |\ OIB\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412528287355 -> Lock\ Requests/sec\ |\ Page\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=103i 1453876412528298756 -> Lock\ Requests/sec\ |\ RID\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=40i 1453876412528312756 -> Lock\ Requests/sec\ |\ RowGroup\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412528327357 -> Lock\ Timeouts\ (timeout\ >\ 0)/sec\ |\ _Total\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412528363258 -> Lock\ Timeouts\ (timeout\ >\ 0)/sec\ |\ AllocUnit\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412528374958 -> Lock\ Timeouts\ (timeout\ >\ 0)/sec\ |\ Application\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412528386858 -> Lock\ Timeouts\ (timeout\ >\ 0)/sec\ |\ Database\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412528397558 -> Lock\ Timeouts\ (timeout\ >\ 0)/sec\ |\ Extent\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412528408859 -> Lock\ Timeouts\ (timeout\ >\ 0)/sec\ |\ File\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412528432359 -> Lock\ Timeouts\ (timeout\ >\ 0)/sec\ |\ HoBT\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412528442860 -> Lock\ Timeouts\ (timeout\ >\ 0)/sec\ |\ Key\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412528454260 -> Lock\ Timeouts\ (timeout\ >\ 0)/sec\ |\ Metadata\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412529628991 -> Lock\ Timeouts\ (timeout\ >\ 0)/sec\ |\ Object\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412529651592 -> Lock\ Timeouts\ (timeout\ >\ 0)/sec\ |\ OIB\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412529663992 -> Lock\ Timeouts\ (timeout\ >\ 0)/sec\ |\ Page\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412529676692 -> Lock\ Timeouts\ (timeout\ >\ 0)/sec\ |\ RID\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412529688093 -> Lock\ Timeouts\ (timeout\ >\ 0)/sec\ |\ RowGroup\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412529700393 -> Lock\ Timeouts/sec\ |\ _Total\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=7i 1453876412529725794 -> Lock\ Timeouts/sec\ |\ AllocUnit\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412529737294 -> Lock\ Timeouts/sec\ |\ Application\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412529749294 -> Lock\ Timeouts/sec\ |\ Database\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412529759995 -> Lock\ Timeouts/sec\ |\ Extent\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412529771695 -> Lock\ Timeouts/sec\ |\ File\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412529794996 -> Lock\ Timeouts/sec\ |\ HoBT\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412529805696 -> Lock\ Timeouts/sec\ |\ Key\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=7i 1453876412529818596 -> Lock\ Timeouts/sec\ |\ Metadata\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412529829396 -> Lock\ Timeouts/sec\ |\ Object\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412529840797 -> Lock\ Timeouts/sec\ |\ OIB\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412529902898 -> Lock\ Timeouts/sec\ |\ Page\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412529931399 -> Lock\ Timeouts/sec\ |\ RID\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412529944099 -> Lock\ Timeouts/sec\ |\ RowGroup\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412529955000 -> Lock\ Wait\ Time\ (ms)\ |\ _Total\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412529966800 -> Lock\ Wait\ Time\ (ms)\ |\ AllocUnit\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530001301 -> Lock\ Wait\ Time\ (ms)\ |\ Application\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530012901 -> Lock\ Wait\ Time\ (ms)\ |\ Database\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530025002 -> Lock\ Wait\ Time\ (ms)\ |\ Extent\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530036502 -> Lock\ Wait\ Time\ (ms)\ |\ File\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530052302 -> Lock\ Wait\ Time\ (ms)\ |\ HoBT\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530075903 -> Lock\ Wait\ Time\ (ms)\ |\ Key\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530088903 -> Lock\ Wait\ Time\ (ms)\ |\ Metadata\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530101204 -> Lock\ Wait\ Time\ (ms)\ |\ Object\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530120204 -> Lock\ Wait\ Time\ (ms)\ |\ OIB\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530136505 -> Lock\ Wait\ Time\ (ms)\ |\ Page\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530159905 -> Lock\ Wait\ Time\ (ms)\ |\ RID\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530171306 -> Lock\ Wait\ Time\ (ms)\ |\ RowGroup\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530183206 -> Lock\ Waits/sec\ |\ _Total\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530193706 -> Lock\ Waits/sec\ |\ AllocUnit\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530205606 -> Lock\ Waits/sec\ |\ Application\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530229807 -> Lock\ Waits/sec\ |\ Database\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530240707 -> Lock\ Waits/sec\ |\ Extent\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530255108 -> Lock\ Waits/sec\ |\ File\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530265708 -> Lock\ Waits/sec\ |\ HoBT\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530277308 -> Lock\ Waits/sec\ |\ Key\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530309209 -> Lock\ Waits/sec\ |\ Metadata\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530320709 -> Lock\ Waits/sec\ |\ Object\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530332210 -> Lock\ Waits/sec\ |\ OIB\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530342910 -> Lock\ Waits/sec\ |\ Page\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530364311 -> Lock\ Waits/sec\ |\ RID\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530389911 -> Lock\ Waits/sec\ |\ RowGroup\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530401012 -> Number\ of\ Deadlocks/sec\ |\ _Total\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530412312 -> Number\ of\ Deadlocks/sec\ |\ AllocUnit\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530423812 -> Number\ of\ Deadlocks/sec\ |\ Application\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530435413 -> Number\ of\ Deadlocks/sec\ |\ Database\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530476714 -> Number\ of\ Deadlocks/sec\ |\ Extent\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530488814 -> Number\ of\ Deadlocks/sec\ |\ File\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530500114 -> Number\ of\ Deadlocks/sec\ |\ HoBT\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530510415 -> Number\ of\ Deadlocks/sec\ |\ Key\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530524215 -> Number\ of\ Deadlocks/sec\ |\ Metadata\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530547416 -> Number\ of\ Deadlocks/sec\ |\ Object\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530558916 -> Number\ of\ Deadlocks/sec\ |\ OIB\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530570416 -> Number\ of\ Deadlocks/sec\ |\ Page\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530580716 -> Number\ of\ Deadlocks/sec\ |\ RID\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530592117 -> Number\ of\ Deadlocks/sec\ |\ RowGroup\ |\ Locks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530623618 -> Internal\ benefit\ |\ Buffer\ Pool\ |\ Memory\ Broker\ Clerks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530634618 -> Internal\ benefit\ |\ Column\ store\ object\ pool\ |\ Memory\ Broker\ Clerks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530646418 -> Memory\ broker\ clerk\ size\ |\ Buffer\ Pool\ |\ Memory\ Broker\ Clerks,servername=WIN8-DEV,type=Performance\ counters value=12217i 1453876412530662619 -> Memory\ broker\ clerk\ size\ |\ Column\ store\ object\ pool\ |\ Memory\ Broker\ Clerks,servername=WIN8-DEV,type=Performance\ counters value=4i 1453876412530674519 -> Periodic\ evictions\ (pages)\ |\ Buffer\ Pool\ |\ Memory\ Broker\ Clerks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530700020 -> Periodic\ evictions\ (pages)\ |\ Column\ store\ object\ pool\ |\ Memory\ Broker\ Clerks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530711120 -> Pressure\ evictions\ (pages/sec)\ |\ Buffer\ Pool\ |\ Memory\ Broker\ Clerks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530722720 -> Pressure\ evictions\ (pages/sec)\ |\ Column\ store\ object\ pool\ |\ Memory\ Broker\ Clerks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530735621 -> Simulation\ benefit\ |\ Buffer\ Pool\ |\ Memory\ Broker\ Clerks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530747421 -> Simulation\ benefit\ |\ Column\ store\ object\ pool\ |\ Memory\ Broker\ Clerks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530773322 -> Simulation\ size\ |\ Buffer\ Pool\ |\ Memory\ Broker\ Clerks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530784522 -> Simulation\ size\ |\ Column\ store\ object\ pool\ |\ Memory\ Broker\ Clerks,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530796322 -> Connection\ Memory\ (KB)\ |\ Memory\ Manager,servername=WIN8-DEV,type=Performance\ counters value=1416i 1453876412530807022 -> Database\ Cache\ Memory\ (KB)\ |\ Memory\ Manager,servername=WIN8-DEV,type=Performance\ counters value=97736i 1453876412530818623 -> External\ benefit\ of\ memory\ |\ Memory\ Manager,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530855524 -> Free\ Memory\ (KB)\ |\ Memory\ Manager,servername=WIN8-DEV,type=Performance\ counters value=14080i 1453876412530867224 -> Granted\ Workspace\ Memory\ (KB)\ |\ Memory\ Manager,servername=WIN8-DEV,type=Performance\ counters value=1024i 1453876412530881024 -> Lock\ Blocks\ |\ Memory\ Manager,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530892625 -> Lock\ Blocks\ Allocated\ |\ Memory\ Manager,servername=WIN8-DEV,type=Performance\ counters value=3050i 1453876412530915725 -> Lock\ Memory\ (KB)\ |\ Memory\ Manager,servername=WIN8-DEV,type=Performance\ counters value=768i 1453876412530967127 -> Lock\ Owner\ Blocks\ |\ Memory\ Manager,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412530983227 -> Lock\ Owner\ Blocks\ Allocated\ |\ Memory\ Manager,servername=WIN8-DEV,type=Performance\ counters value=5550i 1453876412530997627 -> Log\ Pool\ Memory\ (KB)\ |\ Memory\ Manager,servername=WIN8-DEV,type=Performance\ counters value=1552i 1453876412531013928 -> Maximum\ Workspace\ Memory\ (KB)\ |\ Memory\ Manager,servername=WIN8-DEV,type=Performance\ counters value=1041480i 1453876412531026628 -> Memory\ Grants\ Outstanding\ |\ Memory\ Manager,servername=WIN8-DEV,type=Performance\ counters value=1i 1453876412531059429 -> Memory\ Grants\ Pending\ |\ Memory\ Manager,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412531070729 -> Optimizer\ Memory\ (KB)\ |\ Memory\ Manager,servername=WIN8-DEV,type=Performance\ counters value=21264i 1453876412531082430 -> Reserved\ Server\ Memory\ (KB)\ |\ Memory\ Manager,servername=WIN8-DEV,type=Performance\ counters value=1016i 1453876412531092830 -> SQL\ Cache\ Memory\ (KB)\ |\ Memory\ Manager,servername=WIN8-DEV,type=Performance\ counters value=2072i 1453876412531128431 -> Stolen\ Server\ Memory\ (KB)\ |\ Memory\ Manager,servername=WIN8-DEV,type=Performance\ counters value=314424i 1453876412531155632 -> Target\ Server\ Memory\ (KB)\ |\ Memory\ Manager,servername=WIN8-DEV,type=Performance\ counters value=1536000i 1453876412531166632 -> Total\ Server\ Memory\ (KB)\ |\ Memory\ Manager,servername=WIN8-DEV,type=Performance\ counters value=426240i 1453876412531178132 -> Database\ Node\ Memory\ (KB)\ |\ 000\ |\ Memory\ Node,servername=WIN8-DEV,type=Performance\ counters value=97736i 1453876412531190433 -> Foreign\ Node\ Memory\ (KB)\ |\ 000\ |\ Memory\ Node,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412531202033 -> Free\ Node\ Memory\ (KB)\ |\ 000\ |\ Memory\ Node,servername=WIN8-DEV,type=Performance\ counters value=14072i 1453876412531225434 -> Stolen\ Node\ Memory\ (KB)\ |\ 000\ |\ Memory\ Node,servername=WIN8-DEV,type=Performance\ counters value=314408i 1453876412531237434 -> Target\ Node\ Memory\ (KB)\ |\ 000\ |\ Memory\ Node,servername=WIN8-DEV,type=Performance\ counters value=1535976i 1453876412531249334 -> Total\ Node\ Memory\ (KB)\ |\ 000\ |\ Memory\ Node,servername=WIN8-DEV,type=Performance\ counters value=426216i 1453876412531262634 -> Cache\ Hit\ Ratio\ |\ _Total\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=1i 1453876412531274235 -> Cache\ Hit\ Ratio\ |\ Bound\ Trees\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=1i 1453876412531302236 -> Cache\ Hit\ Ratio\ |\ Extended\ Stored\ Procedures\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=1i 1453876412531313536 -> Cache\ Hit\ Ratio\ |\ Object\ Plans\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=1i 1453876412531326736 -> Cache\ Hit\ Ratio\ |\ SQL\ Plans\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=1i 1453876412531337436 -> Cache\ Hit\ Ratio\ |\ Temporary\ Tables\ &\ Table\ Variables\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412531349137 -> Cache\ Hit\ Ratio\ Base\ |\ _Total\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=-436i 1453876412531393738 -> Cache\ Hit\ Ratio\ Base\ |\ Bound\ Trees\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=-449i 1453876412531406038 -> Cache\ Hit\ Ratio\ Base\ |\ Extended\ Stored\ Procedures\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=5i 1453876412531418039 -> Cache\ Hit\ Ratio\ Base\ |\ Object\ Plans\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412531428839 -> Cache\ Hit\ Ratio\ Base\ |\ SQL\ Plans\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=8i 1453876412531443539 -> Cache\ Hit\ Ratio\ Base\ |\ Temporary\ Tables\ &\ Table\ Variables\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412531488941 -> Cache\ Object\ Counts\ |\ _Total\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=369i 1453876412531508441 -> Cache\ Object\ Counts\ |\ Bound\ Trees\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=98i 1453876412531521041 -> Cache\ Object\ Counts\ |\ Extended\ Stored\ Procedures\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=9i 1453876412531531942 -> Cache\ Object\ Counts\ |\ Object\ Plans\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=38i 1453876412531543742 -> Cache\ Object\ Counts\ |\ SQL\ Plans\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=207i 1453876412531572243 -> Cache\ Object\ Counts\ |\ Temporary\ Tables\ &\ Table\ Variables\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=17i 1453876412531584843 -> Cache\ Objects\ in\ use\ |\ _Total\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=3i 1453876412531597943 -> Cache\ Objects\ in\ use\ |\ Bound\ Trees\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412531608644 -> Cache\ Objects\ in\ use\ |\ Extended\ Stored\ Procedures\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412531620444 -> Cache\ Objects\ in\ use\ |\ Object\ Plans\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412531644845 -> Cache\ Objects\ in\ use\ |\ SQL\ Plans\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=3i 1453876412531658345 -> Cache\ Objects\ in\ use\ |\ Temporary\ Tables\ &\ Table\ Variables\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412531673945 -> Cache\ Pages\ |\ _Total\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=18687i 1453876412531685046 -> Cache\ Pages\ |\ Bound\ Trees\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=1104i 1453876412531700446 -> Cache\ Pages\ |\ Extended\ Stored\ Procedures\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=11i 1453876412531724847 -> Cache\ Pages\ |\ Object\ Plans\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=2918i 1453876412531735747 -> Cache\ Pages\ |\ SQL\ Plans\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=14650i 1453876412531747447 -> Cache\ Pages\ |\ Temporary\ Tables\ &\ Table\ Variables\ |\ Plan\ Cache,servername=WIN8-DEV,type=Performance\ counters value=4i 1453876412531757948 -> Active\ memory\ grant\ amount\ (KB)\ |\ default\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412531769848 -> Active\ memory\ grant\ amount\ (KB)\ |\ internal\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412531798249 -> Active\ memory\ grants\ count\ |\ default\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412531809749 -> Active\ memory\ grants\ count\ |\ internal\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412531821449 -> Avg\ Disk\ Read\ IO\ (ms)\ |\ default\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412531832350 -> Avg\ Disk\ Read\ IO\ (ms)\ |\ internal\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412531846150 -> Avg\ Disk\ Read\ IO\ (ms)\ Base\ |\ default\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412531889551 -> Avg\ Disk\ Read\ IO\ (ms)\ Base\ |\ internal\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412531902551 -> Avg\ Disk\ Write\ IO\ (ms)\ |\ default\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412531931052 -> Avg\ Disk\ Write\ IO\ (ms)\ |\ internal\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412531942553 -> Avg\ Disk\ Write\ IO\ (ms)\ Base\ |\ default\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412531954453 -> Avg\ Disk\ Write\ IO\ (ms)\ Base\ |\ internal\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412531982654 -> Cache\ memory\ target\ (KB)\ |\ default\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=1231200i 1453876412531994254 -> Cache\ memory\ target\ (KB)\ |\ internal\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=1122336i 1453876412532007754 -> Compile\ memory\ target\ (KB)\ |\ default\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=1171672i 1453876412532018455 -> Compile\ memory\ target\ (KB)\ |\ internal\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=1173240i 1453876412532030155 -> CPU\ control\ effect\ %\ |\ default\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=31i 1453876412532054056 -> CPU\ control\ effect\ %\ |\ internal\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532065056 -> CPU\ usage\ %\ |\ default\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532076556 -> CPU\ usage\ %\ |\ internal\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532091256 -> CPU\ usage\ %\ base\ |\ default\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532122657 -> CPU\ usage\ %\ base\ |\ internal\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532153158 -> CPU\ usage\ target\ %\ |\ default\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=56i 1453876412532164558 -> CPU\ usage\ target\ %\ |\ internal\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532176059 -> Disk\ Read\ Bytes/sec\ |\ default\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532188659 -> Disk\ Read\ Bytes/sec\ |\ internal\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532200459 -> Disk\ Read\ IO\ Throttled/sec\ |\ default\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532224560 -> Disk\ Read\ IO\ Throttled/sec\ |\ internal\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532235560 -> Disk\ Read\ IO/sec\ |\ default\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532252661 -> Disk\ Read\ IO/sec\ |\ internal\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532263461 -> Disk\ Write\ Bytes/sec\ |\ default\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532275061 -> Disk\ Write\ Bytes/sec\ |\ internal\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532312762 -> Disk\ Write\ IO\ Throttled/sec\ |\ default\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532324463 -> Disk\ Write\ IO\ Throttled/sec\ |\ internal\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532336363 -> Disk\ Write\ IO/sec\ |\ default\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532348863 -> Disk\ Write\ IO/sec\ |\ internal\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532361464 -> Max\ memory\ (KB)\ |\ default\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=1459200i 1453876412532387564 -> Max\ memory\ (KB)\ |\ internal\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=1459200i 1453876412532398765 -> Memory\ grant\ timeouts/sec\ |\ default\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532410465 -> Memory\ grant\ timeouts/sec\ |\ internal\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532421265 -> Memory\ grants/sec\ |\ default\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=16i 1453876412532436666 -> Memory\ grants/sec\ |\ internal\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532461866 -> Pending\ memory\ grants\ count\ |\ default\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532472567 -> Pending\ memory\ grants\ count\ |\ internal\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532484667 -> Query\ exec\ memory\ target\ (KB)\ |\ default\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=1041480i 1453876412532498167 -> Query\ exec\ memory\ target\ (KB)\ |\ internal\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=1039560i 1453876412532510168 -> Target\ memory\ (KB)\ |\ default\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=1459200i 1453876412532534968 -> Target\ memory\ (KB)\ |\ internal\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=1459200i 1453876412532546269 -> Used\ memory\ (KB)\ |\ default\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=189552i 1453876412532557769 -> Used\ memory\ (KB)\ |\ internal\ |\ Resource\ Pool\ Stats,servername=WIN8-DEV,type=Performance\ counters value=125856i 1453876412532569269 -> Errors/sec\ |\ _Total\ |\ SQL\ Errors,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532580769 -> Errors/sec\ |\ DB\ Offline\ Errors\ |\ SQL\ Errors,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532610970 -> Errors/sec\ |\ Info\ Errors\ |\ SQL\ Errors,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532622271 -> Errors/sec\ |\ Kill\ Connection\ Errors\ |\ SQL\ Errors,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532633671 -> Errors/sec\ |\ User\ Errors\ |\ SQL\ Errors,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532644371 -> Auto-Param\ Attempts/sec\ |\ SQL\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532655671 -> Batch\ Requests/sec\ |\ SQL\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=3i 1453876412532684772 -> Failed\ Auto-Params/sec\ |\ SQL\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532696073 -> Forced\ Parameterizations/sec\ |\ SQL\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532707573 -> Guided\ plan\ executions/sec\ |\ SQL\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532717873 -> Misguided\ plan\ executions/sec\ |\ SQL\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532729073 -> Safe\ Auto-Params/sec\ |\ SQL\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532764674 -> SQL\ Attention\ rate\ |\ SQL\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532776175 -> SQL\ Compilations/sec\ |\ SQL\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=32i 1453876412532788575 -> SQL\ Re-Compilations/sec\ |\ SQL\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=12i 1453876412532798875 -> Unsafe\ Auto-Params/sec\ |\ SQL\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532809976 -> Free\ Space\ in\ tempdb\ (KB)\ |\ Transactions,servername=WIN8-DEV,type=Performance\ counters value=1044992i 1453876412532834776 -> Longest\ Transaction\ Running\ Time\ |\ Transactions,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532846077 -> NonSnapshot\ Version\ Transactions\ |\ Transactions,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532857377 -> Snapshot\ Transactions\ |\ Transactions,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532868977 -> Transactions\ |\ Transactions,servername=WIN8-DEV,type=Performance\ counters value=14i 1453876412532883178 -> Update\ conflict\ ratio\ |\ Transactions,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532925579 -> Update\ conflict\ ratio\ base\ |\ Transactions,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532939679 -> Update\ Snapshot\ Transactions\ |\ Transactions,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532951879 -> Version\ Cleanup\ rate\ (KB/s)\ |\ Transactions,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532962180 -> Version\ Generation\ rate\ (KB/s)\ |\ Transactions,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532976080 -> Version\ Store\ Size\ (KB)\ |\ Transactions,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412532999681 -> Version\ Store\ unit\ count\ |\ Transactions,servername=WIN8-DEV,type=Performance\ counters value=2i 1453876412533011581 -> Version\ Store\ unit\ creation\ |\ Transactions,servername=WIN8-DEV,type=Performance\ counters value=12i 1453876412533023081 -> Version\ Store\ unit\ truncation\ |\ Transactions,servername=WIN8-DEV,type=Performance\ counters value=10i 1453876412533033482 -> Query\ |\ User\ counter\ 1\ |\ User\ Settable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533044782 -> Query\ |\ User\ counter\ 10\ |\ User\ Settable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533068482 -> Query\ |\ User\ counter\ 2\ |\ User\ Settable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533079683 -> Query\ |\ User\ counter\ 3\ |\ User\ Settable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533090983 -> Query\ |\ User\ counter\ 4\ |\ User\ Settable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533104283 -> Query\ |\ User\ counter\ 5\ |\ User\ Settable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533119384 -> Query\ |\ User\ counter\ 6\ |\ User\ Settable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533143584 -> Query\ |\ User\ counter\ 7\ |\ User\ Settable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533154485 -> Query\ |\ User\ counter\ 8\ |\ User\ Settable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533165885 -> Query\ |\ User\ counter\ 9\ |\ User\ Settable,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533176285 -> Lock\ waits\ |\ Average\ wait\ time\ (ms)\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533188986 -> Lock\ waits\ |\ Cumulative\ wait\ time\ (ms)\ per\ second\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533231087 -> Lock\ waits\ |\ Waits\ in\ progress\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533243487 -> Lock\ waits\ |\ Waits\ started\ per\ second\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533260588 -> Log\ buffer\ waits\ |\ Average\ wait\ time\ (ms)\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533273688 -> Log\ buffer\ waits\ |\ Cumulative\ wait\ time\ (ms)\ per\ second\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533288388 -> Log\ buffer\ waits\ |\ Waits\ in\ progress\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533316189 -> Log\ buffer\ waits\ |\ Waits\ started\ per\ second\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533327689 -> Log\ write\ waits\ |\ Average\ wait\ time\ (ms)\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533339290 -> Log\ write\ waits\ |\ Cumulative\ wait\ time\ (ms)\ per\ second\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533349990 -> Log\ write\ waits\ |\ Waits\ in\ progress\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533361690 -> Log\ write\ waits\ |\ Waits\ started\ per\ second\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533388291 -> Memory\ grant\ queue\ waits\ |\ Average\ wait\ time\ (ms)\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533402291 -> Memory\ grant\ queue\ waits\ |\ Cumulative\ wait\ time\ (ms)\ per\ second\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533415792 -> Memory\ grant\ queue\ waits\ |\ Waits\ in\ progress\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533426892 -> Memory\ grant\ queue\ waits\ |\ Waits\ started\ per\ second\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533438392 -> Network\ IO\ waits\ |\ Average\ wait\ time\ (ms)\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533463393 -> Network\ IO\ waits\ |\ Cumulative\ wait\ time\ (ms)\ per\ second\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533474493 -> Network\ IO\ waits\ |\ Waits\ in\ progress\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533486194 -> Network\ IO\ waits\ |\ Waits\ started\ per\ second\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533496594 -> Non-Page\ latch\ waits\ |\ Average\ wait\ time\ (ms)\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533511394 -> Non-Page\ latch\ waits\ |\ Cumulative\ wait\ time\ (ms)\ per\ second\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533536695 -> Non-Page\ latch\ waits\ |\ Waits\ in\ progress\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533547895 -> Non-Page\ latch\ waits\ |\ Waits\ started\ per\ second\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533561496 -> Page\ IO\ latch\ waits\ |\ Average\ wait\ time\ (ms)\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533572096 -> Page\ IO\ latch\ waits\ |\ Cumulative\ wait\ time\ (ms)\ per\ second\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533583896 -> Page\ IO\ latch\ waits\ |\ Waits\ in\ progress\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533629397 -> Page\ IO\ latch\ waits\ |\ Waits\ started\ per\ second\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533641398 -> Page\ latch\ waits\ |\ Average\ wait\ time\ (ms)\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533653298 -> Page\ latch\ waits\ |\ Cumulative\ wait\ time\ (ms)\ per\ second\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533663798 -> Page\ latch\ waits\ |\ Waits\ in\ progress\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533675899 -> Page\ latch\ waits\ |\ Waits\ started\ per\ second\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533705599 -> Thread-safe\ memory\ objects\ waits\ |\ Average\ wait\ time\ (ms)\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533716800 -> Thread-safe\ memory\ objects\ waits\ |\ Cumulative\ wait\ time\ (ms)\ per\ second\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533728700 -> Thread-safe\ memory\ objects\ waits\ |\ Waits\ in\ progress\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533739700 -> Thread-safe\ memory\ objects\ waits\ |\ Waits\ started\ per\ second\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533751501 -> Transaction\ ownership\ waits\ |\ Average\ wait\ time\ (ms)\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533778501 -> Transaction\ ownership\ waits\ |\ Cumulative\ wait\ time\ (ms)\ per\ second\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533801602 -> Transaction\ ownership\ waits\ |\ Waits\ in\ progress\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533818402 -> Transaction\ ownership\ waits\ |\ Waits\ started\ per\ second\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533829403 -> Wait\ for\ the\ worker\ |\ Average\ wait\ time\ (ms)\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533841103 -> Wait\ for\ the\ worker\ |\ Cumulative\ wait\ time\ (ms)\ per\ second\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533868204 -> Wait\ for\ the\ worker\ |\ Waits\ in\ progress\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533879704 -> Wait\ for\ the\ worker\ |\ Waits\ started\ per\ second\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533891604 -> Workspace\ synchronization\ waits\ |\ Average\ wait\ time\ (ms)\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533902305 -> Workspace\ synchronization\ waits\ |\ Cumulative\ wait\ time\ (ms)\ per\ second\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533929505 -> Workspace\ synchronization\ waits\ |\ Waits\ in\ progress\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533976207 -> Workspace\ synchronization\ waits\ |\ Waits\ started\ per\ second\ |\ Wait\ Statistics,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412533988307 -> Active\ parallel\ threads\ |\ default\ |\ Workload\ Group\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534000107 -> Active\ parallel\ threads\ |\ internal\ |\ Workload\ Group\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534013008 -> Active\ requests\ |\ default\ |\ Workload\ Group\ Stats,servername=WIN8-DEV,type=Performance\ counters value=3i 1453876412534024608 -> Active\ requests\ |\ internal\ |\ Workload\ Group\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534049608 -> Blocked\ tasks\ |\ default\ |\ Workload\ Group\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534061609 -> Blocked\ tasks\ |\ internal\ |\ Workload\ Group\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534073209 -> CPU\ usage\ %\ |\ default\ |\ Workload\ Group\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534083709 -> CPU\ usage\ %\ |\ internal\ |\ Workload\ Group\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534095410 -> CPU\ usage\ %\ base\ |\ default\ |\ Workload\ Group\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534134711 -> CPU\ usage\ %\ base\ |\ internal\ |\ Workload\ Group\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534148011 -> Max\ request\ cpu\ time\ (ms)\ |\ default\ |\ Workload\ Group\ Stats,servername=WIN8-DEV,type=Performance\ counters value=731i 1453876412534160011 -> Max\ request\ cpu\ time\ (ms)\ |\ internal\ |\ Workload\ Group\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534170612 -> Max\ request\ memory\ grant\ (KB)\ |\ default\ |\ Workload\ Group\ Stats,servername=WIN8-DEV,type=Performance\ counters value=11056i 1453876412534183912 -> Max\ request\ memory\ grant\ (KB)\ |\ internal\ |\ Workload\ Group\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534208113 -> Query\ optimizations/sec\ |\ default\ |\ Workload\ Group\ Stats,servername=WIN8-DEV,type=Performance\ counters value=30i 1453876412534219313 -> Query\ optimizations/sec\ |\ internal\ |\ Workload\ Group\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534232113 -> Queued\ requests\ |\ default\ |\ Workload\ Group\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534242914 -> Queued\ requests\ |\ internal\ |\ Workload\ Group\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534254514 -> Reduced\ memory\ grants/sec\ |\ default\ |\ Workload\ Group\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534284615 -> Reduced\ memory\ grants/sec\ |\ internal\ |\ Workload\ Group\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534296215 -> Requests\ completed/sec\ |\ default\ |\ Workload\ Group\ Stats,servername=WIN8-DEV,type=Performance\ counters value=7i 1453876412534307715 -> Requests\ completed/sec\ |\ internal\ |\ Workload\ Group\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534323716 -> Suboptimal\ plans/sec\ |\ default\ |\ Workload\ Group\ Stats,servername=WIN8-DEV,type=Performance\ counters value=4i 1453876412534335316 -> Suboptimal\ plans/sec\ |\ internal\ |\ Workload\ Group\ Stats,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534374117 -> Cursor\ deletes/sec\ |\ MSSQLSERVER\ |\ XTP\ Cursors,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534385817 -> Cursor\ inserts/sec\ |\ MSSQLSERVER\ |\ XTP\ Cursors,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534397818 -> Cursor\ scans\ started/sec\ |\ MSSQLSERVER\ |\ XTP\ Cursors,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534408518 -> Cursor\ unique\ violations/sec\ |\ MSSQLSERVER\ |\ XTP\ Cursors,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534420118 -> Cursor\ updates/sec\ |\ MSSQLSERVER\ |\ XTP\ Cursors,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534445819 -> Cursor\ write\ conflicts/sec\ |\ MSSQLSERVER\ |\ XTP\ Cursors,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534457119 -> Dusty\ corner\ scan\ retries/sec\ (user-issued)\ |\ MSSQLSERVER\ |\ XTP\ Cursors,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534468620 -> Expired\ rows\ removed/sec\ |\ MSSQLSERVER\ |\ XTP\ Cursors,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534482420 -> Expired\ rows\ touched/sec\ |\ MSSQLSERVER\ |\ XTP\ Cursors,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534494220 -> Rows\ returned/sec\ |\ MSSQLSERVER\ |\ XTP\ Cursors,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534521721 -> Rows\ touched/sec\ |\ MSSQLSERVER\ |\ XTP\ Cursors,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534532821 -> Tentatively-deleted\ rows\ touched/sec\ |\ MSSQLSERVER\ |\ XTP\ Cursors,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534544222 -> Dusty\ corner\ scan\ retries/sec\ (GC-issued)\ |\ MSSQLSERVER\ |\ XTP\ Garbage\ Collection,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534556122 -> Main\ GC\ work\ items/sec\ |\ MSSQLSERVER\ |\ XTP\ Garbage\ Collection,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534569422 -> Parallel\ GC\ work\ item/sec\ |\ MSSQLSERVER\ |\ XTP\ Garbage\ Collection,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534597823 -> Rows\ processed/sec\ |\ MSSQLSERVER\ |\ XTP\ Garbage\ Collection,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534608923 -> Rows\ processed/sec\ (first\ in\ bucket\ and\ removed)\ |\ MSSQLSERVER\ |\ XTP\ Garbage\ Collection,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534620624 -> Rows\ processed/sec\ (first\ in\ bucket)\ |\ MSSQLSERVER\ |\ XTP\ Garbage\ Collection,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534631824 -> Rows\ processed/sec\ (marked\ for\ unlink)\ |\ MSSQLSERVER\ |\ XTP\ Garbage\ Collection,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534643624 -> Rows\ processed/sec\ (no\ sweep\ needed)\ |\ MSSQLSERVER\ |\ XTP\ Garbage\ Collection,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534673825 -> Sweep\ expired\ rows\ removed/sec\ |\ MSSQLSERVER\ |\ XTP\ Garbage\ Collection,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534687525 -> Sweep\ expired\ rows\ touched/sec\ |\ MSSQLSERVER\ |\ XTP\ Garbage\ Collection,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534699526 -> Sweep\ expiring\ rows\ touched/sec\ |\ MSSQLSERVER\ |\ XTP\ Garbage\ Collection,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534714626 -> Sweep\ rows\ touched/sec\ |\ MSSQLSERVER\ |\ XTP\ Garbage\ Collection,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534727026 -> Sweep\ scans\ started/sec\ |\ MSSQLSERVER\ |\ XTP\ Garbage\ Collection,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534765628 -> Dusty\ corner\ scan\ retries/sec\ (Phantom-issued)\ |\ MSSQLSERVER\ |\ XTP\ Phantom\ Processor,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534777328 -> Phantom\ expired\ rows\ removed/sec\ |\ MSSQLSERVER\ |\ XTP\ Phantom\ Processor,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534789428 -> Phantom\ expired\ rows\ touched/sec\ |\ MSSQLSERVER\ |\ XTP\ Phantom\ Processor,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534800128 -> Phantom\ expiring\ rows\ touched/sec\ |\ MSSQLSERVER\ |\ XTP\ Phantom\ Processor,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534811529 -> Phantom\ rows\ touched/sec\ |\ MSSQLSERVER\ |\ XTP\ Phantom\ Processor,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534835629 -> Phantom\ scans\ started/sec\ |\ MSSQLSERVER\ |\ XTP\ Phantom\ Processor,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534846630 -> Checkpoints\ Closed\ |\ MSSQLSERVER\ |\ XTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534858230 -> Checkpoints\ Completed\ |\ MSSQLSERVER\ |\ XTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534869630 -> Core\ Merges\ Completed\ |\ MSSQLSERVER\ |\ XTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534881131 -> Merge\ Policy\ Evaluations\ |\ MSSQLSERVER\ |\ XTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534919832 -> Merge\ Requests\ Outstanding\ |\ MSSQLSERVER\ |\ XTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534934132 -> Merges\ Abandoned\ |\ MSSQLSERVER\ |\ XTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534946332 -> Merges\ Installed\ |\ MSSQLSERVER\ |\ XTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534959133 -> Total\ Files\ Merged\ |\ MSSQLSERVER\ |\ XTP\ Storage,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412534970533 -> Log\ bytes\ written/sec\ |\ MSSQLSERVER\ |\ XTP\ Transaction\ Log,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412535001434 -> Log\ records\ written/sec\ |\ MSSQLSERVER\ |\ XTP\ Transaction\ Log,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412535014034 -> Cascading\ aborts/sec\ |\ MSSQLSERVER\ |\ XTP\ Transactions,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412535025934 -> Commit\ dependencies\ taken/sec\ |\ MSSQLSERVER\ |\ XTP\ Transactions,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412535036635 -> Read-only\ transactions\ prepared/sec\ |\ MSSQLSERVER\ |\ XTP\ Transactions,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412535051635 -> Save\ point\ refreshes/sec\ |\ MSSQLSERVER\ |\ XTP\ Transactions,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412535076736 -> Save\ point\ rollbacks/sec\ |\ MSSQLSERVER\ |\ XTP\ Transactions,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412535088536 -> Save\ points\ created/sec\ |\ MSSQLSERVER\ |\ XTP\ Transactions,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412535102536 -> Transaction\ validation\ failures/sec\ |\ MSSQLSERVER\ |\ XTP\ Transactions,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412535116437 -> Transactions\ aborted\ by\ user/sec\ |\ MSSQLSERVER\ |\ XTP\ Transactions,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412535128337 -> Transactions\ aborted/sec\ |\ MSSQLSERVER\ |\ XTP\ Transactions,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412535146038 -> Transactions\ created/sec\ |\ MSSQLSERVER\ |\ XTP\ Transactions,servername=WIN8-DEV,type=Performance\ counters value=0i 1453876412535159838 -> Wait\ time\ (ms),servername=WIN8-DEV,type=Wait\ stats Buffer=0i,CLR=0i,I/O=0i,Latch=13i,Lock=0i,Memory=0i,Network=0i,Other=98i,SQLOS=115i,Service\ broker=0i,Total=226i,XEvent=0i 1453876416521666190 -> Wait\ tasks,servername=WIN8-DEV,type=Wait\ stats Buffer=0i,CLR=0i,I/O=0i,Latch=22i,Lock=0i,Memory=0i,Network=0i,Other=30i,SQLOS=80i,Service\ broker=0i,Total=132i,XEvent=0i 1453876416521726692 -> Log\ writes\ (bytes/sec),servername=WIN8-DEV,type=Database\ IO AdventureWorks2014=0i,Australian=0i,DOC.Azure=0i,ResumeCloud=0i,Total=86835i,master=0i,model=0i,msdb=0i,ngMon=0i,tempdb=86835i 1453876416602799144 -> Rows\ writes\ (bytes/sec),servername=WIN8-DEV,type=Database\ IO AdventureWorks2014=0i,Australian=0i,DOC.Azure=0i,ResumeCloud=0i,Total=0i,master=0i,model=0i,msdb=0i,ngMon=0i,tempdb=0i 1453876416602853046 -> Log\ reads\ (bytes/sec),servername=WIN8-DEV,type=Database\ IO AdventureWorks2014=0i,Australian=0i,DOC.Azure=0i,ResumeCloud=0i,Total=0i,master=0i,model=0i,msdb=0i,ngMon=0i,tempdb=0i 1453876416602897047 -> Rows\ reads\ (bytes/sec),servername=WIN8-DEV,type=Database\ IO AdventureWorks2014=0i,Australian=0i,DOC.Azure=0i,ResumeCloud=0i,Total=6553i,master=0i,model=0i,msdb=0i,ngMon=0i,tempdb=6553i 1453876416602943248 -> Log\ (writes/sec),servername=WIN8-DEV,type=Database\ IO AdventureWorks2014=0i,Australian=0i,DOC.Azure=0i,ResumeCloud=0i,Total=1i,master=0i,model=0i,msdb=0i,ngMon=0i,tempdb=1i 1453876416602969849 -> Rows\ (writes/sec),servername=WIN8-DEV,type=Database\ IO AdventureWorks2014=0i,Australian=0i,DOC.Azure=0i,ResumeCloud=0i,Total=0i,master=0i,model=0i,msdb=0i,ngMon=0i,tempdb=0i 1453876416602993950 -> Log\ (reads/sec),servername=WIN8-DEV,type=Database\ IO AdventureWorks2014=0i,Australian=0i,DOC.Azure=0i,ResumeCloud=0i,Total=0i,master=0i,model=0i,msdb=0i,ngMon=0i,tempdb=0i 1453876416603018350 -> Rows\ (reads/sec),servername=WIN8-DEV,type=Database\ IO AdventureWorks2014=0i,Australian=0i,DOC.Azure=0i,ResumeCloud=0i,Total=0i,master=0i,model=0i,msdb=0i,ngMon=0i,tempdb=0i 1453876416603047751 -``` +### Metrics: +To provide backwards compatibility, this plugin support two versions of metrics queries. + +**Note**: Version 2 queries are not backwards compatible with the old queries. Any dashboards or queries based on the old query format will not work with the new format. The version 2 queries are written in such a way as to only gather SQL specific metrics (no disk space or overall CPU related metrics) and they only report raw metrics, no math has been done to calculate deltas. To graph this data you must calculate deltas in your dashboarding software. + +#### Version 1 (deprecated in 1.6): +The original metrics queries provide: +- *Performance counters*: 1000+ metrics from `sys.dm_os_performance_counters` +- *Performance metrics*: special performance and ratio metrics +- *Wait stats*: wait tasks categorized from `sys.dm_os_wait_stats` +- *Memory clerk*: memory breakdown from `sys.dm_os_memory_clerks` +- *Database size*: databases size trend from `sys.dm_io_virtual_file_stats` +- *Database IO*: databases I/O from `sys.dm_io_virtual_file_stats` +- *Database latency*: databases latency from `sys.dm_io_virtual_file_stats` +- *Database properties*: databases properties, state and recovery model, from `sys.databases` +- *OS Volume*: available, used and total space from `sys.dm_os_volume_stats` +- *CPU*: cpu usage from `sys.dm_os_ring_buffers` + +If you are using the original queries all stats have the following tags: +- `servername`: hostname:instance +- `type`: type of stats to easily filter measurements + +#### Version 2: +The new (version 2) metrics provide: +- *AzureDB*: AzureDB resource utilization from `sys.dm_db_resource_stats` +- *Database IO*: IO stats from `sys.dm_io_virtual_file_stats` +- *Memory Clerk*: Memory clerk breakdown from `sys.dm_os_memory_clerks`, most clerks have been given a friendly name. +- *Performance Counters*: A select list of performance counters from `sys.dm_os_performance_counters`. Some of the important metrics included: + - *Activity*: Transactions/sec/database, Batch requests/sec, blocked processes, + more + - *Availability Groups*: Bytes sent to replica, Bytes received from replica, Log bytes received, Log send queue, transaction delay, + more + - *Log activity*: Log bytes flushed/sec, Log flushes/sec, Log Flush Wait Time + - *Memory*: PLE, Page reads/sec, Page writes/sec, + more + - *TempDB*: Free space, Version store usage, Active temp tables, temp table creation rate, + more + - *Resource Governor*: CPU Usage, Requests/sec, Queued Requests, and Blocked tasks per workload group + more +- *Server properties*: Number of databases in all possible states (online, offline, suspect, etc.), cpu count, physical memory, SQL Server service uptime, and SQL Server version +- *Wait stats*: Wait time in ms, number of waiting tasks, resource wait time, signal wait time, max wait time in ms, wait type, and wait category. The waits are categorized using the sasme categories used in Query Store. + +The following metrics can be used directly, with no delta calculations: + - SQLServer:Buffer Manager\Buffer cache hit ratio + - SQLServer:Buffer Manager\Page life expectancy + - SQLServer:Buffer Node\Page life expectancy + - SQLServer:Database Replica\Log Apply Pending Queue + - SQLServer:Database Replica\Log Apply Ready Queue + - SQLServer:Database Replica\Log Send Queue + - SQLServer:Database Replica\Recovery Queue + - SQLServer:Databases\Data File(s) Size (KB) + - SQLServer:Databases\Log File(s) Size (KB) + - SQLServer:Databases\Log File(s) Used Size (KB) + - SQLServer:Databases\XTP Memory Used (KB) + - SQLServer:General Statistics\Active Temp Tables + - SQLServer:General Statistics\Processes blocked + - SQLServer:General Statistics\Temp Tables For Destruction + - SQLServer:General Statistics\User Connections + - SQLServer:Memory Broker Clerks\Memory broker clerk size + - SQLServer:Memory Manager\Memory Grants Pending + - SQLServer:Memory Manager\Target Server Memory (KB) + - SQLServer:Memory Manager\Total Server Memory (KB) + - SQLServer:Resource Pool Stats\Active memory grant amount (KB) + - SQLServer:Resource Pool Stats\Disk Read Bytes/sec + - SQLServer:Resource Pool Stats\Disk Read IO Throttled/sec + - SQLServer:Resource Pool Stats\Disk Read IO/sec + - SQLServer:Resource Pool Stats\Disk Write Bytes/sec + - SQLServer:Resource Pool Stats\Disk Write IO Throttled/sec + - SQLServer:Resource Pool Stats\Disk Write IO/sec + - SQLServer:Resource Pool Stats\Used memory (KB) + - SQLServer:Transactions\Free Space in tempdb (KB) + - SQLServer:Transactions\Version Store Size (KB) + - SQLServer:User Settable\Query + - SQLServer:Workload Group Stats\Blocked tasks + - SQLServer:Workload Group Stats\CPU usage % + - SQLServer:Workload Group Stats\Queued requests + - SQLServer:Workload Group Stats\Requests completed/sec + +Version 2 queries have the following tags: +- `host`: Physical host name +- `sql_instance`: Physical host and instance name (hostname:instance) diff --git a/plugins/inputs/sqlserver/sqlserver.go b/plugins/inputs/sqlserver/sqlserver.go index 49f36b2cf7aa4..e66d7972d2bca 100644 --- a/plugins/inputs/sqlserver/sqlserver.go +++ b/plugins/inputs/sqlserver/sqlserver.go @@ -14,7 +14,10 @@ import ( // SQLServer struct type SQLServer struct { - Servers []string + Servers []string `toml:"servers"` + QueryVersion int `toml:"query_version"` + AzureDB bool `toml:"azuredb"` + ExcludeQuery []string `toml:"exclude_query"` } // Query struct @@ -29,6 +32,9 @@ type MapQuery map[string]Query var queries MapQuery +// Initialized flag +var isInitialized = false + var defaultServer = "Server=.;app name=telegraf;log=1;" var sampleConfig = ` @@ -41,6 +47,28 @@ var sampleConfig = ` # servers = [ # "Server=192.168.1.10;Port=1433;User Id=;Password=;app name=telegraf;log=1;", # ] + + ## Optional parameter, setting this to 2 will use a new version + ## of the collection queries that break compatibility with the original + ## dashboards. + query_version = 2 + + ## If you are using AzureDB, setting this to true will gather resource utilization metrics + # azuredb = false + + ## If you would like to exclude some of the metrics queries, list them here + ## Possible choices: + ## - PerformanceCounters + ## - WaitStatsCategorized + ## - DatabaseIO + ## - DatabaseProperties + ## - CPUHistory + ## - DatabaseSize + ## - DatabaseStats + ## - MemoryClerk + ## - VolumeSpace + ## - PerformanceMetrics + # exclude_query = [ 'PerformanceCounters','WaitStatsCatagorized' ] ` // SampleConfig return the sample configuration @@ -57,23 +85,47 @@ type scanner interface { Scan(dest ...interface{}) error } -func initQueries() { +func initQueries(s *SQLServer) { queries = make(MapQuery) - queries["PerformanceCounters"] = Query{Script: sqlPerformanceCounters, ResultByRow: true} - queries["WaitStatsCategorized"] = Query{Script: sqlWaitStatsCategorized, ResultByRow: false} - queries["CPUHistory"] = Query{Script: sqlCPUHistory, ResultByRow: false} - queries["DatabaseIO"] = Query{Script: sqlDatabaseIO, ResultByRow: false} - queries["DatabaseSize"] = Query{Script: sqlDatabaseSize, ResultByRow: false} - queries["DatabaseStats"] = Query{Script: sqlDatabaseStats, ResultByRow: false} - queries["DatabaseProperties"] = Query{Script: sqlDatabaseProperties, ResultByRow: false} - queries["MemoryClerk"] = Query{Script: sqlMemoryClerk, ResultByRow: false} - queries["VolumeSpace"] = Query{Script: sqlVolumeSpace, ResultByRow: false} - queries["PerformanceMetrics"] = Query{Script: sqlPerformanceMetrics, ResultByRow: false} + + // If this is an AzureDB instance, grab some extra metrics + if s.AzureDB { + queries["AzureDB"] = Query{Script: sqlAzureDB, ResultByRow: true} + } + + // Decide if we want to run version 1 or version 2 queries + if s.QueryVersion == 2 { + queries["PerformanceCounters"] = Query{Script: sqlPerformanceCountersV2, ResultByRow: true} + queries["WaitStatsCategorized"] = Query{Script: sqlWaitStatsCategorizedV2, ResultByRow: false} + queries["DatabaseIO"] = Query{Script: sqlDatabaseIOV2, ResultByRow: false} + queries["ServerProperties"] = Query{Script: sqlServerPropertiesV2, ResultByRow: false} + queries["MemoryClerk"] = Query{Script: sqlMemoryClerkV2, ResultByRow: false} + } else { + queries["PerformanceCounters"] = Query{Script: sqlPerformanceCounters, ResultByRow: true} + queries["WaitStatsCategorized"] = Query{Script: sqlWaitStatsCategorized, ResultByRow: false} + queries["CPUHistory"] = Query{Script: sqlCPUHistory, ResultByRow: false} + queries["DatabaseIO"] = Query{Script: sqlDatabaseIO, ResultByRow: false} + queries["DatabaseSize"] = Query{Script: sqlDatabaseSize, ResultByRow: false} + queries["DatabaseStats"] = Query{Script: sqlDatabaseStats, ResultByRow: false} + queries["DatabaseProperties"] = Query{Script: sqlDatabaseProperties, ResultByRow: false} + queries["MemoryClerk"] = Query{Script: sqlMemoryClerk, ResultByRow: false} + queries["VolumeSpace"] = Query{Script: sqlVolumeSpace, ResultByRow: false} + queries["PerformanceMetrics"] = Query{Script: sqlPerformanceMetrics, ResultByRow: false} + } + + for _, query := range s.ExcludeQuery { + delete(queries, query) + } + + // Set a flag so we know that queries have already been initialized + isInitialized = true } // Gather collect data from SQL Server func (s *SQLServer) Gather(acc telegraf.Accumulator) error { - initQueries() + if !isInitialized { + initQueries(s) + } if len(s.Servers) == 0 { s.Servers = append(s.Servers, defaultServer) @@ -188,7 +240,887 @@ func init() { }) } -// queries +// Queries - V2 +// Thanks Bob Ward (http://aka.ms/bobwardms) +// and the folks at Stack Overflow (https://github.com/opserver/Opserver/blob/9c89c7e9936b58ad237b30e6f4cc6cd59c406889/Opserver.Core/Data/SQL/SQLInstance.Memory.cs) +// for putting most of the memory clerk definitions online! +const sqlMemoryClerkV2 = `SELECT +'sqlserver_memory_clerks' As [measurement], +REPLACE(@@SERVERNAME,'\',':') AS [sql_instance], +SERVERPROPERTY('ServerName') AS [host], +ISNULL(clerk_names.name,mc.type) AS clerk_type, +SUM(mc.pages_kb) AS size_kb +FROM +sys.dm_os_memory_clerks AS mc WITH (NOLOCK) +LEFT OUTER JOIN ( VALUES +('CACHESTORE_BROKERDSH','Service Broker Dialog Security Header Cache'), +('CACHESTORE_BROKERKEK','Service Broker Key Exchange Key Cache'), +('CACHESTORE_BROKERREADONLY','Service Broker (Read-Only)'), +('CACHESTORE_BROKERRSB','Service Broker Null Remote Service Binding Cache'), +('CACHESTORE_BROKERTBLACS','Broker dormant rowsets'), +('CACHESTORE_BROKERTO','Service Broker Transmission Object Cache'), +('CACHESTORE_BROKERUSERCERTLOOKUP','Service Broker user certificates lookup result cache'), +('CACHESTORE_CLRPROC','CLR Procedure Cache'), +('CACHESTORE_CLRUDTINFO','CLR UDT Info'), +('CACHESTORE_COLUMNSTOREOBJECTPOOL','Column Store Object Pool'), +('CACHESTORE_CONVPRI','Conversation Priority Cache'), +('CACHESTORE_EVENTS','Event Notification Cache'), +('CACHESTORE_FULLTEXTSTOPLIST','Full Text Stoplist Cache'), +('CACHESTORE_NOTIF','Notification Store'), +('CACHESTORE_OBJCP','Object Plans'), +('CACHESTORE_PHDR','Bound Trees'), +('CACHESTORE_SEARCHPROPERTYLIST','Search Property List Cache'), +('CACHESTORE_SEHOBTCOLUMNATTRIBUTE','SE Shared Column Metadata Cache'), +('CACHESTORE_SQLCP','SQL Plans'), +('CACHESTORE_STACKFRAMES','SOS_StackFramesStore'), +('CACHESTORE_SYSTEMROWSET','System Rowset Store'), +('CACHESTORE_TEMPTABLES','Temporary Tables & Table Variables'), +('CACHESTORE_VIEWDEFINITIONS','View Definition Cache'), +('CACHESTORE_XML_SELECTIVE_DG','XML DB Cache (Selective)'), +('CACHESTORE_XMLDBATTRIBUTE','XML DB Cache (Attribute)'), +('CACHESTORE_XMLDBELEMENT','XML DB Cache (Element)'), +('CACHESTORE_XMLDBTYPE','XML DB Cache (Type)'), +('CACHESTORE_XPROC','Extended Stored Procedures'), +('MEMORYCLERK_FILETABLE','Memory Clerk (File Table)'), +('MEMORYCLERK_FSCHUNKER','Memory Clerk (FS Chunker)'), +('MEMORYCLERK_FULLTEXT','Full Text'), +('MEMORYCLERK_FULLTEXT_SHMEM','Full-text IG'), +('MEMORYCLERK_HADR','HADR'), +('MEMORYCLERK_HOST','Host'), +('MEMORYCLERK_LANGSVC','Language Service'), +('MEMORYCLERK_LWC','Light Weight Cache'), +('MEMORYCLERK_QSRANGEPREFETCH','QS Range Prefetch'), +('MEMORYCLERK_SERIALIZATION','Serialization'), +('MEMORYCLERK_SNI','SNI'), +('MEMORYCLERK_SOSMEMMANAGER','SOS Memory Manager'), +('MEMORYCLERK_SOSNODE','SOS Node'), +('MEMORYCLERK_SOSOS','SOS Memory Clerk'), +('MEMORYCLERK_SQLBUFFERPOOL','Buffer Pool'), +('MEMORYCLERK_SQLCLR','CLR'), +('MEMORYCLERK_SQLCLRASSEMBLY','CLR Assembly'), +('MEMORYCLERK_SQLCONNECTIONPOOL','Connection Pool'), +('MEMORYCLERK_SQLGENERAL','General'), +('MEMORYCLERK_SQLHTTP','HTTP'), +('MEMORYCLERK_SQLLOGPOOL','Log Pool'), +('MEMORYCLERK_SQLOPTIMIZER','SQL Optimizer'), +('MEMORYCLERK_SQLQERESERVATIONS','SQL Reservations'), +('MEMORYCLERK_SQLQUERYCOMPILE','SQL Query Compile'), +('MEMORYCLERK_SQLQUERYEXEC','SQL Query Exec'), +('MEMORYCLERK_SQLQUERYPLAN','SQL Query Plan'), +('MEMORYCLERK_SQLSERVICEBROKER','SQL Service Broker'), +('MEMORYCLERK_SQLSERVICEBROKERTRANSPORT','Unified Communication Stack'), +('MEMORYCLERK_SQLSOAP','SQL SOAP'), +('MEMORYCLERK_SQLSOAPSESSIONSTORE','SQL SOAP (Session Store)'), +('MEMORYCLERK_SQLSTORENG','SQL Storage Engine'), +('MEMORYCLERK_SQLUTILITIES','SQL Utilities'), +('MEMORYCLERK_SQLXML','SQL XML'), +('MEMORYCLERK_SQLXP','SQL XP'), +('MEMORYCLERK_TRACE_EVTNOTIF','Trace Event Notification'), +('MEMORYCLERK_XE','XE Engine'), +('MEMORYCLERK_XE_BUFFER','XE Buffer'), +('MEMORYCLERK_XTP','In-Memory OLTP'), +('OBJECTSTORE_LBSS','Lbss Cache (Object Store)'), +('OBJECTSTORE_LOCK_MANAGER','Lock Manager (Object Store)'), +('OBJECTSTORE_SECAUDIT_EVENT_BUFFER','Audit Event Buffer (Object Store)'), +('OBJECTSTORE_SERVICE_BROKER','Service Broker (Object Store)'), +('OBJECTSTORE_SNI_PACKET','SNI Packet (Object Store)'), +('OBJECTSTORE_XACT_CACHE','Transactions Cache (Object Store)'), +('USERSTORE_DBMETADATA','DB Metadata (User Store)'), +('USERSTORE_OBJPERM','Object Permissions (User Store)'), +('USERSTORE_SCHEMAMGR','Schema Manager (User Store)'), +('USERSTORE_SXC','SXC (User Store)'), +('USERSTORE_TOKENPERM','Token Permissions (User Store)'), +('USERSTORE_QDSSTMT','QDS Statement Buffer (Pre-persist)'), +('CACHESTORE_QDSRUNTIMESTATS','QDS Runtime Stats (Pre-persist)'), +('CACHESTORE_QDSCONTEXTSETTINGS','QDS Unique Context Settings'), +('MEMORYCLERK_QUERYDISKSTORE','QDS General'), +('MEMORYCLERK_QUERYDISKSTORE_HASHMAP','QDS Query/Plan Hash Table') +) AS clerk_names(system_name,name) +ON mc.type = clerk_names.system_name +GROUP BY ISNULL(clerk_names.name,mc.type) +HAVING SUM(pages_kb) >= 1024 +OPTION( RECOMPILE ); +` + +const sqlDatabaseIOV2 = `SELECT +'sqlserver_database_io' As [measurement], +REPLACE(@@SERVERNAME,'\',':') AS [sql_instance], +SERVERPROPERTY('ServerName') AS [host], +DB_NAME([vfs].[database_id]) [database_name], +vfs.io_stall_read_ms AS read_latency_ms, +vfs.num_of_reads AS reads, +vfs.num_of_bytes_read AS read_bytes, +vfs.io_stall_write_ms AS write_latency_ms, +vfs.num_of_writes AS writes, +vfs.num_of_bytes_written AS write_bytes, +CASE WHEN vfs.file_id = 2 THEN 'LOG' ELSE 'ROWS' END AS file_type +FROM +[sys].[dm_io_virtual_file_stats](NULL,NULL) AS vfs +OPTION( RECOMPILE ); +` + +const sqlServerPropertiesV2 = `DECLARE @sys_info TABLE ( + cpu_count INT, + server_memory INT, + uptime INT +) + +IF OBJECT_ID('master.sys.dm_os_sys_info') IS NOT NULL +BEGIN + INSERT INTO @sys_info ( cpu_count, server_memory, uptime ) + EXEC('SELECT cpu_count, physical_memory_kb, DATEDIFF(MINUTE,sqlserver_start_time,GETDATE()) FROM sys.dm_os_sys_info') +END + +SELECT +'sqlserver_server_properties' As [measurement], +REPLACE(@@SERVERNAME,'\',':') AS [sql_instance], +SERVERPROPERTY('ServerName') AS [host], +SUM( CASE WHEN state = 0 THEN 1 ELSE 0 END ) AS db_online, +SUM( CASE WHEN state = 1 THEN 1 ELSE 0 END ) AS db_restoring, +SUM( CASE WHEN state = 2 THEN 1 ELSE 0 END ) AS db_recovering, +SUM( CASE WHEN state = 3 THEN 1 ELSE 0 END ) AS db_recoveryPending, +SUM( CASE WHEN state = 4 THEN 1 ELSE 0 END ) AS db_suspect, +SUM( CASE WHEN state = 10 THEN 1 ELSE 0 END ) AS db_offline, +MAX( sinfo.cpu_count ) AS cpu_count, +MAX( sinfo.server_memory ) AS server_memory, +MAX( sinfo.uptime ) AS uptime, +SERVERPROPERTY('ProductVersion') AS sql_version +FROM sys.databases +CROSS APPLY ( + SELECT * + FROM @sys_info +) AS sinfo +OPTION( RECOMPILE ); +` + +const sqlPerformanceCountersV2 string = `DECLARE @PCounters TABLE +( + object_name nvarchar(128), + counter_name nvarchar(128), + instance_name nvarchar(128), + cntr_value bigint, + cntr_type INT, + Primary Key(object_name, counter_name, instance_name) +); + +INSERT INTO @PCounters +SELECT DISTINCT + RTrim(spi.object_name) object_name, + RTrim(spi.counter_name) counter_name, + RTrim(spi.instance_name) instance_name, + spi.cntr_value, + spi.cntr_type +FROM sys.dm_os_performance_counters AS spi +WHERE ( + counter_name IN ( + 'SQL Compilations/sec', + 'SQL Re-Compilations/sec', + 'User Connections', + 'Batch Requests/sec', + 'Logouts/sec', + 'Logins/sec', + 'Processes blocked', + 'Latch Waits/sec', + 'Full Scans/sec', + 'Index Searches/sec', + 'Page Splits/sec', + 'Page Lookups/sec', + 'Page Reads/sec', + 'Page Writes/sec', + 'Readahead Pages/sec', + 'Lazy Writes/sec', + 'Checkpoint Pages/sec', + 'Page life expectancy', + 'Log File(s) Size (KB)', + 'Log File(s) Used Size (KB)', + 'Data File(s) Size (KB)', + 'Transactions/sec', + 'Write Transactions/sec', + 'Active Temp Tables', + 'Temp Tables Creation Rate', + 'Temp Tables For Destruction', + 'Free Space in tempdb (KB)', + 'Version Store Size (KB)', + 'Memory Grants Pending', + 'Free list stalls/sec', + 'Buffer cache hit ratio', + 'Buffer cache hit ratio base', + 'Backup/Restore Throughput/sec', + 'Total Server Memory (KB)', + 'Target Server Memory (KB)' + ) + ) OR ( + instance_name IN ('_Total','Column store object pool') + AND counter_name IN ( + 'Log Flushes/sec', + 'Log Flush Wait Time', + 'Lock Timeouts/sec', + 'Number of Deadlocks/sec', + 'Lock Waits/sec', + 'Latch Waits/sec', + 'Memory broker clerk size', + 'Log Bytes Flushed/sec', + 'Bytes Sent to Replica/sec', + 'Log Send Queue', + 'Bytes Sent to Transport/sec', + 'Sends to Replica/sec', + 'Bytes Sent to Transport/sec', + 'Sends to Transport/sec', + 'Bytes Received from Replica/sec', + 'Receives from Replica/sec', + 'Flow Control Time (ms/sec)', + 'Flow Control/sec', + 'Resent Messages/sec', + 'Redone Bytes/sec', + 'XTP Memory Used (KB)' + ) OR ( + object_name = 'SQLServer:Database Replica' + AND counter_name IN ( + 'Log Bytes Received/sec', + 'Log Apply Pending Queue', + 'Redone Bytes/sec', + 'Recovery Queue', + 'Log Apply Ready Queue' + ) + AND instance_name = '_Total' + ) + ) OR ( + object_name = 'SQLServer:Database Replica' + AND counter_name IN ('Transaction Delay') + ) OR ( + object_name = 'SQLServer:Workload Group Stats' + AND counter_name IN ( + 'CPU usage %', + 'CPU usage % base', + 'Queued requests', + 'Requests completed/sec', + 'Blocked tasks' + ) + ) OR ( + object_name = 'SQLServer:Resource Pool Stats' + AND counter_name IN ( + 'Active memory grant amount (KB)', + 'Disk Read Bytes/sec', + 'Disk Read IO Throttled/sec', + 'Disk Read IO/sec', + 'Disk Write Bytes/sec', + 'Disk Write IO Throttled/sec', + 'Disk Write IO/sec', + 'Used memory (KB)' + ) + ) OR object_name IN ( + 'SQLServer:User Settable', + 'SQLServer:SQL Errors' + ) + +SELECT 'sqlserver_performance' AS [measurement], + REPLACE(@@SERVERNAME,'\',':') AS [sql_instance], + SERVERPROPERTY('ServerName') AS [host], + pc.object_name AS [object], + pc.counter_name AS [counter], + CASE pc.instance_name WHEN '_Total' THEN 'Total' ELSE ISNULL(pc.instance_name,'') END AS [instance], + CASE WHEN pc.cntr_type = 537003264 AND pc1.cntr_value > 0 THEN (pc.cntr_value * 1.0) / (pc1.cntr_value * 1.0) * 100 ELSE pc.cntr_value END AS [value] +FROM @PCounters AS pc + LEFT OUTER JOIN @PCounters AS pc1 + ON ( + pc.counter_name = REPLACE(pc1.counter_name,' base','') + OR pc.counter_name = REPLACE(pc1.counter_name,' base',' (ms)') + ) + AND pc.object_name = pc1.object_name + AND pc.instance_name = pc1.instance_name + AND pc1.counter_name LIKE '%base' +WHERE pc.counter_name NOT LIKE '% base' +OPTION( RECOMPILE ); +` + +const sqlWaitStatsCategorizedV2 string = `SELECT +'sqlserver_waitstats' AS [measurement], +REPLACE(@@SERVERNAME,'\',':') AS [sql_instance], +SERVERPROPERTY('ServerName') AS [host], +ws.wait_type, +wait_time_ms, +wait_time_ms - signal_wait_time_ms AS [resource_wait_ms], +signal_wait_time_ms, +max_wait_time_ms, +waiting_tasks_count, +ISNULL(wc.wait_category,'OTHER') AS [wait_category] +FROM +sys.dm_os_wait_stats AS ws WITH (NOLOCK) +LEFT OUTER JOIN ( VALUES +('ASYNC_IO_COMPLETION','Other Disk IO'), +('ASYNC_NETWORK_IO','Network IO'), +('BACKUPIO','Other Disk IO'), +('BROKER_CONNECTION_RECEIVE_TASK','Service Broker'), +('BROKER_DISPATCHER','Service Broker'), +('BROKER_ENDPOINT_STATE_MUTEX','Service Broker'), +('BROKER_EVENTHANDLER','Service Broker'), +('BROKER_FORWARDER','Service Broker'), +('BROKER_INIT','Service Broker'), +('BROKER_MASTERSTART','Service Broker'), +('BROKER_RECEIVE_WAITFOR','User Wait'), +('BROKER_REGISTERALLENDPOINTS','Service Broker'), +('BROKER_SERVICE','Service Broker'), +('BROKER_SHUTDOWN','Service Broker'), +('BROKER_START','Service Broker'), +('BROKER_TASK_SHUTDOWN','Service Broker'), +('BROKER_TASK_STOP','Service Broker'), +('BROKER_TASK_SUBMIT','Service Broker'), +('BROKER_TO_FLUSH','Service Broker'), +('BROKER_TRANSMISSION_OBJECT','Service Broker'), +('BROKER_TRANSMISSION_TABLE','Service Broker'), +('BROKER_TRANSMISSION_WORK','Service Broker'), +('BROKER_TRANSMITTER','Service Broker'), +('CHECKPOINT_QUEUE','Idle'), +('CHKPT','Tran Log IO'), +('CLR_AUTO_EVENT','SQL CLR'), +('CLR_CRST','SQL CLR'), +('CLR_JOIN','SQL CLR'), +('CLR_MANUAL_EVENT','SQL CLR'), +('CLR_MEMORY_SPY','SQL CLR'), +('CLR_MONITOR','SQL CLR'), +('CLR_RWLOCK_READER','SQL CLR'), +('CLR_RWLOCK_WRITER','SQL CLR'), +('CLR_SEMAPHORE','SQL CLR'), +('CLR_TASK_START','SQL CLR'), +('CLRHOST_STATE_ACCESS','SQL CLR'), +('CMEMPARTITIONED','Memory'), +('CMEMTHREAD','Memory'), +('CXPACKET','Parallelism'), +('DBMIRROR_DBM_EVENT','Mirroring'), +('DBMIRROR_DBM_MUTEX','Mirroring'), +('DBMIRROR_EVENTS_QUEUE','Mirroring'), +('DBMIRROR_SEND','Mirroring'), +('DBMIRROR_WORKER_QUEUE','Mirroring'), +('DBMIRRORING_CMD','Mirroring'), +('DTC','Transaction'), +('DTC_ABORT_REQUEST','Transaction'), +('DTC_RESOLVE','Transaction'), +('DTC_STATE','Transaction'), +('DTC_TMDOWN_REQUEST','Transaction'), +('DTC_WAITFOR_OUTCOME','Transaction'), +('DTCNEW_ENLIST','Transaction'), +('DTCNEW_PREPARE','Transaction'), +('DTCNEW_RECOVERY','Transaction'), +('DTCNEW_TM','Transaction'), +('DTCNEW_TRANSACTION_ENLISTMENT','Transaction'), +('DTCPNTSYNC','Transaction'), +('EE_PMOLOCK','Memory'), +('EXCHANGE','Parallelism'), +('EXTERNAL_SCRIPT_NETWORK_IOF','Network IO'), +('FCB_REPLICA_READ','Replication'), +('FCB_REPLICA_WRITE','Replication'), +('FT_COMPROWSET_RWLOCK','Full Text Search'), +('FT_IFTS_RWLOCK','Full Text Search'), +('FT_IFTS_SCHEDULER_IDLE_WAIT','Idle'), +('FT_IFTSHC_MUTEX','Full Text Search'), +('FT_IFTSISM_MUTEX','Full Text Search'), +('FT_MASTER_MERGE','Full Text Search'), +('FT_MASTER_MERGE_COORDINATOR','Full Text Search'), +('FT_METADATA_MUTEX','Full Text Search'), +('FT_PROPERTYLIST_CACHE','Full Text Search'), +('FT_RESTART_CRAWL','Full Text Search'), +('FULLTEXT GATHERER','Full Text Search'), +('HADR_AG_MUTEX','Replication'), +('HADR_AR_CRITICAL_SECTION_ENTRY','Replication'), +('HADR_AR_MANAGER_MUTEX','Replication'), +('HADR_AR_UNLOAD_COMPLETED','Replication'), +('HADR_ARCONTROLLER_NOTIFICATIONS_SUBSCRIBER_LIST','Replication'), +('HADR_BACKUP_BULK_LOCK','Replication'), +('HADR_BACKUP_QUEUE','Replication'), +('HADR_CLUSAPI_CALL','Replication'), +('HADR_COMPRESSED_CACHE_SYNC','Replication'), +('HADR_CONNECTIVITY_INFO','Replication'), +('HADR_DATABASE_FLOW_CONTROL','Replication'), +('HADR_DATABASE_VERSIONING_STATE','Replication'), +('HADR_DATABASE_WAIT_FOR_RECOVERY','Replication'), +('HADR_DATABASE_WAIT_FOR_RESTART','Replication'), +('HADR_DATABASE_WAIT_FOR_TRANSITION_TO_VERSIONING','Replication'), +('HADR_DB_COMMAND','Replication'), +('HADR_DB_OP_COMPLETION_SYNC','Replication'), +('HADR_DB_OP_START_SYNC','Replication'), +('HADR_DBR_SUBSCRIBER','Replication'), +('HADR_DBR_SUBSCRIBER_FILTER_LIST','Replication'), +('HADR_DBSEEDING','Replication'), +('HADR_DBSEEDING_LIST','Replication'), +('HADR_DBSTATECHANGE_SYNC','Replication'), +('HADR_FABRIC_CALLBACK','Replication'), +('HADR_FILESTREAM_BLOCK_FLUSH','Replication'), +('HADR_FILESTREAM_FILE_CLOSE','Replication'), +('HADR_FILESTREAM_FILE_REQUEST','Replication'), +('HADR_FILESTREAM_IOMGR','Replication'), +('HADR_FILESTREAM_IOMGR_IOCOMPLETION','Replication'), +('HADR_FILESTREAM_MANAGER','Replication'), +('HADR_FILESTREAM_PREPROC','Replication'), +('HADR_GROUP_COMMIT','Replication'), +('HADR_LOGCAPTURE_SYNC','Replication'), +('HADR_LOGCAPTURE_WAIT','Replication'), +('HADR_LOGPROGRESS_SYNC','Replication'), +('HADR_NOTIFICATION_DEQUEUE','Replication'), +('HADR_NOTIFICATION_WORKER_EXCLUSIVE_ACCESS','Replication'), +('HADR_NOTIFICATION_WORKER_STARTUP_SYNC','Replication'), +('HADR_NOTIFICATION_WORKER_TERMINATION_SYNC','Replication'), +('HADR_PARTNER_SYNC','Replication'), +('HADR_READ_ALL_NETWORKS','Replication'), +('HADR_RECOVERY_WAIT_FOR_CONNECTION','Replication'), +('HADR_RECOVERY_WAIT_FOR_UNDO','Replication'), +('HADR_REPLICAINFO_SYNC','Replication'), +('HADR_SEEDING_CANCELLATION','Replication'), +('HADR_SEEDING_FILE_LIST','Replication'), +('HADR_SEEDING_LIMIT_BACKUPS','Replication'), +('HADR_SEEDING_SYNC_COMPLETION','Replication'), +('HADR_SEEDING_TIMEOUT_TASK','Replication'), +('HADR_SEEDING_WAIT_FOR_COMPLETION','Replication'), +('HADR_SYNC_COMMIT','Replication'), +('HADR_SYNCHRONIZING_THROTTLE','Replication'), +('HADR_TDS_LISTENER_SYNC','Replication'), +('HADR_TDS_LISTENER_SYNC_PROCESSING','Replication'), +('HADR_THROTTLE_LOG_RATE_GOVERNOR','Log Rate Governor'), +('HADR_TIMER_TASK','Replication'), +('HADR_TRANSPORT_DBRLIST','Replication'), +('HADR_TRANSPORT_FLOW_CONTROL','Replication'), +('HADR_TRANSPORT_SESSION','Replication'), +('HADR_WORK_POOL','Replication'), +('HADR_WORK_QUEUE','Replication'), +('HADR_XRF_STACK_ACCESS','Replication'), +('INSTANCE_LOG_RATE_GOVERNOR','Log Rate Governor'), +('IO_COMPLETION','Other Disk IO'), +('IO_QUEUE_LIMIT','Other Disk IO'), +('IO_RETRY','Other Disk IO'), +('LATCH_DT','Latch'), +('LATCH_EX','Latch'), +('LATCH_KP','Latch'), +('LATCH_NL','Latch'), +('LATCH_SH','Latch'), +('LATCH_UP','Latch'), +('LAZYWRITER_SLEEP','Idle'), +('LCK_M_BU','Lock'), +('LCK_M_BU_ABORT_BLOCKERS','Lock'), +('LCK_M_BU_LOW_PRIORITY','Lock'), +('LCK_M_IS','Lock'), +('LCK_M_IS_ABORT_BLOCKERS','Lock'), +('LCK_M_IS_LOW_PRIORITY','Lock'), +('LCK_M_IU','Lock'), +('LCK_M_IU_ABORT_BLOCKERS','Lock'), +('LCK_M_IU_LOW_PRIORITY','Lock'), +('LCK_M_IX','Lock'), +('LCK_M_IX_ABORT_BLOCKERS','Lock'), +('LCK_M_IX_LOW_PRIORITY','Lock'), +('LCK_M_RIn_NL','Lock'), +('LCK_M_RIn_NL_ABORT_BLOCKERS','Lock'), +('LCK_M_RIn_NL_LOW_PRIORITY','Lock'), +('LCK_M_RIn_S','Lock'), +('LCK_M_RIn_S_ABORT_BLOCKERS','Lock'), +('LCK_M_RIn_S_LOW_PRIORITY','Lock'), +('LCK_M_RIn_U','Lock'), +('LCK_M_RIn_U_ABORT_BLOCKERS','Lock'), +('LCK_M_RIn_U_LOW_PRIORITY','Lock'), +('LCK_M_RIn_X','Lock'), +('LCK_M_RIn_X_ABORT_BLOCKERS','Lock'), +('LCK_M_RIn_X_LOW_PRIORITY','Lock'), +('LCK_M_RS_S','Lock'), +('LCK_M_RS_S_ABORT_BLOCKERS','Lock'), +('LCK_M_RS_S_LOW_PRIORITY','Lock'), +('LCK_M_RS_U','Lock'), +('LCK_M_RS_U_ABORT_BLOCKERS','Lock'), +('LCK_M_RS_U_LOW_PRIORITY','Lock'), +('LCK_M_RX_S','Lock'), +('LCK_M_RX_S_ABORT_BLOCKERS','Lock'), +('LCK_M_RX_S_LOW_PRIORITY','Lock'), +('LCK_M_RX_U','Lock'), +('LCK_M_RX_U_ABORT_BLOCKERS','Lock'), +('LCK_M_RX_U_LOW_PRIORITY','Lock'), +('LCK_M_RX_X','Lock'), +('LCK_M_RX_X_ABORT_BLOCKERS','Lock'), +('LCK_M_RX_X_LOW_PRIORITY','Lock'), +('LCK_M_S','Lock'), +('LCK_M_S_ABORT_BLOCKERS','Lock'), +('LCK_M_S_LOW_PRIORITY','Lock'), +('LCK_M_SCH_M','Lock'), +('LCK_M_SCH_M_ABORT_BLOCKERS','Lock'), +('LCK_M_SCH_M_LOW_PRIORITY','Lock'), +('LCK_M_SCH_S','Lock'), +('LCK_M_SCH_S_ABORT_BLOCKERS','Lock'), +('LCK_M_SCH_S_LOW_PRIORITY','Lock'), +('LCK_M_SIU','Lock'), +('LCK_M_SIU_ABORT_BLOCKERS','Lock'), +('LCK_M_SIU_LOW_PRIORITY','Lock'), +('LCK_M_SIX','Lock'), +('LCK_M_SIX_ABORT_BLOCKERS','Lock'), +('LCK_M_SIX_LOW_PRIORITY','Lock'), +('LCK_M_U','Lock'), +('LCK_M_U_ABORT_BLOCKERS','Lock'), +('LCK_M_U_LOW_PRIORITY','Lock'), +('LCK_M_UIX','Lock'), +('LCK_M_UIX_ABORT_BLOCKERS','Lock'), +('LCK_M_UIX_LOW_PRIORITY','Lock'), +('LCK_M_X','Lock'), +('LCK_M_X_ABORT_BLOCKERS','Lock'), +('LCK_M_X_LOW_PRIORITY','Lock'), +('LOGBUFFER','Tran Log IO'), +('LOGMGR','Tran Log IO'), +('LOGMGR_FLUSH','Tran Log IO'), +('LOGMGR_PMM_LOG','Tran Log IO'), +('LOGMGR_QUEUE','Idle'), +('LOGMGR_RESERVE_APPEND','Tran Log IO'), +('MEMORY_ALLOCATION_EXT','Memory'), +('MEMORY_GRANT_UPDATE','Memory'), +('MSQL_XACT_MGR_MUTEX','Transaction'), +('MSQL_XACT_MUTEX','Transaction'), +('MSSEARCH','Full Text Search'), +('NET_WAITFOR_PACKET','Network IO'), +('ONDEMAND_TASK_QUEUE','Idle'), +('PAGEIOLATCH_DT','Buffer IO'), +('PAGEIOLATCH_EX','Buffer IO'), +('PAGEIOLATCH_KP','Buffer IO'), +('PAGEIOLATCH_NL','Buffer IO'), +('PAGEIOLATCH_SH','Buffer IO'), +('PAGEIOLATCH_UP','Buffer IO'), +('PAGELATCH_DT','Buffer Latch'), +('PAGELATCH_EX','Buffer Latch'), +('PAGELATCH_KP','Buffer Latch'), +('PAGELATCH_NL','Buffer Latch'), +('PAGELATCH_SH','Buffer Latch'), +('PAGELATCH_UP','Buffer Latch'), +('POOL_LOG_RATE_GOVERNOR','Log Rate Governor'), +('PREEMPTIVE_ABR','Preemptive'), +('PREEMPTIVE_CLOSEBACKUPMEDIA','Preemptive'), +('PREEMPTIVE_CLOSEBACKUPTAPE','Preemptive'), +('PREEMPTIVE_CLOSEBACKUPVDIDEVICE','Preemptive'), +('PREEMPTIVE_CLUSAPI_CLUSTERRESOURCECONTROL','Preemptive'), +('PREEMPTIVE_COM_COCREATEINSTANCE','Preemptive'), +('PREEMPTIVE_COM_COGETCLASSOBJECT','Preemptive'), +('PREEMPTIVE_COM_CREATEACCESSOR','Preemptive'), +('PREEMPTIVE_COM_DELETEROWS','Preemptive'), +('PREEMPTIVE_COM_GETCOMMANDTEXT','Preemptive'), +('PREEMPTIVE_COM_GETDATA','Preemptive'), +('PREEMPTIVE_COM_GETNEXTROWS','Preemptive'), +('PREEMPTIVE_COM_GETRESULT','Preemptive'), +('PREEMPTIVE_COM_GETROWSBYBOOKMARK','Preemptive'), +('PREEMPTIVE_COM_LBFLUSH','Preemptive'), +('PREEMPTIVE_COM_LBLOCKREGION','Preemptive'), +('PREEMPTIVE_COM_LBREADAT','Preemptive'), +('PREEMPTIVE_COM_LBSETSIZE','Preemptive'), +('PREEMPTIVE_COM_LBSTAT','Preemptive'), +('PREEMPTIVE_COM_LBUNLOCKREGION','Preemptive'), +('PREEMPTIVE_COM_LBWRITEAT','Preemptive'), +('PREEMPTIVE_COM_QUERYINTERFACE','Preemptive'), +('PREEMPTIVE_COM_RELEASE','Preemptive'), +('PREEMPTIVE_COM_RELEASEACCESSOR','Preemptive'), +('PREEMPTIVE_COM_RELEASEROWS','Preemptive'), +('PREEMPTIVE_COM_RELEASESESSION','Preemptive'), +('PREEMPTIVE_COM_RESTARTPOSITION','Preemptive'), +('PREEMPTIVE_COM_SEQSTRMREAD','Preemptive'), +('PREEMPTIVE_COM_SEQSTRMREADANDWRITE','Preemptive'), +('PREEMPTIVE_COM_SETDATAFAILURE','Preemptive'), +('PREEMPTIVE_COM_SETPARAMETERINFO','Preemptive'), +('PREEMPTIVE_COM_SETPARAMETERPROPERTIES','Preemptive'), +('PREEMPTIVE_COM_STRMLOCKREGION','Preemptive'), +('PREEMPTIVE_COM_STRMSEEKANDREAD','Preemptive'), +('PREEMPTIVE_COM_STRMSEEKANDWRITE','Preemptive'), +('PREEMPTIVE_COM_STRMSETSIZE','Preemptive'), +('PREEMPTIVE_COM_STRMSTAT','Preemptive'), +('PREEMPTIVE_COM_STRMUNLOCKREGION','Preemptive'), +('PREEMPTIVE_CONSOLEWRITE','Preemptive'), +('PREEMPTIVE_CREATEPARAM','Preemptive'), +('PREEMPTIVE_DEBUG','Preemptive'), +('PREEMPTIVE_DFSADDLINK','Preemptive'), +('PREEMPTIVE_DFSLINKEXISTCHECK','Preemptive'), +('PREEMPTIVE_DFSLINKHEALTHCHECK','Preemptive'), +('PREEMPTIVE_DFSREMOVELINK','Preemptive'), +('PREEMPTIVE_DFSREMOVEROOT','Preemptive'), +('PREEMPTIVE_DFSROOTFOLDERCHECK','Preemptive'), +('PREEMPTIVE_DFSROOTINIT','Preemptive'), +('PREEMPTIVE_DFSROOTSHARECHECK','Preemptive'), +('PREEMPTIVE_DTC_ABORT','Preemptive'), +('PREEMPTIVE_DTC_ABORTREQUESTDONE','Preemptive'), +('PREEMPTIVE_DTC_BEGINTRANSACTION','Preemptive'), +('PREEMPTIVE_DTC_COMMITREQUESTDONE','Preemptive'), +('PREEMPTIVE_DTC_ENLIST','Preemptive'), +('PREEMPTIVE_DTC_PREPAREREQUESTDONE','Preemptive'), +('PREEMPTIVE_FILESIZEGET','Preemptive'), +('PREEMPTIVE_FSAOLEDB_ABORTTRANSACTION','Preemptive'), +('PREEMPTIVE_FSAOLEDB_COMMITTRANSACTION','Preemptive'), +('PREEMPTIVE_FSAOLEDB_STARTTRANSACTION','Preemptive'), +('PREEMPTIVE_FSRECOVER_UNCONDITIONALUNDO','Preemptive'), +('PREEMPTIVE_GETRMINFO','Preemptive'), +('PREEMPTIVE_HADR_LEASE_MECHANISM','Preemptive'), +('PREEMPTIVE_HTTP_EVENT_WAIT','Preemptive'), +('PREEMPTIVE_HTTP_REQUEST','Preemptive'), +('PREEMPTIVE_LOCKMONITOR','Preemptive'), +('PREEMPTIVE_MSS_RELEASE','Preemptive'), +('PREEMPTIVE_ODBCOPS','Preemptive'), +('PREEMPTIVE_OLE_UNINIT','Preemptive'), +('PREEMPTIVE_OLEDB_ABORTORCOMMITTRAN','Preemptive'), +('PREEMPTIVE_OLEDB_ABORTTRAN','Preemptive'), +('PREEMPTIVE_OLEDB_GETDATASOURCE','Preemptive'), +('PREEMPTIVE_OLEDB_GETLITERALINFO','Preemptive'), +('PREEMPTIVE_OLEDB_GETPROPERTIES','Preemptive'), +('PREEMPTIVE_OLEDB_GETPROPERTYINFO','Preemptive'), +('PREEMPTIVE_OLEDB_GETSCHEMALOCK','Preemptive'), +('PREEMPTIVE_OLEDB_JOINTRANSACTION','Preemptive'), +('PREEMPTIVE_OLEDB_RELEASE','Preemptive'), +('PREEMPTIVE_OLEDB_SETPROPERTIES','Preemptive'), +('PREEMPTIVE_OLEDBOPS','Preemptive'), +('PREEMPTIVE_OS_ACCEPTSECURITYCONTEXT','Preemptive'), +('PREEMPTIVE_OS_ACQUIRECREDENTIALSHANDLE','Preemptive'), +('PREEMPTIVE_OS_AUTHENTICATIONOPS','Preemptive'), +('PREEMPTIVE_OS_AUTHORIZATIONOPS','Preemptive'), +('PREEMPTIVE_OS_AUTHZGETINFORMATIONFROMCONTEXT','Preemptive'), +('PREEMPTIVE_OS_AUTHZINITIALIZECONTEXTFROMSID','Preemptive'), +('PREEMPTIVE_OS_AUTHZINITIALIZERESOURCEMANAGER','Preemptive'), +('PREEMPTIVE_OS_BACKUPREAD','Preemptive'), +('PREEMPTIVE_OS_CLOSEHANDLE','Preemptive'), +('PREEMPTIVE_OS_CLUSTEROPS','Preemptive'), +('PREEMPTIVE_OS_COMOPS','Preemptive'), +('PREEMPTIVE_OS_COMPLETEAUTHTOKEN','Preemptive'), +('PREEMPTIVE_OS_COPYFILE','Preemptive'), +('PREEMPTIVE_OS_CREATEDIRECTORY','Preemptive'), +('PREEMPTIVE_OS_CREATEFILE','Preemptive'), +('PREEMPTIVE_OS_CRYPTACQUIRECONTEXT','Preemptive'), +('PREEMPTIVE_OS_CRYPTIMPORTKEY','Preemptive'), +('PREEMPTIVE_OS_CRYPTOPS','Preemptive'), +('PREEMPTIVE_OS_DECRYPTMESSAGE','Preemptive'), +('PREEMPTIVE_OS_DELETEFILE','Preemptive'), +('PREEMPTIVE_OS_DELETESECURITYCONTEXT','Preemptive'), +('PREEMPTIVE_OS_DEVICEIOCONTROL','Preemptive'), +('PREEMPTIVE_OS_DEVICEOPS','Preemptive'), +('PREEMPTIVE_OS_DIRSVC_NETWORKOPS','Preemptive'), +('PREEMPTIVE_OS_DISCONNECTNAMEDPIPE','Preemptive'), +('PREEMPTIVE_OS_DOMAINSERVICESOPS','Preemptive'), +('PREEMPTIVE_OS_DSGETDCNAME','Preemptive'), +('PREEMPTIVE_OS_DTCOPS','Preemptive'), +('PREEMPTIVE_OS_ENCRYPTMESSAGE','Preemptive'), +('PREEMPTIVE_OS_FILEOPS','Preemptive'), +('PREEMPTIVE_OS_FINDFILE','Preemptive'), +('PREEMPTIVE_OS_FLUSHFILEBUFFERS','Preemptive'), +('PREEMPTIVE_OS_FORMATMESSAGE','Preemptive'), +('PREEMPTIVE_OS_FREECREDENTIALSHANDLE','Preemptive'), +('PREEMPTIVE_OS_FREELIBRARY','Preemptive'), +('PREEMPTIVE_OS_GENERICOPS','Preemptive'), +('PREEMPTIVE_OS_GETADDRINFO','Preemptive'), +('PREEMPTIVE_OS_GETCOMPRESSEDFILESIZE','Preemptive'), +('PREEMPTIVE_OS_GETDISKFREESPACE','Preemptive'), +('PREEMPTIVE_OS_GETFILEATTRIBUTES','Preemptive'), +('PREEMPTIVE_OS_GETFILESIZE','Preemptive'), +('PREEMPTIVE_OS_GETFINALFILEPATHBYHANDLE','Preemptive'), +('PREEMPTIVE_OS_GETLONGPATHNAME','Preemptive'), +('PREEMPTIVE_OS_GETPROCADDRESS','Preemptive'), +('PREEMPTIVE_OS_GETVOLUMENAMEFORVOLUMEMOUNTPOINT','Preemptive'), +('PREEMPTIVE_OS_GETVOLUMEPATHNAME','Preemptive'), +('PREEMPTIVE_OS_INITIALIZESECURITYCONTEXT','Preemptive'), +('PREEMPTIVE_OS_LIBRARYOPS','Preemptive'), +('PREEMPTIVE_OS_LOADLIBRARY','Preemptive'), +('PREEMPTIVE_OS_LOGONUSER','Preemptive'), +('PREEMPTIVE_OS_LOOKUPACCOUNTSID','Preemptive'), +('PREEMPTIVE_OS_MESSAGEQUEUEOPS','Preemptive'), +('PREEMPTIVE_OS_MOVEFILE','Preemptive'), +('PREEMPTIVE_OS_NETGROUPGETUSERS','Preemptive'), +('PREEMPTIVE_OS_NETLOCALGROUPGETMEMBERS','Preemptive'), +('PREEMPTIVE_OS_NETUSERGETGROUPS','Preemptive'), +('PREEMPTIVE_OS_NETUSERGETLOCALGROUPS','Preemptive'), +('PREEMPTIVE_OS_NETUSERMODALSGET','Preemptive'), +('PREEMPTIVE_OS_NETVALIDATEPASSWORDPOLICY','Preemptive'), +('PREEMPTIVE_OS_NETVALIDATEPASSWORDPOLICYFREE','Preemptive'), +('PREEMPTIVE_OS_OPENDIRECTORY','Preemptive'), +('PREEMPTIVE_OS_PDH_WMI_INIT','Preemptive'), +('PREEMPTIVE_OS_PIPEOPS','Preemptive'), +('PREEMPTIVE_OS_PROCESSOPS','Preemptive'), +('PREEMPTIVE_OS_QUERYCONTEXTATTRIBUTES','Preemptive'), +('PREEMPTIVE_OS_QUERYREGISTRY','Preemptive'), +('PREEMPTIVE_OS_QUERYSECURITYCONTEXTTOKEN','Preemptive'), +('PREEMPTIVE_OS_REMOVEDIRECTORY','Preemptive'), +('PREEMPTIVE_OS_REPORTEVENT','Preemptive'), +('PREEMPTIVE_OS_REVERTTOSELF','Preemptive'), +('PREEMPTIVE_OS_RSFXDEVICEOPS','Preemptive'), +('PREEMPTIVE_OS_SECURITYOPS','Preemptive'), +('PREEMPTIVE_OS_SERVICEOPS','Preemptive'), +('PREEMPTIVE_OS_SETENDOFFILE','Preemptive'), +('PREEMPTIVE_OS_SETFILEPOINTER','Preemptive'), +('PREEMPTIVE_OS_SETFILEVALIDDATA','Preemptive'), +('PREEMPTIVE_OS_SETNAMEDSECURITYINFO','Preemptive'), +('PREEMPTIVE_OS_SQLCLROPS','Preemptive'), +('PREEMPTIVE_OS_SQMLAUNCH','Preemptive'), +('PREEMPTIVE_OS_VERIFYSIGNATURE','Preemptive'), +('PREEMPTIVE_OS_VERIFYTRUST','Preemptive'), +('PREEMPTIVE_OS_VSSOPS','Preemptive'), +('PREEMPTIVE_OS_WAITFORSINGLEOBJECT','Preemptive'), +('PREEMPTIVE_OS_WINSOCKOPS','Preemptive'), +('PREEMPTIVE_OS_WRITEFILE','Preemptive'), +('PREEMPTIVE_OS_WRITEFILEGATHER','Preemptive'), +('PREEMPTIVE_OS_WSASETLASTERROR','Preemptive'), +('PREEMPTIVE_REENLIST','Preemptive'), +('PREEMPTIVE_RESIZELOG','Preemptive'), +('PREEMPTIVE_ROLLFORWARDREDO','Preemptive'), +('PREEMPTIVE_ROLLFORWARDUNDO','Preemptive'), +('PREEMPTIVE_SB_STOPENDPOINT','Preemptive'), +('PREEMPTIVE_SERVER_STARTUP','Preemptive'), +('PREEMPTIVE_SETRMINFO','Preemptive'), +('PREEMPTIVE_SHAREDMEM_GETDATA','Preemptive'), +('PREEMPTIVE_SNIOPEN','Preemptive'), +('PREEMPTIVE_SOSHOST','Preemptive'), +('PREEMPTIVE_SOSTESTING','Preemptive'), +('PREEMPTIVE_SP_SERVER_DIAGNOSTICS','Preemptive'), +('PREEMPTIVE_STARTRM','Preemptive'), +('PREEMPTIVE_STREAMFCB_CHECKPOINT','Preemptive'), +('PREEMPTIVE_STREAMFCB_RECOVER','Preemptive'), +('PREEMPTIVE_STRESSDRIVER','Preemptive'), +('PREEMPTIVE_TESTING','Preemptive'), +('PREEMPTIVE_TRANSIMPORT','Preemptive'), +('PREEMPTIVE_UNMARSHALPROPAGATIONTOKEN','Preemptive'), +('PREEMPTIVE_VSS_CREATESNAPSHOT','Preemptive'), +('PREEMPTIVE_VSS_CREATEVOLUMESNAPSHOT','Preemptive'), +('PREEMPTIVE_XE_CALLBACKEXECUTE','Preemptive'), +('PREEMPTIVE_XE_CX_FILE_OPEN','Preemptive'), +('PREEMPTIVE_XE_CX_HTTP_CALL','Preemptive'), +('PREEMPTIVE_XE_DISPATCHER','Preemptive'), +('PREEMPTIVE_XE_ENGINEINIT','Preemptive'), +('PREEMPTIVE_XE_GETTARGETSTATE','Preemptive'), +('PREEMPTIVE_XE_SESSIONCOMMIT','Preemptive'), +('PREEMPTIVE_XE_TARGETFINALIZE','Preemptive'), +('PREEMPTIVE_XE_TARGETINIT','Preemptive'), +('PREEMPTIVE_XE_TIMERRUN','Preemptive'), +('PREEMPTIVE_XETESTING','Preemptive'), +('PWAIT_HADR_ACTION_COMPLETED','Replication'), +('PWAIT_HADR_CHANGE_NOTIFIER_TERMINATION_SYNC','Replication'), +('PWAIT_HADR_CLUSTER_INTEGRATION','Replication'), +('PWAIT_HADR_FAILOVER_COMPLETED','Replication'), +('PWAIT_HADR_JOIN','Replication'), +('PWAIT_HADR_OFFLINE_COMPLETED','Replication'), +('PWAIT_HADR_ONLINE_COMPLETED','Replication'), +('PWAIT_HADR_POST_ONLINE_COMPLETED','Replication'), +('PWAIT_HADR_SERVER_READY_CONNECTIONS','Replication'), +('PWAIT_HADR_WORKITEM_COMPLETED','Replication'), +('PWAIT_HADRSIM','Replication'), +('PWAIT_RESOURCE_SEMAPHORE_FT_PARALLEL_QUERY_SYNC','Full Text Search'), +('QUERY_TRACEOUT','Tracing'), +('REPL_CACHE_ACCESS','Replication'), +('REPL_HISTORYCACHE_ACCESS','Replication'), +('REPL_SCHEMA_ACCESS','Replication'), +('REPL_TRANFSINFO_ACCESS','Replication'), +('REPL_TRANHASHTABLE_ACCESS','Replication'), +('REPL_TRANTEXTINFO_ACCESS','Replication'), +('REPLICA_WRITES','Replication'), +('REQUEST_FOR_DEADLOCK_SEARCH','Idle'), +('RESERVED_MEMORY_ALLOCATION_EXT','Memory'), +('RESOURCE_SEMAPHORE','Memory'), +('RESOURCE_SEMAPHORE_QUERY_COMPILE','Compilation'), +('SLEEP_BPOOL_FLUSH','Idle'), +('SLEEP_BUFFERPOOL_HELPLW','Idle'), +('SLEEP_DBSTARTUP','Idle'), +('SLEEP_DCOMSTARTUP','Idle'), +('SLEEP_MASTERDBREADY','Idle'), +('SLEEP_MASTERMDREADY','Idle'), +('SLEEP_MASTERUPGRADED','Idle'), +('SLEEP_MEMORYPOOL_ALLOCATEPAGES','Idle'), +('SLEEP_MSDBSTARTUP','Idle'), +('SLEEP_RETRY_VIRTUALALLOC','Idle'), +('SLEEP_SYSTEMTASK','Idle'), +('SLEEP_TASK','Idle'), +('SLEEP_TEMPDBSTARTUP','Idle'), +('SLEEP_WORKSPACE_ALLOCATEPAGE','Idle'), +('SOS_SCHEDULER_YIELD','CPU'), +('SQLCLR_APPDOMAIN','SQL CLR'), +('SQLCLR_ASSEMBLY','SQL CLR'), +('SQLCLR_DEADLOCK_DETECTION','SQL CLR'), +('SQLCLR_QUANTUM_PUNISHMENT','SQL CLR'), +('SQLTRACE_BUFFER_FLUSH','Idle'), +('SQLTRACE_FILE_BUFFER','Tracing'), +('SQLTRACE_FILE_READ_IO_COMPLETION','Tracing'), +('SQLTRACE_FILE_WRITE_IO_COMPLETION','Tracing'), +('SQLTRACE_INCREMENTAL_FLUSH_SLEEP','Idle'), +('SQLTRACE_PENDING_BUFFER_WRITERS','Tracing'), +('SQLTRACE_SHUTDOWN','Tracing'), +('SQLTRACE_WAIT_ENTRIES','Idle'), +('THREADPOOL','Worker Thread'), +('TRACE_EVTNOTIF','Tracing'), +('TRACEWRITE','Tracing'), +('TRAN_MARKLATCH_DT','Transaction'), +('TRAN_MARKLATCH_EX','Transaction'), +('TRAN_MARKLATCH_KP','Transaction'), +('TRAN_MARKLATCH_NL','Transaction'), +('TRAN_MARKLATCH_SH','Transaction'), +('TRAN_MARKLATCH_UP','Transaction'), +('TRANSACTION_MUTEX','Transaction'), +('WAIT_FOR_RESULTS','User Wait'), +('WAITFOR','User Wait'), +('WRITE_COMPLETION','Other Disk IO'), +('WRITELOG','Tran Log IO'), +('XACT_OWN_TRANSACTION','Transaction'), +('XACT_RECLAIM_SESSION','Transaction'), +('XACTLOCKINFO','Transaction'), +('XACTWORKSPACE_MUTEX','Transaction'), +('XE_DISPATCHER_WAIT','Idle'), +('XE_TIMER_EVENT','Idle')) AS wc(wait_type, wait_category) + ON ws.wait_type = wc.wait_type +WHERE +ws.wait_type NOT IN ( + N'BROKER_EVENTHANDLER', N'BROKER_RECEIVE_WAITFOR', N'BROKER_TASK_STOP', + N'BROKER_TO_FLUSH', N'BROKER_TRANSMITTER', N'CHECKPOINT_QUEUE', + N'CHKPT', N'CLR_AUTO_EVENT', N'CLR_MANUAL_EVENT', N'CLR_SEMAPHORE', + N'DBMIRROR_DBM_EVENT', N'DBMIRROR_EVENTS_QUEUE', N'DBMIRROR_WORKER_QUEUE', + N'DBMIRRORING_CMD', N'DIRTY_PAGE_POLL', N'DISPATCHER_QUEUE_SEMAPHORE', + N'EXECSYNC', N'FSAGENT', N'FT_IFTS_SCHEDULER_IDLE_WAIT', N'FT_IFTSHC_MUTEX', + N'HADR_CLUSAPI_CALL', N'HADR_FILESTREAM_IOMGR_IOCOMPLETION', N'HADR_LOGCAPTURE_WAIT', + N'HADR_NOTIFICATION_DEQUEUE', N'HADR_TIMER_TASK', N'HADR_WORK_QUEUE', + N'KSOURCE_WAKEUP', N'LAZYWRITER_SLEEP', N'LOGMGR_QUEUE', + N'MEMORY_ALLOCATION_EXT', N'ONDEMAND_TASK_QUEUE', + N'PARALLEL_REDO_WORKER_WAIT_WORK', + N'PREEMPTIVE_HADR_LEASE_MECHANISM', N'PREEMPTIVE_SP_SERVER_DIAGNOSTICS', + N'PREEMPTIVE_OS_LIBRARYOPS', N'PREEMPTIVE_OS_COMOPS', N'PREEMPTIVE_OS_CRYPTOPS', + N'PREEMPTIVE_OS_PIPEOPS', N'PREEMPTIVE_OS_AUTHENTICATIONOPS', + N'PREEMPTIVE_OS_GENERICOPS', N'PREEMPTIVE_OS_VERIFYTRUST', + N'PREEMPTIVE_OS_FILEOPS', N'PREEMPTIVE_OS_DEVICEOPS', N'PREEMPTIVE_OS_QUERYREGISTRY', + N'PREEMPTIVE_OS_WRITEFILE', + N'PREEMPTIVE_XE_CALLBACKEXECUTE', N'PREEMPTIVE_XE_DISPATCHER', + N'PREEMPTIVE_XE_GETTARGETSTATE', N'PREEMPTIVE_XE_SESSIONCOMMIT', + N'PREEMPTIVE_XE_TARGETINIT', N'PREEMPTIVE_XE_TARGETFINALIZE', + N'PWAIT_ALL_COMPONENTS_INITIALIZED', N'PWAIT_DIRECTLOGCONSUMER_GETNEXT', + N'QDS_PERSIST_TASK_MAIN_LOOP_SLEEP', + N'QDS_ASYNC_QUEUE', + N'QDS_CLEANUP_STALE_QUERIES_TASK_MAIN_LOOP_SLEEP', N'REQUEST_FOR_DEADLOCK_SEARCH', + N'RESOURCE_QUEUE', N'SERVER_IDLE_CHECK', N'SLEEP_BPOOL_FLUSH', N'SLEEP_DBSTARTUP', + N'SLEEP_DCOMSTARTUP', N'SLEEP_MASTERDBREADY', N'SLEEP_MASTERMDREADY', + N'SLEEP_MASTERUPGRADED', N'SLEEP_MSDBSTARTUP', N'SLEEP_SYSTEMTASK', N'SLEEP_TASK', + N'SLEEP_TEMPDBSTARTUP', N'SNI_HTTP_ACCEPT', N'SP_SERVER_DIAGNOSTICS_SLEEP', + N'SQLTRACE_BUFFER_FLUSH', N'SQLTRACE_INCREMENTAL_FLUSH_SLEEP', N'SQLTRACE_WAIT_ENTRIES', + N'WAIT_FOR_RESULTS', N'WAITFOR', N'WAITFOR_TASKSHUTDOWN', N'WAIT_XTP_HOST_WAIT', + N'WAIT_XTP_OFFLINE_CKPT_NEW_LOG', N'WAIT_XTP_CKPT_CLOSE', + N'XE_BUFFERMGR_ALLPROCESSED_EVENT', N'XE_DISPATCHER_JOIN', + N'XE_DISPATCHER_WAIT', N'XE_LIVE_TARGET_TVF', N'XE_TIMER_EVENT') +AND waiting_tasks_count > 0 +ORDER BY +waiting_tasks_count DESC +OPTION (RECOMPILE); +` + +const sqlAzureDB string = `IF OBJECT_ID('sys.dm_db_resource_stats') IS NOT NULL +BEGIN + SELECT TOP(1) + 'sqlserver_azurestats' AS [measurement], + REPLACE(@@SERVERNAME,'\',':') AS [sql_instance], + SERVERPROPERTY('ServerName') AS [host], + avg_cpu_percent, + avg_data_io_percent, + avg_log_write_percent, + avg_memory_usage_percent, + xtp_storage_percent, + max_worker_percent, + max_session_percent, + dtu_limit, + avg_login_rate_percent, + end_time + FROM + sys.dm_db_resource_stats WITH (NOLOCK) + ORDER BY + end_time DESC + OPTION (RECOMPILE) +END +ELSE +BEGIN + RAISERROR('This does not seem to be an AzureDB instance. Set "azureDB = false" in your telegraf configuration.',16,1) +END` + +// Queries V1 const sqlPerformanceMetrics string = `SET NOCOUNT ON; SET ARITHABORT ON; SET QUOTED_IDENTIFIER ON; diff --git a/plugins/inputs/system/disk_test.go b/plugins/inputs/system/disk_test.go index 8aeca552316ef..938ca1b06574d 100644 --- a/plugins/inputs/system/disk_test.go +++ b/plugins/inputs/system/disk_test.go @@ -117,6 +117,140 @@ func TestDiskUsage(t *testing.T) { assert.Equal(t, 2*expectedAllDiskMetrics+7, acc.NFields()) } +func TestDiskUsageHostMountPrefix(t *testing.T) { + tests := []struct { + name string + partitionStats []disk.PartitionStat + usageStats []*disk.UsageStat + hostMountPrefix string + expectedTags map[string]string + expectedFields map[string]interface{} + }{ + { + name: "no host mount prefix", + partitionStats: []disk.PartitionStat{ + { + Device: "/dev/sda", + Mountpoint: "/", + Fstype: "ext4", + Opts: "ro", + }, + }, + usageStats: []*disk.UsageStat{ + &disk.UsageStat{ + Path: "/", + Total: 42, + }, + }, + expectedTags: map[string]string{ + "path": "/", + "device": "sda", + "fstype": "ext4", + "mode": "ro", + }, + expectedFields: map[string]interface{}{ + "total": uint64(42), + "used": uint64(0), + "free": uint64(0), + "inodes_total": uint64(0), + "inodes_free": uint64(0), + "inodes_used": uint64(0), + "used_percent": float64(0), + }, + }, + { + name: "host mount prefix", + partitionStats: []disk.PartitionStat{ + { + Device: "/dev/sda", + Mountpoint: "/hostfs/var", + Fstype: "ext4", + Opts: "ro", + }, + }, + usageStats: []*disk.UsageStat{ + &disk.UsageStat{ + Path: "/hostfs/var", + Total: 42, + }, + }, + hostMountPrefix: "/hostfs", + expectedTags: map[string]string{ + "path": "/var", + "device": "sda", + "fstype": "ext4", + "mode": "ro", + }, + expectedFields: map[string]interface{}{ + "total": uint64(42), + "used": uint64(0), + "free": uint64(0), + "inodes_total": uint64(0), + "inodes_free": uint64(0), + "inodes_used": uint64(0), + "used_percent": float64(0), + }, + }, + { + name: "host mount prefix exact match", + partitionStats: []disk.PartitionStat{ + { + Device: "/dev/sda", + Mountpoint: "/hostfs", + Fstype: "ext4", + Opts: "ro", + }, + }, + usageStats: []*disk.UsageStat{ + &disk.UsageStat{ + Path: "/hostfs", + Total: 42, + }, + }, + hostMountPrefix: "/hostfs", + expectedTags: map[string]string{ + "path": "/", + "device": "sda", + "fstype": "ext4", + "mode": "ro", + }, + expectedFields: map[string]interface{}{ + "total": uint64(42), + "used": uint64(0), + "free": uint64(0), + "inodes_total": uint64(0), + "inodes_free": uint64(0), + "inodes_used": uint64(0), + "used_percent": float64(0), + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + mck := &mock.Mock{} + mps := MockPSDisk{&systemPS{&mockDiskUsage{mck}}, mck} + defer mps.AssertExpectations(t) + + var acc testutil.Accumulator + var err error + + mps.On("Partitions", true).Return(tt.partitionStats, nil) + + for _, v := range tt.usageStats { + mps.On("PSDiskUsage", v.Path).Return(v, nil) + } + + mps.On("OSGetenv", "HOST_MOUNT_PREFIX").Return(tt.hostMountPrefix) + + err = (&DiskStats{ps: mps}).Gather(&acc) + require.NoError(t, err) + + acc.AssertContainsTaggedFields(t, "disk", tt.expectedFields, tt.expectedTags) + }) + } +} + func TestDiskStats(t *testing.T) { var mps MockPS defer mps.AssertExpectations(t) diff --git a/plugins/inputs/system/ps.go b/plugins/inputs/system/ps.go index 02239e6e6cdf8..81161ae68492b 100644 --- a/plugins/inputs/system/ps.go +++ b/plugins/inputs/system/ps.go @@ -2,6 +2,7 @@ package system import ( "os" + "path/filepath" "strings" "github.com/influxdata/telegraf" @@ -129,7 +130,7 @@ func (s *systemPS) DiskUsage( continue } - du.Path = strings.TrimPrefix(p.Mountpoint, hostMountPrefix) + du.Path = filepath.Join("/", strings.TrimPrefix(p.Mountpoint, hostMountPrefix)) du.Fstype = p.Fstype usage = append(usage, du) partitions = append(partitions, &p) diff --git a/plugins/inputs/zipkin/README.md b/plugins/inputs/zipkin/README.md index af95542b341cb..b3ff82c1306f6 100644 --- a/plugins/inputs/zipkin/README.md +++ b/plugins/inputs/zipkin/README.md @@ -84,7 +84,7 @@ SELECT max("duration_ns") FROM "zipkin" WHERE "service_name" = 'my_service' AND ### Recommended InfluxDB setup -This test will create high cardinality data so we reccomend using the [tsi influxDB engine](https://www.influxdata.com/path-1-billion-time-series-influxdb-high-cardinality-indexing-ready-testing/). +This test will create high cardinality data so we recommend using the [tsi influxDB engine](https://www.influxdata.com/path-1-billion-time-series-influxdb-high-cardinality-indexing-ready-testing/). #### How To Set Up InfluxDB For Work With Zipkin ##### Steps diff --git a/plugins/outputs/mqtt/mqtt.go b/plugins/outputs/mqtt/mqtt.go index 3bcf1b7d85eb0..05978aa60189f 100644 --- a/plugins/outputs/mqtt/mqtt.go +++ b/plugins/outputs/mqtt/mqtt.go @@ -4,6 +4,7 @@ import ( "fmt" "strings" "sync" + "time" "github.com/influxdata/telegraf" "github.com/influxdata/telegraf/internal" @@ -25,6 +26,9 @@ var sampleConfig = ` # username = "telegraf" # password = "metricsmetricsmetricsmetrics" + ## Timeout for write operations. default: 5s + # timeout = "5s" + ## client ID, if not set a random ID is generated # client_id = "" @@ -149,7 +153,7 @@ func (m *MQTT) Write(metrics []telegraf.Metric) error { func (m *MQTT) publish(topic string, body []byte) error { token := m.client.Publish(topic, byte(m.QoS), false, body) - token.Wait() + token.WaitTimeout(m.Timeout.Duration) if token.Error() != nil { return token.Error() } @@ -159,6 +163,11 @@ func (m *MQTT) publish(topic string, body []byte) error { func (m *MQTT) createOpts() (*paho.ClientOptions, error) { opts := paho.NewClientOptions() + if m.Timeout.Duration < time.Second { + m.Timeout.Duration = 5 * time.Second + } + opts.WriteTimeout = m.Timeout.Duration + if m.ClientID != "" { opts.SetClientID(m.ClientID) } else { diff --git a/plugins/outputs/prometheus_client/README.md b/plugins/outputs/prometheus_client/README.md index 13cd80412adda..d42eecfd429bd 100644 --- a/plugins/outputs/prometheus_client/README.md +++ b/plugins/outputs/prometheus_client/README.md @@ -10,6 +10,14 @@ This plugin starts a [Prometheus](https://prometheus.io/) Client, it exposes all # Address to listen on listen = ":9273" + # Use TLS + tls_cert = "/etc/ssl/telegraf.crt" + tls_key = "/etc/ssl/telegraf.key" + + # Use http basic authentication + basic_username = "Foo" + basic_password = "Bar" + # Path to publish the metrics on, defaults to /metrics path = "/metrics" diff --git a/plugins/outputs/prometheus_client/prometheus_client.go b/plugins/outputs/prometheus_client/prometheus_client.go index 5b3ee2189bb4a..bec4f413a374d 100644 --- a/plugins/outputs/prometheus_client/prometheus_client.go +++ b/plugins/outputs/prometheus_client/prometheus_client.go @@ -2,6 +2,7 @@ package prometheus_client import ( "context" + "crypto/subtle" "fmt" "log" "net/http" @@ -53,6 +54,10 @@ type MetricFamily struct { type PrometheusClient struct { Listen string + TLSCert string `toml:"tls_cert"` + TLSKey string `toml:"tls_key"` + BasicUsername string `toml:"basic_username"` + BasicPassword string `toml:"basic_password"` ExpirationInterval internal.Duration `toml:"expiration_interval"` Path string `toml:"path"` CollectorsExclude []string `toml:"collectors_exclude"` @@ -70,6 +75,14 @@ var sampleConfig = ` ## Address to listen on # listen = ":9273" + ## Use TLS + #tls_cert = "/etc/ssl/telegraf.crt" + #tls_key = "/etc/ssl/telegraf.key" + + ## Use http basic authentication + #basic_username = "Foo" + #basic_password = "Bar" + ## Interval to expire metrics and not deliver to prometheus, 0 == no expiration # expiration_interval = "60s" @@ -78,6 +91,24 @@ var sampleConfig = ` collectors_exclude = ["gocollector", "process"] ` +func (p *PrometheusClient) basicAuth(h http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + if p.BasicUsername != "" && p.BasicPassword != "" { + w.Header().Set("WWW-Authenticate", `Basic realm="Restricted"`) + + username, password, ok := r.BasicAuth() + if !ok || + subtle.ConstantTimeCompare([]byte(username), []byte(p.BasicUsername)) != 1 || + subtle.ConstantTimeCompare([]byte(password), []byte(p.BasicPassword)) != 1 { + http.Error(w, "Not authorized", 401) + return + } + } + + h.ServeHTTP(w, r) + }) +} + func (p *PrometheusClient) Start() error { defaultCollectors := map[string]bool{ "gocollector": true, @@ -110,8 +141,8 @@ func (p *PrometheusClient) Start() error { } mux := http.NewServeMux() - mux.Handle(p.Path, promhttp.HandlerFor( - registry, promhttp.HandlerOpts{ErrorHandling: promhttp.ContinueOnError})) + mux.Handle(p.Path, p.basicAuth(promhttp.HandlerFor( + registry, promhttp.HandlerOpts{ErrorHandling: promhttp.ContinueOnError}))) p.server = &http.Server{ Addr: p.Listen, @@ -119,13 +150,18 @@ func (p *PrometheusClient) Start() error { } go func() { - if err := p.server.ListenAndServe(); err != nil { - if err != http.ErrServerClosed { - log.Printf("E! Error creating prometheus metric endpoint, err: %s\n", - err.Error()) - } + var err error + if p.TLSCert != "" && p.TLSKey != "" { + err = p.server.ListenAndServeTLS(p.TLSCert, p.TLSKey) + } else { + err = p.server.ListenAndServe() + } + if err != nil && err != http.ErrServerClosed { + log.Printf("E! Error creating prometheus metric endpoint, err: %s\n", + err.Error()) } }() + return nil } diff --git a/plugins/outputs/prometheus_client/prometheus_client_test.go b/plugins/outputs/prometheus_client/prometheus_client_test.go index 69509ae1c7aed..276fde009516b 100644 --- a/plugins/outputs/prometheus_client/prometheus_client_test.go +++ b/plugins/outputs/prometheus_client/prometheus_client_test.go @@ -631,7 +631,7 @@ func setupPrometheus() (*PrometheusClient, *prometheus_input.Prometheus, error) time.Sleep(time.Millisecond * 200) p := &prometheus_input.Prometheus{ - Urls: []string{"http://localhost:9127/metrics"}, + URLs: []string{"http://localhost:9127/metrics"}, } return pTesting, p, nil diff --git a/plugins/outputs/wavefront/README.md b/plugins/outputs/wavefront/README.md index 6b673b12acd29..be8fcd7dcdba4 100644 --- a/plugins/outputs/wavefront/README.md +++ b/plugins/outputs/wavefront/README.md @@ -32,7 +32,7 @@ This plugin writes to a [Wavefront](https://www.wavefront.com) proxy, in Wavefro #use_regex = false ## point tags to use as the source name for Wavefront (if none found, host will be used) - #source_override = ["hostname", "snmp_host", "node_host"] + #source_override = ["hostname", "agent_host", "node_host"] ## whether to convert boolean values to numeric values, with false -> 0.0 and true -> 1.0. default is true #convert_bool = true diff --git a/plugins/outputs/wavefront/wavefront.go b/plugins/outputs/wavefront/wavefront.go index be3a7d7586ffb..7f1f8c07731cc 100644 --- a/plugins/outputs/wavefront/wavefront.go +++ b/plugins/outputs/wavefront/wavefront.go @@ -11,6 +11,7 @@ import ( "github.com/influxdata/telegraf" "github.com/influxdata/telegraf/plugins/outputs" + "time" ) type Wavefront struct { @@ -67,7 +68,7 @@ var sampleConfig = ` #use_regex = false ## point tags to use as the source name for Wavefront (if none found, host will be used) - #source_override = ["hostname", "snmp_host", "node_host"] + #source_override = ["hostname", "agent_host", "node_host"] ## whether to convert boolean values to numeric values, with false -> 0.0 and true -> 1.0. default true #convert_bool = true @@ -101,13 +102,11 @@ func (w *Wavefront) Connect() error { uri := fmt.Sprintf("%s:%d", w.Host, w.Port) _, err := net.ResolveTCPAddr("tcp", uri) if err != nil { - log.Printf("Wavefront: TCP address cannot be resolved %s", err.Error()) - return nil + return fmt.Errorf("Wavefront: TCP address cannot be resolved %s", err.Error()) } connection, err := net.Dial("tcp", uri) if err != nil { - log.Printf("Wavefront: TCP connect fail %s", err.Error()) - return nil + return fmt.Errorf("Wavefront: TCP connect fail %s", err.Error()) } defer connection.Close() return nil @@ -122,6 +121,7 @@ func (w *Wavefront) Write(metrics []telegraf.Metric) error { return fmt.Errorf("Wavefront: TCP connect fail %s", err.Error()) } defer connection.Close() + connection.SetWriteDeadline(time.Now().Add(5 * time.Second)) for _, m := range metrics { for _, metricPoint := range buildMetrics(m, w) { diff --git a/plugins/serializers/graphite/graphite.go b/plugins/serializers/graphite/graphite.go index 157add41d9209..f88305ab4a258 100644 --- a/plugins/serializers/graphite/graphite.go +++ b/plugins/serializers/graphite/graphite.go @@ -133,7 +133,7 @@ func InsertField(bucket, fieldName string) string { if fieldName == "value" { return fieldDeleter.Replace(bucket) } - return strings.Replace(bucket, "FIELDNAME", strings.Replace(fieldName, ".", "_", -1), 1) + return strings.Replace(bucket, "FIELDNAME", fieldName, 1) } func buildTags(tags map[string]string) string { diff --git a/scripts/circle-test.sh b/scripts/circle-test.sh deleted file mode 100755 index 735e66cc72474..0000000000000 --- a/scripts/circle-test.sh +++ /dev/null @@ -1,95 +0,0 @@ -#!/bin/bash -# -# This is the Telegraf CircleCI test script. Using this script allows total control -# the environment in which the build and test is run, and matches the official -# build process for InfluxDB. - -BUILD_DIR=$HOME/telegraf-build -VERSION=`git describe --always --tags` - -# Executes the given statement, and exits if the command returns a non-zero code. -function exit_if_fail { - command=$@ - echo "Executing '$command'" - eval $command - rc=$? - if [ $rc -ne 0 ]; then - echo "'$command' returned $rc." - exit $rc - fi -} - -# Check that go fmt has been run. -function check_go_fmt { - fmtcount=`git ls-files | grep '.go$' | grep -v Godep | xargs gofmt -l 2>&1 | wc -l` - if [ $fmtcount -gt 0 ]; then - echo "run 'go fmt ./...' to format your source code." - exit 1 - fi -} - -# Set up the build directory, and then GOPATH. -exit_if_fail mkdir $BUILD_DIR -export GOPATH=$BUILD_DIR -# Turning off GOGC speeds up build times -export GOGC=off -export PATH=$GOPATH/bin:$PATH -exit_if_fail mkdir -p $GOPATH/src/github.com/influxdata - -# Dump some test config to the log. -echo "Test configuration" -echo "========================================" -echo "\$HOME: $HOME" -echo "\$GOPATH: $GOPATH" -echo "\$CIRCLE_BRANCH: $CIRCLE_BRANCH" - -# Move the checked-out source to a better location -exit_if_fail mv $HOME/telegraf $GOPATH/src/github.com/influxdata -exit_if_fail cd $GOPATH/src/github.com/influxdata/telegraf - -# Verify that go fmt has been run -check_go_fmt - -# Build the code -exit_if_fail make - -# Run the tests -exit_if_fail go vet ./... -exit_if_fail make docker-run-circle -# Sleep for OpenTSDB leadership election, aerospike cluster, etc. -exit_if_fail sleep 60 -exit_if_fail go test -race ./... - -# Simple Integration Tests -# check that one test cpu & mem output work -tmpdir=$(mktemp -d) -./telegraf config > $tmpdir/config.toml -exit_if_fail ./telegraf -config $tmpdir/config.toml \ - -test -input-filter cpu:mem - -gzip telegraf -c > "$CIRCLE_ARTIFACTS/telegraf.gz" - -if git describe --exact-match HEAD 2>&1 >/dev/null; then - # install fpm (packaging dependency) - exit_if_fail gem install fpm - # install boto & rpm (packaging & AWS dependencies) - exit_if_fail sudo apt-get install -y rpm python-boto - unset GOGC - tag=$(git describe --exact-match HEAD) - echo $tag - exit_if_fail ./scripts/build.py --release --package --platform=all --arch=all --upload --bucket=dl.influxdata.com/telegraf/releases - mv build $CIRCLE_ARTIFACTS -elif [ -n "${PACKAGE}" ]; then - # install fpm (packaging dependency) - exit_if_fail gem install fpm - # install boto & rpm (packaging & AWS dependencies) - exit_if_fail sudo apt-get install -y rpm python-boto - unset GOGC - if [ "$(git rev-parse --abbrev-ref HEAD)" = master ] - then - exit_if_fail ./scripts/build.py --nightly --package --platform=all --arch=all --upload --bucket=dl.influxdata.com/telegraf/nightlies - else - exit_if_fail ./scripts/build.py --package --platform=all --arch=all - fi - mv build $CIRCLE_ARTIFACTS -fi diff --git a/scripts/release.sh b/scripts/release.sh new file mode 100755 index 0000000000000..8ac0156da50a3 --- /dev/null +++ b/scripts/release.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +ARTIFACT_DIR='artifacts' +run() +{ + "$@" + ret=$? + if [[ $ret -eq 0 ]] + then + echo "[INFO] [ $@ ]" + else + echo "[ERROR] [ $@ ] returned $ret" + exit $ret + fi +} + +run make +run mkdir -p ${ARTIFACT_DIR} +run gzip telegraf -c > "$ARTIFACT_DIR/telegraf.gz" + +# RPM is used to build packages for Enterprise Linux hosts. +# Boto is used to upload packages to S3. +run sudo apt-get install -y rpm python-boto ruby ruby-dev autoconf libtool +run sudo gem install fpm + +if git describe --exact-match HEAD 2>&1 >/dev/null; then + run ./scripts/build.py --release --package --platform=all --arch=all --upload --bucket=dl.influxdata.com/telegraf/releases +elif [ "${CIRCLE_STAGE}" = nightly ]; then + run ./scripts/build.py --nightly --package --platform=all --arch=all --upload --bucket=dl.influxdata.com/telegraf/nightlies +else + run ./scripts/build.py --package --platform=all --arch=all +fi + +run mv build $ARTIFACT_DIR