简体中文 繁體中文 English Deutsch 한국 사람 بالعربية TÜRKÇE português คนไทย Français Japanese

站内搜索

搜索

活动公告

通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,将及时处理!
10-23 09:31

Rocky Linux服务器监控实用技巧 系统管理员必备指南从基础命令到高级工具全方位提升服务器稳定性与安全性

SunJu_FaceMall

3万

主题

153

科技点

3万

积分

大区版主

碾压王

积分
32103
发表于 2025-9-21 20:10:01 | 显示全部楼层 |阅读模式 [标记阅至此楼]

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

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

x
引言

在当今数字化时代,服务器是支撑企业业务运行的核心基础设施。作为系统管理员,确保服务器的稳定性和安全性是首要任务。Rocky Linux作为CentOS的替代品,因其稳定性和兼容性而受到广泛欢迎。本文将全面介绍Rocky Linux服务器监控的实用技巧,从基础命令到高级工具,帮助系统管理员全方位提升服务器的稳定性和安全性。

有效的服务器监控可以帮助管理员及时发现潜在问题,预防系统故障,优化资源使用,并保障数据安全。无论您是新手还是经验丰富的系统管理员,本文都能为您提供有价值的监控技巧和最佳实践。

基础监控命令

Rocky Linux提供了丰富的命令行工具,用于监控系统状态和性能。这些基础命令是每个系统管理员必须掌握的技能。

top命令

top命令是最常用的实时系统监控工具之一,它可以显示系统中运行的进程以及系统资源的使用情况。
  1. top
复制代码

执行上述命令后,您将看到一个实时更新的界面,显示以下信息:

• 系统运行时间和平均负载
• 任务总数、运行中、休眠、停止和僵尸进程的数量
• CPU使用情况,包括用户态、系统态、nice值、空闲等
• 内存使用情况,包括总量、已用、空闲和缓冲区
• 进程列表,包括PID、用户、优先级、CPU和内存使用率等

top命令还提供了一些交互式命令:

• P:按CPU使用率排序
• M:按内存使用率排序
• k:杀死指定进程
• r:重新设置进程优先级
• q:退出top程序

htop命令

htop是top命令的增强版,提供了更友好的用户界面和更多功能。首先需要安装:
  1. sudo dnf install htop
复制代码

然后运行:
  1. htop
复制代码

与top相比,htop具有以下优势:

• 彩色输出,更易于阅读
• 支持鼠标操作
• 可以水平或垂直滚动进程列表
• 支持树状视图显示进程关系
• 可以直接杀死进程而无需输入PID

vmstat命令

vmstat(Virtual Memory Statistics)命令用于报告关于进程、内存、分页、块IO、陷阱(中断)和CPU活动的信息。
  1. vmstat 2 5
复制代码

上述命令将每2秒更新一次数据,共显示5次。输出包括:

• procs:r(运行队列中的进程数)和b(等待IO的进程数)
• memory:swpd(使用的虚拟内存)、free(空闲内存)、buff(用作缓冲区的内存)和cache(用作缓存的内存)
• swap:si(从磁盘交换到内存的速率)和so(从内存交换到磁盘的速率)
• io:bi(块设备接收的块)和bo(块设备发送的块)
• system:in(每秒中断数)和cs(每秒上下文切换数)
• cpu:us(用户态时间)、sy(系统态时间)、id(空闲时间)、wa(等待IO时间)和st(被虚拟机偷走的时间)

iostat命令

iostat命令用于监控系统输入/输出设备和CPU的使用情况。首先需要安装:
  1. sudo dnf install sysstat
复制代码

然后运行:
  1. iostat -xz 2
复制代码

上述命令将每2秒更新一次数据,以扩展格式(-x)显示,不显示首次统计(-z)。输出包括:

• CPU使用情况
• 设备利用率(%util)
• 每秒读/写请求(r/s、w/s)
• 每秒读/写KB(rkB/s、wkB/s)
• 平均请求大小(avgqu-sz)
• 平均等待时间(await)
• 服务时间(svctm)

free命令

free命令用于显示系统中空闲和已用的内存量,包括交换内存。
  1. free -h
复制代码

上述命令以人类可读的格式(-h)显示内存信息。输出包括:

• Mem:物理内存总量、已用、空闲、共享、缓冲/缓存和可用
• Swap:交换内存总量、已用和可用

df命令

df命令用于显示磁盘空间使用情况。
  1. df -h
复制代码

上述命令以人类可读的格式(-h)显示磁盘空间使用情况。输出包括每个文件系统的总大小、已用空间、可用空间、使用百分比和挂载点。

