Prometheus 入门

翻译 原文链接

Prometheus是一个监控平台,通过抓取目标上和metric相关的HTTP endpoint,收集被监控目标的metrics。本文会指导你怎么安装、配置prometheus,并通过prometheus监控资源。你将会下载、安装、运行prometheus;下载、安装exporter or tools(输出主机或服务的时间序列数据)。我们介绍的第一个exporter是Node Exporter(输出主机级别的metrics,比如CPU、内存、磁盘)。

下载Prometheus

下载使用你平台的最新版本的Prometheus,然后解压:

curl -LO https://github.com/prometheus/prometheus/releases/download/v2.0.0/prometheus-2.0.0.linux-amd64.tar.gz
tar xvfz prometheus-*.tar.gz
cd prometheus-*

prometheus服务是一个单一的二进制文件。我们运行这个二进制文件,通过可选择项--help寻求帮助

./prometheus --help
usage: prometheus [<flags>]

The Prometheus monitoring server

. . .

在开始使用Prometheus,让我们先配置它。

配置Prometheus

prometheus配置文件是yaml文件。prometheus安装包里面有一个简单的配置文件模版叫prometheus.yml,我们从这里开始。

为了直观,下面的prometheus.yml内容省去了大多注释的内容(通过#可以增加注释)。

global:
  scrape_interval:     15s
  evaluation_interval: 15s

rule_files:
  # - "first.rules"
  # - "second.rules"

scrape_configs:
  - job_name: prometheus
    static_configs:
      - targets: ['localhost:9090']

在上述配置文件中有三个区块:global, rule_files and scrape_configs

global控制prometheus服务的全局配置。当前配置文件配置了两项。scrape_interval控制prometheus抓取目标metrics的频率(每15s采集一次目标metrics),当然对个别的目标可以覆盖该全局配置。evaluation_interval控制评估规则的频率,prometheus使用规则产生新的时间序列数据或者产生警报。

rule_files块制定了规则所在的位置,prometheus可以根据这个配置加载规则,当前我们还没有配置任何规则。

scrape_configs控制prometheus监控哪些资源。由于prometheus通过HTTP endpoint暴露的它本身的监控数据,prometheus也能够监控本身的健康情况。在默认的配置里有一个单独的job,叫做prometheus,它采集prometheus服务本身输出的时间序列数据。这个job包含了一个单独的、静态配置的目标:在端口9090上的localhost。prometheus默认会通过目标的/metrics路径采集metrics。所以,默认的job通过URL:http://localhost:9090/metrics采集metrics。收集到的时间序列会详述prometheus服务的状态和性能。

For a complete specification of configuration options, see the configuration documentation.

开始运行Prometheus

使用我们的配置文件运行prometheus,cd到prometheus目录,运行prometheus:

./prometheus --config.file=prometheus.yml

运行prometheus之后,你可以通过http://localhost:9090访问prometheus的状态页面。你也可以通过本地访问metrics endpoint:http://localhost:9090/metrics确认prometheus在工作,并在产生它自己的metrics。

使用表达式浏览器

我们首先展示prometheus自己采集自己的数据,prometheus自带展示界面。打开浏览器,访问http://localhost:9090/graph,点击Console按钮

其中一个prometheus输出的metric是http_requests_total(prometheus服务接收的http请求总数)。在浏览器输入http_requests_total,会返回许多不同的时间序列(每个序列按照时间排序)。所有的序列有着同一个metric namehttp_requests_total,不同的标签;这些标签标明不同类型的请求。如果我们仅仅对状态码200的请求感兴趣,可以使用下面的查询表达式查询相应的信息:

http_requests_total{code="200"}

为了计算序列的数量,可以使用如下查询表达式:

count(http_requests_total)

For more about the expression language, see the expression language documentation.

使用绘图界面

访问http://localhost:9090/graph,点击Graph按钮。

输入如下表达式,绘制每秒HTTP请求率:

rare(http_requests_total[1m])

安装Node Exporter

收集本身的metrics不能很好的表现Prometheus的能力。所以,接下来我们使用Node Exporter监控我们第一个资源Linux Host,这个样例是监控prometheus所在的host,不过你可以监控任意一个host(只要prometheus能够访问)。你也可以使用VMI Exporter采集windows主机。

Download the latest release of the Node Exporter of Prometheus for your platform, then extract it:

curl -LO https://github.com/prometheus/node_exporter/releases/download/v0.15.2/node_exporter-0.15.2.linux-amd64.tar.gz
tar xvfz node_exporter-*.tar.gz
cd node_exporter-*

Node Exporter是一个单独的二进制文件,node_exporter,有一组可配置的收集器用于手机各种基于主机的metrics。默认,收集器会收集cpu、内存、磁盘和其它metrics,暴露,使prometheus能够抓取监控数据。
启动Node Exporter:

./node_exporter

Node Exporter的metrics可以通过访问9100端口的/metrics路径获取。本例中,访问地址:http://localhost:9100/metrics

现在我们需要配置Prometheus,使Prometheus能够发现这个exporter。

配置prometheus监控Host

我们将会配置prometheus抓取新的目标metrics。我们需要在prometheus.yml配置的scrape_configs区增加一个job。

- job_name: node
  static_configs:
    - targets: ['localhost:9100']

我们新的job叫做“node”。它抓取一个静态的目标,在端口9100上的loclahost。你可以用hostname或者IP地址替换localhost。

现在我们需要重新加载Prometheus配置来激活这个新的job。reload配置有两种方式:

  • send SIGHUP signal
kill -HUP <pid>
  • send a HTTP POST to the Prometheus web server
  • 使用API来reload prometheus需要在启动prometheus时,开启web.enable-lifecycle配置参数
  • --web.enable-lifecycle Enable shutdown and reload via HTTP request.
  • /prometheus --config.file=prometheus.yml --web.enable-lifecycle
curl -X POST http://localhost:9090/-/reload

访问prometheus,在“Execute”按钮旁边有一个下拉框,在下拉框中可以看到prometheus采集的指标列表。在这个列表中能够看到以node_开头metrics,这些metrics就是Node Exporter收集的。比如通过node_cpu查看节点CPU使用率。

一个很有用的metric是up metric。up metric能够标识目标的状态。如果值是1,那么能够成功的从目标抓取metrics;如果值是0,那么则标明从该目标抓取metrics失败。在一定程度上能够通过改指标判断目标的状态。当前只能看到两个up metric,一个是关于Node Exporter的,一个是关于prometheus的。

总结

本文简单介绍了如何安装、配置prometheus来监控资源信息。同时,也安装了第一个exporter,介绍了时间序列的基本查询方法。
You can find more documentation and guides to help you continue to learn more about Prometheus.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 225,529评论 6 524
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 96,683评论 3 406
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 172,905评论 0 370
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 61,318评论 1 303
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 70,325评论 6 401
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,754评论 1 316
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,081评论 3 431
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 41,088评论 0 280
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,653评论 1 327
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,651评论 3 347
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,766评论 1 355
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,359评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 43,083评论 3 341
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,491评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,654评论 1 278
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,367评论 3 383
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,836评论 2 367

推荐阅读更多精彩内容