如何在RHEL 8/CentOS 8上安装Prometheus

时间:2020-02-23 14:30:51  来源:igfitidea点击:

欢迎来到我们的有关如何在CentOS 8/RHEL 8上安装Prometheus的指南。Prometheus是最初由SoundCloud开发的开源时间序列监视和警报工具包。它具有非常活跃的开发和社区,已被许多组织和广泛采用。

Prometheus是用于Cloud本机应用程序和微服务的事实上的监视工具。我们不能不提及Prometheus就谈论Docker和Kubernetes基础架构监视。为了实现完整的监视,警报和可视化,通常将Grafana纳入其中。

以下是在RHEL 8上安装Prometheus监视工具的步骤。

为Prometheus添加系统用户和组

通过创建将运行和管理Prometheus服务的专用用户,在RHEL 8上开始Prometheus的安装。这是系统用户,无权访问控制台/shell登录。

sudo groupadd --system prometheus
sudo useradd -s /sbin/nologin --system -g prometheus prometheus

请注意,该用户没有/bin/bash shell,这就是我们使用-s/sbin/nologin的原因。

设定NTP伺服器

为避免任何时间漂移,请在Prometheus服务器上配置NTP服务器以提供准确的时间。

如何在RHEL/CentOS 8上使用Chrony配置NTP服务器

为Prometheus创建数据目录

创建系统用户和组后,继续创建用于存储Prometheus数据的目录。这包括从受监视代理收集的度量。

sudo mkdir /var/lib/prometheus

我们可以选择使用其他路径,例如单独的分区。

为Prometheus创建配置目录

Prometheus的主要配置文件目录是/etc/prometheus /。它将具有一些子目录。

for i in rules rules.d files_sd; do
 sudo mkdir -p /etc/prometheus/${i};
done

在CentOS 8/RHEL 8上下载Prometheus

我们需要下载最新版本的Prometheus存档,并将其解压缩以获取二进制文件。我们可以从Prometheus版本Githubpage中查看版本。

我们可以使用curl或者wget从命令行下载。

curl -s https://api.github.com/repos/prometheus/prometheus/releases/latest \
  | grep browser_download_url \
  | grep linux-amd64 \
  | cut -d '"' -f 4 \
  | wget -qi 

解压缩文件并将其移至$PATH中的目录

tar xvf prometheus-*.tar.gz
cd prometheus-*/
sudo cp prometheus promtool /usr/local/bin/

还将控制台和console_libraries复制到/etc/prometheus目录:

sudo cp -r consoles/console_libraries//etc/prometheus/

第6步:创建普罗米修斯配置文件。

Prometheus配置文件将位于/etc/prometheus/prometheus.yml下。使用内容创建简单的配置:

# 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: 15s  # scrape_timeout is set to the global default (10s).

# 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=<job_name>` to any timeseries scraped from this config.
  - job_name: 'prometheus'

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

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

更改文件以适合初始设置并保存文件。

创建系统服务单元

为了能够使用systemd管理Prometheus服务,我们需要显式定义此单位文件。

建立档案

sudo vi /etc/systemd/system/prometheus.service

向其中添加以下内容。

[Unit]
Description=Prometheus
Documentation=https://prometheus.io/docs/introduction/overview/
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
Environment="GOMAXPROCS=2"
User=prometheus
Group=prometheus
ExecReload=/bin/kill -HUP $MAINPID
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 \
  --web.listen-address=0.0.0.0:9090 \
  --web.external-url=

SyslogIdentifier=prometheus
Restart=always

[Install]
WantedBy=multi-user.target

记住编辑该行:

Environment="GOMAXPROCS=2

将2替换为服务器的vcpuson编号。

设置正确的目录权限。

for i in rules rules.d files_sd; do
  sudo chown -R prometheus:prometheus /etc/prometheus/${i};
done
for i in rules rules.d files_sd; do
  sudo chmod -R 775 /etc/prometheus/${i};
done
sudo chown -R prometheus:prometheus /var/lib/prometheus/

开始普罗米修斯服务。

sudo systemctl daemon-reload
sudo systemctl start prometheus

使用systemctl statusprometheus命令检查状态:

$systemctl status prometheus.service 
 ● prometheus.service - Prometheus
    Loaded: loaded (/etc/systemd/system/prometheus.service; disabled; vendor preset: disabled)
    Active: active (running) since Fri 2019-01-11 00:36:17 EAT; 4min 44s ago
      Docs: https://prometheus.io/docs/introduction/overview/
  Main PID: 7576 (prometheus)
     Tasks: 9 (limit: 11510)
    Memory: 19.8M
    CGroup: /system.slice/prometheus.service
            └─7576 /usr/local/bin/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus --web.console.templat>
 Jan 11 00:36:17 rhel8.local prometheus[7576]: level=info ts=2019-01-10T21:36:17.709504055Z caller=main.go:244 build_context="(go=go1.11.3, theitroad@localhost>
 Jan 11 00:36:17 rhel8.local prometheus[7576]: level=info ts=2019-01-10T21:36:17.709529058Z caller=main.go:245 host_details="(Linux 4.18.0-32.el8.x86_6>
 Jan 11 00:36:17 rhel8.local prometheus[7576]: level=info ts=2019-01-10T21:36:17.709557341Z caller=main.go:246 fd_limits="(soft=1024, hard=4096)"
 Jan 11 00:36:17 rhel8.local prometheus[7576]: level=info ts=2019-01-10T21:36:17.709576706Z caller=main.go:247 vm_limits="(soft=unlimited, hard=unlimit>
 Jan 11 00:36:17 rhel8.local prometheus[7576]: level=info ts=2019-01-10T21:36:17.712203022Z caller=main.go:561 msg="Starting TSDB …"
 Jan 11 00:36:17 rhel8.local prometheus[7576]: level=info ts=2019-01-10T21:36:17.712231744Z caller=web.go:429 component=web msg="Start listening for co>
 Jan 11 00:36:17 rhel8.local prometheus[7576]: level=info ts=2019-01-10T21:36:17.717664176Z caller=main.go:571 msg="TSDB started"
 Jan 11 00:36:17 rhel8.local prometheus[7576]: level=info ts=2019-01-10T21:36:17.71771626Z caller=main.go:631 msg="Loading configuration file" filename>
 Jan 11 00:36:17 rhel8.local prometheus[7576]: level=info ts=2019-01-10T21:36:17.718015628Z caller=main.go:657 msg="Completed loading of configuration >
 Jan 11 00:36:17 rhel8.local prometheus[7576]: level=info ts=2019-01-10T21:36:17.71803238Z caller=main.go:530 msg="Server is ready to receive web reque>

配置firewalld

允许使用防火墙富规则从我受信任的网络访问Prometheus管理接口端口" 9090"。

sudo firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" \
source address="192.168.122.0/24" port protocol="tcp" port="9090" accept'

sudo firewall-cmd --reload

如果要允许来自任何IP,请使用:

sudo firewall-cmd --add-port=9090/tcp --permanent
sudo firewall-cmd --reload

打开Prometheus服务器IP /主机名和端口9090

我们现在已经在CentOS 8/RHEL 8 Linux系统上安装了Prometheus Server。