du命令

du命令用于估算文件或目录的磁盘使用量。
  1. du -sh /var/log
复制代码

上述命令以人类可读的格式(-h)显示/var/log目录的总大小(-s)。

netstat命令

netstat命令用于显示网络连接、路由表、接口统计等网络相关信息。
  1. netstat -tuln
复制代码

上述命令显示所有监听(-l)的TCP(-t)和UDP(-u)端口,以数字形式(-n)显示地址和端口。

ss命令

ss命令是netstat的替代品,用于显示套接字统计信息,速度更快且信息更详细。
  1. ss -tuln
复制代码

上述命令与netstat -tuln功能相同,显示所有监听的TCP和UDP端口。

系统资源监控

系统资源监控是服务器管理的核心部分,包括CPU、内存、磁盘和网络等关键资源的监控。

CPU监控

CPU是服务器最重要的资源之一,监控CPU使用情况可以帮助及时发现性能瓶颈。

mpstat命令用于报告CPU相关的统计信息。首先需要安装:
  1. sudo dnf install sysstat
复制代码

然后运行:
  1. mpstat -P ALL 2
复制代码

上述命令将每2秒更新一次数据,显示所有CPU(-P ALL)的统计信息。输出包括:

• %usr:在用户级别运行所使用的CPU百分比
• %nice:在优先级为nice的用户级别运行所使用的CPU百分比
• %sys:在系统级别(内核)运行所使用的CPU百分比
• %iowait:等待I/O操作完成所花费的CPU时间百分比
• %irq:处理硬件中断所使用的CPU时间百分比
• %soft:处理软件中断所使用的CPU时间百分比
• %steal:虚拟机等待物理CPU所花费的时间百分比
• %guest:运行虚拟处理器所花费的CPU时间百分比
• %idle:CPU空闲时间百分比

sar命令用于收集、报告和保存系统活动信息。首先需要安装:
  1. sudo dnf install sysstat
复制代码

然后运行:
  1. sar -u 2 5
复制代码

上述命令将每2秒收集一次CPU使用数据,共收集5次。输出包括与mpstat类似的CPU使用率信息。

要查看历史数据,可以使用:
  1. sar -u -f /var/log/sa/sa10
复制代码

上述命令显示指定日期(如10号)的CPU使用历史数据。

为了测试系统在高负载下的表现,可以使用stress工具进行压力测试。首先需要安装:
  1. sudo dnf install stress
复制代码

然后运行:
  1. stress --cpu 4 --timeout 60
复制代码

上述命令将启动4个CPU密集型进程,持续60秒,用于测试系统在高CPU负载下的表现。

内存监控

内存是另一个关键系统资源,监控内存使用情况可以帮助防止内存不足导致的系统问题。

smem命令提供了更详细的内存使用报告,包括比例集大小(PSS)和唯一集大小(USS)。首先需要安装:
  1. sudo dnf install smem
复制代码

然后运行:
  1. smem -k
复制代码

上述命令以KB为单位(-k)显示所有进程的内存使用情况。

slabtop命令用于显示内核 slab 缓存的信息。运行:
  1. slabtop
复制代码

输出包括各种内核缓存对象的大小、数量和内存使用情况。

pmap命令用于显示进程的内存映射。运行:
  1. pmap -x 1234
复制代码

上述命令显示PID为1234的进程的详细内存映射信息,包括地址、大小、RSS、脏页等。

磁盘监控

磁盘I/O性能是影响系统整体性能的重要因素,监控磁盘使用情况和I/O性能可以帮助及时发现存储相关问题。

iotop命令类似于top,但是用于监控磁盘I/O。首先需要安装:
  1. sudo dnf install iotop
复制代码

然后运行:
  1. iotop
复制代码

输出包括每个进程的磁盘读写速度,以及总磁盘读写速度。

lsof命令用于列出打开的文件。运行:
  1. lsof /var/log
复制代码

上述命令显示所有打开/var/log目录下文件的进程。

要查看特定用户打开的文件:
  1. lsof -u username
复制代码

fdisk命令用于查看和管理磁盘分区。运行:
  1. sudo fdisk -l
复制代码

上述命令列出所有磁盘及其分区信息。

网络监控

网络连接和流量监控对于确保服务器网络性能和安全至关重要。

nload命令用于实时监控网络流量和带宽使用情况。首先需要安装:
  1. sudo dnf install nload
复制代码

然后运行:
  1. nload
复制代码

输出包括每个网络接口的实时流入和流出流量,以及平均速率。

