前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Ubuntu 16.04上安装和保护Grafana

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

原创
作者头像
宇cccc
修改2018-07-31 10:55:50
3.3K0
修改2018-07-31 10:55:50
举报

介绍

在本教程中,您将安装Grafana并使用SSL证书Nginx反向代理保护它,然后您将修改Grafana的默认设置以获得更高的安全性。

准备

要学习本教程,您需要:

  • 一个Ubuntu 16.04服务器,包括sudo权限的非root用户和防火墙。
  • 完全注册的域名,没有域名可以在腾讯云注册。为您的服务器设置以下DNS记录
代码语言:txt
复制
-   指向服务器的公共IP地址包含`example.com`的**A**记录。
代码语言:txt
复制
-   指向服务器的公共IP地址包含`www.example.com`的**A**记录。

第1步 - 安装Grafana

您可以直接从官方网站下载或通过APT存储库安装Grafana。由于APT存储库可以更轻松地安装和管理Grafana的更新,因此我们将使用该方法。

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

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

代码语言:txt
复制
$ curl https://packagecloud.io/gpg.key | sudo apt-key add -

接下来,将packagecloud存储库添加到APT源。

代码语言:txt
复制
$ sudo add-apt-repository "deb https://packagecloud.io/grafana/stable/debian/ stretch main"

注意:虽然本教程是为Ubuntu 16.04编写的,但packagecloud仅提供Debian,Python,RPM和RubyGem包。请务必使用stretch存储库获取最新版本的Grafana。

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

代码语言:txt
复制
$ sudo apt-get update

从packagecloud存储库安装Grafana。

代码语言:txt
复制
$ apt-cache policy grafana

输出告诉您将安装的Grafana版本以及将检索的包的位置。验证安装是否来自官方Grafana存储库https://packagecloud.io/grafana/stable/debian

代码语言:txt
复制
grafana:
  Installed: (none)
  Candidate: 4.6.2
  Version table:
     4.6.2 500
        500 https://packagecloud.io/grafana/stable/debian stretch/main amd64 Packages
...

开始使用Grafana。

代码语言:txt
复制
$ sudo systemctl start grafana-server

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

代码语言:txt
复制
$ sudo systemctl status grafana-server

输出包含有关Grafana进程的信息,包括其状态,主进程标识符(PID),内存使用等。

如果服务状态不是active (running),请检查输出并重新跟踪前面的步骤以解决问题。

代码语言:txt
复制
● grafana-server.service - Grafana instance
   Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; disabled; vendor preset: enabled)
   Active: active (running) since Thu 2017-12-07 12:10:33 UTC; 19s ago
     Docs: http://docs.grafana.org
 Main PID: 14796 (grafana-server)
    Tasks: 6
   Memory: 32.0M
      CPU: 472ms
   CGroup: /system.slice/grafana-server.service
           └─14796 /usr/sbin/grafana-server --config=/etc/grafana/grafana.ini --pidfile=/var/run/grafana/grafana-server.pid cfg:default.paths.logs=/var/log/grafana cfg:default.paths.data=/var/lib/grafana cfg:default.paths.plugins=/var/lib/grafana/plugins
...

最后,启用该服务以自动启动Grafana。

代码语言:txt
复制
$ sudo systemctl enable grafana-server

输出确认systemd已创建了自动启动Grafana的必要符号链接。如果收到错误消息,请按照终端中的说明解决问题,然后再继续。

代码语言:txt
复制
Synchronizing state of grafana-server.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install enable grafana-server
Created symlink from /etc/systemd/system/multi-user.target.wants/grafana-server.service to /usr/lib/systemd/system/grafana-server

Grafana现已安装。接下来,使用反向代理和SSL证书保护与Grafana的连接。

第2步 - 设置反向代理

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

打开设置Nginx服务器块时创建的Nginx配置文件。

代码语言:txt
复制
$ sudo nano /etc/nginx/sites-available/example.com

找到以下块:

/etc/nginx/sites-available/example.com

