-
Notifications
You must be signed in to change notification settings - Fork 37
/
ITelemetryProvider.cs
200 lines (184 loc) · 8.71 KB
/
ITelemetryProvider.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
// ------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License (MIT). See License.txt in the repo root for license information.
// ------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.Fabric.Health;
using System.Threading;
using System.Threading.Tasks;
using FabricObserver.Observers.Utilities.Telemetry;
namespace FabricObserver.Observers.Interfaces
{
/// <summary>
/// ITelemetry interface.
/// </summary>
public interface ITelemetryProvider
{
/// <summary>
/// Gets or sets the telemetry API key.
/// </summary>
string Key { get; set; }
/// <summary>
/// Calls telemetry provider to track the availability.
/// </summary>
/// <param name="serviceUri">Service name.</param>
/// <param name="instance">Instance identifier.</param>
/// <param name="testName">Availability test name.</param>
/// <param name="captured">The time when the availability was captured.</param>
/// <param name="duration">The time taken for the availability test to run.</param>
/// <param name="location">Name of the location the availability test was run from.</param>
/// <param name="success">True if the availability test ran successfully.</param>
/// <param name="cancellationToken">CancellationToken instance.</param>
/// <param name="message">Error message on availability test run failure.</param>
/// <returns>a completed task.</returns>
Task ReportAvailabilityAsync(
Uri serviceUri,
string instance,
string testName,
DateTimeOffset captured,
TimeSpan duration,
string location,
bool success,
CancellationToken cancellationToken,
string message = null);
/// <summary>
/// Calls telemetry provider to report health.
/// </summary>
/// <param name="scope">Scope of health evaluation (Cluster, Node, etc.).</param>
/// <param name="propertyName">Value of the property.</param>
/// <param name="state">Health state.</param>
/// <param name="unhealthyEvaluations">Unhealthy evaluations aggregated description.</param>
/// <param name="source">Source of emission.</param>
/// <param name="cancellationToken">CancellationToken instance.</param>
/// <param name="serviceName">Optional: TraceTelemetry context cloud service name.</param>
/// <param name="instanceName">Optional: TraceTelemetry context cloud instance name.</param>
/// <returns>a Task.</returns>
Task ReportHealthAsync(
string propertyName,
HealthState state,
string unhealthyEvaluations,
string source,
CancellationToken cancellationToken,
string serviceName = null,
string instanceName = null);
/// <summary>
/// Calls telemetry provider to report Health.
/// </summary>
/// <param name="telemetryData">MachineTelemetryData instance.</param>
/// <param name="cancellationToken">CancellationToken instance.</param>
Task ReportHealthAsync(
TelemetryDataBase telemetryData,
CancellationToken cancellationToken);
/// <summary>
/// Calls telemetry provider to report a metric.
/// </summary>
/// <param name="name">Name of the metric.</param>
/// <param name="value">Value of the property.</param>
/// <param name="source">Name of the observer omitting the signal.</param>
/// <param name="cancellationToken">CancellationToken instance.</param>
/// <returns>A completed task of bool.</returns>
Task<bool> ReportMetricAsync<T>(
string name,
T value,
string source,
CancellationToken cancellationToken);
/// <summary>
/// Calls telemetry provider to report a metric.
/// </summary>
/// <param name="telemetryData">TelemetryData instance.</param>
/// <param name="cancellationToken">CancellationToken instance.</param>
Task ReportMetricAsync(
TelemetryDataBase telemetryData,
CancellationToken cancellationToken);
/// <summary>
/// Calls telemetry provider to report a metric.
/// </summary>
/// <param name="telemetryData">MachineTelemetryData instance.</param>
/// <param name="cancellationToken">CancellationToken instance.</param>
Task ReportMetricAsync(
MachineTelemetryData telemetryData,
CancellationToken cancellationToken);
/// <summary>
/// Calls telemetry provider to report a metric.
/// </summary>
/// <param name="telemetryData">List of ChildProcessTelemetry.</param>
/// <param name="cancellationToken">CancellationToken instance.</param>
Task ReportMetricAsync(
List<ChildProcessTelemetryData> telemetryData,
CancellationToken cancellationToken);
/// <summary>
/// Calls telemetry provider to report a metric.
/// </summary>
/// <param name="name">Name of the metric.</param>
/// <param name="value">Value of the property.</param>
/// <param name="properties">IDictionary<string>,<string> containing name/value pairs of additional properties.</param>
/// <param name="cancellationToken">CancellationToken instance.</param>
/// <returns>A completed task.</returns>
Task ReportMetricAsync(
string name,
long value,
IDictionary<string, string> properties,
CancellationToken cancellationToken);
/// <summary>
/// Calls telemetry provider to report a metric.
/// </summary>
/// <param name="service">Name of the service.</param>
/// <param name="partition">Partition id.</param>
/// <param name="name">Name of the metric.</param>
/// <param name="value">Value of the metric.</param>
/// <param name="cancellationToken">CancellationToken instance.</param>
/// <returns>A completed task.</returns>
Task ReportMetricAsync(
string service,
Guid partition,
string name,
long value,
CancellationToken cancellationToken);
/// <summary>
/// Calls telemetry provider to report a metric.
/// </summary>
/// <param name="role">Name of the role.</param>
/// <param name="id">Replica or instance identifier.</param>
/// <param name="name">Name of the metric.</param>
/// <param name="value">Value if the metric.</param>
/// <param name="cancellationToken">CancellationToken instance.</param>
/// <returns>A completed task.</returns>
Task ReportMetricAsync(
string role,
long id,
string name,
long value,
CancellationToken cancellationToken);
/// <summary>
/// Calls telemetry provider to report a metric.
/// </summary>
/// <param name="roleName">Name of the role.</param>
/// <param name="instance">Instance idenfitier.</param>
/// <param name="name">Name of the metric.</param>
/// <param name="value">Value of the metric.</param>
/// <param name="count">Number of samples for this metric.</param>
/// <param name="min">Minimum value of the samples.</param>
/// <param name="max">Maximum value of the samples.</param>
/// <param name="sum">Sum of all of the samples.</param>
/// <param name="deviation">Standard deviation of the sample set.</param>
/// <param name="properties">IDictionary<string>,<string> containing name/value pairs of additional properties.</param>
/// <param name="cancellationToken">CancellationToken instance.</param>
/// <returns>A completed task.</returns>
Task ReportMetricAsync(
string roleName,
string instance,
string name,
long value,
int count,
long min,
long max,
long sum,
double deviation,
IDictionary<string, string> properties,
CancellationToken cancellationToken);
Task ReportClusterUpgradeStatusAsync(ServiceFabricUpgradeEventData eventData, CancellationToken token);
Task ReportApplicationUpgradeStatusAsync(ServiceFabricUpgradeEventData appUpgradeInfo, CancellationToken token);
Task ReportNodeSnapshotAsync(NodeSnapshotTelemetryData nodeSnapshotTelem, CancellationToken token);
}
}