如何使用Prometheus监控CentOS 7服务器

介绍

Prometheus是由SoundCloud开发的开源监控系统。与其他监控系统(如InfluxDB和Graphite)一样,Prometheus将其所有数据存储在时间序列数据库中。但是,它提供了多维数据模型和强大的查询语言,使系统管理员不仅可以轻松地微调其指标的定义,还可以生成更准确的报告。

此外,Prometheus项目还包括PromDash(一种可用于开发自定义仪表板的基于浏览器的工具)和一个能够通过电子邮件,Flowdock,Slack,HipChat等发送警报的实验性AlertManager。

在本教程中,您将学习如何安装,配置和使用Prometheus Server,Node Exporter和PromDash。

准备

要学习本教程,您需要:

  • 一个64位CentOS 7 腾讯云CVM
  • 以恶搞具有sudo权限的非root用户,最好是命名为prometheus

没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器

第1步 - 安装Prometheus Server

首先,创建一个新目录来存储您在本教程中下载的所有文件并移至该目录。

mkdir ~/Downloads
cd ~/Downloads

curl从GitHub下载最新版本的Prometheus服务器和时间序列数据库。

curl -LO "https://github.com/prometheus/prometheus/releases/download/0.16.0/prometheus-0.16.0.linux-amd64.tar.gz"

Prometheus监控系统由几个组件组成,每个组件都需要单独安装。将所有组件保存在一个父目录中是个好主意,因此请使用mkdir

mkdir ~/Prometheus

输入您刚刚创建的目录。

cd ~/Prometheus

使用tar提取prometheus-0.16.0.linux-amd64.tar.gz

tar -xvzf ~/Downloads/prometheus-0.16.0.linux-amd64.tar.gz

这样就完成了Prometheus服务器的安装。通过键入以下命令验证安装:

~/Prometheus/prometheus-0.16.0.linux-amd64/prometheus -version

您应该在屏幕上看到以下消息:

prometheus, version 0.16.0 (branch: HEAD, revision: dcb8ba4)
  build user:       julius@desktop
  build date:       20151009-23:51:17
  go version:       1.5.1

第2步 - 安装节点导出器

Prometheus是为监控Web服务而开发的。为了监控CentOS服务器的指标,您应该安装一个名为Node Exporter的工具。节点导出器,顾名思义,以Prometheus理解的格式导出大量指标(如磁盘I / O统计数据,CPU负载,内存使用情况,网络统计数据等)。

输入Downloads目录并使用curl下载GitHub上提供的Node Exporter的最新版本。

cd ~/Downloads && curl -LO "https://github.com/prometheus/node_exporter/releases/download/0.11.0/node_exporter-0.11.0.linux-amd64.tar.gz"

Prometheus目录中创建一个名为node_exporter的新目录,进入目录:

mkdir ~/Prometheus/node_exporter
cd ~/Prometheus/node_exporter

您现在可以使用tar命令来提取node_exporter-0.11.0.linux-amd64.tar.gz

tar -xvzf ~/Downloads/node_exporter-0.11.0.linux-amd64.tar.gz

第3步 - 将节点导出器作为服务运行

为了便于启动和停止节点导出器,现在让我们将其转换为服务。

使用vi或任何其他文本编辑器来创建一个名为node_exporter.service的单元配置文件。

sudo vi /etc/systemd/system/node_exporter.service

此文件应包含node_exporter可执行文件的路径,并指定应运行可执行文件的用户。因此,添加以下代码:

[Unit]
Description=Node Exporter
​
[Service]
User=prometheus
ExecStart=/home/prometheus/Prometheus/node_exporter/node_exporter
​
[Install]
WantedBy=default.target

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

重新加载systemd,以便它读取您刚刚创建的配置文件。

sudo systemctl daemon-reload

此时,节点导出程序可用作可使用该systemctl命令管理的服务。启用它以便它在引导时自动启动。

sudo systemctl enable node_exporter.service

您现在可以重新启动服务器,也可以使用以下命令手动启动服务:

sudo systemctl start node_exporter.service

启动后,使用浏览器查看Node Exporter的Web界面,该界面位于http://your_server_ip:9100/metrics。您应该看到一个包含大量文本的页面:

# HELP go_gc_duration_seconds A summary of the GC invocation durations.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 0.00023853100000000002
go_gc_duration_seconds{quantile="0.25"} 0.00023998700000000002
go_gc_duration_seconds{quantile="0.5"} 0.00028122
. . .

第4步 - 启动Prometheus服务器

输入安装Prometheus服务器的目录:

cd ~/Prometheus/prometheus-0.16.0.linux-amd64

在启动Prometheus之前,必须首先为其创建一个名为prometheus.yml的配置文件。

vi ~/Prometheus/prometheus-0.16.0.linux-amd64/prometheus.yml

