使用Prometheus和Grafana监控Linux服务器的指南

在本教程中,我将介绍Prometheus和Grafana。您将学习如何在CentOS/RHEL上安装它们,并了解如何使用Prometheus和Grafana监视Linux服务器。

简介

Grafana是一种领先的时间序列开源平台,用于可视化和监视。它允许您查询、可视化、设置警报并理解无论数据存储在何处的指标。您可以使用Grafana创建令人惊叹的仪表板来可视化和监视指标。

Prometheus是一个面向机器和高度动态服务导向体系结构的监控系统。它可以监视几乎所有的东西。它与Grafana非常顺利地集成,因为Grafana也将Prometheus作为其数据源之一。

如果您是个新手,我建议查看一个introduction to Prometheus and Grafana article

让我向您展示如何在CentOS上安装它们。您应该至少拥有2GB的RAM。您可以从DigitalOcean获取一个云服务器来尝试。

安装Prometheus

步骤1:下载Prometheus

从官方页面下载最新的Prometheus Linux包。

查看official release page以获取最新版本。

[centos@姚伟斌 ~]$ wget https://github.com/prometheus/prometheus/releases/download/v2.18.1/prometheus-2.18.1.linux-amd64.tar.gz
--2020-05-20 10:06:22--
https://github.com/prometheus/prometheus/releases/download/v2.18.1/prometheus-2.18.1.linux-amd64.tar.gz
正在解析 github.com (github.com)... 13.234.176.102
正在连接 github.com (github.com)|13.234.176.102|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 302 Found
正在跳转到位置 https://github-production-release-asset-2e65be.s3.amazonaws.com/6838921/2f454700-90ae-11ea-89e1-3aeb351fdfa5?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20200520%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200520T140622Z&X-Amz-Expires=300&X-Amz-Signature=53d5c6a02e8eeee82f380c4d1edf62a7adfb2b38f2b173059852040b14ddb19c&X-Amz-SignedHeaders=host&actor_id=0&repo_id=6838921&response-content-disposition=attachment%3B%20filename%3Dprometheus-2.18.1.linux-amd64.tar.gz&response-content-type=application%2Foctet-stream
--2020-05-20 10:06:22--
https://github-production-release-asset-2e65be.s3.amazonaws.com/6838921/2f454700-90ae-11ea-89e1-3aeb351fdfa5?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20200520%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200520T140622Z&X-Amz-Expires=300&X-Amz-Signature=53d5c6a02e8eeee82f380c4d1edf62a7adfb2b38f2b173059852040b14ddb19c&X-Amz-SignedHeaders=host&actor_id=0&repo_id=6838921&response-content-disposition=attachment%3B%20filename%3Dprometheus-2.18.1.linux-amd64.tar.gz&response-content-type=application%2Foctet-stream
正在解析 github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)... 52.216.24.236
正在连接 github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|52.216.24.236|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:63373350 (60M) [application/octet-stream]
正在保存至: “prometheus-2.18.1.linux-amd64.tar.gz”

100%[============================================================================================================>] 63,373,350   2.09MB/s 总共 50s

2020-05-20 10:07:13 (1.21 MB/s) - 已保存 “prometheus-2.18.1.linux-amd64.tar.gz” [63373350/63373350]

解压您下载的软件包。

[centos@姚伟斌 ~]$ tar -xzf prometheus-2.18.1.linux-amd64.tar.gz
[centos@姚伟斌 ~]$ ls
Desktop
Documents Downloads Music
Pictures
prometheus-2.18.1.linux-amd64
prometheus-2.18.1.linux-amd64.tar.gz
Public Templates Videos

步骤2:配置Prometheus

使用以下命令创建一个名为Prometheus的新用户。

[centos@姚伟斌 ~]$ sudo useradd -s /sbin/false prometheus
给所有 Prometheus 文件的所有权交给 Prometheus 用户。将路径中的所有文件设为可执行。
[centos@姚伟斌 ~]$ sudo chmod 755 prometheus-2.18.1.linux-amd64 -R
[centos@姚伟斌 ~]$ sudo chown prometheus:prometheus prometheus-2.18.1.linux-amd64 -R
现在是将 Prometheus 配置为服务的时候了。在 systemd 中创建一个名为 prometheus.service 的文件,并将下面的行放入文件中并保存。
[centos@姚伟斌 ~]$ sudo gedit /etc/systemd/system/prometheus.service
[Unit] Description=Prometheus 服务器
Wants=network-online.target
After=network-online.target

