如何在Debian 10(Buster)上安装Prometheus和Node_exporter
如何在Debian 10(Buster)Linux上安装Prometheus?
Prometheus是一个免费和开源监控系统,使我们可以从任何目标系统中收集时间序列数据指标。
其Web界面使我们可以执行强大的查询,可视化收集的数据,并配置警报。
在本教程中,我们将介绍Debian 10(Buster)上的Prometheus和Node_exporter的安装。
由于这是一个二进制安装方法,因此没有必需的依赖关系继续设置。
第1步:创建Prometheus系统用户/组
我们将创建一个专用的Prometheus系统用户和组。
-r或者-system选项用于此目的。
sudo groupadd --system prometheus sudo useradd -s /sbin/nologin --system -g prometheus prometheus
这会创建一个不需要/bash shell的系统用户,这就是我们使用-s/sbin/nologin的原因。
第2步:创建配置和数据目录
Prometheus需要存储数据和配置文件的目录。
使用以下命令创建所有必需的目录。
sudo mkdir /var/lib/prometheus for i in rules rules.d files_sd; do sudo mkdir -p /etc/prometheus/${i}; done
第3步:在Debian 10上下载并安装Prometheus(Buster)
让我们下载最新版本的Prometheus归档,然后提取它以获取二进制文件。
我们可以从Prometheus发布GitHub页面中查看版本。
sudo apt-get -y install wget 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 /位于路径中,让我们将二进制文件复制到它。
sudo mv prometheus promtool /usr/local/bin/
将Prometheus配置模板移动到/etc目录。
sudo mv prometheus.yml /etc/prometheus/prometheus.yml
还将控制台和Console_Libraries移动到/etc/propetheus目录:
sudo mv consoles/console_libraries//etc/prometheus/ cd ~/ rm -rf /tmp/prometheus
步骤4:创建/编辑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']
第5步:创建一个prometheus systemd服务单元文件
为了能够使用SystemD管理Prometheus服务,我们需要明确定义此单元文件。
sudo tee /etc/systemd/system/prometheus.service<<EOF [Unit] Description=Prometheus Documentation=https://prometheus.io/docs/introduction/overview/ Wants=network-online.target After=network-online.target [Service] Type=simple 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 EOF
更改目录权限。
将这些目录的所有权更改为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 ● prometheus.service - Prometheus Loaded: loaded (/etc/systemd/system/prometheus.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2019-08-21 23:29:11 CEST; 11s ago Docs: https://prometheus.io/docs/introduction/overview/ Main PID: 22671 (prometheus) Tasks: 9 (limit: 4585) Memory: 17.6M CGroup: /system.slice/prometheus.service └─22671 /usr/local/bin/prometheus --config.file=/etc/prometheus/prometheus.yml --storage.tsdb.path=/var/lib/prometheus --web.console.tem Aug 21 23:29:11 prom.theitroad.com prometheus[22671]: level=info ts=2019-08-21T21:29:11.467Z caller=main.go:333 vm_limits="(soft=unlimited,
访问URL http://[ip_hostname]上访问Prometheus Web界面:9090。
第6步:在Debian 10 Buster上安装Node_exporter
下载node_exporter存档。
curl -s https://api.github.com/repos/prometheus/node_exporter/releases/latest \ | grep browser_download_url \ | grep linux-amd64 \ | cut -d '"' -f 4 \ | wget -qi
提取下载的文件并将二进制文件移动到/usr/local/bin。
tar -xvf node_exporter*.tar.gz cd node_exporter*/ sudo cp node_exporter /usr/local/bin
确认安装。
$node_exporter --version node_exporter, version 0.18.1 (branch: HEAD, revision: 3db77732e925c08f675d7404a8c46466b2ece83e) build user: Hyman@theitroad build date: 20190604-16:41:18 go version: go1.12.5
创建node_exporter服务。
sudo tee /etc/systemd/system/node_exporter.service <<EOF [Unit] Description=Node Exporter Wants=network-online.target After=network-online.target [Service] User=prometheus ExecStart=/usr/local/bin/node_exporter [Install] WantedBy=default.target EOF
重新加载系统并启动服务。
sudo systemctl daemon-reload sudo systemctl start node_exporter sudo systemctl enable node_exporter
确认状态:
$ systemctl status node_exporter.service ● node_exporter.service - Node Exporter Loaded: loaded (/etc/systemd/system/node_exporter.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2019-08-21 23:41:11 CEST; 8s ago Main PID: 22879 (node_exporter) Tasks: 6 (limit: 4585) Memory: 6.6M CGroup: /system.slice/node_exporter.service └─22879 /usr/local/bin/node_exporter .................................................
一旦我们确认要运行的服务,让我们将Node_exporter添加到Prometheus服务器。
sudo vim /etc/prometheus.yml
添加新工作 scrape_config
部分。
- job_name: 'node_exporter' static_configs: - targets: ['localhost:9100']
重新启动Prometheus:
sudo systemctl restart prometheus
我们现在在Debian 10(Buster)Linux系统上安装了ProMetheus。