bmon是另一个网络带宽监控工具,提供更详细的网络统计信息。首先需要安装:
  1. sudo dnf install bmon
复制代码

然后运行:
  1. bmon
复制代码

iptraf-ng是一个交互式彩色IP LAN监控器。首先需要安装:
  1. sudo dnf install iptraf-ng
复制代码

然后运行:
  1. sudo iptraf-ng
复制代码

tcpdump是一个强大的网络数据包分析工具。首先需要安装:
  1. sudo dnf install tcpdump
复制代码

然后运行:
  1. sudo tcpdump -i eth0 -n tcp port 80
复制代码

上述命令捕获eth0接口上目标端口为80的TCP数据包,并以数字形式显示地址和端口(-n)。

nethogs命令用于按进程显示网络带宽使用情况。首先需要安装:
  1. sudo dnf install nethogs
复制代码

然后运行:
  1. sudo nethogs
复制代码

日志监控与分析

日志是系统运行状态的重要记录,通过监控和分析日志可以及时发现系统问题和安全威胁。

系统日志监控

Rocky Linux使用journalctl命令来查看systemd日志系统。
  1. journalctl -xe
复制代码

上述命令显示所有日志单元的最新日志,包括详细的解释信息(-x)。

查看特定服务的日志:
  1. journalctl -u nginx.service
复制代码

查看特定时间范围内的日志:
  1. journalctl --since "2023-01-01" --until "2023-01-02"
复制代码

实时跟踪日志:
  1. journalctl -f
复制代码

应用日志监控

应用日志通常位于/var/log目录下。常见的应用日志包括:

• /var/log/messages:系统消息日志
• /var/log/secure:安全相关日志
• /var/log/httpd/access_log:Apache访问日志
• /var/log/httpd/error_log:Apache错误日志
• /var/log/nginx/access.log:Nginx访问日志
• /var/log/nginx/error.log:Nginx错误日志
• /var/log/mysqld.log:MySQL日志

查看最新的Nginx访问日志:
  1. tail -f /var/log/nginx/access.log
复制代码

统计Nginx访问日志中最常访问的URL:
  1. awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -20
复制代码

日志分析工具

手动分析大量日志数据效率低下,使用专门的日志分析工具可以大大提高效率。

logwatch是一个日志分析和报告工具。首先需要安装:
  1. sudo dnf install logwatch
复制代码

然后运行:
  1. sudo logwatch --detail High --mailto admin@example.com --range today
复制代码

上述命令生成今天的详细日志报告,并发送到指定邮箱。

goaccess是一个实时Web日志分析器。首先需要安装:
  1. sudo dnf install goaccess
复制代码

然后分析Nginx访问日志:
  1. goaccess /var/log/nginx/access.log -c
复制代码

ELK Stack(Elasticsearch、Logstash、Kibana)是一个强大的日志管理和分析平台。

安装Elasticsearch:
  1. sudo dnf install elasticsearch
  2. sudo systemctl enable --now elasticsearch
复制代码

安装Logstash:
  1. sudo dnf install logstash
  2. sudo systemctl enable --now logstash
复制代码

安装Kibana:
  1. sudo dnf install kibana
  2. sudo systemctl enable --now kibana
复制代码

配置Logstash以处理Nginx日志:
  1. sudo vi /etc/logstash/conf.d/nginx.conf
复制代码

添加以下配置:
  1. input {
  2.   file {
  3.     path => "/var/log/nginx/access.log"
  4.     start_position => "beginning"
  5.   }
  6. }
  7. filter {
  8.   grok {
  9.     match => { "message" => "%{COMBINEDAPACHELOG}" }
  10.   }
  11.   date {
  12.     match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
  13.   }
  14. }
  15. output {
  16.   elasticsearch {
  17.     hosts => ["localhost:9200"]
  18.   }
  19. }
复制代码

重启Logstash:
  1. sudo systemctl restart logstash
复制代码

然后通过Kibana Web界面(默认端口5601)进行日志分析和可视化。

高级监控工具

除了基础的命令行工具外,还有许多高级监控工具可以提供更全面、更直观的监控功能。

Nagios

Nagios是一个强大的企业级监控系统,可以监控服务器、网络设备和应用程序。

安装Nagios Core:
  1. sudo dnf install epel-release
  2. sudo dnf install nagios nagios-plugins-all
  3. sudo systemctl enable --now nagios
复制代码

配置Nagios监控本地主机:
  1. sudo vi /etc/nagios/objects/localhost.cfg
复制代码

添加要监控的服务,例如:
  1. define service {
  2.     use                     local-service
  3.     host_name               localhost
  4.     service_description     Root Partition
  5.     check_command           check_local_disk!20%!10%!/
  6. }
