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 IdentityModel.Client;
using KubernetesWorkflow;
using Newtonsoft.Json;
using System.Reflection;
using Utils;
namespace DistTestCore
{
@ -19,7 +19,7 @@ namespace DistTestCore
var grafanaContainer = StartGrafanaContainer();
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...");
AddDataSource(http, prometheusContainer);
@ -44,6 +44,13 @@ namespace DistTestCore
return grafanaContainers.Containers.First();
}
private void AddBasicAuth(HttpClient client)
{
client.SetBasicAuthentication(
GrafanaContainerRecipe.DefaultAdminUser,
GrafanaContainerRecipe.DefaultAdminPassword);
}
private static void AddDataSource(Http http, RunningContainer prometheusContainer)
{
var prometheusAddress = prometheusContainer.ClusterExternalAddress;

View File

@ -1,5 +1,4 @@
using IdentityModel.Client;
using Logging;
using Logging;
using Newtonsoft.Json;
using System.Net.Http.Headers;
using System.Net.Http.Json;
@ -13,14 +12,21 @@ namespace DistTestCore
private readonly ITimeSet timeSet;
private readonly Address address;
private readonly string baseUrl;
private readonly Action<HttpClient> onClientCreated;
private readonly string? logAlias;
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.timeSet = timeSet;
this.address = address;
this.baseUrl = baseUrl;
this.onClientCreated = onClientCreated;
this.logAlias = logAlias;
if (!this.baseUrl.StartsWith("/")) this.baseUrl = "/" + this.baseUrl;
if (!this.baseUrl.EndsWith("/")) this.baseUrl += "/";
@ -60,7 +66,6 @@ namespace DistTestCore
var url = GetUrl() + route;
using var content = JsonContent.Create(body);
Log(url, JsonConvert.SerializeObject(body));
client.SetBasicAuthentication("admin", "admin");
var result = Time.Wait(client.PostAsync(url, content));
var str = Time.Wait(result.Content.ReadAsStringAsync());
Log(url, str);
@ -75,7 +80,6 @@ namespace DistTestCore
using var client = GetClient();
var url = GetUrl() + route;
Log(url, body);
client.SetBasicAuthentication("admin", "admin");
var content = new StringContent(body);
content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json");
var result = Time.Wait(client.PostAsync(url, content));
@ -151,7 +155,12 @@ namespace DistTestCore
{
var client = new HttpClient();
client.Timeout = timeSet.HttpCallTimeout();
onClientCreated(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 Image => "grafana/grafana-oss:10.0.3";
public const string DefaultAdminUser = "adminium";
public const string DefaultAdminPassword = "passwordium";
protected override void Initialize(StartupConfig startupConfig)
{
//var config = startupConfig.Get<PrometheusStartupConfig>();
//AddExposedPortAndVar("PROM_PORT");
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_ORG_NAME", "Main Org.");
AddEnvVar("GF_AUTH_ANONYMOUS_ORG_ROLE", "Editor");
//AddEnvVar("GF_AUTH_DISABLE_LOGIN_FORM", "true");
//AddEnvVar("GF_FEATURE_TOGGLES_ENABLE", "publicDashboards");
//[auth]
//disable_login_form = true
AddEnvVar("GF_SECURITY_ADMIN_USER", DefaultAdminUser);
AddEnvVar("GF_SECURITY_ADMIN_PASSWORD", DefaultAdminPassword);
}
}
}

File diff suppressed because it is too large Load Diff