将以下代码复制到该文件中。

scrape_configs:
  - job_name: "node"
    scrape_interval: "15s"
    target_groups:
    - targets: ['localhost:9100']

这将创建一个scrape_configs部分并定义一个名为node的作业。它包含targets数组中的Node Exporter的Web界面的URL 。为使prometheus刮擦指标每十五秒钟将设置scrape_interval为15秒。

您可以根据需要为自己的工作命名,但将其命名为“node”可以使用Node Exporter的默认控制台模板。

保存文件并退出。

启动Prometheus服务器作为后台进程。

nohup ./prometheus > prometheus.log 2>&1 &

请注意,您将Prometheus服务器的输出重定向到名为prometheus.log的文件。您可以使用tail命令查看文件的最后几行:

tail ~/Prometheus/prometheus-0.16.0.linux-amd64/prometheus.log

服务器准备就绪后,您将在文件中看到以下消息:

INFO[0000] Starting target manager...         file=targetmanager.go line=75
INFO[0000] Listening on :9090                 file=web.go line=118

使用浏览器访问http://your_server_ip:9090上Prometheus的主页。您将看到以下主页。

要确保Prometheus从Node Exporter中抓取数据,请单击页面顶部的Graph选项卡。在打开的页面上,在表示Expression的文本字段中键入度量标准的名称(例如, nodeprocsrunning)。然后,按蓝色的执行按钮。单击下方的图表控制台旁边),您应该会看到该指标的图表:

Prometheus具有控制台模板,可用于查看一些常用指标的图形。只有在Prometheus配置中设置job_name 值为node时,才能访问这些控制台模板。

访问http://your_server_ip:9090/consoles/node.html以访问节点控制台并单击您的服务器localhost:9100,以查看其指标:

第5步 - 安装PromDash

虽然Prometheus服务器允许您查看图形并试验表达式,但它通常仅用于调试目的或运行一次性查询。在Prometheus的时间序列数据库中可视化数据的首选方法是使用PromDash,这是一个允许您创建自定义仪表板的工具,这些仪表板不仅具有高度可配置性,而且外观更美观。

输入Prometheus目录:

cd ~/Prometheus

PromDash是一个Ruby on Rails应用程序,其源文件可在GitHub上获得。要下载并运行它,您需要安装Git,Ruby和一些构建工具。使用yum这样做。

sudo yum install git ruby ruby-devel sqlite-devel zlib-devel gcc gcc-c++ automake patch

您现在可以使用git命令下载源文件。

git clone https://github.com/prometheus/promdash.git

输入promdash目录。

cd ~/Prometheus/promdash

PromDash依赖于几个Ruby gem。为了自动安装这些gem,你应该安装一个名为bundler的gem。

gem install bundler

您现在可以使用bundle命令安装PromDash所需的所有Ruby gem。由于我们将在本教程中配置PromDash以使用SQLite3,因此请确保使用--without参数排除MySQL和PostgreSQL的gem :

bundle install --without mysql postgresql

您可能需要等待几分钟才能完成此命令。完成后,您应该看到以下消息:

. . .
Your bundle is complete!
Gems in the groups mysql and postgresql were not installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.

第6步 - 设置Rails环境

创建一个目录来存储与PromDash关联的SQLite3数据库。

mkdir ~/Prometheus/databases

PromDash使用一个名为DATABASE_URL的环境变量来确定与之关联的数据库的名称。键入以下内容,以便PromDash在databases目录中创建名为mydb.sqlite3的SQLite3数据库:

echo "export DATABASE_URL=sqlite3:$HOME/Prometheus/databases/mydb.sqlite3" >> ~/.bashrc

在本教程中,您将在生产模式下运行PromDash,因此请将RAILS_ENV环境变量设置为production

echo "export RAILS_ENV=production" >> ~/.bashrc

将我们所做的更改应用于.bashrc文件。

. ~/.bashrc

接下来,使用rake工具在SQLite3数据库中创建PromDash的表。

rake db:migrate

因为PromDash使用Rails资产管道,所以应该预编译PromDash项目的所有资产(CSS文件,图像和Javascript文件)。输入以下内容即可:

rake assets:precompile

第7步 - 启动和配置PromDash

PromDash运行在瘦,一个轻量级的Web服务器上。通过键入以下命令将服务器作为守护程序启动:

bundle exec thin start -d

等待服务器启动几秒钟,然后访问http://your_server_ip:3000/以查看PromDash的主页。

在开始创建自定义仪表板之前,您应该让PromDash知道您的Prometheus服务器的URL。您可以通过单击顶部的“ 服务器”选项卡来执行此操作。单击“ 新建服务器”,然后在表单中,为Prometheus服务器指定任何名称。将Url字段设置为http://your_server_ip:9090,将Server type字段设置为Prometheus

