在Ubuntu 20.04上安装和设置Prometheus

在本指南中,我们将学习如何在Ubuntu 20.04上安装Prometheus。 普罗米修斯 是一个开源系统和服务监视系统。它以给定的时间间隔通过HTTP调用从已配置的目标中收集指标,评估规则表达式,显示结果,并在满足某些条件时触发警报。

普罗米修斯的一些主要特征包括:

  • 多维的 数据模型 具有通过度量标准名称和键/值对标识的时间序列数据
  • PromQL,一个 灵活的查询语言 利用这个维度
  • 不依赖分布式存储;单服务器节点是自治的
  • 时间序列收集通过HTTP上的拉模型进行
  • 推时间序列 通过中间网关支持
  • 通过服务发现或静态配置发现目标
  • 多种图形和仪表板支持模式

在Ubuntu 20.04上安装和设置Prometheus

普罗米修斯由各种组成部分组成。

  • 主要的 Prometheus服务器 刮取并存储时间序列数据
  • 客户端库 用于检测应用程序代码
  • 推送网关 支持短期工作
  • 出口商 用于在无法直接使用Prometheus指标来检测给定系统的情况下(例如在HAProxy,StatsD,Graphite等服务中)从第三方系统导出现有指标作为Prometheus指标。
  • 警报经理 处理警报。

Prometheus在默认的Ubuntu 20.04存储库上可用;

apt-cache policy prometheus
prometheus:
  Installed: (none)
  Candidate: 2.15.2+ds-2
  Version table:
     2.15.2+ds-2 500
        500 http://ke.archive.ubuntu.com/ubuntu focal/universe amd64 Packages

但是,您可能已经注意到,默认的焦点存储库提供的Prometheus发行版本不是最新的。版本2.18是Prometheus的当前稳定发行版本。

在Ubuntu 20.04上使用预编译的二进制文件安装Prometheus

为确保您正在安装Prometheus的最新版本,请使用 预编译 可以直接从Prometheus下载的二进制文件 下载部分

先决条件

在继续使用预编译的二进制文件在Ubuntu 20.04上安装Prometheus之前;

创建Prometheus系统用户和组

运行以下命令以创建Prometheus系统用户和组;

useradd -M -r -s /bin/false prometheus

创建Prometheus目录

接下来,您需要创建用于存储Prometheus配置文件和其他数据的目录。

mkdir /etc/prometheus /var/lib/prometheus

下载Prometheus Binary

接下来,导航至Prometheus 下载部分 并获取最新版本的Prometheus。您只需使用wget下载适用于Linux的Prometheus二进制文件即可,如下所示;

wget https://github.com/prometheus/prometheus/releases/download/v2.18.1/prometheus-2.18.1.linux-amd64.tar.gz

通过计算SHA256哈希来验证下载的二进制文件的完整性。

sha256sum prometheus-2.18.1.linux-amd64.tar.gz
5fcc35b78bd0a1b84afae6de94248a4bea3cdb4daf0d54a37b5491cb86b014d7 prometheus-2.18.1.linux-amd64.tar.gz

将结果哈希与下载页面上提供的哈希进行比较。确保它们匹配。

在Ubuntu 20.04上安装Prometheus

提取下载的Prometheus二进制文件;

tar xzf prometheus-2.18.1.linux-amd64.tar.gz

复制 prometheuspromtool 提取的Prometheus存档文件夹下的二进制文件到 /usr/local/bin 目录。

cp prometheus-2.18.1.linux-amd64/{prometheus,promtool} /usr/local/bin/

复制后,将这些二进制文件的用户和组所有权设置为 prometheus

chown prometheus:prometheus /usr/local/bin/{prometheus,promtool}

接下来,复制 consolesconsole_libraries 目录到Prometheus配置目录, /etc/prometheus

cp -r prometheus-2.18.1.linux-amd64/{consoles,console_libraries} /etc/prometheus/

创建Prometheus配置文件

提取的存档文件夹上提供了一个示例Prometheus配置文件。为了使我们的工作更轻松,只需将其复制到Prometheus配置目录即可。

cp prometheus-2.18.1.linux-amd64/prometheus.yml /etc/prometheus/

修改配置文件以适合您的需求。在这种情况下,我们只使用默认值。

vim /etc/prometheus/prometheus.yml
# my global config
global:
  scrape_interval:     15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
  - static_configs:
    - targets:
      # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=` to any timeseries scraped from this config.
  - job_name: 'prometheus'

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
    - targets: ['localhost:9090']

在默认配置中,只有一个作业,称为 普罗米修斯 ,它会刮取时间序列数据 裸露普罗米修斯 服务器。该作业包含一个静态配置的目标,即本地主机 9090端口

接下来,设置Prometheus配置目录的用户和组所有权, / etc / prometheus普罗米修斯

chown -R prometheus:prometheus /etc/prometheus

完成后,类似地设置Prometheus数据目录的用户和组所有权, / var / lib / prometheus /普罗米修斯

chown prometheus:prometheus /var/lib/prometheus

运行普罗米修斯

至少,Prometheus现在已设置好并可以运行。但是,目前我们还没有Prometheus服务配置文件,因此,我们可以如下所示运行它;

