如何在Ubuntu 18.04上安装和保护Grafana

Grafana是一个开源数据可视化和监控工具,它集成了来自Prometheus,InfluxDB,Graphite和ElasticSearch等来源的复杂数据。在本教程中,您将安装Grafana并使用SSL证书和Nginx反向代理保护它。设置Grafana后,您可以选择通过GitHub配置用户身份验证。

作者选择Dev Color作为Write for DOnations计划的一部分接受捐赠。

介绍

Grafana是一个开源数据可视化和监控工具,它集成了来自PrometheusInfluxDBGraphiteElasticSearch等来源的复杂数据。 Grafana允许您为数据创建警报,通知和临时过滤器,同时通过内置共享功能更轻松地与团队成员进行协作。

在本教程中,您将安装Grafana并使用SSL证书Nginx反向代理保护它。 设置Grafana后,您可以选择通过GitHub配置用户身份验证,从而更好地组织团队权限。

先决条件

要学习本教程,您需要:

第1步 - 安装Grafana

在第一步中,您将Grafana安装到您的Ubuntu 18.04服务器上。 您可以通过直接从其官方网站下载或通过APT存储库安装Grafana。 由于APT存储库可以更轻松地安装和管理Grafana的更新,因此您将在本教程中使用该方法。

虽然Grafana可以在官方的Ubuntu 18.04软件包存储库中找到 ,但Grafana的版本可能不是最新的,所以使用Grafana的官方存储库。

使用wget下载Grafana GPG密钥 ,然后将输出传递给apt-key 这将为您的APT安装的可信密钥列表添加密钥,这将允许您下载并验证GPG签名的Grafana软件包。

wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -

在此命令中,选项-q关闭wget的状态更新消息, -O输出您下载到终端的文件。 这两个选项确保只将下载文件的内容流水线apt-key

接下来,将Grafana存储库添加到您的APT源:

sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"

刷新APT缓存以更新包列表:

sudo apt update

接下来,确保将从Grafana存储库安装Grafana:

apt-cache policy grafana

上一个命令的输出告诉您要安装的Grafana版本以及从哪里检索包。 验证列表顶部的安装候选项是否来自官方Grafana存储库, https://packages.grafana.com/oss/debhttps://packages.grafana.com/oss/deb

grafana:
  Installed: (none)
  Candidate: 6.3.3
  Version table:
     6.3.3 500
        500 https://packages.grafana.com/oss/deb stable/main amd64 Packages
…

您现在可以继续安装:

sudo apt install grafana

安装Grafana后,使用systemctl启动Grafana服务器:

sudo systemctl start grafana-server

接下来,通过检查服务的状态来验证Grafana是否正在运行:

sudo systemctl status grafana-server

您将收到类似于此的输出:

● grafana-server.service - Grafana instance
   Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; disabled; vendor preset: enabled)
   Active: active (running) since Tue 2019-08-13 08:22:30 UTC; 11s ago
     Docs: http://docs.grafana.org
 Main PID: 13630 (grafana-server)
    Tasks: 7 (limit: 1152)
…

此输出包含有关Grafana进程的信息,包括其状态,主进程标识符(PID)等。 active (running)表示进程正在正常运行。

最后,启用该服务以在启动时自动启动Grafana:

sudo systemctl enable grafana-server

您将收到以下输出:

Synchronizing state of grafana-server.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable grafana-server
Created symlink /etc/systemd/system/multi-user.target.wants/grafana-server.service → /usr/lib/systemd/system/grafana-server.service.

这证实了systemd已经创建了自动启动Grafana的必要符号链接。

Grafana现已安装并可以使用。 接下来,您将使用反向代理和SSL证书确保与Grafana的连接。

第2步 - 设置反向代理

使用SSL证书可以通过加密与Grafana之间的连接来确保您的数据安全。 但是,要使用此连接,首先需要将Nginx重新配置为Grafana的反向代理。

打开您在先决条件中使用Let's Encrypt设置Nginx服务器块时创建的Nginx配置文件。 您可以使用任何文本编辑器,但在本教程中我们将使用nano

sudo nano /etc/nginx/sites-available/your_domain

找到以下块:

在/ etc / nginx的/网站可用/您的网域
…
    location / {
        try_files $uri $uri/ =404;
    }
…

因为您已经将Nginx配置为通过SSL进行通信,并且因为您服务器的所有Web流量已经通过Nginx,您只需要告诉Nginx将所有请求转发给Grafana,Grafana默认在端口3000上运行。

删除此location block的现有try_files行,并将其替换为以下proxy_pass选项。

在/ etc / nginx的/网站可用/您的网域
…
    location / {
        proxy_pass http://localhost:3000;
    }
…

这会将代理映射到适当的端口。 完成后,按CTRL+X保存并关闭文件,然后按Y ,然后按ENTER如果您使用的是nano

现在,测试新设置以确保正确配置所有内容:

sudo nginx -t

您将收到以下输出:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

最后,通过重新加载Nginx来激活更改:

sudo systemctl reload nginx

