npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

sqlmon

v1.4.2

Published

Collects events from SQL Server and saves them to Elasticseach for further analysis.

Downloads

13

Readme

sqlmon

Collects events from SQL Server and saves them to Elasticsearch for further analysis.

You can use sqltop or Kibana to analyze these data.

Installation

npm install -g sqlmon

Sample

$ sqlmon \
    --ss-address sql.example.com \
    --ss-user sa \
    --ss-password p@ssw0rd \
    --es-address elasticsearch.example.com \
    --trace-directory 'c:\trace' \
    --events RPCCompleted SQLBatchCompleted \
    --fields TextData TextDataHash QueryHash LoginName Duration Reads Writes CPU \
    --duration 60s

Connecting to sql.example.com...
Creating trace...
Trace file path: c:\trace\20190729103344280.trc
Starting trace...
Collecting events for 60s until 14:13:20... (Press [c] to stop)
Stopping trace...
Reading trace...
Saving 18120 events to elasticsearch.example.com...
100.00% 18120/18120
Disconnecting...

Usage

Trace directory

sqlmon needs to write trace files to a temporary directory on the server first. Use the ---trace-directory option to specify the location of this directory:

--trace-directory 'c:\trace'

Note 1: The SQL Server service account (usually NT Service\MSSQLSERVER) must have Write permission on this directory.

Note 2: These files are not removed when the program ends and must be manually deleted.

Duration

Use the --duration or -d parameter to specify the duration that the trace must run:

--duration 1m

You can use any specifier like 30s, 10m, 2h, or 1d. The default is 60s.

Max trace size

By default, sqlmon limits the size of trace files to 1 GB. You can change this by using the --max-size option (in megabytes):

--max-size 2048 # 2 GB

Events to capture

Use the --events parameter to specify the events to be captured:

--events RPCCompleted SQLBatchCompleted

See all supported events.

Fields to include

Use the --fields parameter to specify the fields to be included:

--fields TextData Reads Writes CPU Duration RowCounts

See all supported fields.

Index name

The default Elasticsearch index name is sql-YY.MM.DD which can be changed using the --index-prefix option:

--index-prefix trace-

Collect only

If you only want to collect events without saving them to Elasticsearch, you can use the --collect-only option.

Importing trace files

If you have a saved trace file (created by either sqlmon or SQL Server Profiler), you can import it into Elasticsearch using the --import option:

--import 'c:\trace\20190728042508732.trc'

Delayed start

You can use the --delay option to delay starting the operations until a later time:

--delay 1h

Hooks

There are a few hooks defined that let you run any program at certain stages of the execution:

--schedule-hook ./myscript.sh
--collection-start-hook ./myscript.sh
--collection-end-hook ./myscript.sh
--save-start-hook ./myscript.sh
--save-end-hook ./myscript.sh
--error-hook ./myscript.sh
--interrupt-hook ./myscript.sh

The following environment variables are available to use in your hooks:

  • SQLMON_SQLSERVER_ADDRESS
  • SQLMON_SQLSERVER_PORT
  • SQLMON_SQLSERVER_USER
  • SQLMON_SQLSERVER_PASSWORD
  • SQLMON_SQLSERVER_TIMEOUT
  • SQLMON_ELASTICSEARCH_ADDRESS
  • SQLMON_ELASTICSEARCH_PORT
  • SQLMON_ELASTICSEARCH_TIMEOUT
  • SQLMON_TRACE_DIRECTORY
  • SQLMON_INDEX_PREFIX
  • SQLMON_EVENTS
  • SQLMON_FIELDS
  • SQLMON_DURATION
  • SQLMON_MAX_SIZE
  • SQLMON_BATCH_SIZE
  • SQLMON_DELAY
  • SQLMON_COLLECT_ONLY
  • SQLMON_IMPORT
  • SQLMON_START_DATETIME
  • SQLMON_START_TIME
  • SQLMON_TRACE_FILE_PATH
  • SQLMON_STOP_DATETIME
  • SQLMON_STOP_TIME
  • SQLMON_TRACE_FILE_PATH
  • SQLMON_ERROR

