通过API Key免登录访问Grafana

本文介绍了如何在平台中集成Grafana并实现免登录访问。首先修改配置文件允许嵌入,然后提供了两种方法:匿名登录(可能存在安全风险)和使用API Key。针对跨域和预检请求问题,通过调整Nginx配置解决,并详细给出了Nginx配置示例。最后,提醒注意不要在无痕模式下访问以避免登录问题。
摘要由CSDN通过智能技术生成

场景:
平台要集成grafana,想绕过用户登录,目前知道有2个方法。
前提:先修改配置defaults.ini/grafana.ini允许嵌入

allow_embedding = true

一是使用匿名登陆,最简单方便(推荐)

这种方案的前提是你的公司允许匿名登陆grafana(其实我觉得没啥问题)但是从安全的角度来说确实不太好,那好,接着往下看吧。

二是使用grafana颁发一个API Key
在这里插入图片描述

curl -H "Authorization: Bearer eyJrIjoiT2x0Zmhua3BCa2Z6TXpWUnBIT3UxSlV0M0lnWEhVYUYiLCJuIjoiZGV2b3BzcGxhdGZvcm0iLCJpZCI6MX0=" http://127.0.0.1:3000/api/dashboards/home

到这里就清晰了,只要增加一个Authorization就可以,最起码接口访问没问题。

问题:
1、最开始碰到的问题是代理后浏览器预检(即OPTIONS请求)过不去,那还玩啥,先过滤掉,看文末nginx配置。
2、vue中使用iframe碰到浏览器跨域问题

<template>
<iframe
    <--这是一个grafana dashboard分享链接-->
    src="http://z.zzd.com:81/d/aLUHoFdnk/new-dashboard-copy?orgId=1&theme=light&kiosk=tv"
    frameborder="0"
    width="100%"
    height="100%"
    allowtransparency
></iframe>
</template>

就加个nginx,配置允许跨域访问。结果访问是没问题,但是出现这么个报错。
在这里插入图片描述
仔细排查发现静态资源是可以了,但是api请求没有带过来。
按照上面配置一同乱改,也是不行。(如果你搞好了欢迎留言)

3、于是选了如下一个曲线救国的办法,增加一个新域名解析到grafana,在nginx上配置Authorization和Bearer配置(这时候直接访问nginx: z.zzd.com 就实现免登录了)
4、千万不要使用浏览器无痕模式访问,看图就懂了(超级坑,原来我早就弄好了,但是习惯用无痕模式访问。。。)
在这里插入图片描述
5、nginx配置

upstream archery-dev {
    #server 192.168.0.104:3000; 
    server 172.16.10.82:3000; 
}
 
server {
    listen   80;
    server_name z.zzd.com
#    underscores_in_headers on;
 
    access_log /var/log/nginx/archery-dev_access.log main;
    error_log  /var/log/nginx/archery-dev_error.log;

    location / {
        proxy_buffer_size 128k;
	proxy_buffers   32 128k;
	proxy_busy_buffers_size 128k;

        add_header Access-Control-Allow-Origin '*';
        add_header Access-Control-Allow-Methods '*';
        add_header Access-Control-Allow-Credentials true;
        #add_header Access-Control-Allow-Headers Authorization;
        # 因为if中无法使用proxy_set_header字段,故先设置变量,再赋值给变量,再在proxy_set_header中设置Authorization
        set $auth "";
        if ($host ~* "(wisers.com.cn)|(z.zzd.com)|(localhost)|(127.0.0.1)")
	{
            set $auth 'Bearer eyJrIjoiT2x0Zmhua3BCa2Z6TXpWUnBIT3UxSlV0M0lnWEhVYUYiLCJuIjoiZGV2b3BzcGxhdGZvcm0iLCJpZCI6MX0=';
	}

        if ($request_method = OPTIONS) {
            return 200;
        }
        proxy_set_header     Host $host;
        proxy_set_header     Authorization $auth;
        proxy_set_header     X-Real-IP $remote_addr;
        proxy_set_header     X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header     X-Forwarded-Proto $scheme;
        proxy_pass           http://archery-dev/;
    }
}

6、ingress-nginx配置
参考我的另一篇文章

直接访问grafana流量:user —> nginx ----> grafana(old.zzd.com)
通过平台访问grafana流量:user—> 自建平台—> nginx —> grafana(z.zzd.com)
访问平台效果
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值