使用Prometheus和Grafana轻松监控Linux

首先

在长期稳定运行和管理服务器和系统(如Linux)时,资源监控变得必不可少。在运营过程中,应用程序和中间件的升级、配置变更,甚至是系统响应度或最糟糕的情况下的崩溃等,都可能发生。当发生这种情况时,资源监控变得非常重要,通过它可以按时间顺序查看何时、何种变化以及变化方式,这将成为解决问题的重要线索。

有关Prometheus和Grafana

由于该组合经常被使用,所以在这里省略了详细说明,但是 Prometheus 从具有 exporter 代理的服务器中获取监控指标。获取到的指标可以在 Prometheus 中进行可视化,但是我们还可以使用更好的可视化工具 Grafana。

image.png

实现的配置

我想在Oracle Cloud上创建以下配置。我们将在同一实例中运行Prometheus和Grafana。我们将准备一个Linux实例作为监视目标。

image.png

请根据OCI的教程创建虚拟网络(VCN)和实例。本次操作重点是关于实例创建后的安装过程。

作为云端的设置要点,以下是可能的选择:
– 在安全列表中打开Prometheus → node_exporter的端口
– 在互联网上打开到Grafana的端口

安装步骤

我认为以下步骤几乎可以直接复制粘贴执行。

普罗米修斯服务器的安装

在 Prometheus-Grafana 服务器上安装 Prometheus 服务器。

将下载并解压的文件放置到 /opt/prometheus 目录中。

wget https://github.com/prometheus/prometheus/releases/download/v2.27.1/prometheus-2.27.1.linux-amd64.tar.gz
tar xvf prometheus-2.27.1.linux-amd64.tar.gz
sudo mv prometheus-2.27.1.linux-amd64 /opt/prometheus
sudo chmod 755 /opt/prometheus
sudo chown -R root:root /opt/prometheus

将设定文件的目录和文件进行配置。

sudo mkdir /etc/prometheus
sudo ln -s /opt/prometheus/console_libraries /etc/prometheus/console_libraries
sudo ln -s /opt/prometheus/consoles /etc/prometheus/consoles
sudo ln -s /opt/prometheus/prometheus.yml /etc/prometheus/prometheus.yml

将systemd注册为服务。

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

我将描述以下内容。

[Unit]
Description=Prometheus Service
After=network.target

[Service]
Type=simple
EnvironmentFile=-/etc/default/prometheus
ExecStart=/opt/prometheus/prometheus $OPTIONS
PrivateTmp=true
Restart=always

[Install]
WantedBy=multi-user.target

创建一个环境文件。

sudo vi /etc/default/prometheus

请写下以下内容。

OPTIONS="--config.file=/etc/prometheus/prometheus.yml  --web.console.libraries=/etc/prometheus/console_libraries --web.console.templates=/etc/prometheus/consoles"

更改配置文件。

 sudo vi /etc/prometheus/prometheus.yml

请记录以下内容,并将最底部的target更改为要监控的IP和node_exporter的端口。

# 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: ['Target IP Address:9100']

我会启动Prometheus。

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

安装node_exporter

为正在监控的Linux安装node_exporter。
这样可以获取与该Linux相关的各种指标。

下载文件,解压并复制到 /opt/ 目录下。

wget https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz

tar xvf node_exporter-1.1.2.linux-amd64.tar.gz

sudo mkdir /opt/node_exporter
sudo cp node_exporter-1.1.2.linux-amd64/node_exporter /opt/node_exporter

创建一个管理node_exporter的systemd服务。

sudo vim /etc/systemd/system/node_exporter.service

请写下以下内容。

[Unit]
Description=Node exporter for prometheus
After=network.target

[Service]
Type=simple
EnvironmentFile=-/etc/default/node_exporter
ExecStart=/opt/node_exporter/node_exporter $OPTIONS
PrivateTmp=true

[Install]
WantedBy=multi-user.target

将其启动,并设置为在开机时自动启动。

sudo systemctl daemon-reload
sudo systemctl start node_exporter
sudo systemctl enable node_exporter

Prometheus会打开一个端口,用于访问node_exporter。

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

安装Grafana

获取并安装软件包。

wget https://dl.grafana.com/oss/release/grafana-7.5.7-1.x86_64.rpm
sudo yum install -y grafana-7.5.7-1.x86_64.rpm

启动服务,并设置为在开机时自动启动。

sudo systemctl start grafana-server.service
sudo systemctl enable grafana-server.service

打开用于在浏览器中访问Grafana的端口。

sudo firewall-cmd --add-port=3000/tcp --permanent
sudo firewall-cmd --reload
image.png

以管理用户身份登录,使用默认密码admin。登录后会要求更改密码,请务必进行修改。

image.png

添加数据源

添加配置以使Grafana能够访问Prometheus。

image.png
image.png
image.png
image.png
image.png

创建仪表盘

通过迄今为止的步骤,Prometheus可以从node_exporter获取度量,并通过Grafana显示它们。

在这里,我们将创建一个用于查看度量的仪表板。
在Grafana中,有许多仪表板模板可供公开使用。

这次我打算导入并使用以下在上述链接中提供的仪表盘:
https://grafana.com/grafana/dashboards/11074
https://grafana.com/grafana/dashboards/2747

image.png
image.png
image.png
image.png
image.png

只需一种选择的中国 本地化 汉语 释义 :

广告
将在 10 秒后关闭
bannerAds