Computed fields

TextDataHash

TextDataHash is the hash of the TextData field.

QueryHash

QueryHash is created by first removing all parameters and variables from TextData and then hashing it. It is useful for grouping queries to find the top resource consuming ones.

Supported events and fields

See SQL Server Event Class Reference for detailed information about these fields and events.

Events

  • AssemblyLoad
  • Attention
  • AuditAddDBUserEvent
  • AuditAddLoginEvent
  • AuditAddLogintoServerRoleEvent
  • AuditAddMembertoDBRoleEvent
  • AuditAddRoleEvent
  • AuditAppRoleChangePasswordEvent
  • AuditBackupRestoreEvent
  • AuditBrokerConversation
  • AuditBrokerLogin
  • AuditChangeAuditEvent
  • AuditChangeDatabaseOwner
  • AuditDatabaseManagementEvent
  • AuditDatabaseObjectAccessEvent
  • AuditDatabaseObjectGDREvent
  • AuditDatabaseObjectManagementEvent
  • AuditDatabaseObjectTakeOwnershipEvent
  • AuditDatabaseOperationEvent
  • AuditDatabasePrincipalImpersonationEvent
  • AuditDatabasePrincipalManagementEvent
  • AuditDatabaseScopeGDR
  • AuditDBCCEvent
  • AuditFulltext
  • AuditLogin
  • AuditLoginChangePasswordEvent
  • AuditLoginChangePropertyEvent
  • AuditLoginFailed
  • AuditLoginGDREvent
  • AuditLogout
  • AuditObjectDerivedPermissionEvent
  • AuditObjectGDREvent
  • AuditSchemaObjectAccessEvent
  • AuditSchemaObjectManagementEvent
  • AuditSchemaObjectTakeOwnershipEvent
  • AuditServerAlterTraceEvent
  • AuditServerObjectGDREvent
  • AuditServerObjectManagementEvent
  • AuditServerObjectTakeOwnershipEvent
  • AuditServerOperationEvent
  • AuditServerPrincipalImpersonationEvent
  • AuditServerPrincipalManagementEvent
  • AuditServerScopeGDREvent
  • AuditServerStartsandStops
  • AuditStatementPermissionEvent
  • AutoStats
  • BackgroundJobError
  • BitmapWarning
  • BlockedProcessReport
  • BrokerActivation
  • BrokerConnection
  • BrokerConversation
  • BrokerConversationGroup
  • BrokerCorruptedMessage
  • BrokerForwardedMessageDropped
  • BrokerForwardedMessageSent
  • BrokerMessageClassify
  • BrokerMessageUndeliverable
  • BrokerQueueDisabled
  • BrokerRemoteMessageAcknowledgement
  • BrokerTransmission
  • CPUthresholdexceeded
  • CursorClose
  • CursorExecute
  • CursorImplicitConversion
  • CursorOpen
  • CursorPrepare
  • CursorRecompile
  • CursorUnprepare
  • DatabaseMirroringStateChange
  • DatabaseSuspectDataPage
  • DataFileAutoGrow
  • DataFileAutoShrink
  • DeadlockGraph
  • DegreeofParallelism
  • Deprecated
  • DeprecationAnnouncement
  • DeprecationFinalSupport
  • DTCTransaction
  • ErrorLog
  • EventLog
  • Exception
  • ExchangeSpillEvent
  • ExecPreparedSQL
  • ExecutionWarnings
  • ExistingConnection
  • FTCrawlAborted
  • FTCrawlStarted
  • FTCrawlStopped
  • HashWarning
  • LockAcquired
  • LockCancel
  • LockDeadlock
  • LockDeadlockChain
  • LockEscalation
  • LockReleased
  • LockTimeout
  • LockTimeoutNonZero
  • LogFileAutoGrow
  • LogFileAutoShrink
  • MissingColumnStatistics
  • MissingJoinPredicate
  • MountTape
  • ObjectAltered
  • ObjectCreated
  • ObjectDeleted
  • OLEDBCallEvent
  • OLEDBDataReadEvent
  • OLEDBErrors
  • OLEDBProviderInformation
  • OLEDBQueryInterfaceEvent
  • Performancestatistics
  • PlanGuideSuccessful
  • PlanGuideUnsuccessful
  • PreConnectCompleted
  • PreConnectStarting
  • PrepareSQL
  • ProgressReportOnlineIndexOperation
  • QNdynamics
  • QNparametertable
  • QNsubscription
  • QNtemplate
  • RPCCompleted
  • RPCOutputParameter
  • RPCStarting
  • ScanStarted
  • ScanStopped
  • ServerMemoryChange
  • ShowplanAll
  • ShowplanAllForQueryCompile
  • ShowplanStatisticsProfile
  • ShowplanText
  • ShowplanTextUnencoded
  • ShowplanXML
  • ShowplanXMLForQueryCompile
  • ShowplanXMLStatisticsProfile
  • SortWarnings
  • SPCacheHit
  • SPCacheInsert
  • SPCacheMiss
  • SPCacheRemove
  • SPCompleted
  • SPRecompile
  • SPStarting
  • SPStmtCompleted
  • SPStmtStarting
  • SQLBatchCompleted
  • SQLBatchStarting
  • SQLFullTextQuery
  • SQLStmtCompleted
  • SQLStmtRecompile
  • SQLStmtStarting
  • SQLTransaction
  • TMBeginTrancompleted
  • TMBeginTranstarting
  • TMCommitTrancompleted
  • TMCommitTranstarting
  • TMPromoteTrancompleted
  • TMPromoteTranstarting
  • TMRollbackTrancompleted
  • TMRollbackTranstarting
  • TMSaveTrancompleted
  • TMSaveTranstarting
  • TraceFileClose
  • TransactionLog
  • UnprepareSQL
  • User0
  • User1
  • User2
  • User3
  • User4
  • User5
  • User6
  • User7
  • User8
  • User9
  • UserErrorMessage
  • XQueryStaticType

