1. Operators
    1. Operators & Operator Groups
      1. Primary Operator
      2. Backup Operators
        1. Based on Operator Calendars
    2. Role based Security
      1. Read/Write Access Rights
      2. Web Service Rights
      3. API Rights
    3. Profiles
    4. Alert Settings
      1. Escalation Methods
        1. Based on Operator Groups & Operator Calendars
    5. Operator Calendars
      1. Time Off
      2. On-Call
      3. etc
  2. Database
    1. Multiple Read/Write Mechanisms
      1. Direct (Stored Proc)
      2. API
      3. PowerShell
        1. Leverages API
      4. Web Service
    2. Data Aggregation (Rollups)
      1. Custom Aggregation Rollups
        1. Ex: 5 minutes, 2 hours, etc
        2. Custom Retention Periods
          1. Based on # of data points in retention set
          2. Ex: Retain 300 data points
      2. Named Aggregation/Retention Period
        1. Each Monitor can "subscribe" to any named Agg/Retention period
    3. SQL Server 2008+
      1. Must support SQL Express
  3. Data Collection
    1. Windows Service
      1. Full Scheduler
      2. Multiple Concurrent Services
        1. Each Monitor will be assigned to a specific Windows Service
      3. Multi-Threaded
        1. User defineable # of threads
        2. Define thread affinity of each monitor
          1. Affinity is a recommendation, Service may override this as needed
    2. External Collection Mechanisms
      1. Ex: PowerShell
      2. Ex: IIS
      3. Ex: Custom Apps
  4. Alerting
    1. Escalated Alerting
      1. Based on Operator Calendar & Operator Escalation Settings
    2. Summary Notifications
      1. Scheduled
        1. Options to specify what is reported in summary
          1. Ex: All Current
          2. Ex: Activity Summary for last 24 hours
          3. Ex: Activity Summary since Operator went "offline"
    3. Alerting Mechanisms
      1. Email
      2. Twitter?
      3. Blog?
        1. If yes, which ones?
          1. Wordpress
      4. Wiki?
      5. RSS?
      6. Must provide extensible architecture
        1. Allows users to write their own mechanisms to push alerts as they wish (Push)
          1. Community web site for sharing
    4. Email Interaction?
      1. Use Email to request status, initiate actions, etc
  5. Monitors
    1. Monitors & Counters
      1. Counter Types
        1. Text Types
          1. Ex: Broken Link
        2. Numeric Types
          1. Metadata
          2. Data Types
          3. Units
          4. Additive/Sub-Additive
          5. Counter Value Transformations
          6. Translations
          7. Scaling
          8. Metadata
          9. Units
        3. Date Types
      2. Custom Statuses
        1. (Not just OK, Warn, Fail)
        2. Error Levels
          1. Ties in to Operator Escalation Mechanism
    2. Additional Native Monitors
      1. Web Site Link Checker
        1. Anonymous
        2. Logged-In
      2. IIS Built-In
        1. Page Load Timing
        2. Page Errors
      3. Improve SNMP Monitor
      4. CPU - Multi-Instance
      5. POP/SMTP
      6. Hardware Inventory
      7. OS/Driver Inventory?
      8. Software Inventory?
      9. More robust SNMP monitoring
    3. Monitor Dependencies
      1. Monitoring Dependency
        1. Rules on what to do with Dependent Monitors
      2. Alerting Dependency
        1. Rules on what to do with Dependent Monitors
        2. Does not affect monitoring
    4. PowerShell Integration
      1. Provide PowerShell script alternative to every native monitor type
      2. Some monitors will be PowerShell only
      3. Ability to specify PowerShell editor
        1. Ex: PowerGUI
        2. Ex: PowerShellPlus
        3. Ex: Sapien's Primal Pad
      4. PowerShell Host Name
        1. Change $host.name to something like PolyMon
      5. Ability to hook into Write-Host, Write-Warning, Write-Error
        1. Rules to map custom error levels to Write-Host/Warning/Error
      6. Simple Plug-In approach to PowerShell based monitors
        1. Makes PolyMon easily extensible
        2. Web site that allows easy publish/download of PowerShell based monitors
          1. Allows community to easily/quickly grow PolyMon beyond core product
    5. Post-Event Actions
      1. PowerShell
      2. Multiple Triggers
        1. Based on Custom Error Levels
      3. Allows modifying Alerting/Monitoring status of other monitors
        1. Ex: Stop monitoring X if this monitor has a Fail status
      4. Repitition Rules
        1. Ex: Run Once when status changes from x to y
        2. Ex: Run every x minutes when status=y
        3. etc
      5. Dependency Rules
        1. Ex: If this monitor's status = X and (Monitor Y's status=Z or Monitor A's Counter B = C)
    6. Native Monitors
      1. Ability to run impersonate other user
        1. Credentials stored in database
          1. Must be encrypted
  6. Reporting
    1. Front-End
      1. Windows
        1. Customizable Dashboard
          1. Plug-In Architecture for Dashboard Widgets
          2. Community web site to publish/download widgets
      2. Customizable Dashboard
        1. Ex: DropThings, iGoogle style
        2. Plug-In Architecture for Dashboard Widgets
          1. Community web site to publish/download widgets
      3. PowerShell Integration
        1. cmdlets
        2. Look at display mechanisms offered by vendors and provide easy integration if possible
    2. Full API access to reporting data
    3. Statistics
      1. Regression Trends
      2. Fluctuations
      3. Baseline
        1. Deviation from baseline
    4. SQL Reporting Services
      1. Plug-In SSRS
    5. Extensible Architecture
      1. User has ability to define their own reporting mechanism (Pull)
        1. Community web site for sharing
        2. SharePoint, Drupal, Joomla, etc
      2. Other Possible Platforms
        1. Google Gadgets
        2. Vista Gadgets
        3. iPhone
  7. Monitor Management
    1. Security
      1. Super Admins
        1. Can do anything
      2. Role Based Operators
    2. Host Group Templates
      1. Defines a set of multiple monitors
        1. Implements monitor dependency mechanism
      2. Group Host/IP
        1. Applies to all sub-monitors
          1. Cannot be overriden at sub-monitor level
      3. Group Operators
        1. Can be overriden at individual sub-monitor level
      4. Group Alert Settings
        1. Can be overriden at individual sub-monitor level
      5. Group Agg/Retention
        1. Can be overriden at individual sub-monitor level
      6. Security Impersonation
        1. Can be overriden at individual sub-monitor level
      7. Monitor Dependency
    3. Monitor Group Templates
      1. Single Monitor
      2. Defines a set of multiple Host/IP
      3. Group operators
        1. Can be overriden at individual sub-host level
      4. Group Alert Settings
        1. Can be overriden at individual sub-host level
      5. Group Agg/Retention
        1. Can be overriden at individual sub-host level
      6. Security Impersonation
        1. Can be overriden at sub-host level
    4. Discovery Templates
      1. Defines discovery rules for monitored entities
      2. Default Agg/Retention
        1. Can be overriden at individual rule level
      3. Default Operators
        1. Can be overriden at individual rule level
      4. Default Alert Settings
        1. Can be overriden at individual rule level
      5. Default Security Impersonation
        1. Can be overriden at individual rule level
      6. Monitor Dependency
      7. Rule Application
        1. Applies Rules to create Instances
          1. Option to include/exclude at discovery time
          2. Override Agg/Retention
          3. Override Operators
          4. Override Alert Settings
          5. Override Security Impersonation