mirror of
https://github.com/ckaczor/HomeMonitor.git
synced 2026-01-13 17:22:54 -05:00
Add telemetry to power service
This commit is contained in:
@@ -1,12 +1,12 @@
|
|||||||
using ChrisKaczor.HomeMonitor.Power.Service.Data;
|
using ChrisKaczor.HomeMonitor.Power.Service.Data;
|
||||||
using ChrisKaczor.HomeMonitor.Power.Service.Models;
|
using ChrisKaczor.HomeMonitor.Power.Service.Models;
|
||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
|
using Microsoft.ApplicationInsights;
|
||||||
using Microsoft.AspNetCore.SignalR.Client;
|
using Microsoft.AspNetCore.SignalR.Client;
|
||||||
using Microsoft.Extensions.Configuration;
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.Hosting;
|
using Microsoft.Extensions.Hosting;
|
||||||
using RestSharp;
|
using RestSharp;
|
||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
|
||||||
using System.Text.Json;
|
using System.Text.Json;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
@@ -18,18 +18,22 @@ namespace ChrisKaczor.HomeMonitor.Power.Service
|
|||||||
{
|
{
|
||||||
private readonly IConfiguration _configuration;
|
private readonly IConfiguration _configuration;
|
||||||
private readonly Database _database;
|
private readonly Database _database;
|
||||||
|
private readonly TelemetryClient _telemetryClient;
|
||||||
|
|
||||||
private HubConnection _hubConnection;
|
private HubConnection _hubConnection;
|
||||||
private Timer _readTimer;
|
private Timer _readTimer;
|
||||||
|
|
||||||
public PowerReader(IConfiguration configuration, Database database)
|
public PowerReader(IConfiguration configuration, Database database, TelemetryClient telemetryClient)
|
||||||
{
|
{
|
||||||
_configuration = configuration;
|
_configuration = configuration;
|
||||||
_database = database;
|
_database = database;
|
||||||
|
_telemetryClient = telemetryClient;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Task StartAsync(CancellationToken cancellationToken)
|
public Task StartAsync(CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
|
_telemetryClient.TrackTrace($"{nameof(PowerReader)} - Start");
|
||||||
|
|
||||||
_readTimer = new Timer(OnTimer, null, TimeSpan.Zero, TimeSpan.FromSeconds(1));
|
_readTimer = new Timer(OnTimer, null, TimeSpan.Zero, TimeSpan.FromSeconds(1));
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(_configuration["Hub:Power"]))
|
if (!string.IsNullOrEmpty(_configuration["Hub:Power"]))
|
||||||
@@ -81,6 +85,8 @@ namespace ChrisKaczor.HomeMonitor.Power.Service
|
|||||||
|
|
||||||
public Task StopAsync(CancellationToken cancellationToken)
|
public Task StopAsync(CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
|
_telemetryClient.TrackTrace($"{nameof(PowerReader)} - Stop");
|
||||||
|
|
||||||
_readTimer.Dispose();
|
_readTimer.Dispose();
|
||||||
|
|
||||||
_hubConnection?.StopAsync(cancellationToken).Wait(cancellationToken);
|
_hubConnection?.StopAsync(cancellationToken).Wait(cancellationToken);
|
||||||
|
|||||||
@@ -26,6 +26,8 @@
|
|||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="Dapper" Version="2.0.90" />
|
<PackageReference Include="Dapper" Version="2.0.90" />
|
||||||
<PackageReference Include="JetBrains.Annotations" Version="2021.1.0" />
|
<PackageReference Include="JetBrains.Annotations" Version="2021.1.0" />
|
||||||
|
<PackageReference Include="Microsoft.ApplicationInsights" Version="2.17.0" />
|
||||||
|
<PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.17.0" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="5.0.6" />
|
<PackageReference Include="Microsoft.AspNetCore.SignalR.Client" Version="5.0.6" />
|
||||||
<PackageReference Include="Microsoft.Data.SqlClient" Version="2.1.3" />
|
<PackageReference Include="Microsoft.Data.SqlClient" Version="2.1.3" />
|
||||||
<PackageReference Include="RestSharp" Version="106.11.7" />
|
<PackageReference Include="RestSharp" Version="106.11.7" />
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using ChrisKaczor.HomeMonitor.Power.Service.Data;
|
using ChrisKaczor.HomeMonitor.Power.Service.Data;
|
||||||
|
using Microsoft.ApplicationInsights.Extensibility;
|
||||||
using Microsoft.AspNetCore.Builder;
|
using Microsoft.AspNetCore.Builder;
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
@@ -13,6 +14,10 @@ namespace ChrisKaczor.HomeMonitor.Power.Service
|
|||||||
{
|
{
|
||||||
public void ConfigureServices(IServiceCollection services)
|
public void ConfigureServices(IServiceCollection services)
|
||||||
{
|
{
|
||||||
|
services.AddSingleton<ITelemetryInitializer, TelemetryInitializer>();
|
||||||
|
|
||||||
|
services.AddApplicationInsightsTelemetry();
|
||||||
|
|
||||||
services.AddTransient<Database>();
|
services.AddTransient<Database>();
|
||||||
|
|
||||||
services.AddHostedService<PowerReader>();
|
services.AddHostedService<PowerReader>();
|
||||||
|
|||||||
14
Power/Service/TelemetryInitializer.cs
Normal file
14
Power/Service/TelemetryInitializer.cs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
using Microsoft.ApplicationInsights.Channel;
|
||||||
|
using Microsoft.ApplicationInsights.Extensibility;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
namespace ChrisKaczor.HomeMonitor.Power.Service
|
||||||
|
{
|
||||||
|
public class TelemetryInitializer : ITelemetryInitializer
|
||||||
|
{
|
||||||
|
public void Initialize(ITelemetry telemetry)
|
||||||
|
{
|
||||||
|
telemetry.Context.Cloud.RoleName = Assembly.GetEntryAssembly()?.GetName().Name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -94,6 +94,11 @@ spec:
|
|||||||
securityContext:
|
securityContext:
|
||||||
privileged: true
|
privileged: true
|
||||||
env:
|
env:
|
||||||
|
- name: ApplicationInsights__InstrumentationKey
|
||||||
|
valueFrom:
|
||||||
|
secretKeyRef:
|
||||||
|
name: telemetry
|
||||||
|
key: key
|
||||||
- name: Power__Database__Host
|
- name: Power__Database__Host
|
||||||
value: power-database
|
value: power-database
|
||||||
- name: Power__Database__User
|
- name: Power__Database__User
|
||||||
|
|||||||
Reference in New Issue
Block a user