博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Prometheus : 入门
阅读量:5904 次
发布时间:2019-06-19

本文共 3714 字,大约阅读时间需要 12 分钟。

Prometheus 是一个开源的监控系统。支持灵活的查询语言(PromQL),采用 http 协议的 pull 模式拉取数据等特点使 Prometheus 即简单易懂又功能强大。

Prometheus 由 server, client, push gateway, exporter, alertmanager 等核心组件构成。Prometheus server 主要用于抓取和存储数据。Client libraries 可以用来连接 server 并进行查询等操作。Push gateway  用于批量,短期的监控数据的汇总节点,主要用于业务数据汇报等。不同的 exporter 用于不同场景下的数据收集,如收集主机信息的 node_exporter,收集 MongoDB 信息的 MongoDB exporter 等等。下图是 Prometheus 官方提供的架构图:

从这个架构图,我们可以看出它的运行逻辑大概是这样的:

Prometheus server 定期从数据源拉取数据,然后将数据持久化到磁盘。Prometheus 可以配置 rules,然后定时查询数据,当条件触发的时候,会将 alert 推送到配置的 Alertmanager。Alertmanager 收到警告的时候,可以根据配置,聚合,去重,降噪,最后发送警告。同时还可以使用 API, Prometheus Console 或者 Grafana 查询和聚合数据。

本文将介绍在 ubuntu 16.04 系统中安装 Prometheus Server,并配置它从一台主机上拉取监控信息,然后通过 Prometheus Server 提供的简易 UI 查询数据。

在 Ubuntu 16.04 中安装 Prometheus Server

请从 linux 版的二进制压缩包。注意在下载前要选择操作系统为 linux。

执行下面的命令把 prometheus server 安装到 /usr/local/share/prometheus 目录:

$ tar -xf prometheus-1.7.2.linux-amd64.tar.gz$ sudo mv prometheus-1.7.2.linux-amd64 /usr/local/share/prometheus

理论上来说这样就算是安装完成了,但是无论如何这都太简陋了。因为每次启动 Prometheus server 都需要手动执行命令:

$ /usr/local/share/prometheus/prometheus -config.file=/usr/local/share/prometheus/prometheus.yml

这实在是太不方便了!应该把它配置成服务,用 systemd 来管理。

先创建一个名为 prometheus 的用户:

$ sudo adduser prometheus

把目录 /usr/local/share/prometheus/ 的所有者设置为 prometheus 用户:

$ sudo chown -R prometheus:prometheus /usr/local/share/prometheus/

然后创建文件 /etc/systemd/system/prometheus.service,内容如下:

[Unit]Description=Prometheus ServerDocumentation=https://prometheus.io/docs/introduction/overview/After=network.target[Service]User=prometheusRestart=on-failureWorkingDirectory=/usr/local/share/prometheus/ExecStart=/usr/local/share/prometheus/prometheus \          -config.file=/usr/local/share/prometheus/prometheus.yml[Install]WantedBy=multi-user.target

好了,现在可以通过 systemd 来控制 Prometheus 服务了,先启动服务:

$ sudo systemctl daemon-reload$ sudo systemctl start prometheus

再把服务配置为开机时启动:

$ sudo systemctl enable prometheus

检查一下服务的状态:

$ sudo systemctl status prometheus

到此为止 Prometheus Server 已经开始运行了。接下来我们就可以收集数据了。

使用 Node Exporter 收集主机信息

数据收集的任务由不同的 exporter 来完成,如果要收集 linux 主机的信息,可以使用 node exporter。然后由 Prometheus Server 从 node exporter 上拉取信息。接下来我们介绍如何安装并配置 node exporter。

请从 node exporter 的二进制压缩包。执行下面的命令把 node exporter 安装到 /usr/local/share/ 目录:

$ tar -xf node_exporter-0.14.0.linux-amd64.tar.gz$ sudo cp node_exporter-0.14.0.linux-amd64/node_exporter /usr/local/sbin/

同样的我们把 node exporter 也配置成通过 systemd 管理。创建文件 /etc/systemd/system/node-exporter.service,内容如下:

[Unit]Description=Prometheus Node ExporterAfter=network.target[Service]ExecStart=/usr/local/sbin/node_exporterUser=nobody[Install]WantedBy=multi-user.target

执行下面的命令设置为开机启动并启动服务:

$ sudo systemctl daemon-reload$ sudo systemctl enable node-exporter$ sudo systemctl start node-exporter

node exporter 默认监听 9100 端口,让我们检查一下端口的监听情况:

$ ss -tunl

Node exporter 已经可以收集主机上的信息了,接下来我们还需要配置 Prometheus Server 从 node exporter 那里拉取数据。

配置 Prometheus 从 Node Exproter 拉取数据

Prometheus Server 可以从不同的 exporter 上拉取数据,对于上面的 node exporter 我们可以利用 Prometheus 的 static_configs 来拉取 node exporter 的数据。编辑 Prometheus server 的配置文件:

$ sudo vim /usr/local/share/prometheus/prometheus.yml

在 scrape_configs 中添加一个 名称为 node 的 static_configs:

- job_name: "node"    static_configs:      - targets: ["127.0.0.1:9100"]

注意,要把上面的 IP 地址替换为运行 node exporter 的主机的 IP。

保存文件然后重启 prometheus 服务!重启后 prometheus 服务会每隔 15s 从 node exporter 上拉取一次数据。

查询数据

Prometheus Server 提供了简易的 WebUI 可以进数据查询并展示,它默认监听的端口为 9090。接下来我们进行一次简单的查询来验证本文安装配置的系统。

在浏览器中访问 Prometheus Server 的 9090 端口:

在下拉菜单中选择 "node_memory_Buffers",然后点击 "Execute" 按钮:

查询出来的结果略微有些粗犷,连单位都没带。请选择 "Graph" 标签页:

通过图表查看查询结果就好多了!

总结

Prometheus 是当下比较流行的开源监控工具,这里只是简单的介绍了安装过程及一个最基本的用例。但是不难看出 Prometheus 虽然支持灵活的查询语言,但是自身只支持简单的展示能力。如果要友好的展示 Prometheus 的查询结果,还需要使用更专业的展示工具 Grafana。

转载地址:http://qdcpx.baihongyu.com/

你可能感兴趣的文章
Docker的系统资源限制及验证
查看>>
c++ ios_base register_callback方法使用
查看>>
Java中为什么需要Object类,Object类为什么是所有类的父类
查看>>
angularjs-paste-upload
查看>>
linux基础命令 head
查看>>
objective c:import和include的区别, ""和<>区别
查看>>
The Shared folder with you
查看>>
sax方式解析XML学习笔记
查看>>
Springboot配置(上)
查看>>
java--Eclipse for mac 代码提示(代码助手,代码联想)快捷键修改
查看>>
left join on/right join on/inner join on/full join on连接
查看>>
template.helper 多参数
查看>>
Android 四大组件之一(Activity)
查看>>
扫描(一)
查看>>
Centos7安装rabbitmq server 3.6.0
查看>>
iostat命令学习
查看>>
html video的url更新,自动清缓存
查看>>
【11】ajax请求后台接口数据与返回值处理js写法
查看>>
Python菜鸟之路:Jquery Ajax的使用
查看>>
LeetCode算法题-Maximum Depth of Binary Tree
查看>>