夜莺监控(Nightingale)与 Grafana 深度整合

flycat 2025-06-17 14:55:12

夜莺方便管理告警规则、通知规则,新引入的 Pipeline 机制也非常灵活,可以和自己公司的 CMDB 等打通。但是我司长期已经习惯使用 Grafana 看图,Grafana 里积累了很多配置,没法迁移到夜莺,而且在看图方面,还是 Grafana 道行深。

所以,希望二者整合,强强联合。

我司最终决定使用统一的 SSO 来解决夜莺和 Grafana 的登录,然后把 Grafana 内嵌到夜莺里(老版本使用集成仪表盘内嵌,新版本使用集成中心-系统集成内嵌)。

最终效果

最终效果

用户使用 SSO 登录夜莺,然后在夜莺里访问 Grafana,Grafana 发现当前用户没有登录(因为 iframe 无法共享外部的 jwt token 或 cookie),就会自动跳转到 SSO 登录页面,SSO 那边发现当前用户已经登录过了,又自动跳转回来,所以对终端用户而言,就像是夜莺和 Grafana 共享了登录信息一样。

下面介绍一下配置方式。

提前准备

  • 最新版夜莺并配置域名 HTTPS
  • 最新版 Grafana 并配置域名 HTTPS
  • 支持 OIDC 认证的单点认证系统 如 Keycloak 本文使用 Keycloak

配置 Keycloak

在 Keycloak 中分别为夜莺和 Grafana 创建 ClientID 和 Secret。注意 Client Protocol 选择 openid-connect。

下面是 Keycloak 中配置 Grafana 的截图,供参考:

分别将夜莺和 Grafana 的 Client ID 以及 Secret 保存,后面会用到。

配置夜莺

在夜莺的 系统配置-单点登录-OIDC 中修改 SSO 配置,内容如下:

Enable = true
DisplayName = 'SSO登录'
RedirectURL = 'https://xxx.com/callback' # 修改为夜莺地址
SsoAddr = 'https://xxx/auth/realms/xxx' # SSO地址
SsoLogoutAddr = 'https://xxx/auth/realms/xxx/protocol/openid-connect/logout' # SSO注销地址
ClientId = 'xxx' # 夜莺Client ID
ClientSecret = 'xxx' # 夜莺Client Secret
CoverAttributes = true
DefaultRoles = ['xxx']
Scopes = ['openid', 'profile', 'email', 'phone']
[Attributes]
Username = 'preferred_username'
Nickname = 'preferred_username'
Phone = 'phone_number'
Email = 'email'

保存后测试是否可通过 SSO 登录夜莺。

配置 Grafana

修改 Grafana 的配置文件,我的环境下,配置文件的路径是 /etc/grafana/grafana.ini,修改的部分如下:

[auth.generic_oauth]
name = SSO
icon = signin
enabled = true
allow_sign_up = true
auto_login = true
client_id = xxx
client_secret = xxx
scopes = openid email profile offline_access
email_attribute_name = preferred_username
email_attribute_path = email
login_attribute_path = preferred_username
auth_url = https://xxx/auth/realms/xxx/protocol/openid-connect/auth
token_url = https://xxx/auth/realms/xxx/protocol/openid-connect/token
api_url = https://xxx/auth/realms/xxx/protocol/openid-connect/userinfo
skip_org_role_sync = true
role_attribute_path = grafana_role

[auth]
# Login cookie name
disable_signout_menu = false
auto_assign_org = true
auto_assign_org_role = Viewer

[security]
cookie_secure = true
cookie_samesite = none
allow_embedding = true
allow_embedding = true

[server]
domain = xxx
root_url = https://xxx.com/
enable_gzip = true

保存后重启 Grafana 测试是否可通过 SSO 登录夜莺。当然,在 Grafana 启用 SSO 之前,可以提前创建一个管理员,后续 SSO 登录的用户可由管理员分配权限。

如上就完成了两个系统的 SSO 配置。供大家参考。

标签: 夜莺监控
快猫星云 联系方式 快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云 联系方式
快猫星云
OpenSource
开源版
Flashcat
Flashcat