[Service] User=prometheus
Group=prometheus
Type=simple
ExecStart= /home/centos/prometheus-2.18.1.linux-amd64/prometheus
–config.file= /home/centos/prometheus-2.18.1.linux-amd64/prometheus.yml
–storage.tsdb.path=/home/centos/prometheus-2.18.1.linux-amd64/
–web.console.templates= /home/centos/prometheus-2.18.1.linux-amd64/consoles
–web.console.libraries= /home/centos/prometheus-2.18.1.linux-amd64/console_libraries

[Install] WantedBy=multi-user.target
第三步:启动 Prometheus
使用 systemctl,重新加载 systemd 系统,并启动 Prometheus 服务。如果你按照所有步骤正确操作,服务的状态应该显示为正在运行。
[centos@姚伟斌 prometheus]$ sudo systemctl daemon-reload
[centos@姚伟斌 prometheus]$ sudo systemctl start prometheus.service
[centos@姚伟斌 prometheus]$ sudo systemctl enable prometheus.service
[centos@姚伟斌 prometheus]$ sudo systemctl status prometheus.service -l
● prometheus.service – Prometheus 服务器
载入: 已加载 (/etc/systemd/system/prometheus.service; enabled; vendor preset: disabled)
活动: 活动中 (运行中) since 2020-05-20 14:18:47 EDT; 5s ago
主进程:23924 (prometheus)
CGroup:/system.slice/prometheus.service
└─23924 /home/centos/prometheus-2.18.1.linux-amd64/prometheus –config.file=/home/centos/prometheus-2.18.1.linux-amd64/prometheus.yml –storage.tsdb.path=/home/centos/prometheus-2.18.1.linux-amd64/ –web.console.templates=/home/centos/prometheus-2.18.1.linux-amd64/consoles –web.console.libraries=/home/centos/prometheus-2.18.1.linux-amd64/console_libraries

May 20 14:18:47 姚伟斌.linuxvmimages.com prometheus[23924]: level=info ts=2020-05-20T18:18:47.885Z caller=web.go:523 component=web msg=”开始监听连接” address=0.0.0.0:9090
May 20 14:18:47 姚伟斌.linuxvmimages.com prometheus[23924]: level=info ts=2020-05-20T18:18:47.888Z caller=head.go:624 component=tsdb msg=”加载WAL段” segment=0 maxSegment=2
May 20 14:18:47 姚伟斌.linuxvmimages.com prometheus[23924]: level=info ts=2020-05-20T18:18:47.889Z caller=head.go:624 component=tsdb msg=”加载WAL段” segment=1 maxSegment=2
May 20 14:18:47 姚伟斌.linuxvmimages.com prometheus[23924]: level=info ts=2020-05-20T18:18:47.889Z caller=head.go:624 component=tsdb msg=”加载WAL段” segment=2 maxSegment=2
May 20 14:18:47 姚伟斌.linuxvmimages.com prometheus[23924]: level=info ts=2020-05-20T18:18:47.889Z caller=head.go:627 component=tsdb msg=”WAL重放已完成” duration=4.498147ms
May 20 14:18:47 姚伟斌.linuxvmimages.com prometheus[23924]: level=info ts=2020-05-20T18:18:47.909Z caller=main.go:694 fs_type=XFS_SUPER_MAGIC
May 20 14:18:47 姚伟斌.linuxvmimages.com prometheus[23924]: level=info ts=2020-05-20T18:18:47.909Z caller=main.go:695 msg=”TSDB已启动”
May 20 14:18:47 姚伟斌.linuxvmimages.com prometheus[23924]: level=info ts=2020-05-20T18:18:47.909Z caller=main.go:799 msg=”正在加载配置文件” filename=/home/centos/prometheus-2.18.1.linux-amd64/prometheus.yml
May 20 14:18:47 姚伟斌.linuxvmimages.com prometheus[23924]: level=info ts=2020-05-20T18:18:47.936Z caller=main.go:827 msg=”完成加载配置文件” filename=/home/centos/prometheus-2.18.1.linux-amd64/prometheus.yml
May 20 14:18:47 姚伟斌.linuxvmimages.com prometheus[23924]: level=info ts=2020-05-20T18:18:47.936Z caller=main.go:646 msg=”服务器已准备好接收web请求。”

步骤4:访问Prometheus Web界面

在浏览器中打开并访问服务器IP和端口9090以访问Prometheus的Web界面。


转到状态>>目标以查看Prometheus当前正在运行的内容及位置。

安装Grafana

步骤1:添加Grafana存储库

默认情况下,CentOS存储库中没有Grafana存储库,因此您需要添加它。在/etc/yum.repos.d/中创建一个名为grafana.repo的文件,并添加下面提到的行。

