介绍
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
首先,创建一个新目录来存储您在本教程中下载的所有文件并移至该目录。
代码语言:javascript复制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
输入您刚刚创建的目录。
代码语言:javascript复制cd ~/Prometheus
使用tar
提取prometheus-0.16.0.linux-amd64.tar.gz
。
tar -xvzf ~/Downloads/prometheus-0.16.0.linux-amd64.tar.gz
这样就完成了Prometheus服务器的安装。通过键入以下命令验证安装:
代码语言:javascript复制~/Prometheus/prometheus-0.16.0.linux-amd64/prometheus -version
您应该在屏幕上看到以下消息:
代码语言:javascript复制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
您现在可以重新启动服务器,也可以使用以下命令手动启动服务:
代码语言:javascript复制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服务器的目录:
代码语言:javascript复制cd ~/Prometheus/prometheus-0.16.0.linux-amd64
在启动Prometheus之前,必须首先为其创建一个名为prometheus.yml
的配置文件。
vi ~/Prometheus/prometheus-0.16.0.linux-amd64/prometheus.yml
将以下代码复制到该文件中。
代码语言:javascript复制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服务器作为后台进程。
代码语言:javascript复制nohup ./prometheus > prometheus.log 2>&1 &
请注意,您将Prometheus服务器的输出重定向到名为prometheus.log
的文件。您可以使用tail
命令查看文件的最后几行:
tail ~/Prometheus/prometheus-0.16.0.linux-amd64/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的文本字段中键入度量标准的名称(例如, 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
您可能需要等待几分钟才能完成此命令。完成后,您应该看到以下消息:
代码语言: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的主页时,您将能够看到指向仪表板的链接:
结论
您现在在CentOS 7服务器上运行了一个功能齐全的Prometheus生态系统,您可以使用PromDash创建适合您需求的监控仪表板。
即使您在单个CentOS计算机上安装了所有组件,您也可以通过在每个计算机上仅安装节点导出程序,并将新节点导出程序的URL添加到prometheus.yml
数组中的targets
来轻松监视更多计算机。
您可以参考其文档了解有关Prometheus的更多信息。
想要了解更多关于使用Prometheus监控CentOS 7服务器的相关教程,请前往腾讯云 社区学习更多知识。
参考文献:《How to Use Prometheus to Monitor Your CentOS 7 Server》