现在,您可以通过将Web浏览器指向https:// your_domain来访问默认的Grafana登录屏幕。 如果您无法访问Grafana,请确认您的防火墙已设置为允许端口443上的流量,然后重新跟踪之前的说明。

通过加密与Grafana的连接,您现在可以实施其他安全措施,从更改Grafana的默认管理凭据开始。

第3步 - 更新凭证

由于默认情况下每个Grafana安装都使用相同的管理凭据,因此最佳做法是尽快更改您的登录信息。 在此步骤中,您将更新凭据以提高安全性。

首先,从Web浏览器导航到https:// your_domain 这将打开默认登录屏幕,您将看到Grafana徽标,要求您输入电子邮件或用户名密码的表单, 登录按钮以及忘记密码? 链接。

Grafana登录

在“ 用户”和“ 密码”字段中输入admin ,然后单击“ 登录”按钮。

在下一个屏幕上,系统会要求您通过更改默认密码来提高帐户的安全性:

更改密码

在“ 新密码”和“ 确认新密码”字段中输入您要开始使用的密码

在此处,您可以单击“ 保存”以保存新信息,或按“ 跳过”跳过此步骤。 如果跳过,下次登录时将提示您更改密码。

为了提高Grafana设置的安全性,请单击“ 保存” 您将返回Home Dashboard页面:

家庭仪表板

您现在已通过更改默认凭据来保护您的帐户。 接下来,您将更改Grafana配置,以便未经您许可,任何人都无法创建新的Grafana帐户。

第4步 - 禁用Grafana注册和匿名访问

Grafana提供的选项允许访问者自己创建用户帐户并预览仪表板而无需注册。 如果无法通过互联网访问Grafana,或者当它使用服务状态等公共数据时,您可能希望允许这些功能。 但是,当使用Grafana在线处理敏感数据时,匿名访问可能是一个安全问题。 要解决此问题,请对Grafana配置进行一些更改。

首先打开Grafana的主配置文件进行编辑:

sudo nano /etc/grafana/grafana.ini

[users]标题下找到以下allow_sign_up指令:

/etc/grafana/grafana.ini
…
[users]
# disable user signup / registration
;allow_sign_up = true
…

使用true启用此指令会在登录屏幕上添加一个注册按钮,允许用户注册自己并访问Grafana。

禁用此指令时会删除“ 注册”按钮并增强Grafana的安全性和隐私性。

通过删除;取消注释该指令; 在该行的开头,然后将该选项设置为false

/etc/grafana/grafana.ini
…
[users]
# disable user signup / registration
allow_sign_up = false

接下来,在[auth.anonymous]标题下找到以下enabled指令:

/etc/grafana/grafana.ini
…
[auth.anonymous]
# enable anonymous access
;enabled = false
…

enabled设置为true可使非注册用户访问您的仪表板; 将此选项设置为false限制仅对注册用户的仪表板访问。

通过删除;取消注释该指令; 在该行的开头,然后将该选项设置为false

/etc/grafana/grafana.ini
…
[auth.anonymous]
enabled = false

保存文件并退出文本编辑器。

要激活更改,请重新启动Grafana:

sudo systemctl restart grafana-server

通过检查Grafana的服务状态来验证一切正常:

sudo systemctl status grafana-server

像以前一样,输出将报告Grafana active (running)

现在,将您的网络浏览器指向https:// your_domain 要返回“ 注册”屏幕,请将光标移至屏幕左下方的头像,然后单击出现的“ 注销”选项。

退出后,请确认没有“ 注册”按钮,并且无法在未输入登录凭据的情况下登录。

此时,Grafana已完全配置并可以使用。 接下来,您可以通过GitHub进行身份验证来简化组织的登录过程。

(可选)第5步 - 设置GitHub OAuth应用程序

对于另一种登录方法,您可以将Grafana配置为通过GitHub进行身份验证,GitHub为授权的GitHub组织的所有成员提供登录访问权限。 当您希望允许多个开发人员协作和访问指标而无需创建特定于Grafana的凭据时,这可能特别有用。

首先登录与您的组织关联的GitHub帐户,然后导航到您的GitHub个人资料页面, https://github.com/settings/profilehttps://github.com/settings/profile

在屏幕左侧导航菜单中的组织设置下单击您组织的名称。

GitHub组织设置

在下一个屏幕上,您将看到您的组织配置文件 ,您可以在其中更改组织显示名称 ,组织电子邮件和组织URL等设置

由于Grafana使用OAuth (一种用于授予远程第三方访问本地资源的开放标准) - 通过GitHub对用户进行身份验证,因此您需要在GitHub中创建新的OAuth应用程序

单击屏幕左下角的开发人员设置下的OAuth应用程序链接。

如果您在GitHub上还没有与您的组织关联的任何OAuth应用程序,您将被告知没有组织拥有的应用程序 否则,您会看到已连接到您帐户的OAuth应用程序列表。

单击“ 注册应用程序”按钮继续。