最后,单击“ 创建服务器”以完成配置。您的页面将说服务器已成功创建。您可以在顶部菜单中单击返回仪表板

第8步 - 创建仪表板

因为Promdash仪表板应该属于Promdash目录,所以首先通过单击New Directory创建一个新目录。在显示的表单中,为您的目录命名,例如My Dashboards,然后单击Create Directory

提交表单后,您将被带回主页。立即单击“ 新建仪表板”按钮以创建新仪表板。在显示的表单中,为仪表板命名,例如Simple Dashboard,然后从下拉菜单中选择刚刚创建的目录。

提交表单后,您将能够看到新的仪表板。

您的信息中心已有一个图表,但需要进行配置。将鼠标悬停在图表的标题(即标题)上会显示各种图标,可让您配置图表。要更改其标题,可以单击“ 图形和轴设置”图标(左起第四个),然后在“ 图形标题”字段中键入新标题。

单击数据源图标(左侧第二个),将一个或多个表达式添加到图形中。单击“ 添加表达式”,然后在“ 输入表达式 ”字段中输入node procs running

现在单击图表标题中的Refresh图标(最左边的一个)来更新图形。您的仪表板现在包含一个完全配置的图表。您可以通过单击底部的“ 添加图表”按钮添加更多图表。

完成所有更改后,请确保单击右侧的“ 保存更改”按钮以使更改成为永久更改。下次访问PromDash的主页时,您将能够看到指向仪表板的链接:

结论

您现在在CentOS 7服务器上运行了一个功能齐全的Prometheus生态系统,您可以使用PromDash创建适合您需求的监控仪表板。

即使您在单个CentOS计算机上安装了所有组件,您也可以通过在每个计算机上仅安装节点导出程序,并将新节点导出程序的URL添加到prometheus.yml数组中的targets来轻松监视更多计算机。

您可以参考其文档了解有关Prometheus的更多信息。

想要了解更多关于使用Prometheus监控CentOS 7服务器的相关教程,请前往腾讯云+社区学习更多知识。


参考文献:《How to Use Prometheus to Monitor Your CentOS 7 Server》

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

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

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏coding...

跨平台移动开发 Flutter 初体验安装flutter安装VSCode新建Flutter工程Tips

打开 Terminal 先cd到你需要安装的目录下, 我这里直接在 ~ 个人目录下

20730
来自专栏惨绿少年

ansible服务部署与使用

第1章 ssh+key实现基于密钥连接(ansible使用前提) 说明:    ansible其功能实现基于SSH远程连接服务 使用ansible需要首先实现...

55300
来自专栏云计算教程系列

如何使用Prometheus监视您的Ubuntu 14.04服务器

Prometheus是由SoundCloud开发的开源监控系统。与其他监控系统(如InfluxDB和Graphite)一样,Prometheus将其所有数据存储...

22000
来自专栏吴柯的运维笔记

如何用Rysnc实现数据同步?

Rsync(remote sync) 是UNIX及类UNIX平台一款数据镜像备份软件,它不像FTP等其他文件传输服务那样需要进行全备份,Rsync可以根据数据...

419130
来自专栏Flutter入门到实战

老司机带你快速上手调试Flutter项目

在讲解调试工具之前,先来看看有关的设置选项,点击菜单栏File-->Settings-->Languages & Frameworks --> Flutter,...

64830
来自专栏BIT泽清

React Native应用部署/马甲包热更新-CodePush最新集成总结(2018年最新)

React Native支持大家用React Native技术开发APP,并打包生成一个APP。在动态更新方面React Native只是提供了动态更新的基础,...

41700
来自专栏IMWeb前端团队

让chrome插件在手机上跑起来

本文作者:IMWeb moonye 原文出处:IMWeb社区 未经同意,禁止转载 创建一个chrome的插件,并让这个插件能够作为一个app,运行在终...

22250
来自专栏黑泽君的专栏

通过数据库中的表,使用 MyEclipse2017的反向生成工具-->hibernate反转引擎引擎(MyEclipse2017自带的插件) 来反转生成实体类和对应的映射文件

1、在MyEclipse中,Java视图下,新建一个普通的java project,新建该项目的目的是:用来接收反转引擎生成的实体类和对应的映射文件。

17420
来自专栏贾鹏辉的技术专栏@CrazyCodeBoy

React Native应用部署/热更新-CodePush最新集成总结(新)

React Native应用部署/热更新-CodePush最新集成总结(新) ---- 更新说明: 此次博文更新适配了最新版的CodePush v1.17....

83260
来自专栏逸鹏说道

Javascript缓存投毒学习与实战

0x00 起因 不久前@三好学生师傅买了一个wooyun wifi,然后聊到了缓存投毒: ? 然后看到wooyun wifi的这个说明: 默认情况下该功能附带缓...

46750

扫码关注云+社区

领取腾讯云代金券