本文档风哥主要介绍基础监控工具,包括基础监控工具的概念、类型、优势、架构设计、组件选择、部署、配置、集成等内容,参考Red Hat Enterprise Linux 10官方文档中的System administration章节,适合系统管理员和IT人员在生产环境中使用。更多视频教程www.fgedu.net.cn
Part01-基础概念与理论知识
1.1 基础监控工具的概念
基础监控工具是指用于监控系统基础指标的工具,包括CPU、内存、磁盘、网络等系统资源的使用情况,以及系统进程、服务状态等信息的监控。学习交流加群风哥微信: itpux-com
- 数据采集:收集系统基础指标
- 数据存储:存储采集的监控数据
- 数据可视化:展示监控数据
- 告警:当监控指标超过阈值时触发告警
1.2 基础监控工具的类型
基础监控工具的类型:
- 系统级监控工具:如Prometheus、Zabbix、Nagios等
- 应用级监控工具:如Application Performance Monitoring (APM)工具
- 网络监控工具:如Network Performance Monitoring (NPM)工具
- 存储监控工具:如Storage Performance Monitoring (SPM)工具
1.3 基础监控工具的优势
基础监控工具的优势:
- 实时监控:实时监控系统状态
- 故障预警:提前发现系统异常
- 性能优化:分析系统性能瓶颈
- 资源管理:合理分配系统资源
- 安全防护:及时发现安全异常
Part02-生产环境规划与建议
2.1 基础监控工具架构设计
基础监控工具架构设计要点:
– 数据采集层:收集系统基础指标
– 数据存储层:存储采集的监控数据
– 数据处理层:处理和分析监控数据
– 数据展示层:展示监控数据
– 告警层:触发和处理告警
# 部署模式
– 集中式部署:所有监控组件部署在同一服务器
– 分布式部署:监控组件分布在多个服务器
– 混合式部署:结合集中式和分布式部署
# 高可用性设计
– 集群:部署监控工具的集群
– 负载均衡:使用负载均衡分发监控请求
– 数据备份:定期备份监控数据
– 灾难恢复:制定灾难恢复计划
2.2 基础监控工具组件选择
基础监控工具组件选择要点:
– Prometheus:开源监控系统,适合容器环境
– Zabbix:企业级监控系统,功能完善
– Nagios:传统监控系统,轻量级
– Datadog:云监控平台,全栈监控
# 数据可视化
– Grafana:开源数据可视化工具,支持多种数据源
– Kibana:ELK stack的可视化组件
– Prometheus UI:Prometheus自带的UI
# 数据采集
– Node Exporter:收集主机指标
– Prometheus Exporter:各种服务的exporter
– Telegraf:数据采集代理
# 告警
– Alertmanager:Prometheus的告警组件
– Zabbix Alerting:Zabbix的告警功能
– Nagios Alerts:Nagios的告警功能
# 存储
– Prometheus TSDB:Prometheus的时序数据库
– InfluxDB:开源时序数据库
– TimescaleDB:基于PostgreSQL的时序数据库
2.3 基础监控工具最佳实践
基础监控工具最佳实践:
- 合理设置监控指标:选择关键指标进行监控
- 设置合理的告警阈值:避免误报和漏报
- 定期备份监控数据:确保数据安全
- 监控系统自身:确保监控系统的稳定运行
- 定期检查监控配置:确保监控配置的准确性
Part03-生产环境项目实施方案
3.1 基础监控工具部署
3.1.1 部署Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.40.0/prometheus-2.40.0.linux-amd64.tar.gz
# 2. 解压Prometheus
tar -xzf prometheus-2.40.0.linux-amd64.tar.gz
mv prometheus-2.40.0.linux-amd64 /opt/prometheus
# 3. 创建Prometheus配置文件
cat > /opt/prometheus/prometheus.yml << 'EOF'
global:
scrape_interval: 15s
evaluation_interval: 15s
rule_files:
# - "first_rules.yml"
# - "second_rules.yml"
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
- job_name: "node"
static_configs:
- targets: ["localhost:9100"]
EOF
# 4. 创建Prometheus服务
cat > /etc/systemd/system/prometheus.service << 'EOF'
[Unit]
Description=Prometheus
After=network.target
[Service]
Type=simple
ExecStart=/opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml --storage.tsdb.path=/opt/prometheus/data
Restart=always
[Install]
WantedBy=multi-user.target
EOF
# 5. 启动Prometheus
systemctl start prometheus
systemctl enable prometheus
# 6. 验证Prometheus
curl http://localhost:9090
3.1.2 部署Grafana
cat > /etc/yum.repos.d/grafana.repo << 'EOF' [grafana] name=grafana baseurl=https://packages.grafana.com/oss/rpm enabled=1 gpgcheck=1 gpgkey=https://packages.grafana.com/gpg.key EOF # 2. 安装Grafana dnf install -y grafana # 3. 启动Grafana systemctl start grafana-server systemctl enable grafana-server # 4. 验证Grafana curl http://localhost:3000
3.1.3 部署Node Exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
# 2. 解压Node Exporter
tar -xzf node_exporter-1.3.1.linux-amd64.tar.gz
mv node_exporter-1.3.1.linux-amd64/node_exporter /usr/local/bin/
# 3. 创建Node Exporter服务
cat > /etc/systemd/system/node_exporter.service << 'EOF'
[Unit]
Description=Node Exporter
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/node_exporter
Restart=always
[Install]
WantedBy=multi-user.target
EOF
# 4. 启动Node Exporter
systemctl start node_exporter
systemctl enable node_exporter
# 5. 验证Node Exporter
curl http://localhost:9100/metrics
3.2 基础监控工具配置
3.2.1 配置Prometheus
vim /opt/prometheus/prometheus.yml
# 2. 添加更多监控目标
scrape_configs:
– job_name: “prometheus”
static_configs:
– targets: [“localhost:9090”]
– job_name: “node”
static_configs:
– targets: [“localhost:9100”, “192.168.1.10:9100”, “192.168.1.11:9100”]
– job_name: “docker”
static_configs:
– targets: [“localhost:9323”]
# 3. 重启Prometheus
systemctl restart prometheus
# 4. 验证配置
curl http://localhost:9090/config
3.2.2 配置Grafana
# 浏览器访问 http://localhost:3000
# 默认用户名和密码:admin/admin
# 2. 添加Prometheus数据源
# 配置 > 数据源 > 添加数据源 > Prometheus
# URL: http://localhost:9090
# 保存并测试
# 3. 导入仪表盘
# 仪表盘 > 导入 > 输入仪表盘ID: 1860 (Node Exporter Full)
# 选择Prometheus数据源 > 导入
# 4. 配置告警
# 警报 > 通知通道 > 添加通道
# 类型:Email
# 配置邮件服务器
# 保存
3.3 基础监控工具集成
3.3.1 集成Alertmanager
wget https://github.com/prometheus/alertmanager/releases/download/v0.24.0/alertmanager-0.24.0.linux-amd64.tar.gz
# 2. 解压Alertmanager
tar -xzf alertmanager-0.24.0.linux-amd64.tar.gz
mv alertmanager-0.24.0.linux-amd64 /opt/alertmanager
# 3. 创建Alertmanager配置文件
cat > /opt/alertmanager/alertmanager.yml << 'EOF'
global:
resolve_timeout: 5m
route:
group_by: ['alertname']
group_wait: 30s
group_interval: 5m
repeat_interval: 1h
receiver: 'email'
receivers:
- name: 'email'
email_configs:
- to: 'admin@example.com'
send_resolved: true
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']
EOF
# 4. 创建Alertmanager服务
cat > /etc/systemd/system/alertmanager.service << 'EOF'
[Unit]
Description=Alertmanager
After=network.target
[Service]
Type=simple
ExecStart=/opt/alertmanager/alertmanager --config.file=/opt/alertmanager/alertmanager.yml
Restart=always
[Install]
WantedBy=multi-user.target
EOF
# 5. 启动Alertmanager
systemctl start alertmanager
systemctl enable alertmanager
# 6. 配置Prometheus使用Alertmanager
vim /opt/prometheus/prometheus.yml
# 添加Alertmanager配置
alerting:
alertmanagers:
- static_configs:
- targets: ['localhost:9093']
rule_files:
- "alerts.yml"
# 7. 创建告警规则
cat > /opt/prometheus/alerts.yml << 'EOF'
groups:
- name: node
rules:
- alert: HighCPUUsage
expr: (100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
for: 5m
labels:
severity: warning
annotations:
summary: “High CPU Usage”
description: “CPU usage is above 80% for 5 minutes”
– alert: HighMemoryUsage
expr: (1 – (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100 > 80
for: 5m
labels:
severity: warning
annotations:
summary: “High Memory Usage”
description: “Memory usage is above 80% for 5 minutes”
EOF
# 8. 重启Prometheus
systemctl restart prometheus
Part04-生产案例与实战讲解
4.1 Prometheus监控部署
某企业通过部署Prometheus监控系统,实现了对服务器、容器和应用的全面监控。
# 前端:Grafana
# 后端:Prometheus
# 数据采集:Node Exporter、Docker Exporter
# 告警:Alertmanager
# 2. 实施步骤
# 步骤1:部署Prometheus
# 步骤2:部署Grafana
# 步骤3:部署Node Exporter
# 步骤4:部署Docker Exporter
# 步骤5:部署Alertmanager
# 步骤6:配置监控规则
# 步骤7:测试与验证
# 3. 应用效果
# 实现了对服务器的实时监控
# 实现了对容器的监控
# 实现了对应用的监控
# 实现了告警功能
# 部署脚本
cat > prometheus-deployment.sh << 'EOF'
#!/bin/bash
# daily_check.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: `http://www.fgedu.net.cn`
# 部署Prometheus
wget https://github.com/prometheus/prometheus/releases/download/v2.40.0/prometheus-2.40.0.linux-amd64.tar.gz
tar -xzf prometheus-2.40.0.linux-amd64.tar.gz
mv prometheus-2.40.0.linux-amd64 /opt/prometheus
# 配置Prometheus
cat > /opt/prometheus/prometheus.yml << 'EOF'
global:
scrape_interval: 15s
evaluation_interval: 15s
alerting:
alertmanagers:
- static_configs:
- targets: ['localhost:9093']
rule_files:
- "alerts.yml"
scrape_configs:
- job_name: "prometheus"
static_configs:
- targets: ["localhost:9090"]
- job_name: "node"
static_configs:
- targets: ["localhost:9100"]
- job_name: "docker"
static_configs:
- targets: ["localhost:9323"]
EOF
# 创建Prometheus服务
cat > /etc/systemd/system/prometheus.service << 'EOF'
[Unit]
Description=Prometheus
After=network.target
[Service]
Type=simple
ExecStart=/opt/prometheus/prometheus --config.file=/opt/prometheus/prometheus.yml --storage.tsdb.path=/opt/prometheus/data
Restart=always
[Install]
WantedBy=multi-user.target
EOF
# 部署Node Exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
tar -xzf node_exporter-1.3.1.linux-amd64.tar.gz
mv node_exporter-1.3.1.linux-amd64/node_exporter /usr/local/bin/
# 创建Node Exporter服务
cat > /etc/systemd/system/node_exporter.service << 'EOF'
[Unit]
Description=Node Exporter
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/node_exporter
Restart=always
[Install]
WantedBy=multi-user.target
EOF
# 部署Alertmanager
wget https://github.com/prometheus/alertmanager/releases/download/v0.24.0/alertmanager-0.24.0.linux-amd64.tar.gz
tar -xzf alertmanager-0.24.0.linux-amd64.tar.gz
mv alertmanager-0.24.0.linux-amd64 /opt/alertmanager
# 配置Alertmanager
cat > /opt/alertmanager/alertmanager.yml << 'EOF'
global:
resolve_timeout: 5m
route:
group_by: ['alertname']
group_wait: 30s
group_interval: 5m
repeat_interval: 1h
receiver: 'email'
receivers:
- name: 'email'
email_configs:
- to: 'admin@example.com'
send_resolved: true
inhibit_rules:
- source_match:
severity: 'critical'
target_match:
severity: 'warning'
equal: ['alertname', 'dev', 'instance']
EOF
# 创建Alertmanager服务
cat > /etc/systemd/system/alertmanager.service << 'EOF'
[Unit]
Description=Alertmanager
After=network.target
[Service]
Type=simple
ExecStart=/opt/alertmanager/alertmanager --config.file=/opt/alertmanager/alertmanager.yml
Restart=always
[Install]
WantedBy=multi-user.target
EOF
# 部署Grafana
cat > /etc/yum.repos.d/grafana.repo << 'EOF'
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
EOF
dnf install -y grafana
# 启动服务
systemctl start prometheus node_exporter alertmanager grafana-server
systemctl enable prometheus node_exporter alertmanager grafana-server
EOF
# 运行部署脚本
bash prometheus-deployment.sh
4.2 Grafana数据可视化部署
某企业通过部署Grafana,实现了对监控数据的可视化展示。
# 数据源:Prometheus
# 可视化工具:Grafana
# 告警:Alertmanager
# 2. 实施步骤
# 步骤1:部署Grafana
# 步骤2:配置Prometheus数据源
# 步骤3:导入仪表盘
# 步骤4:配置告警
# 步骤5:测试与验证
# 3. 应用效果
# 实现了监控数据的可视化展示
# 实现了告警功能
# 提高了系统运维效率
# 部署脚本
cat > grafana-deployment.sh << 'EOF'
#!/bin/bash
# 部署Grafana
cat > /etc/yum.repos.d/grafana.repo << 'EOF'
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
EOF
dnf install -y grafana
# 启动Grafana
systemctl start grafana-server
systemctl enable grafana-server
# 配置Grafana
# 浏览器访问 http://localhost:3000
# 默认用户名和密码:admin/admin
# 配置Prometheus数据源
# 导入仪表盘
EOF
# 运行部署脚本
bash grafana-deployment.sh
4.3 Node Exporter部署
某企业通过部署Node Exporter,实现了对服务器基础指标的采集。
# 数据采集:Node Exporter
# 数据存储:Prometheus
# 数据可视化:Grafana
# 2. 实施步骤
# 步骤1:部署Node Exporter
# 步骤2:配置Prometheus
# 步骤3:配置Grafana
# 步骤4:测试与验证
# 3. 应用效果
# 实现了对服务器基础指标的采集
# 实现了对服务器的实时监控
# 提高了系统运维效率
# 部署脚本
cat > node-exporter-deployment.sh << 'EOF'
#!/bin/bash
# 部署Node Exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
tar -xzf node_exporter-1.3.1.linux-amd64.tar.gz
mv node_exporter-1.3.1.linux-amd64/node_exporter /usr/local/bin/
# 创建Node Exporter服务
cat > /etc/systemd/system/node_exporter.service << 'EOF'
[Unit]
Description=Node Exporter
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/node_exporter
Restart=always
[Install]
WantedBy=multi-user.target
EOF
# 启动Node Exporter
systemctl start node_exporter
systemctl enable node_exporter
# 配置Prometheus
# 添加Node Exporter到Prometheus配置
EOF
# 运行部署脚本
bash node-exporter-deployment.sh
Part05-风哥经验总结与分享
5.1 基础监控工具使用经验
基础监控工具使用经验:
- 选择合适的监控工具:根据系统的规模和需求选择合适的监控工具
- 合理设置监控指标:选择关键指标进行监控,避免监控过多指标
- 设置合理的告警阈值:避免误报和漏报,根据系统的特点设置合理的告警阈值
- 定期检查监控配置:确保监控配置的准确性和有效性
- 备份监控数据:定期备份监控数据,确保数据安全
5.2 基础监控工具故障排查
基础监控工具故障排查:
- 检查服务状态:使用systemctl status命令检查监控服务的状态
- 检查日志:查看监控服务的日志,了解故障原因
- 检查网络连接:确保监控服务之间的网络连接正常
- 检查配置文件:确保监控配置文件的正确性
- 检查资源使用:确保监控服务器的资源使用正常
5.3 基础监控工具的未来发展
基础监控工具的未来发展趋势:
- 云原生监控:适应云原生环境的监控需求
- AI集成:利用AI技术提高监控的智能化水平
- 边缘计算监控:支持边缘计算场景的监控需求
- 全栈监控:实现从基础设施到应用的全栈监控
- 自动化运维:与自动化运维工具集成,实现故障自动处理
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
