Today I released the initial version of another extension for the Maximus Connectivity Monitoring SCOM management pack: Maximus Connectivity DNS Monitoring.
The extension is build with a help from the DNSClient.NET library: https://github.com/MichaCo/DnsClient.NET. This is a simple, yet powerful, DNS client for C#/.Net applications build by MichaCo (https://github.com/MichaCo/DnsClient.NET/commits?author=MichaCo).
The new extension implements one but powerful monitor: ‘DNS Lookup (Dig) Monitor’.
This monitor performs a DNS lookup query with parameters set in a test object (see below) and evaluates results in four different modes. The result evaluation mode defines when the monitor turns into the ‘Warning’ health state or a ‘logical’ error. Any ‘system’ level errors, like connection timeout or invalid server response, will set the monitor in to the ‘Critical’ health state regardless of the result evaluation mode selection.
The first and this simplest mode is ‘Operation Completed Successfully’, which simply ensures that the DNS query completed successfully and returned some valid results. In this mode the monitor turns into two-state monitor flipping between ‘Critical’ and ‘Healthy’ states (because there is no room for ‘logical’ error).
The second and the most universal mode is ‘Match Regular Expression’. In this mode all results of a successful DNS query are printed line by line (serialization is on the DNSClient.NET library) and then the whole print output is validated against the set regular expression (case insensitive and multiline modes). In this mode the monitor will set into the ‘Warning’ state when regular expression doesn’t math the print output.
The last two modes compare DNS query results against a list of IP addresses or names. To satisfy the evaluation mode requirements DNS answers must contain all addresses or names from the configured list. In the current release the ‘Expect IP Address List’ mode is supported for A and AAAA query types, and the ‘Expect Name List’ mode supported for MX queries only.
Test object parameters.
To configure a DNS lookup test, create a new test object of the ‘DNS Dig (NSLookup) Probe’ type. Then configure the following parameters:
- Host or Domain Name: this it the actual query sent to DNS Server (which is defined by the base destination object).
- Port: DNS server port. Pre-filled with the standard value (53).
- Query Type: a type of records to return in the query answer. Such types include ‘A’ for IPv4 address of a host (from the ‘Host or Domain Name’ parameter), ‘AAAA’ for IPv6 address, ‘SOA’ for domain’s authority record, ‘MX’ for domain’s mail exchange, etc.
- Result Evaluation: the result evaluation mode as discussed above.
- Result Evaluation Expression: depending on the evaluation mode, value in this field is either ignored (for the ‘Operation Completed Successfully’ mode), or used as a regular expression, or interpreted as a list of names or IP addresses (for their respective modes).
- Retries Count, Timeout, Use Recursion, and Use TCP Only: these parameters control how DNS client communicate with DNS Server(s) and handle communications.
To install the DNS monitoring extension, you’ll need to install:
- The base library: https://github.com/MaxxVolk/Maximus.Base.Library
- The base connectivity monitoring MP: https://github.com/MaxxVolk/Maximus.Connectivity.Monitoring
- And this extension: https://github.com/MaxxVolk/Maximus.Connectivity.DNS.Monitoring