代码语言:txt
复制
...
    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;
    }
...

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

删除此位置块中的try_files行,并将其替换为以下内容,这些内容均以proxy_开头。

/etc/nginx/sites-available/example.com

代码语言:txt
复制
...
    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
...

完成后,保存文件并关闭文本编辑器。

现在,测试新设置。

代码语言:txt
复制
$ sudo nginx -t

输出应该显示syntax is oktest is successful。如果收到错误消息,请按照屏幕上的说明进行操作。

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

代码语言:txt
复制
$ sudo systemctl reload nginx

您现在可以通过https://example.com访问Grafana登录界面。如果您无法访问Grafana,请确认您的防火墙已设置为允许端口443上的流量。

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

第3步 - 更新凭证

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

打开<https://example.com>,您将看到Grafana登录界面。

Grafana登录界面
Grafana登录界面

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

在下一个屏幕上,您将看到Home Dashboard。您可以在此处添加数据源以及创建,预览和修改仪表板。

单击屏幕左上角的小Grafana徽标以显示应用程序的主菜单。然后,将鼠标悬停在管理按钮上以打开第二组菜单选项。最后,单击“配置文件”按钮。

主菜单界面
主菜单界面

您现在位于用户个人资料页面,您可以在其中更改与您的帐户关联的姓名电子邮件用户名。您还可以更新“首选项”以获取UI主题等设置,并且可以更改密码。

个人资料页面
个人资料页面

在“ 名称”,“ 电子邮件 ”和“用户名”字段中输入您要使用的姓名,电子邮件地址和用户名,然后单击“信息”部分中的“ 更新”按钮以保存设置。

您还可以更改UI主题时区,然后按“ 首选项”区域中的“更新”按钮以保存更改。Grafana提供DarkLight UI主题,以及默认主题。

最后,通过单击页面底部的“更改密码”按钮更改与您的帐户关联的密码。在旧密码字段中输入您当前的密码admin,然后在New PasswordConfirm Password字段中输入您的新密码

单击“ 更改密码”以保存新信息,或按“ 取消”以放弃更改。

您现在已经通过更改默认凭据来保护您的帐户,因此我们还要确保没有您的许可,任何人都无法创建新的Grafana帐户。

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

Grafana提供的选项允许访问者自己创建用户帐户并预览仪表板。当您将Grafana连接到互联网时,这可能会有安全隐患。但是,当Grafana无法通过互联网访问或使用公共数据(如服务状态)时,您可能又希望允许这些功能。因此,了解如何配置Grafana以满足您的需求非常重要。

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

代码语言:txt
复制
$ sudo nano /etc/grafana/grafana.ini

在users标题下找到allow_sign_up指令:

/etc/grafana/grafana.ini

代码语言:txt
复制
...
[users]
# disable user signup / registration
;allow_sign_up = true
...

用true启用此指令将在登录屏幕上添加“ 注册”按钮,允许用户注册并访问Grafana。使用false禁用此指令会删除“ 注册”按钮并增强Grafana的安全性和隐私性。

除非您需要允许匿名访问者自行注册,否则请通过删除该行的开头的;标点取消注释该指令,然后将该选项设置为false。

/etc/grafana/grafana.ini

代码语言:txt
复制
...
[users]
# disable user signup / registration
allow_sign_up = false
...

接下来,在auth.anonymous标题下找到enabled指令。

/etc/grafana/grafana.ini

代码语言:txt
复制
...
[auth.anonymous]
# enable anonymous access
;enabled = false
...

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

除非您需要允许匿名访问仪表板,否则请通过删除该行开头的;符号取消注释该指令,然后将选项设置为false。

/etc/grafana/grafana.ini

代码语言:txt
复制
...
[auth.anonymous]
enabled = false
...

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

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

代码语言:txt
复制
$ sudo systemctl restart grafana-server

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

代码语言:txt
复制
$ sudo systemctl status grafana-server

像以前一样,输出应该显示Grafana是active (running)。如果不是的话,请查看终端消息上显示的消息以获取其他帮助。