复制代码

检查Nagios配置:
  1. sudo nagios -v /etc/nagios/nagios.cfg
复制代码

重启Nagios:
  1. sudo systemctl restart nagios
复制代码

通过Web界面访问Nagios(默认端口80)。

Zabbix

Zabbix是一个企业级开源监控解决方案,能够监控数百万指标。

安装Zabbix Server:
  1. sudo rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
  2. sudo dnf clean all
  3. sudo dnf install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent
复制代码

创建Zabbix数据库:
  1. mysql -uroot -p
  2. create database zabbix character set utf8 collate utf8_bin;
  3. create user zabbix@localhost identified by 'password';
  4. grant all privileges on zabbix.* to zabbix@localhost;
  5. quit;
复制代码

导入初始模式和数据:
  1. zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
复制代码

配置Zabbix Server:
  1. sudo vi /etc/zabbix/zabbix_server.conf
复制代码

设置数据库密码:
  1. DBPassword=password
复制代码

启动Zabbix Server和Agent:
  1. sudo systemctl restart zabbix-server zabbix-agent httpd php-fpm
  2. sudo systemctl enable zabbix-server zabbix-agent httpd php-fpm
复制代码

通过Web界面完成Zabbix安装(默认端口80/zabbix)。

Prometheus

Prometheus是一个开源的监控和告警系统,特别适合于云原生环境。

安装Prometheus:
  1. sudo useradd --no-create-home --shell /bin/false prometheus
  2. sudo mkdir /etc/prometheus
  3. sudo mkdir /var/lib/prometheus
  4. sudo chown prometheus:prometheus /etc/prometheus
  5. sudo chown prometheus:prometheus /var/lib/prometheus
  6. curl -LO https://github.com/prometheus/prometheus/releases/download/v2.26.0/prometheus-2.26.0.linux-amd64.tar.gz
  7. tar xvf prometheus-2.26.0.linux-amd64.tar.gz
  8. sudo cp prometheus-2.26.0.linux-amd64/prometheus /usr/local/bin/
  9. sudo cp prometheus-2.26.0.linux-amd64/promtool /usr/local/bin/
  10. sudo chown prometheus:prometheus /usr/local/bin/prometheus
  11. sudo chown prometheus:prometheus /usr/local/bin/promtool
  12. sudo cp -r prometheus-2.26.0.linux-amd64/consoles /etc/prometheus
  13. sudo cp -r prometheus-2.26.0.linux-amd64/console_libraries /etc/prometheus
  14. sudo chown -R prometheus:prometheus /etc/prometheus/consoles
  15. sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries
复制代码

创建Prometheus配置文件:
  1. sudo vi /etc/prometheus/prometheus.yml
复制代码

添加以下配置:
  1. global:
  2.   scrape_interval: 15s
  3. scrape_configs:
  4.   - job_name: 'prometheus'
  5.     scrape_interval: 5s
  6.     static_configs:
  7.       - targets: ['localhost:9090']
复制代码

创建Prometheus服务文件:
  1. sudo vi /etc/systemd/system/prometheus.service
复制代码

添加以下内容:
  1. [Unit]
  2. Description=Prometheus
  3. Wants=network-online.target
  4. After=network-online.target
  5. [Service]
  6. User=prometheus
  7. Group=prometheus
  8. Type=simple
  9. ExecStart=/usr/local/bin/prometheus \
  10.     --config.file /etc/prometheus/prometheus.yml \
  11.     --storage.tsdb.path /var/lib/prometheus/ \
  12.     --web.console.templates=/etc/prometheus/consoles \
  13.     --web.console.libraries=/etc/prometheus/console_libraries
  14. [Install]
  15. WantedBy=multi-user.target
复制代码

启动Prometheus:
  1. sudo systemctl daemon-reload
  2. sudo systemctl start prometheus
  3. sudo systemctl enable prometheus
复制代码

通过Web界面访问Prometheus(默认端口9090)。

Grafana

Grafana是一个开源的指标分析和可视化套件,通常与Prometheus一起使用。

安装Grafana:
  1. sudo dnf install https://dl.grafana.com/oss/release/grafana-7.5.7-1.x86_64.rpm
  2. sudo systemctl enable --now grafana-server
复制代码

通过Web界面访问Grafana(默认端口3000),默认用户名和密码为admin/admin。

添加Prometheus数据源:

1. 登录Grafana
2. 导航到Configuration > Data Sources
3. 点击”Add data source”
4. 选择Prometheus
5. 设置URL为http://localhost:9090
6. 点击”Save & Test”