[centos@姚伟斌 ~]$ sudo gedit /etc/yum.repos.d/grafana.repo

[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt

步骤2:安装Grafana

更新CentOS并安装Grafana软件包。

步骤 3:启动 Grafana

启动 Grafana 服务器并检查其运行状态。

第四步:访问Grafana Web界面

一旦服务启动并运行,使用3000端口访问服务器IP以访问Grafana的Web界面。首次访问时,您需要使用admin作为用户名和密码;然后您将被要求设置自己的密码。

这是Grafana首页的样子。

安装Node Exporter

node_exporter是应该安装在Linux服务器上以进行监控的官方包。它会暴露多个硬件和操作系统指标,这些指标将由Prometheus获取并最终在Grafana上可视化。

第一步:下载Node Exporter

使用wget命令在服务器上下载Node Exporter包。

查看release page以获取最新版本。

[centos@姚伟斌 ~]$ wget https://github.com/prometheus/node_exporter/releases/download/v1.0.0-rc.1/node_exporter-1.0.0-rc.1.linux-amd64.tar.gz
--2020-05-20 15:56:13--
https://github.com/prometheus/node_exporter/releases/download/v1.0.0-rc.1/node_exporter-1.0.0-rc.1.linux-amd64.tar.gz
正在解析主机 github.com (github.com)... 13.234.176.102
正在连接 github.com (github.com)|13.234.176.102|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 302 Found
位置:https://github-production-release-asset-2e65be.s3.amazonaws.com/9524057/b34b8180-960e-11ea-8df0-39a17445b82f?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20200520%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200520T195614Z&X-Amz-Expires=300&X-Amz-Signature=7f4d746946569dbe71bba5785fb4947348e5e0de1c2e8516b2390a2df2eda801&X-Amz-SignedHeaders=host&actor_id=0&repo_id=9524057&response-content-disposition=attachment%3B%20filename%3Dnode_exporter-1.0.0-rc.1.linux-amd64.tar.gz&response-content-type=application%2Foctet-stream [跟随至新的 URL]
--2020-05-20 15:56:14--
https://github-production-release-asset-2e65be.s3.amazonaws.com/9524057/b34b8180-960e-11ea-8df0-39a17445b82f?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20200520%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20200520T195614Z&X-Amz-Expires=300&X-Amz-Signature=7f4d746946569dbe71bba5785fb4947348e5e0de1c2e8516b2390a2df2eda801&X-Amz-SignedHeaders=host&actor_id=0&repo_id=9524057&response-content-disposition=attachment%3B%20filename%3Dnode_exporter-1.0.0-rc.1.linux-amd64.tar.gz&response-content-type=application%2Foctet-stream
正在解析主机 github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)... 52.216.95.83
正在连接 github-production-release-asset-2e65be.s3.amazonaws.com (github-production-release-asset-2e65be.s3.amazonaws.com)|52.216.95.83|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:8734373 (8.3M) [application/octet-stream]
正在保存至: “node_exporter-1.0.0-rc.1.linux-amd64.tar.gz”

100%[============================================================================================================>] 8,734,373   755KB/s 总共耗时 11s

2020-05-20 15:56:26 (769 KB/s) - 已保存 “node_exporter-1.0.0-rc.1.linux-amd64.tar.gz” [8734373/8734373]

解压下载的文件。

[centos@姚伟斌 ~]$ tar -xzf node_exporter-1.0.0-rc.1.linux-amd64.tar.gz

第二步:配置Node Exporter

现在是时候将Node Exporter配置为systemd中的服务了。创建一个文件node_exporter.service,将下面提到的行放入文件中并保存。

[centos@姚伟斌 ~]$ sudo gedit /etc/systemd/system/node_exporter.service

[Unit]

Description=node_exporter
Wants=network-online.target
After=network-online.target

[Service]

User=prometheus
Group=prometheus
Type=simple
ExecStart=/home/centos/node_exporter-1.0.0-rc.1.linux-amd64/node_exporter

[Install]

WantedBy=multi-user.target

第三步:启动Node Exporter

[centos@姚伟斌 ~]$ sudo systemctl daemon-reload
[centos@姚伟斌 ~]$ sudo systemctl start node_exporter
[centos@姚伟斌 ~]$ sudo systemctl status node_exporter
● node_exporter.service – node_exporter
Loaded: loaded (/etc/systemd/system/node_exporter.service; enabled; vendor preset: disabled)
Active: active (running) since Wed 2020-05-27 03:42:54 EDT; 2s ago
Main PID: 9658 (node_exporter)
Tasks: 3
CGroup: /system.slice/node_exporter.service
└─9658 /home/centos/node_exporter-1.0.0-rc.1.linux-amd64/node_exporter

