介绍
Grafana是一个开源数据可视化和监控工具,可以集成到来自诸如 Prometheus, InfluxDB, Graphite和 ElasticSearch等来源的复杂数据中。
在本教程中,您将安装Grafana,并使用SSL证书(https://andsky.com/tech/tutorials/openssl-essentials-working-with-ssl-certificates-private-keys-and-csrs)和Nginx反向代理(https://andsky.com/tech/tutorials/understanding-nginx-http-proxying-load-balancing-buffering-and-caching)保护它。一旦设置了Grafana,您将有选择通过GitHub配置用户身份验证,允许您更好地组织您的团队权限。
前提条件
要遵循本教程,您将需要:
- 遵循Ubuntu 22.04初始服务器设置指南设置的1个Ubuntu 22.04服务器,包括一个拥有 " sudo " 权限的非根基用户和一个配置有 " ufw " 的防火墙。
- A全注册域名. 该教程全程使用"你的域". 您可以在 [Namecheap] (https://namecheap.com/) 上购买域名, 在 [Freenom] (http://www.freenom.com/en/index.html 上免费获取域名, 或者使用您选择的域名注册员.
- 为您的服务器设置的以下 DNS 记录 。 您可以跟随[如何添加域 (https://www.digitalocean.com/docs/networking/dns/how-to/add-domains/) 文章,了解如果您正在使用 DigitalOcean.
- An A 记录,其中
您域域
指您服务器的公开IP地址. - An A 记录,其中`www.your_domain'指您服务器的公开IP地址.
- Nginx 如何安装 Ubuntu 22.04 (https://andsky.com/tech/tutorials/how-to-install-nginx-on-ubuntu-22-04) 辅导设置,包括用于您域的 [服务器块 (https://andsky.com/tech/tutorials/how-to-install-nginx-on-ubuntu-22-04# step-5-setting-up-server-blocks-recommended.
- An Nginx 服务器块,其中包含
让我们加密
的配置,您可以跟随 [如何使用Ubuntu 22.04加密的 Ubuntu (https://andsky.com/tech/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-22-04) 设置。 *在可选的情况下,要设置GitHub认证,你需要一个GitHub账户与一个组织有关. (韩语)_
步骤 1 - 安装 Graphana
在这个第一个步骤中,你将安装Grafana到你的Ubuntu 22.04服务器上。你可以通过直接从其官方网站下载Grafana(https://grafana.com/grafana/download?edition=oss)或通过一个APT存储库(https://andsky.com/tech/tutorials/ubuntu-and-debian-package-management-essentials# debian-package-management-tools-overview)来安装Grafana。
下载 Grafana GPG 键以 wget
,然后 pipe the output to gpg
. 这将将 GPG 键从 base64 转换为二进制格式。然后将输出输入到 tee
,以便在 /usr/share/keyrings/grafana.gpg
文件中存储该键。
1wget -q -O - https://packages.grafana.com/gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/grafana.gpg > /dev/null
在此命令中,q
选项关闭了wget
的状态更新消息,而O
输出您下载到终端的文件。
接下来,将 Grafana 存储库添加到您的 APT 源:
1echo "deb [signed-by=/usr/share/keyrings/grafana.gpg] https://packages.grafana.com/oss/deb stable main" | sudo tee -a /etc/apt/sources.list.d/grafana.list
更新 APT 缓存以更新您的包列表:
1sudo apt update
您现在可以开始安装:
1sudo apt install grafana
一旦安装了Grafana,请使用systemctl
启动Grafana服务器:
1sudo systemctl start grafana-server
接下来,通过检查服务的状态来验证 Grafana 是否正在运行:
1sudo systemctl status grafana-server
您将收到类似于此的输出:
1[secondary_label Output]
2● grafana-server.service - Grafana instance
3 Loaded: loaded (/lib/systemd/system/grafana-server.service; disabled; vendor preset: enabled)
4 Active: active (running) since Tue 2022-09-27 14:42:15 UTC; 6s ago
5 Docs: http://docs.grafana.org
6 Main PID: 4132 (grafana-server)
7 Tasks: 7 (limit: 515)
8...
此输出包含有关 Grafana 进程的信息,包括其状态、主要进程标识符(PID)等。
最后,允许服务在启动时自动启动Grafana:
1sudo systemctl enable grafana-server
您将获得以下输出:
1[secondary_label Output]
2Synchronizing state of grafana-server.service with SysV service script with /lib/systemd/systemd-sysv-install.
3Executing: /lib/systemd/systemd-sysv-install enable grafana-server
4Created symlink /etc/systemd/system/multi-user.target.wants/grafana-server.service → /usr/lib/systemd/system/grafana-server.service.
这证实了systemd
已经创建了Autostart Grafana所需的符号链接。
Grafana 现在已安装并准备使用,接下来,您将使用反向代理和 SSL 证书来保护您的 Grafana 连接。
第2步:设置反向代理
使用 SSL 证书将通过加密与 Grafana 的连接来确保您的数据安全,但要使用此连接,您首先需要将 Nginx 重新配置为 Grafana 的反向代理。
打开您在设置 Nginx 服务器块时创建的 Nginx 配置文件,使用 Let's Encrypt 在 前提中。
1sudo nano /etc/nginx/sites-available/your_domain
点击下面的区块:
1[label /etc/nginx/sites-available/your_domain]
2...
3 location / {
4 try_files $uri $uri/ =404;
5 }
6...
由于您已经配置了 Nginx 以通过 SSL 进行通信,并且所有到您的服务器的网络流量都已经通过 Nginx,所以您只需要告诉 Nginx 将所有请求转发到 Grafana,该端口默认情况下是 3000。
在这个位置块
中删除现有的try_files
行,并用以下选项取代它:
1[label /etc/nginx/sites-available/your_domain]
2...
3 location / {
4 proxy_set_header Host $http_host;
5 proxy_pass http://localhost:3000;
6 }
7...
这将将代理商地图到相应的端口,并将服务器名称传递到头部。
此外,为了使 Grafana Live WebSocket 连接正常工作,请在服务器
部分之外添加以下部分:
1[label /etc/nginx/sites-available/your_domain]
2map $http_upgrade $connection_upgrade {
3 default upgrade;
4 '' close;
5}
6
7server {
8 ...
然后将以下位置
部分添加到服务器块中:
1[label /etc/nginx/sites-available/your_domain]
2server {
3...
4 location /api/live {
5 proxy_http_version 1.1;
6 proxy_set_header Upgrade $http_upgrade;
7 proxy_set_header Connection $connection_upgrade;
8 proxy_set_header Host $http_host;
9 proxy_pass http://localhost:3000;
10 }
11...
升级
和连接
标题不会从客户端发送到代理服务器,因此,为了让代理服务器知道客户端要更改协议到WebSocket,这些标题应该被明确传递。
最终的配置将是这样的:
1[label /etc/nginx/sites-available/your_domain]
2map $http_upgrade $connection_upgrade {
3 default upgrade;
4 '' close;
5}
6
7server {
8 ...
9
10 root /var/www/your_domain/html;
11 index index.html index.htm index.nginx-debian.html;
12
13 server_name your_domain www.your_domain;
14
15 location / {
16 proxy_set_header Host $http_host;
17 proxy_pass http://localhost:3000;
18 }
19
20 location /api/live {
21 proxy_http_version 1.1;
22 proxy_set_header Upgrade $http_upgrade;
23 proxy_set_header Connection $connection_upgrade;
24 proxy_set_header Host $http_host;
25 proxy_pass http://localhost:3000;
26 }
27
28 ...
29}
<$>[注]
注: 如果您使用了certbot
工具来设置 Let’s Encrypt SSL 证书,则您的配置文件可能包含由 Certbot 添加的额外的行和服务器块。
一旦完成,保存并关闭文件,按CTRL+X
,Y
,然后按ENTER
,如果你使用nano
。
现在,测试新的设置,以确保一切都配置正确:
1sudo nginx -t
您将获得以下输出:
1[secondary_label Output]
2nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
3nginx: configuration file /etc/nginx/nginx.conf test is successful
最后,通过重新加载 Nginx 来激活这些更改:
1sudo systemctl reload nginx
您现在可以访问默认的Grafana登录屏幕,将您的网页浏览器指向https://your_domain. 如果您无法访问Grafana,请检查您的防火墙是否设置为允许在端口
443`上的流量,然后重新跟踪之前的指示。
通过加密与 Grafana 的连接,您现在可以实施额外的安全措施,从更改 Grafana 的默认管理凭据开始。
步骤 3 – 更新凭证
由于每个 Grafana 安装都默认使用相同的管理凭据,因此最好尽快更改登录信息。
从您的 Web 浏览器开始导航到 https://your_domain
. 这将带来默认登录屏幕,在那里您将看到 Grafana 标志,一个表单要求您输入一个 电子邮件或用户名 和 ** 密码** ,一个 ** 登录** 按钮和一个 ** 忘记您的密码?** 链接。
输入admin
到两个域 电子邮件或用户名 和 ** 密码** ,然后点击登录
按钮。
在下一个屏幕上,您将被要求通过更改默认密码来使您的帐户更安全:
输入您想要开始使用的密码到 新密码 和 ** 确认新密码** 字段。
从这里,您可以点击 ** Submit** 来保存新信息或按 ** Skip** 跳过此步骤. 如果您跳过,您将被要求下次登录更改密码。
为了增加您的 Grafana 设置的安全性,点击 ** Submit** . 您将前往 ** Welcome to Grafana** 仪表板:
您现在通过更改默认身份验证来保护您的帐户,接下来,您将对您的 Grafana 配置进行更改,以便没有人能够在没有您的许可的情况下创建新的 Grafana 帐户。
步骤 4 – 禁用 Grafana 注册和匿名访问
Grafana 提供了允许访问者自己创建用户帐户和预览仪表板的选项,而无需注册。当 Grafana 无法通过互联网访问或使用公共数据(如服务状态)时,您可能希望允许这些功能。
首先,打开 Grafana 的主要配置文件进行编辑:
1sudo nano /etc/grafana/grafana.ini
在[用户]
标题下找到下面的allow_sign_up
指令:
1[label /etc/grafana/grafana.ini]
2...
3[users]
4# disable user signup / registration
5;allow_sign_up = true
6...
启用此指令以真实
添加一个 ** 登录** 按钮到登录屏幕上,允许用户注册自己并访问Grafana。
用假
禁用此指令将删除登录
按钮,并加强Grafana的安全性和隐私。
通过在行开始时删除;
,然后将选项设置为假
:
1[label /etc/grafana/grafana.ini]
2...
3[users]
4# disable user signup / registration
5allow_sign_up = false
6...
接下来,在[auth.anonymous]
标题下找到下面的启用
指令:
1[label /etc/grafana/grafana.ini]
2...
3[auth.anonymous]
4# enable anonymous access
5;enabled = false
6...
将启用
设置为真实
允许未注册用户访问您的仪表板;将此选项设置为假
仅限制注册用户访问仪表板。
通过在行开始时删除;
,然后将选项设置为假
。
1[label /etc/grafana/grafana.ini]
2...
3[auth.anonymous]
4# enable anonymous access
5enabled = false
6...
保存文件并退出文本编辑器。
要激活这些更改,请重新启动 Grafana:
1sudo systemctl restart grafana-server
通过检查Grafana的服务状态来验证一切是否正常工作:
1sudo systemctl status grafana-server
与之前一样,输出将报告Grafana是活跃(运行)
。
现在,点击您的网页浏览器到 https://your_domain
. 要返回 登录 屏幕,将你的方针带到屏幕的左下方,然后单击出现的 ** 退出** 选项。
一旦您退出,请验证没有登录
按钮,并且您无法在没有输入登录凭证的情况下登录。
此时,Grafana已完全配置并准备使用,接下来,您可以通过GitHub进行身份验证来简化您的组织的登录过程。
(可选)步骤 5 — 设置一个 GitHub OAuth 应用程序
对于登录的替代方法,您可以将Grafana配置为通过GitHub进行身份验证,这为所有授权的GitHub组织的成员提供了登录访问权限。
首先,登录与您的组织相关的 GitHub 帐户,然后导航到您的 GitHub 个人资料页面。
切换设置的背景,点击屏幕顶部的 ** 切换到另一个帐户 ** 链接,然后从下滑菜单中选择您的组织。
在下一个屏幕上,你会看到你的 组织配置文件 ,在那里你可以更改设置,如你的 ** 组织显示名称** ,组织 ** 电子邮件** 和组织 ** URL** 。
由于Grafana使用了 OAuth—一个开放的标准,允许远程第三方访问本地资源—通过GitHub验证用户,您需要创建一个新的 OAuth应用程序在GitHub。
在屏幕左下方的开发者设置
中点击OAuth Apps
链接。
如果您在 GitHub 上没有与您的组织相关的任何 OAuth 应用程序,您将被告知有 ** 没有组织所有应用程序** .否则,您将看到已连接到您的帐户的 OAuth 应用程序列表。
点击注册应用程序
按钮继续。
在下一个屏幕上,填写有关您的Grafana安装的以下细节:
- 应用程序名称 :这有助于你区分你的不同OAuth应用程序彼此。
- 主页URL :这告诉GitHub在哪里找到Grafana。输入这个字段中的https://your_domain
,用你的域代替
your_domain`。 - 应用描述 :这提供了你的OAuth应用程序的目的的描述。
- 应用程序回调URL :这是用户成功验证后将发送的地址。对于Grafana,这个字段必须设置为
https://your_domain/login/gubith
.
请记住,通过GitHub登录的Grafana用户会看到您在前三个字段中输入的值,所以请确保输入有意义和适当的东西。
完成后,表格将看起来像这样:
点击注册
按钮。
您现在将被重定向到包含有关您的新 OAuth 应用程序的信息页面,包括 客户 ID 。然后点击 ** 生成新客户机秘密** 按钮以获取新的 ** 客户机秘密** 。
<$>[警告] ** 警告:** 请确保将您的 ** 客户 ID** 和 ** 客户秘密** 保存在安全且非公开的位置,因为它们可能会作为攻击的基础。
通过创建您的 GitHub OAuth 应用程序,您现在已经准备好重新配置 Grafana 以使用 GitHub 进行身份验证。
(可选) 第 6 步 — 将 Grafana 配置为 GitHub OAuth 应用
为了为您的 Grafana 设置完成 GitHub 身份验证,您现在将对您的 Grafana 配置文件进行一些更改。
首先,打开主要 Grafana 配置文件:
1sudo nano /etc/grafana/grafana.ini
查找[auth.github]
标题,并通过删除每个行开始的;
删除此部分的评论,除了以下,这不会在本教程中更改:
;allowed_domains =
;team_ids =
;role_attribute_path =
;role_attribute_strict = false
;allow_assign_grafana_admin = false
接下来,做以下变化:
- 将
允许
和允许_签名
设置为真实
。这将允许 GitHub 身份验证并允许允许允许的组织成员自己创建帐户。 请注意,此设置与您在 步骤 4中更改的允许_签名
属性不同。 - 将
client_id
和client_secret
设置为您在创建 GitHub OAuth 应用程序时获得的值。
完整的配置将是这样的:
1[label /etc/grafana/grafana.ini]
2...
3[auth.github]
4enabled = true
5allow_sign_up = true
6client_id = your_client_id_from_github
7client_secret = your_client_secret_from_github
8scopes = user:email,read:org
9auth_url = https://github.com/login/oauth/authorize
10token_url = https://github.com/login/oauth/access_token
11api_url = https://api.github.com/user
12;allowed_domains =
13;team_ids =
14allowed_organizations = your_organization_name
15;role_attribute_path =
16;role_attribute_strict = false
17;allow_assign_grafana_admin = false
18...
现在你已经告诉了Grafana关于GitHub所需的一切。为了完成设置,你需要在反向代理程序背后启用重定向。
1[label /etc/grafana/grafana.ini]
2...
3[server]
4root_url = https://your_domain
5...
保存您的配置并关闭文件。
然后,重新启动 Grafana 以激活这些更改:
1sudo systemctl restart grafana-server
最后,检查服务是否已启动和运行:
1sudo systemctl status grafana-server
输出将表示服务是活跃(运行)
。
现在,通过导航到https://your_domain
来测试你的新身份验证系统. 如果你已经登录了Grafana,请在屏幕的左下角移动你的鼠标,然后单击你的名字旁边的辅助菜单中的退出
。
在登录页面上,你会看到一个新的部分,在原来的 ** 登录 ** 按钮下,其中包括一个 ** 登录与 GitHub ** 按钮与 GitHub 标志。
点击与 GitHub 登录
按钮,将被重定向到 GitHub,在那里您将登录您的 GitHub 帐户并确认您的意图。
点击绿色 ** 允许 your_github_organization** 按钮。
<$>[注] 注: 请确保您的 GitHub 帐户是您批准的组织的成员,您的 Grafana 电子邮件地址与您的 GitHub 电子邮件地址匹配。
如果您已登录的用户的 Grafana 帐户已经不存在,Grafana 将创建具有 Viewer 权限的新用户帐户,以确保新用户只能使用现有仪表板。
若要更改新用户的默认权限,请打开主要的 Grafana 配置文件以进行编辑。
1sudo nano /etc/grafana/grafana.ini
在[用户]
标题下找到auto_assign_org_role
指令,并通过在行开始时删除;
删除该设置。
将指令设置为下列值之一:
Viewer
:只能使用现有仪表板。Editor
:可以使用、修改和添加仪表板。Admin
:有权做任何事情。
本教程将自动分配设置为Viewer
:
1[label /etc/grafana/grafana.ini]
2...
3[users]
4...
5auto_assign_org_role = Viewer
6...
保存更改后,关闭文件并重新启动 Grafana:
1sudo systemctl restart grafana-server
查看服务的状态:
1sudo systemctl status grafana-server
与之前一样,状态将读取活跃(运行)
。
此时,您已经完全配置了 Grafana,以允许 GitHub 组织的成员注册并使用您的 Grafana 安装。
结论
在本教程中,您安装、配置和保护了Grafana,您还了解了如何允许组织成员通过GitHub进行身份验证。
要扩展当前的 Grafana 安装,请参阅官方和社区构建的 仪表板和 插件的列表。 有关一般使用 Grafana 的更多信息,请参阅 官方 Grafana 文档,或参阅我们的 其他监控教程。