系统日志是消息通知的基础,优化日志配置能确保关键信息不遗漏且便于检索。
/etc/rsyslog.conf或/etc/rsyslog.d/50-default.conf,通过*.*;auth,authpriv.none -/var/log/messages(记录常规信息但排除认证日志)、auth,authpriv.* /var/log/secure(将认证日志单独存储)等规则,实现日志分类存储。设置合理的日志级别(如info记录常规信息、err记录错误),避免过多冗余日志影响性能。/etc/logrotate.conf或/etc/logrotate.d/下的服务配置文件(如/etc/logrotate.d/syslog),设置maxsize 50M(单文件最大50MB)、rotate 5(保留5个归档文件)、daily(每日轮转)等参数,防止日志文件过大占用磁盘空间。/etc/systemd/journald.conf,调整SystemMaxUse=500M(日志总大小限制)、SystemKeepFree=100M(保留空闲空间)、SystemMaxFileSize=50M(单日志文件大小)、SystemMaxFiles=5(保留日志文件数量),平衡日志存储需求与磁盘空间。修改后重启服务:sudo systemctl restart systemd-journald。通过邮件发送关键消息(如系统错误、服务异常),确保管理员及时收到远程通知。
sudo yum install mailx安装mailx,编辑/etc/mail.rc添加SMTP配置(以Gmail为例):set from="your_email@gmail.com"
set smtp="smtp.gmail.com"
set smtp-auth=login
set smtp-auth-user="your_email@gmail.com"
set smtp-auth-password="your_app_password" # 使用应用专用密码(非邮箱登录密码)
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
保存后使用echo "Test message" | mailx -s "Test Subject" recipient@example.com发送测试邮件。log_monitor.sh),通过journalctl过滤错误日志(journalctl -b | grep -i "error"),并将匹配的日志内容通过mailx发送给管理员。添加定时任务(crontab -e)每5分钟运行一次脚本,实现实时错误通知。若系统使用GNOME桌面环境,可通过notify-send命令发送弹出式桌面通知。
sudo yum install libnotify d-bus安装libnotify(通知库)和d-bus(消息总线),确保桌面环境支持通知功能。notify-send命令发送通知,例如notify-send "系统更新" "有新的安全补丁可用"。如需自定义通知持续时间(如10秒),可添加-t 10000参数(单位:毫秒)。error_notifier.sh:#!/bin/bash
journalctl -b | grep -i "error" | while read line; do
notify-send "系统错误" "$line"
done
赋予执行权限(chmod +x error_notifier.sh)并通过定时任务(如每10分钟运行一次)执行,实现错误日志的实时桌面提醒。通过第三方服务(如Slack、Telegram)发送消息,实现跨平台、多终端的通知覆盖。
curl工具(sudo yum install curl),使用以下命令发送消息到Slack频道:curl -X POST -H 'Content-type: application/json' --data '{"text":"系统通知:服务器负载过高"}' https://hooks.slack.com/services/YOUR/WEBHOOK/URL
slack_notifier.sh),结合日志监控或定时任务触发。telegram-send工具(sudo pip install telegram-send)发送消息,例如:telegram-send --chat-id YOUR_CHAT_ID "系统通知:磁盘空间不足"
df -h),当使用率超过阈值时触发Telegram通知。针对高负载场景,优化消息处理流程,避免消息延迟或丢失。
/etc/sysctl.conf,调整以下参数提升网络与文件处理能力:net.core.somaxconn = 65535 # 增加监听队列长度
net.ipv4.tcp_max_syn_backlog = 65535 # 增加SYN队列长度
net.ipv4.ip_local_port_range = 1024 65535 # 扩大临时端口范围
net.ipv4.tcp_tw_reuse = 1 # 允许TIME-WAIT端口重用
net.ipv4.tcp_fin_timeout = 30 # 缩短TIME-WAIT超时时间
vm.swappiness = 10 # 减少内存交换(降低磁盘I/O)
运行sysctl -p使配置生效。sudo yum install erlang rabbitmq-server),配置消息持久化(durable=true)和消费者集群,将消息存储在队列中,由多个消费者并行处理,提升消息吞吐量。访问http://server_ip:15672(默认用户名/密码:guest/guest)管理队列。asyncio、Java的CompletableFuture)提高并发处理能力,优化数据库访问(如添加索引、使用连接池、优化SQL查询),降低消息生成延迟。