作者选择Dev Color作为Write for DOnations计划的一部分接受捐赠。
介绍
Grafana是一个开源数据可视化和监控工具,它集成了来自Prometheus , InfluxDB , Graphite和ElasticSearch等来源的复杂数据。 Grafana允许您为数据创建警报,通知和临时过滤器,同时通过内置共享功能更轻松地与团队成员进行协作。
在本教程中,您将安装Grafana并使用SSL证书和Nginx反向代理保护它。 设置Grafana后,您可以选择通过GitHub配置用户身份验证,从而更好地组织团队权限。
先决条件
要学习本教程,您需要:
- 按照Ubuntu 18.04的初始服务器设置指南设置一个Ubuntu 18.04服务器,包括具有
sudo
权限的非root用户和使用ufw
配置的防火墙。 - 完全注册的域名。 本教程始终使用
your_domain
。 您可以在Namecheap上购买域名,在Freenom上免费获取一个域名,或使用您选择的域名注册商。 为您的服务器设置以下DNS记录。 您可以按照如何使用DigitalOcean设置主机名,以获取有关如何添加主机名的详细信息。
-
your_domain
指向服务器的公共IP地址的A记录。 - 带有
www. your_domain
的A记录www. your_domain
www. your_domain
指向服务器的公共IP地址。
-
Nginx通过遵循如何在Ubuntu 18.04上安装Nginx教程来设置,包括您域的服务器块 。
配置了Let’s Encrypt的Nginx服务器块,您可以通过如何在Ubuntu 18.04上使用Let的加密来保护Nginx来设置。
第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/deb
为https://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-serverCreated 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
找到以下块:
… location / { try_files $uri $uri/ =404; }…
因为您已经将Nginx配置为通过SSL进行通信,并且因为您服务器的所有Web流量已经通过Nginx,您只需要告诉Nginx将所有请求转发给Grafana,Grafana默认在端口3000
上运行。
删除此location block
的现有try_files
行,并将其替换为以下proxy_pass
选项。
… location / { proxy_pass http://localhost:3000; }…
这会将代理映射到适当的端口。 完成后,按CTRL+X
保存并关闭文件,然后按Y
,然后按ENTER
如果您使用的是nano
。
现在,测试新设置以确保正确配置所有内容:
sudo nginx -t
您将收到以下输出:
nginx: the configuration file /etc/nginx/nginx.conf syntax is oknginx: 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徽标,要求您输入电子邮件或用户名和密码的表单, 登录按钮以及忘记密码? 链接。
在“ 用户”和“ 密码”字段中输入admin
,然后单击“ 登录”按钮。
在下一个屏幕上,系统会要求您通过更改默认密码来提高帐户的安全性:
在“ 新密码”和“ 确认新密码”字段中输入您要开始使用的密码 。
在此处,您可以单击“ 保存”以保存新信息,或按“ 跳过”跳过此步骤。 如果跳过,下次登录时将提示您更改密码。
为了提高Grafana设置的安全性,请单击“ 保存” 。 您将返回Home Dashboard页面:
您现在已通过更改默认凭据来保护您的帐户。 接下来,您将更改Grafana配置,以便未经您许可,任何人都无法创建新的Grafana帐户。
第4步 – 禁用Grafana注册和匿名访问
Grafana提供的选项允许访问者自己创建用户帐户并预览仪表板而无需注册。 如果无法通过互联网访问Grafana,或者当它使用服务状态等公共数据时,您可能希望允许这些功能。 但是,当使用Grafana在线处理敏感数据时,匿名访问可能是一个安全问题。 要解决此问题,请对Grafana配置进行一些更改。
首先打开Grafana的主配置文件进行编辑:
sudo nano /etc/grafana/grafana.ini
在[users]
标题下找到以下allow_sign_up
指令:
…[users]# disable user signup / registration;allow_sign_up = true…
使用true
启用此指令会在登录屏幕上添加一个注册按钮,允许用户注册自己并访问Grafana。
禁用此指令时会删除“ 注册”按钮并增强Grafana的安全性和隐私性。
通过删除;
取消注释该指令;
在该行的开头,然后将该选项设置为false
:
…[users]# disable user signup / registrationallow_sign_up = false…
接下来,在[auth.anonymous]
标题下找到以下enabled
指令:
…[auth.anonymous]# enable anonymous access;enabled = false…
将enabled
设置为true
可使非注册用户访问您的仪表板; 将此选项设置为false
限制仅对注册用户的仪表板访问。
通过删除;
取消注释该指令;
在该行的开头,然后将该选项设置为false
。
…[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/profile
为https://github.com/settings/profile
。
在屏幕左侧导航菜单中的组织设置下单击您组织的名称。
在下一个屏幕上,您将看到您的组织配置文件 ,您可以在其中更改组织显示名称 ,组织电子邮件和组织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用户将看到您在前三个字段中输入的值,因此请务必输入有意义且适当的内容。
完成后,表单将如下所示:
单击绿色, 注册应用程序按钮。
现在,您将被重定向到包含与新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_id
和client_secret
值一起使用。
- 将
enabled
和allow_sign_up
设置为true
。 这将启用GitHub身份验证,并允许允许的组织的成员自己创建帐户。 请注意,此设置与您在第4步中更改的[users]
下的allow_sign_up
属性不同。 - 将
client_id
和client_secret
设置为创建GitHub OAuth应用程序时获得的值。 - 将
allowed_organizations
设置为您组织的名称,以确保只有您组织的成员才能注册并登录Grafana。
完整配置如下所示:
…[auth.github]enabled = trueallow_sign_up = trueclient_id = your_client_id_from_githubclient_secret = your_client_secret_from_githubscopes = user:email,read:orgauth_url = https://github.com/login/oauth/authorizetoken_url = https://github.com/login/oauth/access_tokenapi_url = https://api.github.com/user;team_ids =allowed_organizations = your_organization_name…
你现在告诉Grafana它需要知道的关于GitHub的一切。 要完成设置,您需要在反向代理后面启用重定向。 这是通过在[server]
标题下设置root_url
值来完成的。
…[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登录按钮重定向到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
:
…[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官方文档 ,或查看我们的其他监控教程 。