现在,登录https://example.com验证一下“ 注册”按钮是否存在,现在您必须输入用户名和密码才能登录。

如果您看到“注册”按钮或者您能够匿名登录,请在继续本教程之前重新检查上述步骤以解决问题。

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

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

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

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

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

组织设置
组织设置

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

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

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

开发人员设置
开发人员设置

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

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

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

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

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

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

表单填写
表单填写

单击注册应用程序按钮。

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

设置完成
设置完成

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

创建了GitHub OAuth应用程序后,您就可以重新配置Grafana了。

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

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

代码语言:txt
复制
$ sudo nano /etc/grafana/grafana.ini

找到auth.github标题,并通过删除每一行的开头的;取消注释此部分,但是除了;team_ids=,因为我们在本教程中将不会使用。

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

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

完整配置应如下所示:

/etc/grafana/grafana.ini

代码语言:txt
复制
...
[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
...

要完成设置,您需要在反向代理后面启用重定向。这可以通过root_url在server标题下设置一个值来完成。

/etc/grafana/grafana.ini

代码语言:txt
复制
...
[server]
root_url = https://example.com
...

保存配置并关闭文件。

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

代码语言:txt
复制
$ sudo systemctl restart grafana-server

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

代码语言:txt
复制
$ sudo systemctl status grafana-server

如果输出未指示该服务active (running),请参阅屏幕上的消息以获取更多信息。

现在,登录<https://example.com>来测试新的身份验证系统。如果您已登录Grafana,请单击屏幕左上角的小Grafana徽标,将鼠标悬停在您的用户名上,然后单击名称右侧显示的辅助菜单中的“注销”。在登录页面上,您将看到原始登录按钮下带有GitHub徽标的GitHub按钮。

登陆界面
登陆界面

单击GitHub按钮,您需要确认您的授权

单击绿色的授权按钮。在此示例中,按钮显示授权SharkTheSammy

授权
授权

如果您尝试使用不是已批准组织成员的GitHub帐户进行身份验证,您将收到一条登录失败消息显示用户不是其中一个必需组织的成员

如果GitHub帐户是您批准的组织的成员,并且您的Grafana电子邮件地址与您的GitHub电子邮件地址匹配,您将使用现有的Grafana帐户登录。

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

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

代码语言:txt
复制
$ sudo nano /etc/grafana/grafana.ini

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

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

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

/etc/grafana/grafana.ini

代码语言:txt
复制
...
[users]
...
auto_assign_org_role = Viewer
...

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

代码语言:txt
复制
$ sudo systemctl restart grafana-server

检查服务的状态。

代码语言:txt
复制
$ sudo systemctl status grafana-server

该状态应该是active (running)。如果没有显示的话,请查看输出以获取进一步说明。

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

结论

本教程指导如何安装和配置Grafana,如何使用GitHub进行成员认证,腾讯云社区提供更多关于Grafana的教程,例如:使用Grafana实现 Jmeter实时监控和Grafana+Prometheus系统监控之邮件报警功能等等。


参考文献:《How to Install and Secure Grafana on Ubuntu 16.04》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍
  • 准备
  • 第1步 - 安装Grafana
  • 第2步 - 设置反向代理
  • 第3步 - 更新凭证
  • 第4步 - 禁用Grafana注册和匿名访问
  • (可选)步骤5 - 设置GitHub OAuth应用程序
  • (可选)步骤6 - 将Grafana配置为GitHub OAuth应用程序
  • 结论
相关产品与服务
Grafana 服务
Grafana 服务(TencentCloud Managed Service for Grafana,TCMG)是腾讯云基于社区广受欢迎的开源可视化项目 Grafana ,并与 Grafana Lab 合作开发的托管服务。TCMG 为您提供安全、免运维 Grafana 的能力,内建腾讯云多种数据源插件,如 Prometheus 监控服务、容器服务、日志服务 、Graphite 和 InfluxDB 等,最终实现数据的统一可视化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档