You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET MVC应用中集成Kibana Dashboard?能否免登录替换原有仪表盘?

Hey there! Let's tackle your two main questions—integrating Kibana Dashboard into your .NET MVC app, and replacing your existing dashboard with Kibana while skipping the login prompt—with practical, actionable steps.

1. Integrating Kibana Dashboard into .NET MVC App

We’ve got two solid approaches here, depending on how much customization you need.

Option 1: Embed via Iframe (Quick & Simple)

This is the fastest way to get a Kibana dashboard up in your MVC app:

  • First, in your Kibana instance, create and save your target dashboard. Click the "Share" button, select "Embed in an iframe", and copy the generated URL.
  • Open the MVC view where you want to display the dashboard (e.g., Views/Dashboard/Index.cshtml) and add an iframe tag pointing to that Kibana URL:
<div class="dashboard-container">
    <iframe 
        src="http://your-kibana-server/app/dashboards#/view/your-dashboard-id?embed=true&_g=(time:(from:now-7d%2Fd,to:now))"
        width="100%"
        height="90vh"
        frameborder="0"
        style="border:none;">
    </iframe>
</div>
  • Critical Note: You’ll need to enable CORS in Kibana to avoid cross-domain errors. Edit your kibana.yml file and add:
server.cors.enabled: true
server.cors.allow-origin: "http://your-mvc-app-domain" # Replace with your MVC app's URL

Option 2: Use Kibana API (Customizable)

If you want more control over how the dashboard data is rendered, use Kibana’s REST API:

  • Generate an API key in Kibana (go to Management > Security > API Keys) with permissions to access your dashboard.
  • In your MVC controller, use HttpClient to fetch dashboard data from Kibana and pass it to your view:
public async Task<IActionResult> CustomKibanaDashboard()
{
    var apiKey = "your-generated-kibana-api-key";
    var kibanaDashboardId = "your-dashboard-id";
    
    using var client = new HttpClient();
    client.DefaultRequestHeaders.Add("Authorization", $"ApiKey {apiKey}");
    
    var response = await client.GetAsync($"http://your-kibana-server/api/saved_objects/dashboard/{kibanaDashboardId}");
    if (response.IsSuccessStatusCode)
    {
        var dashboardConfig = await response.Content.ReadAsStringAsync();
        ViewBag.KibanaConfig = dashboardConfig;
    }
    
    return View();
}
  • In your view, you can then use Kibana’s Embeddable API to render individual dashboard components—this is more work, but lets you blend Kibana data with your app’s UI seamlessly.
2. Replace Existing Dashboard & Bypass Kibana Login

To skip the Kibana login prompt when users click your app’s dashboard tab, you need to handle authentication between your MVC app and Kibana. Here are the best methods:

Act as a middleman between your users and Kibana—your MVC app handles authentication, then forwards requests to Kibana with a valid auth token:

  • Create a dedicated service account in Kibana with only the permissions needed to view your target dashboard, and generate an API key for it.
  • Add a proxy action in your MVC controller:
public async Task<IActionResult> ProxyKibana()
{
    var kibanaBaseUrl = "http://your-kibana-server";
    var requestedPath = Request.Path.ToString().Replace("/Dashboard/ProxyKibana", "");
    var fullKibanaUrl = $"{kibanaBaseUrl}{requestedPath}";
    
    var apiKey = "your-service-account-api-key";
    
    using var client = new HttpClient();
    client.DefaultRequestHeaders.Add("Authorization", $"ApiKey {apiKey}");
    
    var response = await client.GetAsync(fullKibanaUrl);
    if (response.IsSuccessStatusCode)
    {
        var content = await response.Content.ReadAsStringAsync();
        // Replace Kibana's relative paths with your proxy route to avoid broken links
        content = content.Replace("/app/", "/Dashboard/ProxyKibana/app/");
        return Content(content, response.Content.Headers.ContentType?.ToString());
    }
    
    return StatusCode((int)response.StatusCode);
}
  • Map a catch-all route in your RouteConfig.cs to direct Kibana requests to the proxy:
routes.MapRoute(
    name: "KibanaProxy",
    url: "Dashboard/ProxyKibana/{*path}",
    defaults: new { controller = "Dashboard", action = "ProxyKibana" }
);

Now, when users click your app’s dashboard tab, they’ll hit the proxy route, and your app will handle authenticating with Kibana behind the scenes—no login prompt required.

If your MVC app and Kibana share the same root domain (e.g., app.yourdomain.com and kibana.yourdomain.com), you can share authentication cookies:

  • Configure Kibana to use the same identity provider as your MVC app (e.g., Active Directory, OAuth2).
  • Ensure both apps set cookies with the same domain (e.g., .yourdomain.com) so the Kibana cookie is recognized when users navigate from your MVC app.

Method 3: Disable Kibana Security (Development Only!)

Never do this in production—but for local testing, you can turn off Kibana’s login requirement by editing kibana.yml:

xpack.security.enabled: false

This lets you embed the Kibana dashboard directly via iframe without any authentication checks.


内容的提问来源于stack exchange,提问作者Aikansh Mann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 18:12:49