Fields

  • ApplicationName
  • BigintData1
  • BigintData2
  • BinaryData
  • ClientProcessID
  • ColumnPermissions
  • CPU
  • DatabaseID
  • DatabaseName
  • DBUserName
  • Duration
  • EndTime
  • Error
  • EventClass
  • EventSequence
  • EventSubClass
  • FileName
  • GUID
  • Handle
  • HostName
  • IndexID
  • IntegerData
  • IntegerData2
  • IsSystem
  • LineNumber
  • LinkedServerName
  • LoginName
  • LoginSid
  • MethodName
  • Mode
  • NestLevel
  • NTDomainName
  • NTUserName
  • ObjectID
  • ObjectID2
  • ObjectName
  • ObjectType
  • Offset
  • OwnerID
  • OwnerName
  • ParentName
  • Permissions
  • ProviderName
  • QueryHash
  • Reads
  • RequestID
  • RoleName
  • RowCounts
  • ServerName
  • SessionLoginName
  • Severity
  • SourceDatabaseID
  • SPID
  • SqlHandle
  • StartTime
  • State
  • Success
  • TargetLoginName
  • TargetLoginSid
  • TargetUserName
  • TextData
  • TextDataHash
  • TransactionID
  • Type
  • Writes
  • XactSequence

Version History

  • 1.4
    • Added TextDataHash field.
  • 1.3
    • Added support for hooks.
  • 1.2
    • Added --delay option.
  • 1.1
    • Added --collect-only option.
  • 1.0
    • Initial release.

Author

Soheil Rashidi

  • http://soheilrashidi.com
  • http://twitter.com/soheilpro
  • http://github.com/soheilpro

Copyright and License

Copyright 2019 Soheil Rashidi.

Licensed under the The MIT License (the "License"); you may not use this work except in compliance with the License. You may obtain a copy of the License in the LICENSE file, or at:

http://www.opensource.org/licenses/mit-license.php

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.