Prometheus+Grafana实时监控系统各项指标

打印 上一主题 下一主题

主题 1758|帖子 1758|积分 5274

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
一、监控架构计划

核心组件与数据流



  • Prometheus:时序数据收罗、存储与告警规则管理
  • Node Exporter:收罗主机指标(CPU、内存、磁盘、网络等)
  • 数据库Exporter:如 mysqld_exporter、postgres_exporter
  • Grafana:数据可视化与仪表盘展示
  • Alertmanager(可选):告警关照管理

二、主机环境预备

1. 系统要求



  • Linux系统(推荐CentOS 7+/Ubuntu 20.04+)
  • 开放端口:9090(Prometheus)、3000(Grafana)、9100(Node Exporter)
  • 确保全部节点时间同步(NTP服务)
  1. # CentOS安装NTP
  2. sudo yum install ntp
  3. sudo systemctl start ntpd
  4. sudo systemctl enable ntpd
  5. # Ubuntu安装NTP
  6. sudo apt install ntp
  7. sudo systemctl restart ntp
复制代码

三、组件安装与配置

1. 安装Prometheus Server

下载二进制包

  1. wget https://github.com/prometheus/prometheus/releases/download/v2.39.1/prometheus-2.39.1.linux-amd64.tar.gz
  2. tar xvfz prometheus-*.tar.gz
  3. sudo mv prometheus-2.39.1.linux-amd64 /usr/local/prometheus
复制代码
创建系统服务

  1. sudo useradd --no-create-home --shell /bin/false prometheus
  2. sudo mkdir /etc/prometheus /var/lib/prometheus
  3. sudo chown prometheus:prometheus /var/lib/prometheus
  4. # 创建service文件
  5. sudo cat <<EOF > /etc/systemd/system/prometheus.service
  6. [Unit]
  7. Description=Prometheus
  8. Wants=network-online.target
  9. After=network-online.target
  10. [Service]
  11. User=prometheus
  12. Group=prometheus
  13. ExecStart=/usr/local/prometheus/prometheus \
  14.   --config.file=/etc/prometheus/prometheus.yml \
  15.   --storage.tsdb.path=/var/lib/prometheus \
  16.   --web.listen-address=0.0.0.0:9090
  17. Restart=always
  18. [Install]
  19. WantedBy=multi-user.target
  20. EOF
  21. # 配置Prometheus
  22. sudo cp /usr/local/prometheus/prometheus.yml /etc/prometheus/
  23. sudo chown -R prometheus:prometheus /etc/prometheus
  24. # 启动服务
  25. sudo systemctl daemon-reload
  26. sudo systemctl start prometheus
  27. sudo systemctl enable prometheus
复制代码

2. 部署Node Exporter(全部节点)

下载安装

  1. wget https://github.com/prometheus/node_exporter/releases/download/v1.4.0/node_exporter-1.4.0.linux-amd64.tar.gz
  2. tar xvfz node_exporter-*.tar.gz
  3. sudo mv node_exporter-1.4.0.linux-amd64/node_exporter /usr/local/bin/
  4. sudo useradd -rs /bin/false node_exporter
复制代码
创建系统服务

  1. sudo cat <<EOF > /etc/systemd/system/node_exporter.service
  2. [Unit]
  3. Description=Node Exporter
  4. After=network.target
  5. [Service]
  6. User=node_exporter
  7. Group=node_exporter
  8. ExecStart=/usr/local/bin/node_exporter
  9. Restart=always
  10. [Install]
  11. WantedBy=multi-user.target
  12. EOF
  13. sudo systemctl daemon-reload
  14. sudo systemctl start node_exporter
  15. sudo systemctl enable node_exporter
复制代码

3. 配置Prometheus抓取规则

编辑 /etc/prometheus/prometheus.yml:
  1. scrape_configs:
  2.   - job_name: 'node'
  3.     static_configs:
  4.       - targets: ['node1:9100', 'node2:9100', 'node3:9100']
复制代码
重启Prometheus生效:
  1. sudo systemctl restart prometheus
复制代码

四、数据库监控配置(以MySQL为例)

1. 安装mysqld_exporter

  1. wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.14.0/mysqld_exporter-0.14.0.linux-amd64.tar.gz
  2. tar xvfz mysqld_exporter-*.tar.gz
  3. sudo mv mysqld_exporter-0.14.0.linux-amd64/mysqld_exporter /usr/local/bin/
  4. sudo useradd -rs /bin/false mysqld_exporter
复制代码
2. 创建监控用户

  1. CREATE USER 'exporter'@'localhost' IDENTIFIED BY 'SecurePass123!' WITH MAX_USER_CONNECTIONS 3;
  2. GRANT PROCESS, REPLICATION CLIENT, SELECT ON *.* TO 'exporter'@'localhost';