导入仪表板:

1. 导航到Dashboards > Manage
2. 点击”Import”
3. 输入仪表板ID(例如1860用于Node Exporter仪表板)
4. 选择Prometheus数据源
5. 点击”Import”

Node Exporter

Node Exporter是Prometheus的导出器,用于收集系统硬件和操作系统指标。

安装Node Exporter:
  1. sudo useradd --no-create-home --shell /bin/false node_exporter
  2. curl -LO https://github.com/prometheus/node_exporter/releases/download/v1.1.2/node_exporter-1.1.2.linux-amd64.tar.gz
  3. tar xvf node_exporter-1.1.2.linux-amd64.tar.gz
  4. sudo cp node_exporter-1.1.2.linux-amd64/node_exporter /usr/local/bin
  5. sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter
复制代码

创建Node Exporter服务文件:
  1. sudo vi /etc/systemd/system/node_exporter.service
复制代码

添加以下内容:
  1. [Unit]
  2. Description=Node Exporter
  3. Wants=network-online.target
  4. After=network-online.target
  5. [Service]
  6. User=node_exporter
  7. Group=node_exporter
  8. Type=simple
  9. ExecStart=/usr/local/bin/node_exporter
  10. [Install]
  11. WantedBy=multi-user.target
复制代码

启动Node Exporter:
  1. sudo systemctl daemon-reload
  2. sudo systemctl start node_exporter
  3. sudo systemctl enable node_exporter
复制代码

在Prometheus配置中添加Node Exporter目标:
  1. sudo vi /etc/prometheus/prometheus.yml
复制代码

添加以下配置:
  1. - job_name: 'node_exporter'
  2.     scrape_interval: 5s
  3.     static_configs:
  4.       - targets: ['localhost:9100']
复制代码

重启Prometheus:
  1. sudo systemctl restart prometheus
复制代码

安全监控

服务器安全是系统管理的重要方面,通过安全监控可以及时发现和应对安全威胁。

审计系统

Rocky Linux提供了审计系统(auditd),用于跟踪系统上的安全相关事件。

安装auditd:
  1. sudo dnf install audit
  2. sudo systemctl enable --now auditd
复制代码

添加审计规则:
  1. sudo auditctl -w /etc/passwd -p wa -k passwd_changes
复制代码

上述命令监控/etc/passwd文件的写入和属性更改事件。

查看审计日志:
  1. sudo ausearch -k passwd_changes
复制代码

生成审计报告:
  1. sudo aureport -x
复制代码

Fail2ban

Fail2ban是一个入侵防御软件,可以监控日志文件并根据预设规则禁止可疑IP。

安装Fail2ban:
  1. sudo dnf install fail2ban
  2. sudo systemctl enable --now fail2ban
复制代码

配置Fail2ban:
  1. sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  2. sudo vi /etc/fail2ban/jail.local
复制代码

配置SSH防护:
  1. [sshd]
  2. enabled = true
  3. port = ssh
  4. logpath = %(sshd_log)s
  5. maxretry = 3
  6. bantime = 3600
复制代码

重启Fail2ban:
  1. sudo systemctl restart fail2ban
复制代码

查看被禁止的IP:
  1. sudo fail2ban-client status sshd
复制代码

Lynis

Lynis是一个安全审计工具,用于系统加固和合规性测试。

安装Lynis:
  1. sudo dnf install lynis
复制代码

运行系统审计:
  1. sudo lynis audit system
复制代码

查看审计报告:
  1. less /var/log/lynis-report.dat
复制代码

ClamAV

ClamAV是一个开源的防病毒引擎,用于检测恶意软件。

安装ClamAV:
  1. sudo dnf install clamav clamav-update
复制代码

更新病毒数据库:
  1. sudo freshclam
复制代码

扫描系统:
  1. sudo clamscan -r -i /home
复制代码

上述命令递归扫描(-r)/home目录,只显示受感染的文件(-i)。

RKHunter

RKHunter是一个Rootkit检测工具。

安装RKHunter:
  1. sudo dnf install rkhunter
复制代码

更新RKHunter:
  1. sudo rkhunter --update
  2. sudo rkhunter --propupd
复制代码

运行系统检查:
  1. sudo rkhunter --checkall
复制代码

SELinux

SELinux(Security-Enhanced Linux)是一个Linux内核安全模块,提供访问控制安全策略。

检查SELinux状态:
  1. sestatus
复制代码

临时设置SELinux为 enforcing 模式:
  1. sudo setenforce 1
复制代码

