介绍
Prometheus是由SoundCloud开发的开源监控系统。 像其他监控系统,例如InfluxDB和Graphite,Prometheus将其所有数据存储在时间序列数据库中。 但是,它提供了一个多维数据模型和强大的查询语言,使系统管理员不仅可以轻松地微调其度量的定义,而且生成更准确的报告。
此外,Prometheus项目还包括PromDash(基于浏览器的工具,可用于开发自定义仪表板)和一个实验性的AlertManager,能够通过电子邮件,Flowdock,Slack,HipChat等发送警报。
在本教程中,您将了解如何安装,配置和使用Prometheus服务器,节点导出器和PromDash。
先决条件
要遵循本教程,您需要:
- 一个64位的Ubuntu 14.04Droplet与Sudo非root用户。
注意:如果你必须使用一个32位服务器,请确保您在本教程中提到的所有文件名和链接与-386取代-amd64。
第1步 - 安装Prometheus服务器
首先,创建一个新目录来存储您在本教程中下载的所有文件并移动到它。
mkdir ~/Downloads
cd ~/Downloads
使用wget
下载从GitHubPrometheus服务器和时间序列数据库的最新版本。
wget "https://github.com/prometheus/prometheus/releases/download/0.15.1/prometheus-0.15.1.linux-amd64.tar.gz"
Prometheus监控系统由几个组件组成,每个组件都需要单独安装。 将所有组件保存在一个父目录中是一个好主意,因此创建一个,并有一个附加子目录来存储Prometheus服务器的所有二进制文件。
mkdir -p ~/Prometheus/server
输入刚刚创建的目录。
cd ~/Prometheus/server
使用tar
提取prometheus-0.15.1.linux-amd64.tar.gz
。
tar -xvzf ~/Downloads/prometheus-0.15.1.linux-amd64.tar.gz
这样就完成了Prometheus服务器的安装。 通过键入以下内容验证安装:
./prometheus -version
您应该在屏幕上看到以下消息:
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负载,内存使用情况,网络统计信息等)。
创建一个名为新目录node_exporter
里面Prometheus
目录,快进去吧:
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步 - 运行节点导出程序作为服务
为了方便启动和停止Node Exporter,现在让我们将它转换为一个服务。
创建一个软链接到node_exporter
二进制/usr/bin
。
sudo ln -s ~/Prometheus/node_exporter/node_exporter /usr/bin
使用nano
或你喜欢的文本编辑器创建一个名为Upstart配置文件node_exporter.conf
。
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
节点出口商启动后,使用浏览器来查看其可用的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/server
在开始之前Prometheus,您必须首先创建一个配置文件叫prometheus.yml
。
nano ~/Prometheus/server/prometheus.yml
将以下代码复制到文件中。
scrape_configs:
- job_name: "node"
scrape_interval: "15s"
target_groups:
- targets: ['localhost:9100']
这将创建一个scrape_configs
部分,定义了一个名为工作node
。 它包括你的节点出口商的Web界面的阵列中的URL targets
。 的scrape_interval
使得Prometheus刮擦度量一次每十五秒钟设置为15秒。
你可以命名任何你想要的任务,但调用它“节点”允许您使用默认控制台模板的节点出口。
保存文件并退出。
启动Prometheus服务器作为后台进程。
nohup ./prometheus > prometheus.log 2>&1 &
请注意,您重定向Prometheus服务器的输出到一个名为prometheus.log
。 您可以查看使用该文件的最后几行tail
的命令:
tail ~/Prometheus/server/prometheus.log
服务器就绪后,您将在文件中看到以下消息:
INFO[0000] Starting target manager... file=targetmanager.go line=75
INFO[0000] Listening on :9090 file=web.go line=118
使用浏览器访问Prometheus的网页提供http:// your_server_ip :9090
。 您将看到以下首页。
为了确保Prometheus从节点出口商刮数据,单击图表选项卡页面的顶部。 在打开,键入度量标准的名称(如node_procs_running,例如)在说表达式文本字段的页面。 然后,按蓝色的执行按钮。 点击图 (旁边控制台 )的正下方,你应该看到该指标的图形:
Prometheus具有控制台模板,可让您查看几个常用指标的图表。 这些控制台模板仅在您设定的值接近job_name
为node
的Prometheus的配置。
访问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的Gem。 正如我们将设置PromDash在本教程中使用sqlite3的工作,请确保您排除MySQL和PostgreSQL使用的Gem--without
参数:
bundle install --without mysql postgresql
因为PromDash依赖于几个gem,所以您必须等待几分钟才能完成此命令。 完成后,您应该会看到以下消息。
. . .
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创建一个名为sqlite3的数据库以下mydb.sqlite3
内部databases
目录:
echo "export DATABASE_URL=sqlite3:$HOME/Prometheus/databases/mydb.sqlite3" >> ~/.bashrc
在本教程中,你将在生产模式下运行PromDash,所以设置RAILS_ENV
环境变量来production
。
echo "export RAILS_ENV=production" >> ~/.bashrc
应用我们对所做的更改.bashrc
文件。
. ~/.bashrc
其次,在使用的sqlite3的数据库中创建PromDash的表rake
工具。
rake db:migrate
因为PromDash使用Rails Asset Pipeline,所以PromDash项目的所有资源(CSS文件,图像和Javascript文件)都应该预编译。 键入以下内容:
rake assets:precompile
第7步 - 启动和配置PromDash
PromDash在Thin(轻量级Web服务器)上运行。 通过键入以下命令作为守护程序启动服务器:
bundle exec thin start -d
等待几秒钟,服务器启动,然后访问http:// your_server_ip :3000/
查看PromDash的主页。
在开始创建自定义仪表板之前,您应该让PromDash知道您的Prometheus服务器的URL。 您可以通过点击顶部的服务器选项卡上这样做。 单击新服务器 ,然后在形式,给予任何名义到你的Prometheus服务器。 设置的URL字段来http:// your_server_ip :9090
和服务器类型字段Prometheus 。
最后,点击创建服务器来完成配置。 您的网页会说服务器已成功创建。你可以在主菜单中单击后退到仪表板 。
第8步 - 创建仪表板
由于Promdash仪表盘应该属于一个Promdash目录,首先通过点击新建目录创建一个新的目录。 在显示出来的形式,提供一个名称的目录,如我的仪表盘 ,然后单击创建目录 。
提交表单后,您将被带回首页。 点击新建按钮, 仪表板现在创建一个新的仪表板。 在所示的形式,提供一个名称您的仪表板,喜欢简单仪表板并选择您刚刚从下拉菜单中创建的目录。
提交表单后,您将可以看到新的信息中心。
您的信息中心已有一个图形,但需要进行配置。 悬停在图表的标题(它说标题 ),就会发现,让您配置图形各种图标。 要改变它的标题,您可以点击图和轴设置图标(第四从左边),然后键入在图表标题领域的新头衔。
点击数据源的图标,这是第二次到左侧,以一个或多个表达式添加到图表。 点击添加表达式 ,并在上面写着输入表达式的字段中输入node_procs_running。
现在点击图中的头球刷新图标(最左边的一个)来更新图表。 您的信息中心现在包含一个完全配置的图表。 您可以通过点击底部的添加图形按钮添加更多的图表。
完成所有变更后,请务必点击保存更改按钮上进行永久更改的权利。 下次访问PromDash的首页时,您将可以看到信息中心的链接:
结论
您现在有一个运行在您的Ubuntu 14.04服务器上的全功能Prometheus生态系统,您可以使用PromDash创建适合您的要求的监控仪表板。
即使您安装在一台Ubuntu的机器上的所有组件,您可以轻松地对他们每个人只安装节点出口商,并添加新节点出口商到的网址,监督更多的机器targets
阵列prometheus.yml
。
您可以通过参考其更多地了解Prometheus文档 。