May 27 03:42:54 姚伟斌.linuxvmimages.com node_exporter[9658]: level=info ts=2020-05-27T07:42:54.870Z caller=node_exporter.go:112 collector=t…l_zone
May 27 03:42:54 姚伟斌.linuxvmimages.com node_exporter[9658]: level=info ts=2020-05-27T07:42:54.870Z caller=node_exporter.go:112 collector=time
May 27 03:42:54 姚伟斌.linuxvmimages.com node_exporter[9658]: level=info ts=2020-05-27T07:42:54.870Z caller=node_exporter.go:112 collector=timex
May 27 03:42:54 姚伟斌.linuxvmimages.com node_exporter[9658]: level=info ts=2020-05-27T07:42:54.870Z caller=node_exporter.go:112 collector=udp_queues
May 27 03:42:54 姚伟斌.linuxvmimages.com node_exporter[9658]: level=info ts=2020-05-27T07:42:54.870Z caller=node_exporter.go:112 collector=uname
May 27 03:42:54 姚伟斌.linuxvmimages.com node_exporter[9658]: level=info ts=2020-05-27T07:42:54.870Z caller=node_exporter.go:112 collector=vmstat
May 27 03:42:54 姚伟斌.linuxvmimages.com node_exporter[9658]: level=info ts=2020-05-27T07:42:54.870Z caller=node_exporter.go:112 collector=xfs
May 27 03:42:54 姚伟斌.linuxvmimages.com node_exporter[9658]: level=info ts=2020-05-27T07:42:54.870Z caller=node_exporter.go:112 collector=zfs
May 27 03:42:54 姚伟斌.linuxvmimages.com node_exporter[9658]: level=info ts=2020-05-27T07:42:54.870Z caller=node_exporter.go:191 msg=”Listen…=:9100
May 27 03:42:54 姚伟斌.linuxvmimages.com node_exporter[9658]: level=info ts=2020-05-27T07:42:54.870Z caller=tls_config.go:170 msg=”TLS is di…=false

添加服务器到Prometheus

步骤1:编辑prometheus.yml

您需要在prometheus.yml文件中添加一个新的作业。在终端中打开一个新标签,并按照以下说明编辑文件。

[centos@姚伟斌 ~]$ sudo gedit prometheus.yml

- job_name: 'node_exporter'
static_configs:
- targets: ['localhost:9100']

注意:上面我已将localhost配置在目标中,因为我想监控Prometheus服务器本身。您可以将其更改为实际的Linux服务器IP。端口9100是node_exporter的默认端口。

步骤2:停止和启动Prometheus

[centos@姚伟斌]$ sudo systemctl stop prometheus.service
[centos@姚伟斌]$ sudo systemctl start prometheus.service

步骤3:检查目标

转到https://localhost:9090/targets;您会发现正在运行的目标,其中一个将是node exporter。

将Prometheus集成到Grafana中

现在已经安装了Grafana和Prometheus。让我们使用它们来监视服务器。

  • 进入Grafana主页,点击左侧的设置图标,然后点击“数据源”。
  • 点击“添加数据源”并选择Prometheus。

  • 将URL设置为Prometheus服务器的IP和端口9090。在这个例子中,我在同一台服务器上运行Prometheus和Grafana,所以URL为http://localhost:9090
  • 点击保存并测试。您将收到添加数据源成功的消息。

太棒了!

Grafana已成功连接到Prometheus。现在是时候创建一个仪表板了。为了简化操作,我将使用现有的node exporter dashboard,它在Grafana官方网站上用于监视Linux服务器指标。

  • 转到Grafana主页仪表板,单击+号,然后单击导入。
  • 在通过grafana.com导入中,输入仪表板ID1860,然后单击加载。

  • 然后选择Prometheus数据源,然后单击导入。

  • 完整的节点导出仪表板将被导入。您可以看到所有的指标,如系统负载,使用的内存,CPU忙等,都在Grafana上成功监视。

  • 如果您向下滚动,您会发现Grafana能够可视化大量的指标。

  • 如果您想获得更多信息,可以单击特定的指标可视化并详细查看。在这里,我正在查看过去30分钟的网络流量按数据包可视化。

结论

希望这能让您了解如何设置Grafana和Prometheus进行服务器指标监控。还有其他监控服务器的方法-您可以尝试使用或。

如果您有兴趣学习Grafana,我建议查看此链接。

类似文章