Decent dashboard setup

This commit is contained in:
benbierens 2023-08-13 11:19:35 +02:00
parent 75cdb94e27
commit b4302ab6f7
No known key found for this signature in database
GPG Key ID: FE44815D96D0A1AA
4 changed files with 1864 additions and 147 deletions

View File

@ -1,8 +1,8 @@
using DistTestCore.Metrics; using DistTestCore.Metrics;
using IdentityModel.Client;
using KubernetesWorkflow; using KubernetesWorkflow;
using Newtonsoft.Json; using Newtonsoft.Json;
using System.Reflection; using System.Reflection;
using Utils;
namespace DistTestCore namespace DistTestCore
{ {
@ -19,7 +19,7 @@ namespace DistTestCore
var grafanaContainer = StartGrafanaContainer(); var grafanaContainer = StartGrafanaContainer();
var grafanaAddress = lifecycle.Configuration.GetAddress(grafanaContainer); var grafanaAddress = lifecycle.Configuration.GetAddress(grafanaContainer);
var http = new Http(lifecycle.Log, new DefaultTimeSet(), grafanaAddress, "api/"); var http = new Http(lifecycle.Log, new DefaultTimeSet(), grafanaAddress, "api/", AddBasicAuth);
Log("Connecting datasource..."); Log("Connecting datasource...");
AddDataSource(http, prometheusContainer); AddDataSource(http, prometheusContainer);
@ -44,6 +44,13 @@ namespace DistTestCore
return grafanaContainers.Containers.First(); return grafanaContainers.Containers.First();
} }
private void AddBasicAuth(HttpClient client)
{
client.SetBasicAuthentication(
GrafanaContainerRecipe.DefaultAdminUser,
GrafanaContainerRecipe.DefaultAdminPassword);
}
private static void AddDataSource(Http http, RunningContainer prometheusContainer) private static void AddDataSource(Http http, RunningContainer prometheusContainer)
{ {
var prometheusAddress = prometheusContainer.ClusterExternalAddress; var prometheusAddress = prometheusContainer.ClusterExternalAddress;

View File

@ -1,5 +1,4 @@
using IdentityModel.Client; using Logging;
using Logging;
using Newtonsoft.Json; using Newtonsoft.Json;
using System.Net.Http.Headers; using System.Net.Http.Headers;
using System.Net.Http.Json; using System.Net.Http.Json;
@ -13,14 +12,21 @@ namespace DistTestCore
private readonly ITimeSet timeSet; private readonly ITimeSet timeSet;
private readonly Address address; private readonly Address address;
private readonly string baseUrl; private readonly string baseUrl;
private readonly Action<HttpClient> onClientCreated;
private readonly string? logAlias; private readonly string? logAlias;
public Http(BaseLog log, ITimeSet timeSet, Address address, string baseUrl, string? logAlias = null) public Http(BaseLog log, ITimeSet timeSet, Address address, string baseUrl, string? logAlias = null)
: this(log, timeSet, address, baseUrl, DoNothing, logAlias)
{
}
public Http(BaseLog log, ITimeSet timeSet, Address address, string baseUrl, Action<HttpClient> onClientCreated, string? logAlias = null)
{ {
this.log = log; this.log = log;
this.timeSet = timeSet; this.timeSet = timeSet;
this.address = address; this.address = address;
this.baseUrl = baseUrl; this.baseUrl = baseUrl;
this.onClientCreated = onClientCreated;
this.logAlias = logAlias; this.logAlias = logAlias;
if (!this.baseUrl.StartsWith("/")) this.baseUrl = "/" + this.baseUrl; if (!this.baseUrl.StartsWith("/")) this.baseUrl = "/" + this.baseUrl;
if (!this.baseUrl.EndsWith("/")) this.baseUrl += "/"; if (!this.baseUrl.EndsWith("/")) this.baseUrl += "/";
@ -60,7 +66,6 @@ namespace DistTestCore
var url = GetUrl() + route; var url = GetUrl() + route;
using var content = JsonContent.Create(body); using var content = JsonContent.Create(body);
Log(url, JsonConvert.SerializeObject(body)); Log(url, JsonConvert.SerializeObject(body));
client.SetBasicAuthentication("admin", "admin");
var result = Time.Wait(client.PostAsync(url, content)); var result = Time.Wait(client.PostAsync(url, content));
var str = Time.Wait(result.Content.ReadAsStringAsync()); var str = Time.Wait(result.Content.ReadAsStringAsync());
Log(url, str); Log(url, str);
@ -75,7 +80,6 @@ namespace DistTestCore
using var client = GetClient(); using var client = GetClient();
var url = GetUrl() + route; var url = GetUrl() + route;
Log(url, body); Log(url, body);
client.SetBasicAuthentication("admin", "admin");
var content = new StringContent(body); var content = new StringContent(body);
content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json"); content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
var result = Time.Wait(client.PostAsync(url, content)); var result = Time.Wait(client.PostAsync(url, content));
@ -151,7 +155,12 @@ namespace DistTestCore
{ {
var client = new HttpClient(); var client = new HttpClient();
client.Timeout = timeSet.HttpCallTimeout(); client.Timeout = timeSet.HttpCallTimeout();
onClientCreated(client);
return client; return client;
} }
private static void DoNothing(HttpClient client)
{
}
} }
} }

View File

@ -7,27 +7,19 @@ namespace DistTestCore.Metrics
public override string AppName => "grafana"; public override string AppName => "grafana";
public override string Image => "grafana/grafana-oss:10.0.3"; public override string Image => "grafana/grafana-oss:10.0.3";
public const string DefaultAdminUser = "adminium";
public const string DefaultAdminPassword = "passwordium";
protected override void Initialize(StartupConfig startupConfig) protected override void Initialize(StartupConfig startupConfig)
{ {
//var config = startupConfig.Get<PrometheusStartupConfig>();
//AddExposedPortAndVar("PROM_PORT");
AddExposedPort(3000); AddExposedPort(3000);
//AddEnvVar("PROM_CONFIG", config.PrometheusConfigBase64);
// [auth.anonymous]
// enabled = true
//GF_<SectionName>_<KeyName>__FILE
AddEnvVar("GF_AUTH_ANONYMOUS_ENABLED", "true"); AddEnvVar("GF_AUTH_ANONYMOUS_ENABLED", "true");
AddEnvVar("GF_AUTH_ANONYMOUS_ORG_NAME", "Main Org."); AddEnvVar("GF_AUTH_ANONYMOUS_ORG_NAME", "Main Org.");
AddEnvVar("GF_AUTH_ANONYMOUS_ORG_ROLE", "Editor"); AddEnvVar("GF_AUTH_ANONYMOUS_ORG_ROLE", "Editor");
//AddEnvVar("GF_AUTH_DISABLE_LOGIN_FORM", "true"); AddEnvVar("GF_SECURITY_ADMIN_USER", DefaultAdminUser);
//AddEnvVar("GF_FEATURE_TOGGLES_ENABLE", "publicDashboards"); AddEnvVar("GF_SECURITY_ADMIN_PASSWORD", DefaultAdminPassword);
//[auth]
//disable_login_form = true
} }
} }
} }

File diff suppressed because it is too large Load Diff