├── docs
├── Gemfile
├── Docs.csproj
├── _config.yml
├── Releases.md
├── _includes
│ └── navigation.html
└── HowTo
│ └── UpgradeFromV1.md
├── src
├── Opserver.Web
│ ├── Views
│ │ ├── _ViewStart.cshtml
│ │ ├── Elastic
│ │ │ ├── _ViewStart.cshtml
│ │ │ ├── _ViewImports.cshtml
│ │ │ ├── Cluster.Indexes.cshtml
│ │ │ ├── Cluster.Shards.cshtml
│ │ │ ├── Indexes.cshtml
│ │ │ ├── Node.Settings.cshtml
│ │ │ ├── Cluster.Selector.cshtml
│ │ │ └── Node.Selector.cshtml
│ │ ├── Redis
│ │ │ ├── _ViewStart.cshtml
│ │ │ ├── _ViewImports.cshtml
│ │ │ ├── Instance.Config.cshtml
│ │ │ ├── Instance.Selector.cshtml
│ │ │ ├── Dashboard.cshtml
│ │ │ └── Instance.SlowLog.cshtml
│ │ ├── SQL
│ │ │ ├── _ViewStart.cshtml
│ │ │ ├── _ViewImports.cshtml
│ │ │ ├── Operations.Active.Model.cs
│ │ │ ├── Ops.Top.Detail.Model.cs
│ │ │ ├── Instance.Model.cs
│ │ │ ├── Servers.Model.cs
│ │ │ ├── Dashboard.Model.cs
│ │ │ ├── Databases.Model.cs
│ │ │ └── Instance.Memory.cshtml
│ │ ├── CloudFlare
│ │ │ ├── _ViewStart.cshtml
│ │ │ ├── _ViewImports.cshtml
│ │ │ ├── Dashboard.Model.cs
│ │ │ ├── DNS.Model.cs
│ │ │ └── Dashboard.cshtml
│ │ ├── Hub
│ │ │ ├── HubModel.cs
│ │ │ ├── SQL.AvailabilityGroup.cshtml
│ │ │ ├── Index.Issues.cshtml
│ │ │ └── Index.Dashboard.cshtml
│ │ ├── HAProxy
│ │ │ ├── _ViewImports.cshtml
│ │ │ └── HAProxy.Model.cs
│ │ ├── Dashboard
│ │ │ ├── Node.VMHost.cshtml
│ │ │ ├── _ViewImports.cshtml
│ │ │ ├── Node.Model.cs
│ │ │ ├── Dashboard.Model.cs
│ │ │ ├── Dashboard.cshtml
│ │ │ ├── CurrentStatusTypes.cs
│ │ │ ├── Node.Graph.Model.cs
│ │ │ └── Node.Stats.cshtml
│ │ ├── PagerDuty
│ │ │ ├── _ViewImports.cshtml
│ │ │ ├── PagerDuty.Incident.Model.cs
│ │ │ ├── PagerDuty.Model.cs
│ │ │ ├── PagerDuty.EscFull.cshtml
│ │ │ └── PagerDuty.OnCallRow.cshtml
│ │ ├── Exceptions
│ │ │ ├── _ViewImports.cshtml
│ │ │ └── Exceptions.Jira.cshtml
│ │ ├── Shared
│ │ │ ├── TopRefresh.Model.cs
│ │ │ ├── TopRefresh.cshtml
│ │ │ ├── PageNotFound.Model.cs
│ │ │ ├── PollInfo.Model.cs
│ │ │ ├── IssuesButton.cshtml
│ │ │ ├── AccessDenied.cshtml
│ │ │ ├── Partials.MemoryCell.Model.cs
│ │ │ ├── Gauges
│ │ │ │ └── Circle.Model.cs
│ │ │ ├── PageNotFound.cshtml
│ │ │ ├── Error.cshtml
│ │ │ ├── TopBoxOptions.cs
│ │ │ ├── Partials.MemoryCell.cshtml
│ │ │ ├── TopTabs.cshtml
│ │ │ └── NoConfiguration.cshtml
│ │ ├── Home
│ │ │ └── About.Model.cs
│ │ ├── Auth
│ │ │ └── Login.Model.cs
│ │ └── _ViewImports.cshtml
│ ├── favicon.ico
│ ├── wwwroot
│ │ ├── favicon.ico
│ │ └── Content
│ │ │ ├── img
│ │ │ ├── logo
│ │ │ │ ├── logo.eps
│ │ │ │ ├── icon-128.png
│ │ │ │ ├── icon-16.png
│ │ │ │ ├── icon-256.png
│ │ │ │ ├── icon-32.png
│ │ │ │ └── icon.svg
│ │ │ ├── query-plan
│ │ │ │ ├── if.gif
│ │ │ │ ├── top.gif
│ │ │ │ ├── udx.gif
│ │ │ │ ├── icons.png
│ │ │ │ ├── sort.gif
│ │ │ │ ├── split.gif
│ │ │ │ ├── spool.gif
│ │ │ │ ├── while.gif
│ │ │ │ ├── assert.gif
│ │ │ │ ├── assign.gif
│ │ │ │ ├── bitmap.gif
│ │ │ │ ├── collapse.gif
│ │ │ │ ├── convert.gif
│ │ │ │ ├── declare.gif
│ │ │ │ ├── dynamic.gif
│ │ │ │ ├── filter.gif
│ │ │ │ ├── keyset.gif
│ │ │ │ ├── result.gif
│ │ │ │ ├── segment.gif
│ │ │ │ ├── sequence.gif
│ │ │ │ ├── snapshot.gif
│ │ │ │ ├── switch.gif
│ │ │ │ ├── hash_match.gif
│ │ │ │ ├── intrinsic.gif
│ │ │ │ ├── merge_join.gif
│ │ │ │ ├── rdi_lookup.gif
│ │ │ │ ├── table_scan.gif
│ │ │ │ ├── concatenation.gif
│ │ │ │ ├── constant_scan.gif
│ │ │ │ ├── deleted_scan.gif
│ │ │ │ ├── fetch_query.gif
│ │ │ │ ├── inserted_scan.gif
│ │ │ │ ├── log_row_scan.gif
│ │ │ │ ├── nested_loops.gif
│ │ │ │ ├── refresh_query.gif
│ │ │ │ ├── remote_delete.gif
│ │ │ │ ├── remote_insert.gif
│ │ │ │ ├── remote_query.gif
│ │ │ │ ├── remote_scan.gif
│ │ │ │ ├── remote_update.gif
│ │ │ │ ├── table_delete.gif
│ │ │ │ ├── table_insert.gif
│ │ │ │ ├── table_spool.gif
│ │ │ │ ├── table_update.gif
│ │ │ │ ├── bookmark_lookup.gif
│ │ │ │ ├── compute_scalar.gif
│ │ │ │ ├── gather_streams.gif
│ │ │ │ ├── merge_interval.gif
│ │ │ │ ├── row_count_spool.gif
│ │ │ │ ├── sequenceproject.gif
│ │ │ │ ├── distribute_streams.gif
│ │ │ │ ├── population_query.gif
│ │ │ │ ├── stream_aggregate.gif
│ │ │ │ ├── clustered_index_scan.gif
│ │ │ │ ├── clustered_index_seek.gif
│ │ │ │ ├── online_index_insert.gif
│ │ │ │ ├── parameter_table_scan.gif
│ │ │ │ ├── repartition_streams.gif
│ │ │ │ ├── arithmetic_expression.gif
│ │ │ │ ├── clustered_index_delete.gif
│ │ │ │ ├── clustered_index_insert.gif
│ │ │ │ ├── clustered_index_update.gif
│ │ │ │ ├── nonclustered_index_scan.gif
│ │ │ │ ├── nonclustered_index_seek.gif
│ │ │ │ ├── table_valued_function.gif
│ │ │ │ ├── nonclustered_index_delete.gif
│ │ │ │ ├── nonclustered_index_insert.gif
│ │ │ │ ├── nonclustered_index_spool.gif
│ │ │ │ └── nonclustered_index_update.gif
│ │ │ └── apple-touch-icon.png
│ │ │ └── font-awesome
│ │ │ └── fonts
│ │ │ ├── FontAwesome.otf
│ │ │ ├── fontawesome-webfont.eot
│ │ │ ├── fontawesome-webfont.ttf
│ │ │ ├── fontawesome-webfont.woff
│ │ │ └── fontawesome-webfont.woff2
│ ├── Controllers
│ │ ├── GraphController.cs
│ │ ├── DefaultRoute.cs
│ │ ├── HubController.cs
│ │ ├── DashboardController.Admin.cs
│ │ ├── AdminController.cs
│ │ ├── CloudflareController.cs
│ │ ├── HAProxyController.Admin.cs
│ │ ├── DashboardController.Polling.cs
│ │ ├── HAProxyController.cs
│ │ ├── PollController.cs
│ │ └── MiscController.cs
│ ├── ContentSource
│ │ ├── font-awesome
│ │ │ └── less
│ │ │ │ ├── fixed-width.less
│ │ │ │ ├── screen-reader.less
│ │ │ │ ├── larger.less
│ │ │ │ ├── list.less
│ │ │ │ ├── core.less
│ │ │ │ ├── stacked.less
│ │ │ │ ├── font-awesome.less
│ │ │ │ ├── bordered-pulled.less
│ │ │ │ ├── rotated-flipped.less
│ │ │ │ ├── path.less
│ │ │ │ └── animated.less
│ │ ├── bootstrap
│ │ │ └── less
│ │ │ │ ├── mixins
│ │ │ │ ├── center-block.less
│ │ │ │ ├── size.less
│ │ │ │ ├── opacity.less
│ │ │ │ ├── text-emphasis.less
│ │ │ │ ├── text-overflow.less
│ │ │ │ ├── background-variant.less
│ │ │ │ ├── tab-focus.less
│ │ │ │ ├── labels.less
│ │ │ │ ├── resize.less
│ │ │ │ ├── progress-bar.less
│ │ │ │ ├── nav-divider.less
│ │ │ │ ├── reset-filter.less
│ │ │ │ ├── alerts.less
│ │ │ │ ├── nav-vertical-align.less
│ │ │ │ ├── responsive-visibility.less
│ │ │ │ ├── border-radius.less
│ │ │ │ ├── reset-text.less
│ │ │ │ ├── pagination.less
│ │ │ │ ├── panels.less
│ │ │ │ ├── hide-text.less
│ │ │ │ ├── list-group.less
│ │ │ │ ├── clearfix.less
│ │ │ │ ├── table-row.less
│ │ │ │ └── image.less
│ │ │ │ ├── .csslintrc
│ │ │ │ ├── wells.less
│ │ │ │ ├── breadcrumbs.less
│ │ │ │ ├── responsive-embed.less
│ │ │ │ ├── component-animations.less
│ │ │ │ ├── close.less
│ │ │ │ ├── thumbnails.less
│ │ │ │ ├── utilities.less
│ │ │ │ ├── pager.less
│ │ │ │ ├── media.less
│ │ │ │ ├── mixins.less
│ │ │ │ ├── labels.less
│ │ │ │ ├── jumbotron.less
│ │ │ │ ├── badges.less
│ │ │ │ └── bootstrap.less
│ │ ├── themes
│ │ │ ├── light.less
│ │ │ └── _shared
│ │ │ │ └── animations.less
│ │ └── js
│ │ │ └── plugins
│ │ │ └── visibility.js
│ ├── Security
│ │ ├── ISecurityProviderToken.cs
│ │ ├── SecurityProviderFlowType.cs
│ │ ├── UserNamePasswordToken.cs
│ │ ├── OIDCToken.cs
│ │ ├── ActiveDirectorySecuritySettings.cs
│ │ ├── UnconfiguredProvider.cs
│ │ ├── EveryonesReadOnlyProvider.cs
│ │ └── EveryonesAnAdminProvider.cs
│ ├── bundleconfig.json
│ ├── compilerconfig.json
│ ├── Helpers
│ │ ├── DataKeys.cs
│ │ ├── Theme.cs
│ │ ├── TestItem.cs
│ │ └── MiniProfilerCacheStorage.cs
│ ├── Properties
│ │ └── launchSettings.json
│ └── compilerconfig.json.defaults
├── Opserver.Core
│ ├── Helpers
│ │ ├── SortDir.cs
│ │ ├── Singleton.cs
│ │ ├── OpserverConfigException.cs
│ │ ├── WindowsKernelVersions.cs
│ │ └── ThreadStats.cs
│ ├── Data
│ │ ├── HAProxy
│ │ │ ├── Server.cs
│ │ │ ├── Frontend.cs
│ │ │ ├── StatusType.cs
│ │ │ ├── Socket.cs
│ │ │ ├── HAProxyRoles.cs
│ │ │ ├── Backend.cs
│ │ │ ├── HAProxyGroup.Issues.cs
│ │ │ └── StatAttribute.cs
│ │ ├── Dashboard
│ │ │ ├── HardwareType.cs
│ │ │ ├── DashboardRoles.cs
│ │ │ ├── IServiceControlProvider.cs
│ │ │ ├── Node.Polling.cs
│ │ │ ├── GraphPoint.cs
│ │ │ └── Application.cs
│ │ ├── SQL
│ │ │ ├── ISQLVersioned.cs
│ │ │ ├── SQLRoles.cs
│ │ │ ├── SQLInstance.Issues.cs
│ │ │ ├── SQLCluster.Issues.cs
│ │ │ ├── SQLInstance.Utils.cs
│ │ │ ├── SQLInstance.TraceFlags.cs
│ │ │ ├── SQLNode.AvailabilityGroups.AGListener.cs
│ │ │ └── SQLInstance.Errors.cs
│ │ ├── Redis
│ │ │ ├── RedisRoles.cs
│ │ │ ├── RedisInfo.PropertyAttribute.cs
│ │ │ ├── RedisInstance.Issues.cs
│ │ │ ├── RedisReplicationGroup.cs
│ │ │ ├── RedisInstance.Clients.cs
│ │ │ └── RedisConnectionInfo.cs
│ │ ├── Elastic
│ │ │ ├── ElasticRoles.cs
│ │ │ ├── ShardStates.cs
│ │ │ ├── ElasticCluster.Issues.cs
│ │ │ ├── ElasticModule.cs
│ │ │ ├── ElasticCluster.Actions.cs
│ │ │ └── ElasticCluster.Aliases.cs
│ │ ├── PagerDuty
│ │ │ ├── PagerDutyRoles.cs
│ │ │ ├── IncidentStatus.cs
│ │ │ └── PagerDutyModule.cs
│ │ ├── Cloudflare
│ │ │ └── CloudflareRoles.cs
│ │ ├── Exceptions
│ │ │ ├── ExceptionsRoles.cs
│ │ │ └── ExceptionSorts.cs
│ │ ├── SearchResult.cs
│ │ ├── CloudFlare
│ │ │ └── CloudFlareAPI.Actions.cs
│ │ ├── MonitorStatus.cs
│ │ ├── NodeRole.cs
│ │ ├── PollNode.Events.cs
│ │ ├── GlobalPollingStatus.cs
│ │ ├── PollNode.Equality.cs
│ │ ├── PollingService.Stats.cs
│ │ ├── Issue.cs
│ │ └── PollingService.NodeRoles.cs
│ ├── IOverallStatusCount.cs
│ ├── Settings
│ │ ├── OpserverSettings.cs
│ │ ├── Interfaces.cs
│ │ ├── DashboardSettings.SignalFx.cs
│ │ ├── DashboardSettings.Bosun.cs
│ │ ├── DashboardSettings.Providers.cs
│ │ ├── PagerDutySettings.cs
│ │ ├── ModuleSettings.cs
│ │ ├── DashboardSettings.Orion.cs
│ │ ├── DashboardSettings.WMI.cs
│ │ └── CloudFlareSettings.cs
│ ├── IMinVersioned.cs
│ ├── ISeachableNode.cs
│ ├── ExtensionMethods.Exceptions.cs
│ ├── app.config
│ ├── Models
│ │ └── Roles.cs
│ ├── ExtensionMethods.Time.cs
│ ├── ExtensionMethods.Sequences.cs
│ └── StringSplits.cs
├── Opserver.ruleset
└── Directory.Build.props
├── .dockerignore
├── nuget.config
├── .github
└── workflows
│ ├── docker.yml
│ └── main.yml
├── appveyor.yml
├── tests
├── Directory.Build.props
└── Opserver.Tests
│ └── Opserver.Tests.csproj
├── .gitattributes
├── .filenesting.json
├── readme.md
├── Dockerfile
├── Opserver.sln.DotSettings
└── LICENSE
/docs/Gemfile:
--------------------------------------------------------------------------------
1 | source 'https://rubygems.org'
2 | gem 'github-pages', group: :jekyll_plugins
--------------------------------------------------------------------------------
/src/Opserver.Web/Views/_ViewStart.cshtml:
--------------------------------------------------------------------------------
1 | @{
2 | Layout = "~/Views/Shared/Master.cshtml";
3 | }
--------------------------------------------------------------------------------
/src/Opserver.Web/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opserver/Opserver/HEAD/src/Opserver.Web/favicon.ico
--------------------------------------------------------------------------------
/src/Opserver.Web/Views/Elastic/_ViewStart.cshtml:
--------------------------------------------------------------------------------
1 | @{
2 | Layout = this.IsAjaxRequest() ? null : "Dashboard.cshtml";
3 | }
--------------------------------------------------------------------------------
/src/Opserver.Web/Views/Redis/_ViewStart.cshtml:
--------------------------------------------------------------------------------
1 | @{
2 | Layout = this.IsAjaxRequest() ? null : "Dashboard.cshtml";
3 | }
--------------------------------------------------------------------------------
/src/Opserver.Web/Views/SQL/_ViewStart.cshtml:
--------------------------------------------------------------------------------
1 | @{
2 | Layout = this.IsAjaxRequest() ? null : "Dashboard.cshtml";
3 | }
--------------------------------------------------------------------------------
/src/Opserver.Web/Views/CloudFlare/_ViewStart.cshtml:
--------------------------------------------------------------------------------
1 | @{
2 | Layout = this.IsAjaxRequest() ? null : "Dashboard.cshtml";
3 | }
--------------------------------------------------------------------------------
/src/Opserver.Web/Views/Hub/HubModel.cs:
--------------------------------------------------------------------------------
1 | namespace Opserver.Views.Hub
2 | {
3 | public class HubModel
4 | {
5 | }
6 | }
--------------------------------------------------------------------------------
/src/Opserver.Web/wwwroot/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/opserver/Opserver/HEAD/src/Opserver.Web/wwwroot/favicon.ico
--------------------------------------------------------------------------------
/src/Opserver.Web/Views/SQL/_ViewImports.cshtml:
--------------------------------------------------------------------------------
1 | @using Opserver.Data.SQL
2 | @using Opserver.Views.SQL
3 | @inject SQLModule Module
--------------------------------------------------------------------------------
/src/Opserver.Web/Views/Redis/_ViewImports.cshtml:
--------------------------------------------------------------------------------
1 | @using Opserver.Data.Redis
2 | @using Opserver.Views.Redis
3 | @inject RedisModule Module
--------------------------------------------------------------------------------
/src/Opserver.Web/Views/Elastic/_ViewImports.cshtml:
--------------------------------------------------------------------------------
1 | @using Opserver.Data.Elastic
2 | @using Opserver.Views.Elastic
3 | @inject ElasticModule Module
--------------------------------------------------------------------------------
/src/Opserver.Web/Views/HAProxy/_ViewImports.cshtml:
--------------------------------------------------------------------------------
1 | @using Opserver.Data.HAProxy
2 | @using Opserver.Views.HAProxy
3 | @inject HAProxyModule Module
--------------------------------------------------------------------------------
/src/Opserver.Core/Helpers/SortDir.cs:
--------------------------------------------------------------------------------
1 | namespace Opserver
2 | {
3 | public enum SortDir
4 | {
5 | Asc,
6 | Desc
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/src/Opserver.Web/Views/Dashboard/Node.VMHost.cshtml:
--------------------------------------------------------------------------------
1 | @model Node
2 |
10 | You do not have permissions to see this page. 11 |
12 |11 | @Model.Message.IsNullOrEmptyReturn("The page you were looking for could not be found.") 12 |
13 |5 | Jira Actions 6 | @foreach (var action in Model) 7 | { 8 | 9 | ( @action.Caption ) 10 | 11 | } 12 |
13 | 14 | 17 | } -------------------------------------------------------------------------------- /src/Opserver.Web/ContentSource/font-awesome/less/font-awesome.less: -------------------------------------------------------------------------------- 1 | /*! 2 | * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome 3 | * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) 4 | */ 5 | 6 | @import "variables.less"; 7 | @import "mixins.less"; 8 | @import "path.less"; 9 | @import "core.less"; 10 | @import "larger.less"; 11 | @import "fixed-width.less"; 12 | @import "list.less"; 13 | @import "bordered-pulled.less"; 14 | @import "animated.less"; 15 | @import "rotated-flipped.less"; 16 | @import "stacked.less"; 17 | @import "icons.less"; 18 | @import "screen-reader.less"; 19 | -------------------------------------------------------------------------------- /.filenesting.json: -------------------------------------------------------------------------------- 1 | { 2 | "help": "https://go.microsoft.com/fwlink/?linkid=866610", 3 | "root": true, 4 | 5 | "dependentFileProviders": { 6 | "add": { 7 | "pathSegment": { 8 | "add": { 9 | "ExtensionMethods.*": [ ".cs" ], 10 | "Models\\*.*": [ "*.cs" ] 11 | } 12 | }, 13 | "fileSuffixToExtension": { 14 | "add": { 15 | ".Model.cs": [ ".cshtml" ], 16 | ".json.defaults": [ ".json" ], 17 | ".min.css": [ ".css" ], 18 | ".min.js": [ ".js" ], 19 | ".min.js.map": [ ".min.js" ] 20 | } 21 | } 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /src/Opserver.Web/Views/Shared/Error.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | this.SetPageTitle("Error"); 3 | } 4 |10 | I'm so sorry, an error occured doing the thing in the place. 11 |
12 | @if (Current.User.IsGlobalAdmin) 13 | { 14 |You can check the error log for details.
15 | } 16 || Name | 12 |Level | 13 |Policy | 14 |Phone | 16 |
|---|
| Config Param | 14 |Value | 15 |
|---|---|
| @entry.Key | 22 |@entry.Value | 23 |
| Setting | 15 |Value | 16 |
|---|---|
| @s.Key | 23 |@JSON.Serialize(s.Value, Options.ISO8601PrettyPrint) | 24 |
| Command | 14 |Duration | 15 |When | 16 |Ref | 17 |
|---|---|---|---|
| @string.Join(" ", entry.Arguments) | 24 |@entry.Duration.ToTimeStringMini(3) | 25 |@entry.Time.ToRelativeTimeSpanMini() | 26 |docs | 27 |
12 | No security provider was found! This means the security section in your config is either missing or has an invalid provider. 13 |
14 |See the configuration docs here: TODO: Fix after merge
15 | } 16 | else 17 | { 18 |19 | No configuration data was found. This means no Opserver sections are configured/enabled or you have no roles assigned to you. 20 |
21 |
22 | See the Readme.txt in /Config and *.example.json files for examples of a basic JSON configuration...or you can implement your own provider to get settings from anywhere.
23 |
25 | You can browse to /about to see how you have been authenticated and what monitors have been enabled. 26 |
27 | } 28 || Group | 14 |Nodes | 15 |Network | 16 |
|---|---|---|
| @g.Key.Name | 21 |@Health.Description(g) | 22 |@g.Sum(n => n.TotalPrimaryNetworkBitsPerSecond < 0 ? 0 : n.TotalPrimaryNetworkBitsPerSecond).ToSpeed() | 23 |
| Total | 29 |@Health.Description(nodes) | 30 |@nodes.Sum(n => n.TotalPrimaryNetworkBitsPerSecond < 0 ? 0 : n.TotalPrimaryNetworkBitsPerSecond).ToSpeed() | 31 |
| Description | 15 |Clerk Type | 16 |Memory Used | 17 |% Used | 18 |
|---|---|---|---|
| @t.Name | 25 |@t.ClerkType | 26 |@t.UsedBytes.ToSize() | 27 |28 | 32 | | 33 |