在CentOS 7/Ubuntu 18.04上安装Prometheus Server

时间:2020-02-23 14:31:15  来源:igfitidea点击:

这是我们有关使用Grafana,InfluxDB,Prometheus和Telegraf进行智能基础架构监视的指南的延续。我们已经介绍了如何在CentOS 7上安装Grafana和InfluxDB。作为服务器准备的一部分,请看一下如何在CentOS 7和Ubuntu 18.04 Linux系统上安装Prometheus Server。

作为记录,我实验室中的所有服务器都将运行CentOS 7,但其他要监视的服务器将运行Ubuntu,Fedora,Debian,Arch甚至Windows 2012/2015 等服务器。因此,为此,我假设我们有一个运行CentOS 7.x的服务器(VM)或者LXC容器。

创建Prometheus系统组

让我们从创建Prometheussystem组开始。我们需要使用选项-r或者system with groupadd命令。

sudo groupadd --system prometheus

ID <1000的组是系统组。

创建Prometheus系统用户

现在让我们创建Prometheus系统用户并分配我们刚刚创建的主要组。

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

这是一个不需要/bin/bash shell的系统用户,这就是我们使用-s/sbin/nologin的原因。

为Prometheus创建数据目录

Prometheus需要一个目录来存储其数据。我们将在/var/lib/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

下载Prometheus存档并解压缩

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

安装wget。

# RHEL family
sudo yum -y install wget

# Debian family
sudo apt-get -y install wget

下载Prometheus的最新二进制存档。

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

解压缩文件。

tar xvf prometheus*.tar.gz
cd prometheus*/

将Prometheus二进制文件移动到/usr/local/bin /

由于/usr/local/bin /在PATH中,因此让将二进制文件复制到它。

sudo mv prometheus promtool /usr/local/bin/

将prometheus配置模板移动到/etc目录。

sudo mv prometheus.yml  /etc/prometheus/prometheus.yml

还将控制台和console_libraries移至/etc/prometheus目录:

sudo mv consoles/console_libraries//etc/prometheus/
cd ~/
rm -rf /tmp/prometheus

创建/编辑Prometheus配置文件。

Prometheus配置文件将位于/etc/prometheus/prometheus.yml下。

sudo 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=<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']

我们可以将文件编辑为默认设置并保存。

创建Prometheus systemd服务单元文件

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

# cat /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=1"
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=1

将1替换为服务器上的vcpus数量。

更改目录权限。

将这些目录的所有权更改为Prometheus用户和组。

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/

重新加载systemd守护程序并启动服务。

sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus

使用systemctl status prometheus命令检查状态:

配置防火墙

打开防火墙上的端口。

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

对我来说,我会遵循防火墙丰富的规则,只允许我信任的子网和IP进行访问。

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

用我们信任的子网替换192.168.10.0/24.

我要从我的Grafana服务器进行测试,是否可以在端口9090上访问Prometheus服务。

$sudo yum -y install nmap-ncat
$sudo nc -v 192.168.10.20 9090
Ncat: Version 6.40 ( http://nmap.org/ncat )
Ncat: Connected to 192.168.10.20:9090.

因为我可以连接到端口9090,所以这意味着我们的设置已经完成。我们也可以尝试访问UI仪表板。

接下来,我们将介绍在要监视的节点上安装导出器,以及在Prometheus服务器上配置目标的方法,以便我们可以使用Grafana删除指标并进行可视化。