当前位置: 首页 > article >正文

Prometheus2.53.3 | 监控系统安装与配置指南(已成功安装)

本文旨在为读者提供一个完整的 Prometheus 监控系统的安装与配置教程,涵盖 Prometheus 主程序、常用 Exporters(如 Node Exporter 和 Mysqld Exporter)、Pushgateway 以及 Alertmanager 的部署步骤。通过本指南,您将能够:

  • 搭建一个功能完备的监控系统:实时监控主机性能、数据库状态以及自定义指标。
  • 实现告警功能:通过邮件等方式接收系统异常通知。
  • 适用于生产环境:配置了 systemd 服务、SELinux 兼容性和防火墙规则,确保系统健壮性与安全性。
  • 支持离线安装:提供明确的下载链接和步骤,方便在无网络环境中部署。

本文适用于运行 CentOS 9 或类似 Linux 发行版的用户,假设您具有基本的 Linux 操作知识和 root 权限。

通过本文,您可以:

  • 部署完整的 Prometheus 监控生态:包括 Prometheus 主程序、主机监控(Node Exporter)、数据库监控(Mysqld Exporter)、数据推送(Pushgateway)和告警管理(Alertmanager)。
  • 实现生产级配置:支持 systemd 服务管理、SELinux 兼容性和防火墙设置,适用于企业环境。
  • 掌握调试与验证方法:通过日志检查、端口测试和 curl 请求,确保系统正常运行。
  • 灵活调整:根据实际需求修改配置文件(如端口、密码、SMTP 设置)。

1. 安装 Prometheus 主程序

Prometheus 是一个开源的监控和告警工具,以下是其在 Linux 环境下的安装步骤。

 离线安装包:Prometheus相关安装包.7z资源-CSDN文库

1.1 下载并解压 Prometheus

下载 Prometheus 二进制文件并部署到指定目录。

cd /home
wget https://github.com/prometheus/prometheus/releases/download/v2.53.3/prometheus-2.53.3.linux-amd64.tar.gz