永久设置SELinux为 enforcing 模式:
  1. sudo vi /etc/selinux/config
复制代码

设置:
  1. SELINUX=enforcing
复制代码

查看SELinux布尔值:
  1. getsebool -a
复制代码

设置SELinux布尔值:
  1. sudo setsebool -P httpd_can_network_connect on
复制代码

查看SELinux上下文:
  1. ls -Z /var/www/html
复制代码

修改SELinux上下文:
  1. sudo chcon -R -t httpd_sys_content_t /var/www/html
复制代码

自动化监控与告警

自动化监控和告警可以大大提高系统管理的效率,及时发现和解决问题。

Shell脚本监控

编写简单的Shell脚本可以自动化基本的监控任务。

创建系统资源监控脚本:
  1. vi system_monitor.sh
复制代码

添加以下内容:
  1. #!/bin/bash
  2. # 设置阈值
  3. CPU_THRESHOLD=80
  4. MEMORY_THRESHOLD=80
  5. DISK_THRESHOLD=90
  6. # 获取CPU使用率
  7. CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
  8. # 获取内存使用率
  9. MEMORY_USAGE=$(free | grep Mem | awk '{print $3/$2 * 100.0}')
  10. # 获取磁盘使用率
  11. DISK_USAGE=$(df -h | awk '$NF=="/"{print $5}' | sed 's/%//')
  12. # 检查CPU使用率
  13. if (( $(echo "$CPU_USAGE > $CPU_THRESHOLD" | bc -l) )); then
  14.     echo "CPU使用率过高: ${CPU_USAGE}%"
  15.     # 可以添加发送邮件或通知的代码
  16. fi
  17. # 检查内存使用率
  18. if (( $(echo "$MEMORY_USAGE > $MEMORY_THRESHOLD" | bc -l) )); then
  19.     echo "内存使用率过高: ${MEMORY_USAGE}%"
  20.     # 可以添加发送邮件或通知的代码
  21. fi
  22. # 检查磁盘使用率
  23. if [ $DISK_USAGE -gt $DISK_THRESHOLD ]; then
  24.     echo "磁盘使用率过高: ${DISK_USAGE}%"
  25.     # 可以添加发送邮件或通知的代码
  26. fi
复制代码

设置脚本可执行:
  1. chmod +x system_monitor.sh
复制代码

运行脚本:
  1. ./system_monitor.sh
复制代码

添加到cron定时任务:
  1. crontab -e
复制代码

添加以下内容以每5分钟运行一次脚本:
  1. */5 * * * * /path/to/system_monitor.sh
复制代码

Python脚本监控

Python提供了更强大的脚本编写能力,适合复杂的监控任务。

安装Python:
  1. sudo dnf install python3 python3-pip
复制代码

安装psutil库:
  1. pip3 install psutil
复制代码

创建Python监控脚本:
  1. vi system_monitor.py
复制代码

添加以下内容:
  1. #!/usr/bin/env python3
  2. import psutil
  3. import shutil
  4. import smtplib
  5. from email.mime.text import MIMEText
  6. # 设置阈值
  7. CPU_THRESHOLD = 80
  8. MEMORY_THRESHOLD = 80
  9. DISK_THRESHOLD = 90
  10. # 邮件通知函数
  11. def send_email(subject, message):
  12.     sender = "monitor@example.com"
  13.     receiver = "admin@example.com"
  14.     password = "your_password"
  15.    
  16.     msg = MIMEText(message)
  17.     msg['Subject'] = subject
  18.     msg['From'] = sender
  19.     msg['To'] = receiver
  20.    
  21.     try:
  22.         with smtplib.SMTP('smtp.example.com', 587) as server:
  23.             server.starttls()
  24.             server.login(sender, password)
  25.             server.send_message(msg)
  26.         print("邮件发送成功")
  27.     except Exception as e:
  28.         print(f"邮件发送失败: {e}")
  29. # 获取CPU使用率
  30. cpu_usage = psutil.cpu_percent(interval=1)
  31. if cpu_usage > CPU_THRESHOLD:
  32.     message = f"CPU使用率过高: {cpu_usage}%"
  33.     print(message)
  34.     send_email("CPU告警", message)
  35. # 获取内存使用率
  36. memory = psutil.virtual_memory()
  37. memory_usage = memory.percent
  38. if memory_usage > MEMORY_THRESHOLD:
  39.     message = f"内存使用率过高: {memory_usage}%"
  40.     print(message)
  41.     send_email("内存告警", message)
  42. # 获取磁盘使用率
  43. disk = shutil.disk_usage("/")
  44. disk_usage = disk.used / disk.total * 100
  45. if disk_usage > DISK_THRESHOLD:
  46.     message = f"磁盘使用率过高: {disk_usage:.2f}%"
  47.     print(message)
  48.     send_email("磁盘告警", message)
