OpenEye: Enterprise-Grade Monitoring at Near-Zero Cost
Complete visibility into your Windows and SQL Server environments
Achieve complete visibility into your Windows and SQL Server environments with a powerful, self-managed, and agentless monitoring solution. OpenEye is a rearchitected, purpose-built performance metrics collector that delivers fast data processing and ingestion without the overhead.
- Effortless Deployment: Get started in minutes with no complex setup or agents to install.
- Real-Time Insights: Gain immediate visibility with live performance dashboards.
- Proactive Monitoring: Identify and address issues before they impact your systems.
- Cost-Effective: Enjoy enterprise-grade capabilities without the enterprise price tag.
What is OpenEye?
OpenEye is a 64-bit, multi-threaded performance data collector for Windows and SQL Server. Using DCOM and command-line operation, it runs on a single central server (Windows Server or Desktop) to gather real-time performance data from hundreds of remote servers. It has no dependencies, making it simple to deploy anywhere.
Download OpenEye 2025
Get started with enterprise monitoring today
Download OpenEyeVersion 2.1 | Windows 64-bit | ZIP Archive| November 2025
Prerequisites
OpenEye uses two open-source applications for data storage and visualization. Both are easy to install and require no specialized knowledge. Download, install, and configure these applications on a network-accessible server before running OpenEye.
A high-performance time-series database for data ingestion.
Download: https://questdb.com
A leading platform for data visualization and dashboards.
Download: https://grafana.com
Required for Grafana to connect to QuestDB.
Download: QuestDB Grafana Plug-in
Quick Start Guide
Let's set up monitoring for 25 SQL Servers and their underlying Windows hosts from a central location.
Step One: Configure QuestDB and Grafana
Follow the QuestDB installation guide to install it on a server in your network. You can run it as a service or from the command line.
Similarly, install Grafana on a server in your network, running it as a service or from the command line.
Install the QuestDB data-source plug-in in your Grafana instance.
In Grafana, create a new data source named qdbopeneye using the QuestDB plug-in. No username or password is required.
Import the pre-configured dashboard provided in the OpenEye.zip file into Grafana.
Step Two: Configure and Run OpenEye
Download the OpenEye.zip file and extract it to a folder, e.g., D:\OpenEye.
Run OpenEye.exe twice from the command prompt. This generates the required perf_config.txt and perf_server.txt files.
Open perf_config.txt and update the QuestDB server details:
# QuestDB host name or IP address QUEST_DB_HOST=localhost # InfluxDB Line Protocol (ILP/HTTP) port (9000 is the default) QUEST_DB_PORT=9000
Leave all other parameters unchanged for now.
Open perf_server.txt and add your servers using the format described in the next section.
Start D:\OpenEye\OpenEye.exe.
Important Notes
Permissions: OpenEye uses Integrated Security. The account running it must have WMI read-only permissions on target Windows servers and VIEW SERVER STATE permission on target SQL Servers.
Run as a Service: To run OpenEye as a Windows service, use a tool like NSSM (www.nssm.cc).
Data Ingestion: OpenEye uses the InfluxDB Line Protocol (ILP) over HTTP to write to QuestDB. All tables are created automatically via a schema-on-write mechanism.
Adding or Removing Servers
You can dynamically add or remove servers from monitoring.
- Edit the
perf_server.txtfile. - To add a server, insert a new line.
- To remove a server, comment out the line (with a
#) or delete it. - OpenEye automatically detects these changes. The frequency is controlled by the
DURATION_TO_REFRESH_SERVER_MINparameter (default: 5 minutes). - For immediate effect, stop and restart the OpenEye process.
Server Configuration Format
The perf_server.txt file uses the following format:
# Duration | ServerName[,Port] | WIN or SQL # # Duration = Collection interval in seconds (0 = use global default) # ServerName = Windows hostname or IP # SQLServer[,Port] = SQL Server in format Server\Instance, optional port # WIN = Collect Windows performance data only # SQL = Collect both Windows and SQL performance data
Examples
| Configuration | Description |
|---|---|
5|SRV1967|WIN |
Monitor Windows server SRV1967 every 5 seconds. |
5|SRV1967|SQL |
Monitor SQL Server SRV1967 (default instance) every 5 seconds. |
10|SRV1967,2345|SQL |
Monitor SQL Server on SRV1967 port 2345 every 10 seconds. |
0|SRV1967\SQL2025|SQL |
Monitor named instance SQL2025 using the global collection interval. |
15|SRV1967\SQL2022|SQL |
Monitor named instance SQL2022 every 15 seconds. |
Key Configuration Parameters
| Parameter | Description |
|---|---|
DURATION_TO_REFRESH_SERVER_MIN |
How often (in minutes) OpenEye reloads the perf_server.txt file to add new servers or remove commented-out ones. |
OPENEYE_RESET_INTERVAL_MIN & OPENEYE_RESET_AT |
Controls how often OpenEye performs a full reset.
|
External TSQL and WQL Queries
OpenEye allows you to extend its functionality by using your own custom queries, and can even replace its built-in data collection.
Configuration (perf_config.txt)
# Enable/Disable built-in collectors USE_BUILTIN_WMI_COLLECTOR=YES USE_BUILTIN_SQL_COLLECTOR=YES # Enable external custom queries USE_EXTERNAL_WMI_QUERY=YES USE_EXTERNAL_SQL_QUERY=YES
Query File Format
- Place WQL queries in the
\wqlqueriesfolder and TSQL queries in the\sqlqueriesfolder. - WQL File Name Format:
wql_[CustomName]-[Duration].txt - TSQL File Name Format:
sql_[CustomName]-[Duration].txt- The prefix (
wql_/sql_) is mandatory. [CustomName]defines the resulting table name in QuestDB.[Duration]is the execution interval in seconds. If omitted, the global default is used.
- The prefix (
Sample Queries (included in the package)
WQL Queries
wql_transactions-15.txt→ Creates tablewql_transactions, runs every 15 seconds.wql_volume-10.txt→ Creates tablewql_volume, runs every 10 seconds.
TSQL Queries
sql_host_memory-30.txt→ Creates tablesql_host_memory, runs every 30 seconds.sql_single_useplan-60.txt→ Creates tablesql_single_useplan, runs every 60 seconds.sql_waittype-15.txt→ Creates tablesql_waittype, runs every 15 seconds.
Note: For SQL Server-related WMI classes, use the placeholder [WQLSQLName] in your query. OpenEye will automatically substitute the correct WMI class name based on the server and instance defined in perf_server.txt.
Monitoring Hundreds of Servers
Scaling OpenEye for Large Environments
While OpenEye can collect performance metrics from hundreds of servers without restrictions, each OpenEye process is optimized to monitor 32-48 remote servers due to its DCOM and RPC-based architecture. For optimal performance, we recommend limiting each instance to a maximum of 48 servers.
To monitor 200 servers from a central location:
- Divide your 200 servers into 5 groups of 40 servers each
- Create a main directory:
D:\OpenEye - Create 5 sub-folders:
D:\OpenEye\sub-01,D:\OpenEye\sub-02, etc. - Copy the
perf_config.txtfile into each sub-folder - Create individual
perf_server.txtfiles in each sub-folder with the corresponding server groups - Copy the
\wqlqueriesand\sqlqueriesfolders along withOpenEye.exeto each sub-folder - Use NSSM to create a unique Windows service for each sub-folder instance
- Optionally, use
OPENEYE_SERVICE_NAME='Service Name'in your config to identify each service, or leave blank to use the sub-folder name
| Sample OpenEye Management panel |
Note: This distributed approach ensures optimal performance and resource utilization when monitoring large server environments.
No comments:
Post a Comment