|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
引言
Rocky Linux作为CentOS的替代品,已经成为企业级Linux服务器的重要选择。系统监控是保障服务器高效稳定运行的关键环节,对于提升企业级应用可靠性和实现自动化运维具有重要意义。本手册将全面介绍Rocky Linux系统监控的各个方面,从基础工具配置到高级性能分析,帮助读者掌握系统监控的核心技能。
基础监控工具配置
系统信息工具
在Rocky Linux中,首先需要配置一些基础的系统信息工具,这些工具可以帮助我们快速了解系统的基本情况。
- # 安装基础系统信息工具
- dnf install -y util-linux coreutils procps-ng
- # 查看系统基本信息
- uname -a # 显示所有系统信息
- hostnamectl # 显示系统主机名和相关信息
- lsb_release -a # 显示发行版信息(需要安装redhat-lsb-core)
- cat /etc/os-release # 显示操作系统信息
复制代码
系统监控基础工具包
- # 安装基础监控工具
- dnf install -y sysstat htop iotop nmap telnet net-tools
- # 启用sysstat服务(包含sar等工具)
- systemctl enable sysstat
- systemctl start sysstat
复制代码
性能监控工具
- # 安装性能监控工具
- dnf install -y perf bc
- # perf是Linux内核自带的性能分析工具
- # bc是一个计算器语言,用于处理监控数据中的数学计算
复制代码
系统资源监控
CPU监控
CPU是系统的核心资源,监控CPU使用情况对于系统性能分析至关重要。
- # 使用top命令实时监控CPU使用情况
- top
- # 使用vmstat监控CPU使用情况
- vmstat 1 5 # 每秒刷新一次,共5次
- # 使用mpstat监控多核CPU使用情况
- mpstat -P ALL 1 5
- # 使用sar监控历史CPU使用情况
- sar -u 1 5 # 每秒刷新一次,共5次
- sar -u -f /var/log/sa/saDD # 查看历史数据(DD为日期)
复制代码
内存监控
内存使用情况直接影响系统性能,需要密切监控。
- # 使用free命令查看内存使用情况
- free -h # 以人类可读格式显示
- # 使用vmstat监控内存使用情况
- vmstat -s # 显示内存计数器
- vmstat 1 5 # 每秒刷新一次,共5次
- # 使用slabtop监控内核 slab 内存分配器信息
- slabtop
- # 使用smem显示更详细的内存使用信息(需要安装)
- dnf install -y smem
- smem -tk # 按进程显示内存使用情况,包括比例
复制代码
磁盘监控
磁盘空间和I/O性能是系统稳定运行的关键因素。
- # 使用df命令查看磁盘空间使用情况
- df -h # 以人类可读格式显示
- # 使用du命令查看目录大小
- du -sh /path/to/directory # 显示指定目录的总大小
- # 使用iostat监控磁盘I/O
- iostat -xz 1 5 # 每秒刷新一次,共5次,显示扩展统计信息
- # 使用iotop监控进程I/O情况
- iotop -oP # 只显示有I/O操作的进程和线程
复制代码
网络监控
网络性能对于服务器应用至关重要,需要全面监控。
- # 使用ifconfig查看网络接口信息
- ifconfig
- # 使用ip命令查看网络接口信息(推荐)
- ip addr show
- # 使用netstat监控网络连接
- netstat -tuln # 显示所有监听的TCP和UDP端口
- netstat -s # 显示网络统计信息
- # 使用ss命令替代netstat(推荐)
- ss -tuln # 显示所有监听的TCP和UDP端口
- ss -s # 显示网络统计信息
- # 使用nload监控网络流量(需要安装)
- dnf install -y nload
- nload # 显示网络接口的实时流量
复制代码
日志监控与分析
系统日志监控
系统日志记录了系统运行的各种事件,是故障排查的重要依据。
- # 使用journalctl查看系统日志
- journalctl -xe # 显示所有日志,从最新到最旧
- journalctl -u service_name # 显示特定服务的日志
- journalctl -f # 实时跟踪日志
- # 配置日志轮转
- vim /etc/logrotate.conf # 编辑日志轮转配置文件
复制代码
应用日志监控
应用日志对于了解应用程序运行状态和排查问题非常重要。
- # 使用tail命令实时监控日志文件
- tail -f /path/to/logfile
- # 使用grep过滤日志内容
- grep "error" /path/to/logfile
- # 使用awk分析日志内容
- awk '{print $1}' /path/to/logfile | sort | uniq -c # 统计IP访问次数
复制代码
集中化日志管理
对于多服务器环境,集中化日志管理是必要的。
- # 安装ELK Stack(Elasticsearch, Logstash, Kibana)
- # 首先安装Java运行环境
- dnf install -y java-1.8.0-openjdk
- # 安装Elasticsearch
- dnf install -y elasticsearch
- systemctl enable elasticsearch
- systemctl start elasticsearch
- # 安装Logstash
- dnf install -y logstash
- systemctl enable logstash
- systemctl start logstash
- # 安装Kibana
- dnf install -y kibana
- systemctl enable kibana
- systemctl start kibana
复制代码
高级性能分析工具
perf工具
perf是Linux内核自带的强大性能分析工具。
- # 使用perf进行CPU性能分析
- perf top # 实时显示CPU使用最多的函数
- perf record -a # 记录系统所有进程的性能数据
- perf report # 分析记录的性能数据
- # 使用perf分析内存访问
- perf stat -e cache-misses,cache-references ./program # 统计程序运行的缓存命中率
复制代码
eBPF工具
eBPF(extended Berkeley Packet Filter)是Linux内核的高级技术,可以用于安全、网络和性能监控。
- # 安装BCC工具包
- dnf install -y bcc-tools
- # 使用execsnoop跟踪新进程创建
- /usr/share/bcc/tools/execsnoop
- # 使用opensnoop跟踪文件打开操作
- /usr/share/bcc/tools/opensnoop
- # 使用biolatency跟踪块设备I/O延迟
- /usr/share/bcc/tools/biolatency
复制代码
SystemTap
SystemTap是一个强大的动态追踪工具,可以用于深入分析系统行为。
- # 安装SystemTap
- dnf install -y systemtap systemtap-runtime
- # 安装内核调试信息(用于SystemTap脚本)
- dnf debuginfo-install kernel
- # 使用SystemTap监控进程创建
- stap -ve 'probe begin { print("Hello, SystemTap!\n") exit() }'
- # 监控系统调用
- stap -c 'cat /proc/cpuinfo' 'probe syscall.* { if (pid() == target()) printf("%s\n", name) }'
复制代码
可视化监控方案
Grafana与Prometheus
Grafana和Prometheus是现代监控系统的黄金组合,提供强大的数据采集、存储和可视化功能。
- # 安装Prometheus
- dnf install -y prometheus
- systemctl enable prometheus
- systemctl start prometheus
- # 安装Grafana
- dnf install -y grafana
- systemctl enable grafana
- systemctl start grafana
- # 配置Prometheus数据源到Grafana
- # 访问Grafana Web界面(默认端口3000),添加Prometheus数据源
复制代码
Node Exporter
Node Exporter是Prometheus的官方导出器,用于收集系统级别的指标。
- # 下载并安装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/
- # 创建systemd服务文件
- cat > /etc/systemd/system/node_exporter.service <<EOF
- [Unit]
- Description=Node Exporter
- After=network.target
- [Service]
- User=prometheus
- ExecStart=/usr/local/bin/node_exporter
- [Install]
- WantedBy=multi-user.target
- EOF
- # 启动Node Exporter
- systemctl enable node_exporter
- systemctl start node_exporter
- # 配置Prometheus抓取Node Exporter数据
- # 编辑/etc/prometheus/prometheus.yml,添加以下内容:
- scrape_configs:
- - job_name: 'node_exporter'
- static_configs:
- - targets: ['localhost:9100']
复制代码
自定义仪表盘
使用Grafana创建自定义仪表盘,展示关键系统指标。
- // 示例:CPU使用率仪表盘JSON配置
- {
- "dashboard": {
- "id": null,
- "title": "Rocky Linux System Monitor",
- "tags": ["rocky", "linux", "system"],
- "timezone": "browser",
- "panels": [
- {
- "id": 1,
- "title": "CPU Usage",
- "type": "graph",
- "targets": [
- {
- "expr": "100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)",
- "legendFormat": "{{instance}} CPU Usage"
- }
- ],
- "yaxes": [
- {
- "format": "percent",
- "min": 0,
- "max": 100
- }
- ]
- }
- ]
- }
- }
复制代码
自动化监控与告警
Prometheus告警规则
配置Prometheus告警规则,在系统异常时及时通知。
- # 创建告警规则文件 /etc/prometheus/rules.yml
- groups:
- - name: system
- 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 detected"
- description: "CPU usage is above 80% for more than 5 minutes (current value: {{ $value }}%)"
-
- - alert: HighMemoryUsage
- expr: (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100 > 90
- for: 5m
- labels:
- severity: critical
- annotations:
- summary: "High memory usage detected"
- description: "Memory usage is above 90% for more than 5 minutes (current value: {{ $value }}%)"
复制代码
Alertmanager配置
配置Alertmanager处理告警并发送通知。
- # /etc/alertmanager/alertmanager.yml
- global:
- smtp_smarthost: 'localhost:587'
- smtp_from: 'alertmanager@example.com'
- smtp_auth_username: 'alertmanager@example.com'
- smtp_auth_password: 'password'
- route:
- group_by: ['alertname', 'cluster', 'service']
- group_wait: 10s
- group_interval: 10s
- repeat_interval: 1h
- receiver: 'web.hook'
- receivers:
- - name: 'web.hook'
- email_configs:
- - to: 'admin@example.com'
- subject: '[Rocky Linux Alert] {{ .GroupLabels.alertname }}'
- body: |
- {{ range .Alerts }}
- Alert: {{ .Annotations.summary }}
- Description: {{ .Annotations.description }}
- Labels: {{ .Labels }}
- {{ end }}
复制代码
自动化监控脚本
使用Shell脚本实现自定义的自动化监控任务。
- #!/bin/bash
- # 系统监控脚本
- # 保存为 /usr/local/bin/system_monitor.sh
- LOG_FILE="/var/log/system_monitor.log"
- ALERT_THRESHOLD_CPU=80
- ALERT_THRESHOLD_MEM=90
- ALERT_THRESHOLD_DISK=90
- # 获取系统指标
- CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
- MEM_USAGE=$(free | grep Mem | awk '{print ($3/$2) * 100.0}')
- DISK_USAGE=$(df -h / | awk 'NR==2{print $5}' | sed 's/%//')
- # 记录系统指标
- echo "$(date): CPU: ${CPU_USAGE}%, MEM: ${MEM_USAGE}%, DISK: ${DISK_USAGE}%" >> $LOG_FILE
- # 检查告警阈值
- if (( $(echo "$CPU_USAGE > $ALERT_THRESHOLD_CPU" | bc -l) )); then
- echo "$(date): WARNING: High CPU usage: ${CPU_USAGE}%" >> $LOG_FILE
- # 发送告警邮件或其他通知
- fi
- if (( $(echo "$MEM_USAGE > $ALERT_THRESHOLD_MEM" | bc -l) )); then
- echo "$(date): CRITICAL: High memory usage: ${MEM_USAGE}%" >> $LOG_FILE
- # 发送告警邮件或其他通知
- fi
- if [ $DISK_USAGE -gt $ALERT_THRESHOLD_DISK ]; then
- echo "$(date): CRITICAL: High disk usage: ${DISK_USAGE}%" >> $LOG_FILE
- # 发送告警邮件或其他通知
- fi
复制代码
设置定时任务:
- # 编辑crontab
- crontab -e
- # 添加以下行,每5分钟运行一次监控脚本
- */5 * * * * /usr/local/bin/system_monitor.sh
复制代码
企业级监控方案构建
分布式监控架构
对于大型企业环境,需要构建分布式监控架构。
- # 安装Prometheus联邦配置
- # 在主Prometheus服务器上配置 /etc/prometheus/prometheus.yml
- scrape_configs:
- - job_name: 'federate'
- scrape_interval: 15s
- honor_labels: true
- metrics_path: '/federate'
- params:
- 'match[]':
- - '{job="prometheus"}'
- - '{__name__=~"job:.*"}'
- static_configs:
- - targets:
- - 'prometheus-server-1:9090'
- - 'prometheus-server-2:9090'
- - 'prometheus-server-3:9090'
复制代码
高可用监控方案
确保监控系统本身的高可用性。
- # 安装Keepalived实现监控服务器高可用
- dnf install -y keepalived
- # 配置Keepalived /etc/keepalived/keepalived.conf
- vrrp_script check_prometheus {
- script "killall -0 prometheus"
- interval 2
- weight 2
- }
- vrrp_instance VI_1 {
- state BACKUP
- interface eth0
- virtual_router_id 51
- priority 100
- advert_int 1
- authentication {
- auth_type PASS
- auth_pass prometheus-ha
- }
- virtual_ipaddress {
- 192.168.1.100
- }
- track_script {
- check_prometheus
- }
- }
- # 启动Keepalived
- systemctl enable keepalived
- systemctl start keepalived
复制代码
监控数据长期存储
配置长期存储解决方案,保存历史监控数据。
- # 安装Thanos作为Prometheus的长期存储解决方案
- # 下载Thanos
- wget https://github.com/thanos-io/thanos/releases/download/v0.25.0/thanos-0.25.0.linux-amd64.tar.gz
- tar xzf thanos-0.25.0.linux-amd64.tar.gz
- mv thanos-0.25.0.linux-amd64/thanos /usr/local/bin/
- # 配置Thanos Sidecar与Prometheus一起运行
- # 编辑Prometheus systemd服务 /etc/systemd/system/prometheus.service
- [Unit]
- Description=Prometheus
- After=network.target
- [Service]
- User=prometheus
- ExecStart=/usr/local/bin/prometheus \
- --config.file=/etc/prometheus/prometheus.yml \
- --storage.tsdb.path=/var/lib/prometheus \
- --web.enable-lifecycle
- ExecStartPost=/usr/local/bin/thanos sidecar \
- --prometheus.url=http://localhost:9090 \
- --tsdb.path=/var/lib/prometheus \
- --objstore.config-file=/etc/thanos/object-storage.yaml
- [Install]
- WantedBy=multi-user.target
- # 创建对象存储配置 /etc/thanos/object-storage.yaml
- type: S3
- config:
- bucket: "monitoring-data"
- endpoint: "s3.example.com"
- access_key: "access-key"
- secret_key: "secret-key"
复制代码
最佳实践与常见问题
监控最佳实践
1. 监控关键指标:专注于对业务最重要的指标,避免监控过多无关数据。
2. 设置合理的告警阈值:避免告警疲劳,只对真正需要关注的问题发送告警。
3. 建立监控层次:从基础设施到应用层,建立完整的监控层次。
4. 定期审查监控策略:随着业务发展,定期审查和调整监控策略。
5. 文档化监控配置:保持监控配置的文档化,便于团队协作和知识传承。
常见问题解决
- # 检查时间同步
- timedatectl status
- # 如果时间不同步,启用NTP同步
- dnf install -y chrony
- systemctl enable chronyd
- systemctl start chronyd
复制代码- # 调整Prometheus资源限制
- # 编辑 /etc/systemd/system/prometheus.service
- [Service]
- LimitNOFILE=65000
- LimitNPROC=65000
- MemoryMax=8G
复制代码- # 检查Alertmanager日志
- journalctl -u alertmanager -f
- # 调整告警处理配置
- # 编辑 /etc/alertmanager/alertmanager.yml
- route:
- group_wait: 30s
- group_interval: 5m
- repeat_interval: 12h
复制代码
监控安全考虑
- # 配置监控服务的基本认证
- # 对于Prometheus,添加以下配置到 /etc/prometheus/web.yml
- basic_auth_users:
- admin: $2y$10$salt.hashedpassword
- # 编辑Prometheus启动参数,添加
- --web.config.file=/etc/prometheus/web.yml
- # 对于Grafana,配置反向代理和SSL
- # 安装Nginx
- dnf install -y nginx
- # 配置Nginx反向代理 /etc/nginx/conf.d/grafana.conf
- server {
- listen 443 ssl;
- server_name grafana.example.com;
-
- ssl_certificate /etc/ssl/certs/grafana.crt;
- ssl_certificate_key /etc/ssl/private/grafana.key;
-
- location / {
- proxy_pass http://localhost:3000;
- proxy_set_header Host $host;
- auth_basic "Grafana";
- auth_basic_user_file /etc/nginx/.htpasswd;
- }
- }
- # 创建密码文件
- htpasswd -c /etc/nginx/.htpasswd admin
复制代码
总结与展望
Rocky Linux系统监控是保障服务器高效稳定运行的关键环节。通过本手册介绍的基础工具配置、系统资源监控、日志分析、高级性能分析、可视化监控、自动化告警和企业级监控方案构建等内容,读者可以全面掌握Rocky Linux系统监控的核心技能。
随着技术的发展,监控系统也在不断演进。未来,基于AI的智能监控、云原生监控解决方案和更精细化的性能分析将成为趋势。持续学习和实践这些技术,将有助于提升企业级应用的可靠性,实现更高效的自动化运维。
通过建立完善的监控系统,企业可以及时发现并解决潜在问题,保障业务连续性,提高系统性能,最终实现业务目标。希望本手册能够帮助读者在Rocky Linux系统监控领域取得成功。 |
|