-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathDeclaredMetrics.cs
40 lines (35 loc) · 1.58 KB
/
DeclaredMetrics.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
using System.Collections.Generic;
using Arcane.Operator.Extensions;
using Arcane.Operator.Models;
using Arcane.Operator.Models.Commands;
using k8s;
using k8s.Models;
using Snd.Sdk.Helpers;
namespace Arcane.Operator.Services.Metrics;
public static class DeclaredMetrics
{
/// <summary>
/// Prefix for metrics published by the Arcane Operator
/// </summary>
private const string TAG_PREFIX = "arcane.sneaksanddata.com";
public static string TrafficMetricName(this WatchEventType eventType) => $"objects.{eventType.ToString().ToLowerInvariant()}";
public static SortedDictionary<string, string> GetMetricsTags(this IKubernetesObject<V1ObjectMeta> job) => new()
{
{ $"{TAG_PREFIX}/namespace", job.Namespace() },
{ $"{TAG_PREFIX}/kind", job.Kind },
{ $"{TAG_PREFIX}/name", job.Name() },
};
public static SortedDictionary<string, string> GetMetricsTags(this V1Job job) => new()
{
{ $"{TAG_PREFIX}/namespace", job.Namespace() },
{ $"{TAG_PREFIX}/kind", job.GetStreamKind() },
{ $"{TAG_PREFIX}/stream_id", job.GetStreamId() }
};
public static SortedDictionary<string, string> GetMetricsTags(this SetStreamClassStatusCommand s) => new()
{
{ $"{TAG_PREFIX}/namespace", s.streamClass?.Namespace().ToLowerInvariant() },
{ $"{TAG_PREFIX}/kind_ref", CodeExtensions.CamelCaseToSnakeCase(s.streamClass?.KindRef ?? "unknown") },
{ $"{TAG_PREFIX}/kind", CodeExtensions.CamelCaseToSnakeCase(s.streamClass?.Kind ?? "unknown") },
{ $"{TAG_PREFIX}/phase", s.phase.ToString().ToLowerInvariant() }
};
}