在下一个屏幕上,填写有关Grafana安装的以下详细信息:

  • 应用程序名称 - 这有助于您区分不同的OAuth应用程序。
  • 主页URL - 告诉GitHub在哪里可以找到Grafana。 在此字段中输入https:// your_domain ,将your_domain替换为您的域名。
  • 应用程序说明 - 这提供了OAuth应用程序用途的说明。
  • 应用程序回调URL - 这是成功通过身份验证后将发送用户的地址。 对于Grafana,此字段必须设置为https:// your_domain /login/github

请记住,通过GitHub登录的Grafana用户将看到您在前三个字段中输入的值,因此请务必输入有意义且适当的内容。

完成后,表单将如下所示:

GitHub注册OAuth应用程序

单击绿色, 注册应用程序按钮。

现在,您将被重定向到包含与新OAuth应用程序关联的客户端ID客户端密钥的页面。 记下这两个值,因为您需要将它们添加到Grafana的主配置文件中以完成设置。

警告:确保将您的客户端ID客户端密钥保存在安全且非公开的位置,因为它们可能被用作攻击的基础。

创建了GitHub OAuth应用程序后,您现在可以重新配置Grafana以使用GitHub进行身份验证。

(可选)第6步 - 将Grafana配置为GitHub OAuth应用程序

要为Grafana设置完成GitHub身份验证,您现在将对Grafana配置文件进行一些更改。

首先,打开主Grafana配置文件。

sudo nano /etc/grafana/grafana.ini

找到[auth.github]标题,并通过删除;取消注释此部分; 在除了;team_ids=之外的每一行的开头,在本教程中不会更改。

接下来,配置Grafana以将GitHub与您的OAuth应用程序的client_idclient_secret值一起使用。

  • enabledallow_sign_up设置为true 这将启用GitHub身份验证,并允许允许的组织的成员自己创建帐户。 请注意,此设置与您在第4步中更改的[users]下的allow_sign_up属性不同。
  • client_idclient_secret设置为创建GitHub OAuth应用程序时获得的值。
  • allowed_organizations设置为您组织的名称,以确保只有您组织的成员才能注册并登录Grafana。

完整配置如下所示:

/etc/grafana/grafana.ini
…
[auth.github]
enabled = true
allow_sign_up = true
client_id = your_client_id_from_github
client_secret = your_client_secret_from_github
scopes = user:email,read:org
auth_url = https://github.com/login/oauth/authorize
token_url = https://github.com/login/oauth/access_token
api_url = https://api.github.com/user
;team_ids =
allowed_organizations = your_organization_name

你现在告诉Grafana它需要知道的关于GitHub的一切。 要完成设置,您需要在反向代理后面启用重定向。 这是通过在[server]标题下设置root_url值来完成的。

/etc/grafana/grafana.ini
…
[server]
root_url = https://your_domain

保存配置并关闭文件。

然后,重新启动Grafana以激活更改:

sudo systemctl restart grafana-server

最后,验证服务是否已启动并正在运行。

sudo systemctl status grafana-server

输出将指示服务active (running)

现在,通过导航到https:// your_domain来测试新的身份验证系统。 如果您已登录Grafana,请将鼠标悬停在屏幕左下角的头像日志上,然后单击名称旁边显示的辅助菜单中的“ 注销”

在登录页面上,您将看到原始登录按钮下的新部分,其中包含使用GitHub徽标登录GitHub按钮。

使用GitHub的Grafana登录页面

单击使用GitHub登录按钮重定向到GitHub,您将在其中登录GitHub帐户并确认您打算授权Grafana

单击绿色, 授权your_github_organization按钮。

注意:确保您的GitHub帐户是您认可的组织的成员,并且您的Grafana电子邮件地址与您的GitHub电子邮件地址相匹配。 如果您尝试使用不是已批准组织成员的GitHub帐户进行身份验证,您将收到一条登录失败消息,告知您, 用户不是其中一个必需组织的成员

您现在将使用现有的Grafana帐户登录。 如果您登录的用户尚不存在Grafana帐户,Grafana将创建具有Viewer权限的新用户帐户,确保新用户只能使用现有仪表板。

要更改新用户的默认权限,请打开主Grafana配置文件以进行编辑。

sudo nano /etc/grafana/grafana.ini

[users]标题下找到auto_assign_org_role指令,并通过删除;取消注释该设置; 在行的开头。

将指令设置为以下值之一:

  • Viewer - 只能使用现有仪表板
  • Editor - 可以更改使用,修改和添加仪表板
  • Admin - 有权做任何事情

本教程将设置自动分配给Viewer

/etc/grafana/grafana.ini
…
[users]
…
auto_assign_org_role = Viewer

保存更改后,关闭文件并重新启动Grafana:

sudo systemctl restart grafana-server

检查服务的状态:

sudo systemctl status grafana-server

像以前一样,状态将显示为active (running)

此时,您已完全配置Grafana以允许GitHub组织的成员注册并使用Grafana安装。

结论

在本教程中,您安装,配置并保护了Grafana,并且您还学习了如何允许组织成员通过GitHub进行身份验证。

要扩展当前的Grafana安装,请参阅官方和社区构建的仪表板列表 要了解有关一般使用Grafana的更多信息,请参阅Grafana官方文档 ,或查看我们的其他监控教程