复制代码
3. 创建环境变量文件

  1. sudo mkdir /etc/mysqld_exporter
  2. sudo cat <<EOF > /etc/mysqld_exporter/.my.cnf
  3. [client]
  4. user=exporter
  5. password=SecurePass123!
  6. EOF
复制代码
4. 创建系统服务

  1. sudo cat <<EOF > /etc/systemd/system/mysqld_exporter.service
  2. [Unit]
  3. Description=MySQL Exporter
  4. After=network.target
  5. [Service]
  6. User=mysqld_exporter
  7. EnvironmentFile=/etc/mysqld_exporter/.my.cnf
  8. ExecStart=/usr/local/bin/mysqld_exporter \
  9.   --config.my-cnf="%a" \
  10.   --web.listen-address=0.0.0.0:9104
  11. Restart=always
  12. [Install]
  13. WantedBy=multi-user.target
  14. EOF
  15. sudo systemctl daemon-reload
  16. sudo systemctl start mysqld_exporter
  17. sudo systemctl enable mysqld_exporter
复制代码

五、安装与配置Grafana

1. 安装Grafana(CentOS)

  1. sudo tee /etc/yum.repos.d/grafana.repo <<EOF
  2. [grafana]
  3. name=grafana
  4. baseurl=https://packages.grafana.com/oss/rpm
  5. repo_gpgcheck=1
  6. enabled=1
  7. gpgcheck=1
  8. gpgkey=https://packages.grafana.com/gpg.key
  9. sslverify=1
  10. sslcacert=/etc/pki/tls/certs/ca-bundle.crt
  11. EOF
  12. sudo yum install grafana
  13. sudo systemctl start grafana-server
  14. sudo systemctl enable grafana-server
复制代码
2. 配置Grafana数据源


  • 访问 http://<服务器IP>:3000,默认账号 admin/admin
  • 左侧菜单 → Configuration → Data Sources → Add data source
  • 选择 Prometheus,填写URL http://localhost:9090
  • 点击 Save & Test

六、导入监控仪表盘

1. 主机监控仪表盘



  • Node Exporter Full:ID 1860
  • Linux Hosts Metrics:ID 11074
2. MySQL监控仪表盘



  • MySQL Overview:ID 7362
  • Percona MySQL:ID 11323
操作步骤

  • 左侧菜单 → Create → Import
  • 输入仪表盘ID → Load
  • 选择Prometheus数据源 → Import

七、安全加固

1. 防火墙配置

  1. # CentOS
  2. sudo firewall-cmd --permanent --add-port=3000/tcp
  3. sudo firewall-cmd --permanent --add-port=9090/tcp
  4. sudo firewall-cmd --reload
  5. # Ubuntu
  6. sudo ufw allow 3000/tcp
  7. sudo ufw allow 9090/tcp
  8. sudo ufw reload
复制代码
2. Grafana反向署理(Nginx示例)

  1. server {
  2.     listen 80;
  3.     server_name grafana.yourdomain.com;
  4.     location / {
  5.         proxy_pass http://localhost:3000;
  6.         proxy_set_header Host $host;
  7.         proxy_set_header X-Real-IP $remote_addr;
  8.     }
  9. }
复制代码

八、告警配置示例

1. 创建告警规则文件

  1. sudo cat <<EOF > /etc/prometheus/alerts.yml
  2. groups:
  3. - name: host-alerts
  4.   rules:
  5.   - alert: HighMemoryUsage
  6.     expr: (node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100 > 85
  7.     for: 5m
  8.     labels:
  9.       severity: warning
  10.     annotations:
  11.       summary: "内存使用率过高 (实例 {{ $labels.instance }})"
  12.       description: "内存使用率超过85%持续5分钟"
  13. EOF
复制代码
2. 修改Prometheus配置

  1. # /etc/prometheus/prometheus.yml
  2. rule_files:
  3.   - alerts.yml
复制代码
重启服务:
  1. sudo systemctl restart prometheus
复制代码

九、故障排查指南

1. 服务状态检查

  1. sudo systemctl status prometheus
  2. sudo systemctl status node_exporter
  3. sudo systemctl status mysqld_exporter
复制代码
2. 日志检察

  1. # Prometheus日志
  2. journalctl -u prometheus -f
  3. # Node Exporter日志
  4. journalctl -u node_exporter -f
  5. # MySQL Exporter日志
  6. journalctl -u mysqld_exporter -f
复制代码

十、总结

通过原生安装方式,您已构建完整的监控系统:


  • 资源监控:实时掌握CPU、内存、磁盘等指标
  • 数据库监控:跟踪查询性能、毗连数、复制状态
  • 告警关照:配置阈值触发邮件/钉钉关照
  • 安全加固:通过防火墙和反向署理保护服务
后续扩展方向


  • 集成Alertmanager实现多通道告警
  • 监控Redis、Kafka等中心件
  • 部署长期存储(如Thanos)管理汗青数据
资源参考


  • Prometheus官方文档
  • Grafana仪表盘库

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

天津储鑫盛钢材现货供应商

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表