复制代码

设置脚本可执行:
  1. chmod +x system_monitor.py
复制代码

运行脚本:
  1. ./system_monitor.py
复制代码

Alertmanager

Alertmanager是Prometheus生态系统的一部分,用于处理告警。

安装Alertmanager:
  1. sudo useradd --no-create-home --shell /bin/false alertmanager
  2. sudo mkdir /etc/alertmanager
  3. sudo mkdir /var/lib/alertmanager
  4. sudo chown alertmanager:alertmanager /etc/alertmanager
  5. sudo chown alertmanager:alertmanager /var/lib/alertmanager
  6. curl -LO https://github.com/prometheus/alertmanager/releases/download/v0.21.0/alertmanager-0.21.0.linux-amd64.tar.gz
  7. tar xvf alertmanager-0.21.0.linux-amd64.tar.gz
  8. sudo cp alertmanager-0.21.0.linux-amd64/alertmanager /usr/local/bin/
  9. sudo cp alertmanager-0.21.0.linux-amd64/amtool /usr/local/bin/
  10. sudo chown alertmanager:alertmanager /usr/local/bin/alertmanager
  11. sudo chown alertmanager:alertmanager /usr/local/bin/amtool
复制代码

创建Alertmanager配置文件:
  1. sudo vi /etc/alertmanager/alertmanager.yml
复制代码

添加以下配置:
  1. global:
  2.   smtp_smarthost: 'localhost:587'
  3.   smtp_from: 'alertmanager@example.com'
  4.   smtp_auth_username: 'alertmanager@example.com'
  5.   smtp_auth_password: 'password'
  6. route:
  7.   group_by: ['alertname', 'cluster', 'service']
  8.   group_wait: 10s
  9.   group_interval: 10s
  10.   repeat_interval: 1h
  11.   receiver: 'web.hook'
  12. receivers:
  13. - name: 'web.hook'
  14.   email_configs:
  15.   - to: 'admin@example.com'
复制代码

创建Alertmanager服务文件:
  1. sudo vi /etc/systemd/system/alertmanager.service
复制代码

添加以下内容:
  1. [Unit]
  2. Description=Alertmanager
  3. Wants=network-online.target
  4. After=network-online.target
  5. [Service]
  6. User=alertmanager
  7. Group=alertmanager
  8. Type=simple
  9. ExecStart=/usr/local/bin/alertmanager \
  10.     --config.file /etc/alertmanager/alertmanager.yml \
  11.     --storage.path /var/lib/alertmanager/
  12. [Install]
  13. WantedBy=multi-user.target
复制代码

启动Alertmanager:
  1. sudo systemctl daemon-reload
  2. sudo systemctl start alertmanager
  3. sudo systemctl enable alertmanager
复制代码

配置Prometheus使用Alertmanager:
  1. sudo vi /etc/prometheus/prometheus.yml
复制代码

添加以下配置:
  1. alerting:
  2.   alertmanagers:
  3.     - static_configs:
  4.         - targets:
  5.           - localhost:9093
  6. rule_files:
  7.   - "first_rules.yml"
  8.   - "second_rules.yml"
复制代码

创建告警规则:
  1. sudo vi /etc/prometheus/first_rules.yml
复制代码

