Skip to content
This repository has been archived by the owner on Sep 17, 2023. It is now read-only.

danielwertheim/digger

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Digger

Digger is designed to run as a Windows service (using TopShelf). The idea is that it has Collectors that collects time series data that are via a Dispatcher forwarded to a Processor that e.g. stores the data in InfluxDb.

This is a small "util/sample/poc" that I put together to show usage of my .Net InfluxDb client, InfluxDb and Grafana.

Serilog is used for logging: booting, exceptions... Configure file target in App.config.

License

It's licensed under MIT. It's as I said. Still a POC/sample. So use at your own risk ;-)

Collectors

Collectors collects data and transforms the data to IMeasurement instances that carries InfluxDbPoint(s). They are configured dynamically in: digger.agent.conf. The location of this file is determined by App.config.

Currently, the supported collectors are:

  • Performance counters
  • Windows Services (State, ThreadCount, WorkingSetMb)
  • WebHooks

Performance Counter Collector

Produces PerformanceCounterMeasurement. You define what performance counters to monitor and how often they should be extracted in the digger.agent.conf.

{
  "collectors": [
    {
      "type": "PerformanceCounterCollector",
      "name": "cpuPctTotal",
      "collectInterval": "00:00:01.000",
      "performanceCounterConfig": {
        "categoryName": "Processor",
        "counterName": "% Processor Time",
        "instanceName": "_Total"
      }
    },
    {
      "type": "PerformanceCounterCollector",
      "name": "ramAvailableMb",
      "collectInterval": "00:00:01.000",
      "performanceCounterConfig": {
        "categoryName": "Memory",
        "counterName": "Available MBytes"
      }
    }
  ]
}

Windows Service Status Collector

Produces WinServiceStatusMeasurement. You can have many WinServiceStatusCollector configured, but that would only make sense if you would like different collectInterval or inclussion of process info (includeProcessInfo) for different services (serviceNames).

{
  "collectors": [
    {
      "type": "WinServiceStatusCollector",
      "name": "serviceStatus",
      "collectInterval": "00:00:15.000",
      "includeProcessInfo": true,
      "serviceNames": [ "MSSQL$SQLEXPRESS2014" ]
    }
  ]
}

WebHooksCollector

Produces WebHookMeasurement. There's an embeded ASP.Net WebAPI hosted in the Digger.Agent. You can use this to accept e.g. POSTS of web hooks from Mandrill or something and transform them to InfluxDb points.

{
  "collectors": [
    {
      "type": "WebHooksCollector",
      "baseAddress": "http://127.0.0.1:62333"
    }
  ]
}

Dispatchers

The dispatchers accepts an IMeasurement that is dispatched to IProcessors. There are currently two implementations:

  • ImmediateInProcessDispatcher
  • QueuedInProcessDispatcher

Which one to use is defined in the config:

{
  "dispatcherType": "Digger.Agent.Dispatchers.QueuedInProcessDispatcher, Digger.Agent"
}

Processors

The processors is what processes the collected IMeasurements and their InfluxPoints. There are two processors:

  • ConsoleProcessor
  • QueuedInfluxDbProcessor

When just running the application manually, e.g. by pressing (F5) in Visual Studio, it will use the ConsoleProcessor. Otherwise the InfluxDbProcessor. You can tweak this in Digger.Agent.Bootstrap.ProcessorsModule.

{
  "processors": {
    "influxDb": {
      "host": "http://192.168.1.176:8086",
      "database": "digger"
    }
  }
}

In code there's support for having different measurements sent to different InfluxDbTargetInfo, but there's no config support for that yet so, the above will be used as the sinlge target.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages