如何在RHEL 8/CentOS 8上安装Prometheus
欢迎来到我们的有关如何在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。