本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Lightsail 上使用 Prometheus 监控系统资源和应用程序
Prometheus 是一款开源时间序列监控工具,用于管理各种系统资源和应用程序。它通过 Grafana 提供了多维数据模型、查询所收集数据的能力以及详细的报告和数据可视化。
默认情况下,Prometheus 可以在安装它的服务器上收集指标。在节点导出器的帮助下,可以从 Web 服务器、容器、数据库、自定义应用程序和其他第三方系统等其他资源收集指标。在本教程中,我们将向你展示如何在 Lightsail 实例上安装和配置带有节点导出器的 Prometheus。有关可用导出器的完整列表,请参阅 Prometheus 文档中的 Exporters and integrations
内容
步骤 1:完成先决条件
在亚马逊 Lightsail 实例上安装 Prometheus 之前,您必须执行以下操作:
-
在 Lightsail 中创建一个实例。我们建议为实例使用 Ubuntu 20.04 LTS 蓝图。有关更多信息,请参阅在 Amazon Lightsail 中创建实例。
-
创建静态 IP 地址并将其挂载到新实例。有关更多信息,请参阅在 Amazon Lightsail 中创建静态 IP 地址。
-
在新实例的防火墙上打开端口 9090 和 9100。Prometheus 要求打开端口 9090 和 9100。有关更多信息,请参阅在 Amazon Lightsail 中添加和编辑实例防火墙规则。
步骤 2:将用户和本地系统目录添加到 Lightsail 实例
完成以下步骤,使用 SSH 连接到您的 Lightsail 实例,并添加用户和系统目录。此过程创建以下 Linux 用户账户:
-
prometheus– 此账户用于安装和配置服务器环境。 -
exporter– 此账户用于配置node_exporter扩展。
创建这些用户账户仅用于管理目的,因此不需要超出此设置范围的其他用户服务或权限。在此过程中,您还将创建目录,用于存储和管理 Prometheus 用于监控资源的文件、服务设置和数据。
-
登录 Lightsail 控制台
。 -
在实例管理页面上的 Connect(连接)选项卡下,选择使用 SSH 连接。
-
连接后,逐个输入以下命令以创建两个 Linux 用户账户:
prometheus和exporter。sudo useradd --no-create-home --shell /bin/false prometheussudo useradd --no-create-home --shell /bin/false exporter -
逐个输入以下命令以创建本地系统目录。
sudo mkdir /etc/prometheus /var/lib/prometheussudo chown prometheus:prometheus /etc/prometheussudo chown prometheus:prometheus /var/lib/prometheus
步骤 3:下载 Prometheus 二进制包
完成以下过程,将 Prometheus 二进制包下载到你的 Lightsail 实例。
-
在本地计算机上打开 Web 浏览器,然后浏览到 Prometheus 下载页面
。 -
对于页面顶部的 Operating system(操作系统)下拉列表,选择 linux。对于 Architecture(架构),选择 amd64。
-
选择或右键单击出现的 Prometheus 下载链接,然后将链接地址复制到计算机上的文本文件中。对出现的 node_exporter 下载链接执行相同操作。您将在此过程后面的部分使用这两个复制的地址。
-
使用 SSH 连接到你的 Lightsail 实例。
-
输入以下命令以将目录更改为您的主目录。
cd ~ -
输入以下命令以将 Prometheus 二进制包下载到您的实例。
curl -LOprometheus-download-addressprometheus-download-address替换为您在本过程中之前复制的地址。添加该地址后,命令应类似于以下示例。curl -LOhttps://github.com/prometheus/prometheus/releases/download/v2.37.0/prometheus-2.37.0.linux-amd64.tar.gz -
输入以下命令以将
node_exporter二进制包下载到您的实例。curl -LOnode_exporter-download-addressnode_exporter-download-address替换为您在此过程的上一步中复制的地址。添加该地址后,命令应类似于以下示例。curl -LOhttps://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz -
逐个运行以下命令以解压缩下载的 Prometheus 和 Node Exporter 文件的内容。
tar -xvfprometheus-2.37.0.linux-amd64.tar.gztar -xvfnode_exporter-1.3.1.linux-amd64.tar.gz解压缩已下载文件的内容后,会创建多个子目录。
-
逐个输入以下命令,将
prometheus和promtool解压缩文件复制到/usr/local/bin程序目录。sudo cp -p ./prometheus-2.37.0.linux-amd64/prometheus /usr/local/binsudo cp -p ./prometheus-2.37.0.linux-amd64/promtool /usr/local/bin -
输入以下命令,将
prometheus和promtool文件的所有权更改为您在本教程前面部分创建的prometheus用户。sudo chown prometheus:prometheus /usr/local/bin/prom* -
逐个输入以下命令以将
consoles和console_libraries子目录复制到/etc/prometheus。-r选项对层次结构中的所有目录执行递归复制。sudo cp -r ./prometheus-2.37.0.linux-amd64/consoles /etc/prometheussudo cp -r ./prometheus-2.37.0.linux-amd64/console_libraries /etc/prometheus -
逐个输入以下命令,将所复制文件的所有权更改为您在本教程前面部分创建的
prometheus用户。-R选项对层次结构中的所有文件和目录执行递归所有权更改。sudo chown -R prometheus:prometheus /etc/prometheus/consolessudo chown -R prometheus:prometheus /etc/prometheus/console_libraries -
逐个输入以下命令,将配置文件
prometheus.yml复制到/etc/prometheus目录,然后将所复制文件的所有权更改为您在本教程前面部分创建的prometheus用户。sudo cp -p ./prometheus-2.37.0.linux-amd64/prometheus.yml /etc/prometheussudo chown prometheus:prometheus /etc/prometheus/prometheus.yml -
输入以下命令,将
node_exporter文件从./node_exporter*子目录复制到/usr/local/bin程序目录。sudo cp -p ./node_exporter-1.3.1.linux-amd64/node_exporter /usr/local/bin -
输入以下命令,将文件的所有权更改为您在本教程前面部分创建的
exporter用户。sudo chown exporter:exporter /usr/local/bin/node_exporter
步骤 4:配置 Prometheus
完成以下过程来配置 Prometheus。在此过程中,您将打开并编辑 prometheus.yml 文件,其中包含 Prometheus 工具的各种设置。Prometheus 根据您在文件中配置的设置建立监控环境。
-
使用 SSH 连接到你的 Lightsail 实例。
-
输入以下命令,在打开和编辑该文件之前创建
prometheus.yml文件的备份副本。sudo cp /etc/prometheus/prometheus.yml /etc/prometheus/prometheus.yml.backup -
输入以下命令以使用 Vim 打开
prometheus.yml文件。sudo vim /etc/prometheus/prometheus.yml以下是您可能希望在
prometheus.yml文件中配置的一些重要参数:-
scrape_interval– 此参数位于global标头下,定义 Prometheus 收集或抓取给定目标指标数据频率的时间间隔(单位为秒)。如global标签所指示,此设置对 Prometheus 监控的所有资源通用。除非单个导出器提供覆盖全局值的不同值,否则此设置也适用于导出器。您可以将此参数设置为其当前值 15 秒。 -
job_name– 此参数位于scrape_configs标头下,是标识数据查询或可视化显示结果集中导出器的标签。您可以指定作业名称的值,以最好地反映环境中正在监控的资源。例如,您可以将管理网站的作业标记为business-web-app,也可以将数据库标记为mysql-db-1。在此初始设置中,您仅监控 Prometheus 服务器,因此可以保留当前prometheus值。 -
targets–targets设置位于static_configs标头下,使用ip_addr:port键值对标识给定导出器运行的位置。您将在此过程的步骤 4-7 中更改默认设置。
注意
对于此初始设置,不需要配置
alerting和rule_files参数。 -
-
在 Vim 中已打开的
prometheus.yml文件中,按 I 键进入 Vim 的插入模式。 -
滚动并找到位于
static_configs标头下的targets参数。 -
将默认设置更改为
。将<ip_addr>:9090替换为实例的静态 IP 地址。修改后的参数应类似于以下示例。<ip_addr>
-
按 ESC 键退出插入模式,然后键入 :wq! 保存更改并退出 Vim。
-
(可选)如果出现问题,请输入以下命令,以将
prometheus.yml文件替换为在此过程前面部分创建的备份。sudo cp /etc/prometheus/prometheus.yml.backup /etc/prometheus/prometheus.yml
步骤 5:启动 Prometheus
完成以下过程以在实例上启动 Prometheus 服务。
-
使用 SSH 连接到你的 Lightsail 实例。
-
输入以下命令以启动 Prometheus 服务。
sudo -u prometheus /usr/local/bin/prometheus --config.file /etc/prometheus/prometheus.yml --storage.tsdb.path /var/lib/prometheus --web.console.templates=/etc/prometheus/consoles --web.console.libraries=/etc/prometheus/console_libraries命令行输出有关启动过程和其他服务的详细信息。它还应表明该服务正在监听端口 9090。
如果服务未启动,请参阅本教程的步骤 1:完成先决条件部分,了解有关创建实例防火墙规则以允许此端口上流量的信息。对于其他错误,请查看
prometheus.yml文件以确认没有语法错误。 -
验证正在运行的服务后,按 Ctrl+C 停止该服务。
-
输入以下命令以在 Vim 中打开
systemd配置文件。此文件用于启动 Prometheus。sudo vim /etc/systemd/system/prometheus.service -
将以下行插入到该文件中。
[Unit] Description=PromServer Wants=network-online.target After=network-online.target [Service] User=prometheus Group=prometheus Type=simple ExecStart=/usr/local/bin/prometheus \ --config.file /etc/prometheus/prometheus.yml \ --storage.tsdb.path /var/lib/prometheus/ \ --web.console.templates=/etc/prometheus/consoles \ --web.console.libraries=/etc/prometheus/console_libraries [Install] WantedBy=multi-user.targetLinux
systemd服务管理器使用前面的指令在服务器上启动 Prometheus。调用时,Prometheus 以prometheus用户身份运行并引用prometheus.yml文件以加载配置设置并将时间序列数据存储在/var/lib/prometheus目录中。您可以从命令行运行man systemd,以查看关于该服务的更多信息。 -
按 ESC 键退出插入模式,然后键入 :wq! 保存更改并退出 Vim。
-
输入以下命令以将信息加载到
systemd服务管理器。sudo systemctl daemon-reload -
输入以下命令以重新启动 Prometheus。
sudo systemctl start prometheus -
输入以下命令以查看 Prometheus 服务的状态。
sudo systemctl status prometheus如果服务正常启动,您将收到类似于以下示例的输出。
-
按 Q 退出状态命令。
-
输入以下命令,使 Prometheus 能够在实例启动时启动。
sudo systemctl enable prometheus -
在本地计算机上打开 Web 浏览器,然后转到以下网址查看 Prometheus 管理界面。
http:<ip_addr>:9090<ip_addr>替换为您的 Lightsail 实例的静态 IP 地址。您应看到类似于以下示例的控制面板。
步骤 6:启动 Node Exporter
完成以下过程以启动 Node Exporter 服务。
-
使用 SSH 连接到你的 Lightsail 实例。
-
输入以下命令,使用 Vim 为
node_exporter创建systemd服务文件。sudo vim /etc/systemd/system/node_exporter.service -
在 Vim 中按 I 键以进入插入模式。
-
将以下几行文本添加到文件中。这将为
node_exporter配置 CPU 负载、文件系统使用和内存资源的监控收集器。[Unit] Description=NodeExporter Wants=network-online.target After=network-online.target [Service] User=exporter Group=exporter Type=simple ExecStart=/usr/local/bin/node_exporter --collector.disable-defaults \ --collector.meminfo \ --collector.loadavg \ --collector.filesystem [Install] WantedBy=multi-user.target注意
这些说明禁用 Node Exporter 的默认机器指标。有关 Ubuntu 可用指标的完整列表,请参阅 Ubuntu 文档中的 Prometheus node_exporter 手册页
。 -
按 ESC 键退出插入模式,然后键入 :wq! 保存更改并退出 Vim。
-
输入以下命令以重新加载
systemd进程。sudo systemctl daemon-reload -
输入以下命令以启动
node_exporter服务。sudo systemctl start node_exporter -
输入以下命令以查看
node_exporter服务的状态。sudo systemctl status node_exporter如果服务成功启动,您将收到类似于以下示例的输出。
-
按 Q 退出状态命令。
-
输入以下命令,使 Node Exporter 能够在实例启动时启动。
sudo systemctl enable node_exporter
步骤 7:使用 Node Exporter 数据收集器配置 Prometheus
完成以下过程,为 Prometheus 配置 Node Exporter 数据收集器。为此,可在 prometheus.yml 文件中为 node_exporter 添加新的 job_name 参数。
-
使用 SSH 连接到你的 Lightsail 实例。
-
输入以下命令以使用 Vim 打开
prometheus.yml文件。sudo vim /etc/prometheus/prometheus.yml -
在 Vim 中按 I 键以进入插入模式。
-
将以下几行文本添加到文件中,位于现有
- targets: ["参数下方。<ip_addr>:9090"]- job_name: "node_exporter" static_configs: - targets: ["<ip_addr>:9100"]prometheus.yml文件中修改后的参数应类似于以下示例。
注意以下几点:
-
Node Exporter 监听端口 9100,以供
prometheus服务器抓取数据。确认您已按照本教程的步骤 1:完成先决条件部分中概述的步骤创建实例防火墙规则。 -
与的配置一样
prometheusjob_name,请替换<ip_addr>为连接到 Lightsail 实例的静态 IP 地址。
-
-
按 ESC 键退出插入模式,然后键入 :wq! 保存更改并退出 Vim。
-
输入以下命令重新启动 Prometheus 服务,以使对配置文件所做的更改生效。
sudo systemctl restart prometheus -
输入以下命令以查看 Prometheus 服务的状态。
sudo systemctl status prometheus如果服务正常重新启动,您将收到类似于以下内容的输出。
-
按 Q 退出状态命令。
-
在本地计算机上打开 Web 浏览器,然后转到以下网址查看 Prometheus 管理界面。
http:<ip_addr>:9090<ip_addr>替换为您的 Lightsail 实例的静态 IP 地址。您应看到类似于以下示例的控制面板。
-
在主菜单中,选择 Status(状态)下拉列表,然后选择 Targets.(目标)。
在下一个屏幕上,您应该看到两个目标。第一个目标用于 node_exporter 指标收集器作业,而第二个目标用于 prometheus 作业。
现在,环境已正确设置,可收集指标和监控服务器。