在CentOS 7/Ubuntu 18.04上安装Prometheus Server
这是我们有关使用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删除指标并进行可视化。