prometheus --config.file=/etc/prometheus/prometheus.yml
...
level=info ts=2020-05-29T08:32:47.317Z caller=main.go:678 msg="Starting TSDB …"
level=info ts=2020-05-29T08:32:47.320Z caller=head.go:575 component=tsdb msg="Replaying WAL, this may take awhile"
level=info ts=2020-05-29T08:32:47.320Z caller=web.go:523 component=web msg="Start listening for connections" address=0.0.0.0:9090
...
level=info ts=2020-05-29T08:32:47.326Z caller=main.go:695 msg="TSDB started"
level=info ts=2020-05-29T08:32:47.326Z caller=main.go:799 msg="Loading configuration file" filename=/etc/prometheus/prometheus.yml
level=info ts=2020-05-29T08:32:47.731Z caller=main.go:827 msg="Completed loading of configuration file" filename=/etc/prometheus/prometheus.yml
level=info ts=2020-05-29T08:32:47.731Z caller=main.go:646 msg="Server is ready to receive web requests."

从Web界面访问Prometheus

如果防火墙(UFW)正在运行,请打开Prometheus端口。默认情况下,它在TCP端口9090上侦听。

ufw allow 9090/tcp

Prometheus现在准备接收Web请求。您可以使用以下地址从浏览器访问它, http://server-IP-or-Hostname:9090

要检查节点的状态,请导航至 状态 > 目标

Prometheus瞄准Ubuntu 20.04

要查看抓取的指标,请导航至 http://:9090 / metrics

要检查内存统计信息(例如,可用内存),请选择 go_memstats_frees_total 查询并单击执行,然后在 安慰 标签。

在Ubuntu 20.04上安装和设置Prometheus

要查看内存统计图,请单击 图形 标签。

在Ubuntu 20.04上安装和设置Prometheus创建Prometheus Systemd服务文件

要将Prometheus作为服务运行,您可以创建一个systemd服务配置文件,如下所示;

vim /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus Time Series Collection and Processing Server
Wants=network-online.target
After=network-online.target

[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus 
    --config.file /etc/prometheus/prometheus.yml 
    --storage.tsdb.path /var/lib/prometheus/ 
    --web.console.templates=/etc/prometheus/consoles 
    --web.console.libraries=/etc/prometheus/console_libraries

[Install]
WantedBy=multi-user.target

接下来,重新加载systemd配置文件并启动并使Prometheus在系统引导时运行。

systemctl daemon-reload
systemctl enable --now prometheus

检查Prometheus服务的状态;

systemctl status prometheus
● prometheus.service - Prometheus Time Series Collection and Processing Server
     Loaded: loaded (/etc/systemd/system/prometheus.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2020-05-29 08:56:32 UTC; 18s ago
   Main PID: 105588 (prometheus)
      Tasks: 6 (limit: 2281)
     Memory: 17.1M
     CGroup: /system.slice/prometheus.service
             └─105588 /usr/local/bin/prometheus --config.file /etc/prometheus/prometheus.yml --storage.tsdb.path /var/lib/prometheus/ --web.console.templates=/etc/promethe>

May 29 08:56:33 freeradius.kifarunix-demo.com prometheus[105588]: level=info ts=2020-05-29T08:56:33.655Z caller=main.go:678 msg="Starting TSDB ..."
May 29 08:56:33 freeradius.kifarunix-demo.com prometheus[105588]: level=info ts=2020-05-29T08:56:33.657Z caller=head.go:575 component=tsdb msg="Replaying WAL, this may tak>
May 29 08:56:33 freeradius.kifarunix-demo.com prometheus[105588]: level=info ts=2020-05-29T08:56:33.657Z caller=web.go:523 component=web msg="Start listening for connectio>
May 29 08:56:33 freeradius.kifarunix-demo.com prometheus[105588]: level=info ts=2020-05-29T08:56:33.660Z caller=head.go:624 component=tsdb msg="WAL segment loaded" segment>
May 29 08:56:33 freeradius.kifarunix-demo.com prometheus[105588]: level=info ts=2020-05-29T08:56:33.660Z caller=head.go:627 component=tsdb msg="WAL replay completed" durat>
May 29 08:56:33 freeradius.kifarunix-demo.com prometheus[105588]: level=info ts=2020-05-29T08:56:33.662Z caller=main.go:694 fs_type=EXT4_SUPER_MAGIC
May 29 08:56:33 freeradius.kifarunix-demo.com prometheus[105588]: level=info ts=2020-05-29T08:56:33.662Z caller=main.go:695 msg="TSDB started"
May 29 08:56:33 freeradius.kifarunix-demo.com prometheus[105588]: level=info ts=2020-05-29T08:56:33.662Z caller=main.go:799 msg="Loading configuration file" filename=/etc/>
May 29 08:56:33 freeradius.kifarunix-demo.com prometheus[105588]: level=info ts=2020-05-29T08:56:33.710Z caller=main.go:827 msg="Completed loading of configuration file" f>
May 29 08:56:33 freeradius.kifarunix-demo.com prometheus[105588]: level=info ts=2020-05-29T08:56:33.711Z caller=main.go:646 msg="Server is ready to receive web requests."

这就是如何在Ubuntu 20.04上安装和设置Prometheus。您可以进一步探索这个很棒的工具。请享用!

进一步阅读;

Prometheus入门

Sidebar