tar -xvzf prometheus-2.53.3.linux-amd64.tar.gz
sudo mkdir -p /usr/local/prometheus
sudo mv prometheus-2.53.3.linux-amd64/* /usr/local/prometheus/
sudo chown -R prometheus:prometheus /usr/local/prometheus
sudo chmod -R 755 /usr/local/prometheus
  • 注释
    • wget 下载指定版本的 Prometheus(v2.53.3,适用于 Linux AMD64 架构)。
    • tar -xvzf 解压下载的压缩包。
    • 创建 /usr/local/prometheus 目录并移动文件,确保目录权限为 prometheus 用户所有。

1.2 创建数据目录

为 Prometheus 创建用于存储时间序列数据的目录。

sudo mkdir -p /usr/local/prometheus/data
sudo chown -R prometheus:prometheus /usr/local/prometheus/data
sudo chmod -R 755 /usr/local/prometheus/data
  • 注释
    • 数据目录用于存储监控数据(如时间序列数据库 TSDB)。
    • 使用 chown 和 chmod 设置权限,确保 Prometheus 进程可以读写。

1.3 配置 Prometheus

创建并编辑 Prometheus 的配置文件 prometheus.yml。

sudo tee /usr/local/prometheus/prometheus.yml > /dev/null <<EOF
global:
  scrape_interval: 15s
  evaluation_interval: 15s
scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]
  - job_name: "node_exporter"
    static_configs:
      - targets: ["localhost:9100"]
  - job_name: "mysqld_exporter"
    static_configs:
      - targets: ["localhost:9104"]
  - job_name: "pushgateway"
    static_configs:
      - targets: ["localhost:9091"]
alerting:
  alertmanagers:
    - static_configs:
        - targets: ["localhost:9093"]
EOF
sudo chown prometheus:prometheus /usr/local/prometheus/prometheus.yml
sudo chmod 644 /usr/local/prometheus/prometheus.yml
  • 注释
    • global 配置全局抓取和评估间隔为 15 秒。
    • scrape_configs 定义监控目标,包括 Prometheus 自身(9090 端口)、Node Exporter(9100 端口)、Mysqld Exporter(9104 端口)和 Pushgateway(9091 端口)。
    • alerting 指定告警管理器地址(Alertmanager,9093 端口)。
    • 使用 tee 创建文件,避免手动编辑出错。

1.4 创建 Prometheus 用户和组

为 Prometheus 创建一个系统用户。

sudo useradd --no-create-home --system -s /bin/false prometheus
  • 注释
    • useradd 创建一个无主目录的系统用户,禁用 shell 登录,提升安全性。

1.5 配置 SELinux 上下文

若系统启用了 SELinux,需配置上下文以确保兼容性。

# 安装 SELinux 工具(若未安装,需联网执行)
sudo dnf install -y setools-console policycoreutils-python-utils
# 配置二进制文件 SELinux 上下文
sudo chcon -t bin_t /usr/local/prometheus/prometheus
sudo semanage fcontext -a -t bin_t "/usr/local/prometheus/prometheus"
sudo restorecon -v /usr/local/prometheus/prometheus
# 配置数据目录 SELinux 上下文
sudo chcon -R -t var_lib_t /usr/local/prometheus/data
sudo semanage fcontext -a -t var_lib_t "/usr/local/prometheus/data(/.*)?"
sudo restorecon -R -v /usr/local/prometheus/data
  • 注释
    • dnf install 安装 SELinux 管理工具(若已安装可跳过)。
    • chcon 和 semanage fcontext 设置二进制文件和数据目录的 SELinux 类型。
    • restorecon 应用上下文更改。

1.6 创建 systemd 服务文件

配置 Prometheus 为 systemd 服务,以便系统启动时自动运行。

sudo tee /etc/systemd/system/prometheus.service > /dev/null <<EOF
[Unit]
Description=Prometheus Monitoring Server
After=network.target
[Service]
User=prometheus
Group=prometheus
WorkingDirectory=/usr/local/prometheus
ExecStartPre=/bin/test -x /usr/local/prometheus/prometheus
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/usr/local/prometheus/data --web.listen-address=0.0.0.0:9090
Restart=always
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOF
  • 注释
    • ExecStartPre 检查二进制文件是否存在,提升健壮性。
    • ExecStart 指定启动命令,绑定 9090 端口并使用指定配置文件和数据路径。
    • 输出重定向到 journal 日志,便于排查问题。

1.7 启动并启用 Prometheus 服务

启动服务并设置开机自启。

sudo systemctl daemon-reload
sudo systemctl start prometheus
sudo systemctl enable prometheus
  • 注释
    • daemon-reload 重新加载服务文件。
    • start 和 enable 分别启动服务并设置开机自启。

1.8 配置防火墙

开放 Prometheus 的 9090 端口。

sudo firewall-cmd --add-port=9090/tcp --permanent
sudo firewall-cmd --reload
  • 注释
    • firewall-cmd 配置防火墙规则,--permanent 确保重启后生效。

1.9 验证 Prometheus 运行状态

检查服务是否正常运行。

​sudo systemctl status prometheus
sudo ss -tuln | grep 9090

curl http://localhost:9090
  • 注释
    • systemctl status 查看服务状态。
    • ss -tuln 检查 9090 端口是否监听。
    • curl 测试 Web 界面是否可访问。

1.10 (可选)检查日志

查看 Prometheus 的运行日志。

journalctl -u prometheus -f
  • 注释
    • -f 实时跟踪日志,便于调试。

1.11 (可选)处理 SELinux 问题

若遇到 SELinux 相关问题,可临时关闭 SELinux 测试。

sudo ausearch -m avc -ts recent
sudo setenforce 0

sudo systemctl restart prometheus
# 若成功运行后再恢复 SELinux
sudo setenforce 1
  • 注释
    • ausearch 查看 SELinux 拒绝日志。
    • setenforce 0 临时关闭 SELinux,测试后恢复。

2. 配置 Exporters(数据采集)

Exporters 用于采集各种系统或应用的指标数据并暴露给 Prometheus。

2.1 Node Exporter(主机监控)

安装 Node Exporter 以监控主机性能(如 CPU、内存、磁盘等)。

​cd /home
wget https://github.com/prometheus/node_exporter/releases/download/v1.9.0/node_exporter-1.9.0.linux-amd64.tar.gz
tar -xvzf node_exporter-1.9.0.linux-amd64.tar.gz
sudo mkdir -p /usr/local/bin
sudo mv node_exporter-1.9.0.linux-amd64/node_exporter /usr/local/bin/
sudo chmod +x /usr/local/bin/node_exporter
sudo chown prometheus:prometheus /usr/local/bin/node_exporter
# 配置 SELinux 上下文(若启用 SELinux)
sudo chcon -t bin_t /usr/local/bin/node_exporter
sudo semanage fcontext -a -t bin_t "/usr/local/bin/node_exporter"
sudo restorecon -v /usr/local/bin/node_exporter
# 创建 systemd 服务文件
sudo tee /etc/systemd/system/node-exporter.service > /dev/null <<EOF
[Unit]
Description=Node Exporter for Prometheus
After=network.target
[Service]
User=prometheus
Group=prometheus
ExecStartPre=/bin/test -x /usr/local/bin/node_exporter
ExecStart=/usr/local/bin/node_exporter --web.listen-address=:9100
Restart=always
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOF
# 启动并启用服务
sudo systemctl daemon-reload

sudo systemctl start node-exporter
sudo systemctl enable node-exporter
# 检查服务状态
sudo systemctl status node-exporter
# 配置防火墙
sudo firewall-cmd --add-port=9100/tcp --permanent

sudo firewall-cmd --reload
  • 注释
    • 下载并安装 Node Exporter v1.9.0。
    • 配置 SELinux 和 systemd 服务,确保兼容性和开机自启。
    • 开放 9100 端口以供 Prometheus 抓取指标。

2.2 Mysqld Exporter(MariaDB 监控)

安装 MariaDB 和 Mysqld Exporter 以监控数据库性能。

​
# 手动安装 MariaDB 10.5.27
cd /home
wget https://archive.mariadb.org/mariadb-10.5.27/bintar-linux-systemd-x86_64/mariadb-10.5.27-linux-systemd-x86_64.tar.gz
tar -xvzf mariadb-10.5.27-linux-systemd-x86_64.tar.gz
sudo mkdir -p /usr/local/mariadb
sudo mv mariadb-10.5.27-linux-systemd-x86_64/* /usr/local/mariadb/
sudo chown -R root:root /usr/local/mariadb
sudo mkdir -p /usr/local/mariadb/data
sudo chown -R mysql:mysql /usr/local/mariadb/data
# 创建 MariaDB 用户(若不存在)
sudo useradd --no-create-home --system -s /bin/false mysql
# 配置 SELinux 上下文(若启用 SELinux)
sudo chcon -t bin_t /usr/local/mariadb/bin/mysqld
sudo semanage fcontext -a -t bin_t "/usr/local/mariadb/bin/mysqld"
sudo restorecon -v /usr/local/mariadb/bin/mysqld
sudo chcon -R -t mysqld_db_t /usr/local/mariadb/data
sudo semanage fcontext -a -t mysqld_db_t "/usr/local/mariadb/data(/.*)?"
sudo restorecon -R -v /usr/local/mariadb/data
# 创建 systemd 服务文件
sudo tee /etc/systemd/system/mariadb.service > /dev/null <<EOF
[Unit]
Description=MariaDB Database Server
After=network.target
[Service]
ExecStartPre=/bin/mkdir -p /usr/local/mariadb/data
ExecStartPre=/bin/chown -R mysql:mysql /usr/local/mariadb/data
ExecStart=/usr/local/mariadb/bin/mysqld --datadir=/usr/local/mariadb/data --pid-file=/usr/local/mariadb/data/mariadb.pid
User=mysql
Group=mysql
Restart=always
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOF
# 启动并启用 MariaDB 服务
sudo systemctl daemon-reload

sudo systemctl start mariadb
sudo systemctl enable mariadb
# 运行安全配置脚本
sudo /usr/local/mariadb/scripts/mysql_secure_installation
# 下载并安装 Mysqld Exporter
cd /home
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.17.1/mysqld_exporter-0.17.1.linux-amd64.tar.gz
tar -xvzf mysqld_exporter-0.17.1.linux-amd64.tar.gz
sudo mkdir -p /usr/local/bin
sudo mv mysqld_exporter-0.17.1.linux-amd64/mysqld_exporter /usr/local/bin/
sudo chmod +x /usr/local/bin/mysqld_exporter
sudo chown prometheus:prometheus /usr/local/bin/mysqld_exporter
# 配置 SELinux 上下文(若启用 SELinux)
sudo chcon -t bin_t /usr/local/bin/mysqld_exporter
sudo semanage fcontext -a -t bin_t "/usr/local/bin/mysqld_exporter"
sudo restorecon -v /usr/local/bin/mysqld_exporter
# 配置 MariaDB 用户(将 'your_secure_password' 替换为实际密码)
sudo /usr/local/mariadb/bin/mysql -u root -p <<EOF
CREATE USER 'prometheus'@'localhost' IDENTIFIED BY 'your_secure_password';
GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'prometheus'@'localhost';
FLUSH PRIVILEGES;
EXIT;
EOF
# 创建 Mysqld Exporter 配置文件
sudo mkdir -p /etc/mysqld_exporter

sudo tee /etc/mysqld_exporter/mysqld_exporter.cnf > /dev/null <<EOF
[client]
user=prometheus
password=your_secure_password
EOF
sudo chmod 600 /etc/mysqld_exporter/mysqld_exporter.cnf
sudo chown prometheus:prometheus /etc/mysqld_exporter/mysqld_exporter.cnf
# 创建 systemd 服务文件
sudo tee /etc/systemd/system/mysqld-exporter.service > /dev/null <<EOF
[Unit]
Description=Mysqld Exporter for MariaDB
After=network.target mariadb.service
[Service]
User=prometheus
Group=prometheus
ExecStartPre=/bin/test -x /usr/local/bin/mysqld_exporter
ExecStart=/usr/local/bin/mysqld_exporter --config.my-cnf=/etc/mysqld_exporter/mysqld_exporter.cnf --web.listen-address=:9104
Restart=always
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
EOF
# 启动并启用服务
sudo systemctl daemon-reload
sudo systemctl start mysqld-exporter
sudo systemctl enable mysqld-exporter
# 检查服务状态
sudo systemctl status mysqld-exporter
# 配置防火墙
sudo firewall-cmd --add-port=9104/tcp --permanent
sudo firewall-cmd --reload
  • 注释
    • 安装 MariaDB 10.5.27 并配置为 systemd 服务。
    • 创建数据库用户并授权给 Mysqld Exporter。
    • 配置 SELinux 和防火墙,确保 9104 端口可用。

验证

# 检查 MariaDB 版本
/usr/local/mariadb/bin/mysql -V
# 检查服务状态
sudo systemctl status mariadb

sudo systemctl status mysqld-exporter
# 检查端口
sudo ss -tuln | grep 9104
# 测试指标
curl http://localhost:9104/metrics


注释

  • 验证 MariaDB 和 Mysqld Exporter 是否正常运行。

    3. 配置 Pushgateway(数据推送)

    Pushgateway 用于接收客户端推送的指标数据。
     

    ​cd /home
    wget https://github.com/prometheus/pushgateway/releases/download/v1.11.0/pushgateway-1.11.0.linux-amd64.tar.gz
    tar -xvzf pushgateway-1.11.0.linux-amd64.tar.gz
    sudo mkdir -p /usr/local/bin
    sudo mv pushgateway-1.11.0.linux-amd64/pushgateway /usr/local/bin/
    sudo chmod +x /usr/local/bin/pushgateway
    sudo chown prometheus:prometheus /usr/local/bin/pushgateway
    # 配置 SELinux 上下文(若启用 SELinux)
    sudo chcon -t bin_t /usr/local/bin/pushgateway
    sudo semanage fcontext -a -t bin_t "/usr/local/bin/pushgateway"
    sudo restorecon -v /usr/local/bin/pushgateway
    # 创建 systemd 服务文件
    sudo tee /etc/systemd/system/pushgateway.service > /dev/null <<EOF
    [Unit]
    Description=Prometheus Pushgateway
    After=network.target
    [Service]
    User=prometheus
    Group=prometheus
    ExecStartPre=/bin/test -x /usr/local/bin/pushgateway
    ExecStart=/usr/local/bin/pushgateway --web.listen-address=:9091
    Restart=always
    StandardOutput=journal
    StandardError=journal
    [Install]
    WantedBy=multi-user.target
    EOF
    # 启动并启用服务
    sudo systemctl daemon-reload
    sudo systemctl start pushgateway
    sudo systemctl enable pushgateway
    # 检查服务状态
    sudo systemctl status pushgateway
    # 配置防火墙
    sudo firewall-cmd --add-port=9091/tcp --permanent
    sudo firewall-cmd --reload
    • 注释
      • 安装 Pushgateway v1.11.0。
      • 配置为 systemd 服务,监听 9091 端口。

    4. 配置 Alertmanager(告警管理)

    Alertmanager 用于处理 Prometheus 的告警并发送通知。

    4.1 下载并安装 Alertmanager

    ​cd /home
    wget https://github.com/prometheus/alertmanager/releases/download/v0.28.0/alertmanager-0.28.0.linux-amd64.tar.gz
    tar -xvzf alertmanager-0.28.0.linux-amd64.tar.gz
    sudo mkdir -p /usr/local/bin
    sudo mv alertmanager-0.28.0.linux-amd64/alertmanager /usr/local/bin/
    sudo chmod +x /usr/local/bin/alertmanager
    sudo chown prometheus:prometheus /usr/local/bin/alertmanager

    4.2 配置 SELinux(若启用 SELinux)

    sudo chcon -t bin_t /usr/local/bin/alertmanager
    sudo semanage fcontext -a -t bin_t "/usr/local/bin/alertmanager"
    sudo restorecon -v /usr/local/bin/alertmanager

    4.3 创建配置文件和数据目录

    sudo mkdir -p /etc/alertmanager /var/lib/alertmanager
    
    sudo tee /etc/alertmanager/alertmanager.yml > /dev/null <<EOF
    global:
      resolve_timeout: 5m
      smtp_smarthost: "smtp.qq.com:587"
      smtp_from: "2296253383@qq.com"
      smtp_auth_username: "2296253383@qq.com"
      smtp_auth_password: "jxxtygeckecrdjig"
    route:
      receiver: "email"
      group_by: ["instance"]
    receivers:
      - name: "email"
        email_configs:
          - to: "15157508942@139.com"
            send_resolved: true
    EOF
    
    
    sudo chown prometheus:prometheus /etc/alertmanager/alertmanager.yml
    sudo chown -R prometheus:prometheus /var/lib/alertmanager
    sudo chmod 644 /etc/alertmanager/alertmanager.yml
    sudo chmod 755 /var/lib/alertmanager
    • 注释
      • 配置 SMTP 使用 QQ 邮箱发送告警邮件(需替换为实际账户和授权码)。

    4.4 创建 systemd 服务文件

    sudo tee /etc/systemd/system/alertmanager.service > /dev/null <<EOF
    [Unit]
    Description=Alertmanager for Prometheus
    After=network.target
    [Service]
    User=prometheus
    Group=prometheus
    ExecStartPre=/bin/test -x /usr/local/bin/alertmanager
    ExecStart=/usr/local/bin/alertmanager --config.file=/etc/alertmanager/alertmanager.yml --web.listen-address=:9093 --storage.path=/var/lib/alertmanager
    Restart=always
    StandardOutput=journal
    StandardError=journal
    [Install]
    WantedBy=multi-user.target
    EOF

    4.5 启动并启用服务

    sudo systemctl daemon-reload
    sudo systemctl start alertmanager
    sudo systemctl enable alertmanager
    sudo systemctl status alertmanager

    4.6 配置防火墙

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

    4.7 测试邮箱通知

    • 手动触发测试
    /usr/local/bin/alertmanager --config.file=/etc/alertmanager/alertmanager.yml --web.listen-address=:9093 --storage.path=/var/lib/alertmanager
    • 使用 curl 模拟告警
    curl -X POST -H "Content-Type: application/json" -d '[{"labels":{"alertname":"TestAlert"},"annotations":{"summary":"Test email notification"}}]' http://localhost:9093/api/v2/alerts
    • 排查问题
    telnet smtp.qq.com 587
    sudo firewall-cmd --add-port=587/tcp --permanent
    sudo firewall-cmd --reload
    journalctl -u alertmanager -f
    • 注释
      • 测试邮件通知功能,确保 SMTP 配置正确。

    5. 全局验证

    验证所有组件是否正常运行。

    ​# 检查所有服务状态
    sudo systemctl status prometheus node-exporter mysqld-exporter pushgateway alertmanager
    # 检查端口
    sudo ss -tuln | grep -E "9090|9100|9104|9091|9093"
    # 测试访问
    curl http://localhost:9090          # Prometheus
    curl http://localhost:9100/metrics  # Node Exporter
    curl http://localhost:9104/metrics  # Mysqld Exporter
    curl http://localhost:9091/metrics  # Pushgateway
    curl http://localhost:9093          # Alertmanager

    • 注释
      • 确保所有服务启动成功,端口监听正常,指标数据可访问。

    注意事项

    1. 密码替换
      • 在 mysqld_exporter.cnf 和 MariaDB 用户配置中,将 your_secure_password 替换为实际密码。
      • 在 alertmanager.yml 中,确认 SMTP 配置(如邮箱和授权码)正确。
    2. SELinux 工具
      • 若 semanage 不可用,需联网安装 policycoreutils-python-utils。
    3. 防火墙
      • 根据网络需求调整开放的端口。
    4. 离线安装
      • 保存所有 .tar.gz 文件,以便在无网络环境中重复安装。

    http://www.kler.cn/a/565433.html

    相关文章:

  • U盘安装VMWARE虚拟机
  • 小红的回文子串(B组)
  • Web自动化之Selenium 超详细教程(python)
  • 使用vscode导出Markdown的PDF无法显示数学公式的问题
  • 工具MyBatis Generator(MBG)
  • 【Java项目】基于Spring Boot的旅游管理系统
  • 纷析云:赋能企业财务数字化转型的开源解决方案
  • 苍穹外卖-阿里云OSS文件上传
  • Java语法基础知识点1
  • android studio 中止了一个已建立的连接
  • C++11相较于C++98的新特性介绍:列表初始化,右值引用与移动语义
  • Java和JavaScript的比较
  • MQ 笔记
  • 父子继承与转型
  • Redis 底层数据结构 —— SDS(简单动态字符串)
  • AI革命下的多元生态:DeepSeek、ChatGPT、XAI、文心一言与通义千问的行业渗透与场景重构
  • 解决各大浏览器中http地址无权限调用麦克风摄像头问题
  • 按键精灵安卓/ios脚本的连点器的坐标点获取教程
  • mysql怎样优化where like ‘%字符串%‘这种模糊匹配的慢sql
  • GB 44495-2024《汽车整车信息安全技术要求》标准解读|内容架构、测试内容、应对措施