介绍
Prometheus是由SoundCloud开发的开源监控系统。与其他监控系统(如InfluxDB和Graphite)一样,Prometheus将其所有数据存储在时间序列数据库中。但是,它提供了多维数据模型和强大的查询语言,使系统管理员不仅可以轻松地微调其指标的定义,还可以生成更准确的报告。
此外,Prometheus项目还包括PromDash(一种可用于开发自定义仪表板的基于浏览器的工具)和一个能够通过电子邮件,Flowdock,Slack,HipChat等发送警报的实验性AlertManager。
在本教程中,您将学习如何安装,配置和使用Prometheus Server,Node Exporter和PromDash。
先决条件
要学习本教程,您需要:
- 一个具有sudo权限的非root用户的64位Ubuntu 14.04 腾讯云CVM 。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。
注意:如果必须使用32位服务器,请确保在本教程中提到的所有文件名和链接中将-amd64替换为-386。
第1步 - 安装Prometheus Server
首先,创建一个新目录来存储您在本教程中下载的所有文件并移至该目录。
代码语言:javascript复制mkdir ~/Downloads
cd ~/Downloads
用wget
从GitHub下载最新版本的Prometheus服务器和时间序列数据库。
wget "https://github.com/prometheus/prometheus/releases/download/0.15.1/prometheus-0.15.1.linux-amd64.tar.gz"
Prometheus监控系统由几个组件组成,每个组件都需要单独安装。将所有组件保存在一个父目录中是个好主意,因此创建一个,以及另一个子目录来存储Prometheus服务器的所有二进制文件。
代码语言:javascript复制mkdir -p ~/Prometheus/server
输入您刚刚创建的目录。
代码语言:javascript复制cd ~/Prometheus/server
使用tar
提取prometheus-0.15.1.linux-amd64.tar.gz
。
tar -xvzf ~/Downloads/prometheus-0.15.1.linux-amd64.tar.gz
这样就完成了Prometheus服务器的安装。输入以下命令验证安装:
代码语言:javascript复制./prometheus -version
您应该在屏幕上看到以下消息:
代码语言:javascript复制prometheus, version 0.15.1 (branch: master, revision: 64349aa)
build user: julius@julius-thinkpad
build date: 20150727-17:56:00
go version: 1.4.2
第2步 - 安装节点导出器
Prometheus是为监控Web服务而开发的。为了监控Ubuntu服务器的指标,您应该安装一个名为Node Exporter的工具。节点导出器,顾名思义,以Prometheus理解的格式导出大量指标(如磁盘I / O统计数据,CPU负载,内存使用情况,网络统计数据等)。
在Prometheus
目录中创建一个名为node_exporter
的新目录,进入目录:
mkdir -p ~/Prometheus/node_exporter
cd ~/Prometheus/node_exporter
使用wget
下载节点出口商的最新版本,您可在GitHub上,并将其放置在该Downloads
目录中。
wget https://github.com/prometheus/node_exporter/releases/download/0.11.0/node_exporter-0.11.0.linux-amd64.tar.gz -O ~/Downloads/node_exporter-0.11.0.linux-amd64.tar.gz
您现在可以使用该tar
命令进行提取node_exporter-0.11.0.linux-amd64.tar.gz
。
tar -xvzf ~/Downloads/node_exporter-0.11.0.linux-amd64.tar.gz
第3步 - 将节点导出器作为服务运行
为了便于启动和停止节点导出器,现在让我们将其转换为服务。
在/usr/bin
中创建一个指向node_exporter
二进制文件的软链接。
sudo ln -s ~/Prometheus/node_exporter/node_exporter /usr/bin
使用nano
或您喜欢的文本编辑器来创建一个名为node_exporter.conf
的Upstart配置文件。
sudo nano /etc/init/node_exporter.conf
此文件应包含node_exporter
可执行文件的链接,并指定何时应启动可执行文件。因此,添加以下代码:
# Run node_exporter
start on startup
script
/usr/bin/node_exporter
end script
此时,节点导出程序可用作可以使用以下service
命令启动的服务:
sudo service node_exporter start
节点导出器启动后,使用浏览器在http://your_server_ip:9100/metrics
查看其可用的Web界面。您应该看到一个包含大量文本的页面:
# 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服务器的目录:
代码语言:javascript复制cd ~/Prometheus/server
在启动Prometheus之前,必须首先为其调用配置文件prometheus.yml
。
nano ~/Prometheus/server/prometheus.yml
将以下代码复制到该文件中。
代码语言:javascript复制scrape_configs:
- job_name: "node"
scrape_interval: "15s"
target_groups:
- targets: ['localhost:9100']
这将创建一个scrape_configs
部分并定义一个名为node
的作业。它包含targets
数组中的Node Exporter的Web界面的URL 。在scrape_interval
使prometheus刮擦指标每十五秒钟设置为15秒。
您可以根据需要为自己的工作命名,但将其命名为“node”可以使用Node Exporter的默认控制台模板。
保存文件并退出。
启动Prometheus服务器作为后台进程。
代码语言:javascript复制nohup ./prometheus > prometheus.log 2>&1 &
请注意,您将Prometheus服务器的输出重定向到名为prometheus.log
的文件。您可以使用tail
命令查看文件的最后几行:
tail ~/Prometheus/server/prometheus.log
服务器准备就绪后,您将在文件中看到以下消息:
代码语言:javascript复制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的文本字段中键入度量标准的名称(例如,node_procs_running)。然后,按蓝色的执行按钮。单击下方的图表(控制台旁边),您应该会看到该指标的图表:
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,SQLite3,Bundler,它是一个gem依赖管理器,以及它们的依赖项。使用apt-get
这样做。
sudo apt-get update && sudo apt-get install git ruby bundler libsqlite3-dev sqlite3 zlib1g-dev
您现在可以使用该git
命令下载源文件。
git clone https://github.com/prometheus/promdash.git
输入promdash
目录。
cd ~/Prometheus/promdash
使用bundle
安装PromDash需要的Ruby gems。由于我们将在本教程中配置PromDash以使用SQLite3,因此请确保使用--without
参数排除MySQL和PostgreSQL的gem :
bundle install --without mysql postgresql
因为PromDash依赖于几个gem,所以你必须等待几分钟才能完成这个命令。完成后,您应该看到以下消息。
代码语言:javascript复制. . .
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数据库。
代码语言:javascript复制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文件)。输入以下内容即可:
代码语言:javascript复制rake assets:precompile
第7步 - 启动和配置PromDash
PromDash运行在瘦,一个轻量级的Web服务器上。通过键入以下命令将服务器作为守护程序启动:
代码语言:javascript复制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的主页时,您将能够看到指向仪表板的链接:
结论
您现在在Ubuntu 14.04服务器上运行了一个功能齐全的Prometheus生态系统,您可以使用PromDash创建适合您需求的监控仪表板。
即使您在单个Ubuntu计算机上安装了所有组件,也可以通过在每个计算机上仅安装节点导出程序并将新节点导出程序的URL添加到prometheus.yml
数组中的targets
来轻松监视更多计算机。
您可以参考其文档了解有关Prometheus的更多信息。
想要了解更多关于使用Prometheus监视您的服务器的相关教程,请前往腾讯云 社区学习更多知识。
参考文献:《How To Use Prometheus to Monitor Your Ubuntu 14.04 Server》