添加以下规则:
  1. groups:
  2. - name: example
  3.   rules:
  4.   - alert: HighCPUUsage
  5.     expr: 100 - (avg by(instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
  6.     for: 2m
  7.     labels:
  8.       severity: warning
  9.     annotations:
  10.       summary: "High CPU usage detected"
  11.       description: "CPU usage is above 80% for more than 2 minutes (current value: {{ $value }}%)"
复制代码

重启Prometheus:
  1. sudo systemctl restart prometheus
复制代码

Monit

Monit是一个小型开源工具,用于管理和监控Unix系统。

安装Monit:
  1. sudo dnf install monit
复制代码

配置Monit:
  1. sudo vi /etc/monitrc
复制代码

添加以下配置:
  1. set daemon 60
  2. set log syslog
  3. set mailserver localhost
  4. set mail-format { from: monit@example.com }
  5. set alert admin@example.com
  6. check system $HOST
  7.   if loadavg (1min) > 4 then alert
  8.   if loadavg (5min) > 2 then alert
  9.   if memory usage > 90% for 4 cycles then alert
  10.   if cpu usage (user) > 70% for 4 cycles then alert
  11. check filesystem rootfs with path /
  12.   if space usage > 90% for 4 cycles then alert
  13. check process sshd with pidfile /var/run/sshd.pid
  14.   start program = "/bin/systemctl start sshd"
  15.   stop program = "/bin/systemctl stop sshd"
  16.   if failed port 22 protocol ssh then alert
复制代码

启动Monit:
  1. sudo systemctl enable --now monit
复制代码

查看Monit状态:
  1. sudo monit status
复制代码

最佳实践

有效的服务器监控不仅仅是安装工具和收集数据,还需要遵循一些最佳实践,以确保监控系统的有效性和可靠性。

1. 定义监控策略

在实施监控之前,应该明确定义监控策略,包括:

• 监控目标:明确要监控的系统、服务和应用程序
• 关键指标:确定哪些指标对系统性能和稳定性至关重要
• 阈值设置:为每个指标设置合理的告警阈值
• 告警级别:定义不同级别的告警(如信息、警告、严重、紧急)
• 响应流程:制定针对不同告警的响应流程

2. 分层监控

采用分层监控方法,从基础设施到应用程序全面覆盖:

• 基础设施层:监控CPU、内存、磁盘、网络等硬件资源
• 操作系统层:监控进程、服务、文件系统、内核参数等
• 中间件层:监控数据库、Web服务器、消息队列等
• 应用层:监控应用程序性能、错误率、响应时间等

3. 建立基线

为系统建立性能基线,以便在异常情况下进行比较:

• 在系统正常运行期间收集性能数据
• 确定各项指标的正常范围
• 根据基线设置合理的告警阈值
• 定期更新基线,特别是在系统变更后

4. 实施自动化

自动化监控和响应可以大大提高效率:

• 自动收集和存储监控数据
• 自动生成报告和可视化图表
• 自动触发告警和通知
• 自动执行常见故障恢复操作

5. 集中化监控

使用集中化监控系统统一管理所有服务器:

• 部署中央监控服务器
• 在所有被监控服务器上安装代理或导出器
• 配置数据收集和传输
• 设置集中告警和通知

6. 定期审查和优化

定期审查监控系统的有效性并进行优化:

• 检查告警的准确性和及时性
• 优化监控指标和阈值
• 更新监控工具和插件
• 审查监控数据存储和保留策略

7. 安全考虑

确保监控系统本身的安全性:

• 限制监控系统的访问权限
• 加密监控数据传输
• 定期备份监控配置和数据
• 监控监控系统本身

8. 文档和培训

为监控系统和流程创建文档,并对团队进行培训:

• 记录监控架构和配置
• 编写操作手册和故障排除指南
• 定期培训团队成员
• 建立知识库和最佳实践分享

总结

Rocky Linux服务器监控是确保系统稳定性和安全性的关键任务。本文从基础命令到高级工具,全面介绍了Rocky Linux服务器监控的实用技巧。

我们首先介绍了基础监控命令,如top、htop、vmstat、iostat等,这些命令是每个系统管理员必须掌握的基本技能。然后,我们深入探讨了系统资源监控,包括CPU、内存、磁盘和网络等关键资源的监控方法和工具。

日志监控与分析是另一个重要方面,我们介绍了系统日志监控、应用日志监控以及各种日志分析工具,如logwatch、goaccess和ELK Stack。

在高级监控工具部分,我们详细介绍了Nagios、Zabbix、Prometheus和Grafana等企业级监控解决方案,这些工具提供了更全面、更直观的监控功能。

安全监控是保障服务器安全的重要手段,我们介绍了审计系统、Fail2ban、Lynis、ClamAV、RKHunter和SELinux等安全监控工具和方法。

自动化监控与告警可以大大提高系统管理的效率,我们介绍了如何使用Shell脚本、Python脚本、Alertmanager和Monit等工具实现自动化监控和告警。

最后,我们分享了服务器监控的最佳实践,包括定义监控策略、分层监控、建立基线、实施自动化、集中化监控、定期审查和优化、安全考虑以及文档和培训等方面。

通过掌握这些监控技巧和工具,系统管理员可以全方位提升Rocky Linux服务器的稳定性和安全性,确保业务的持续运行和数据的安全。希望本文能为您在Rocky Linux服务器监控方面提供有价值的指导和帮助。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

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

本版积分规则

加入Discord频道

加入Discord频道

加入QQ社群

加入QQ社群

联系我们|小黑屋|TG频道|RSS |网站地图

Powered by Pixtech

© 2025-2026 Pixtech Team.