温馨提示×

CentOS消息推送功能如何启用

小樊
43
2025-12-25 11:13:27
栏目: 智能运维

CentOS 启用消息推送的可选方案与步骤

一、快速选择

  • 本机向所有登录用户广播:用 wallsystemd 定时器 定时推送,零依赖、最快落地。
  • 服务器事件告警(如 SSH 登录):用 PAM/SSH 登录脚本 触发,即时通知到企业微信、钉钉、Slack 等。
  • 团队内平台化推送:自建 GotifyRocket.Chat,支持用户、应用、Webhook 等多端接入。
  • 面向浏览器/APP 的实时推送:用 WebSocket/Swoole 自建实时通道,适合自研前端/客户端。
  • 日志集中与邮件通知:配置 rsyslog 远程日志,或用 Postfix 发送邮件告警。

二、本机广播与定时推送

  • 即时广播给已登录用户
    • 命令:wall "系统将在5分钟后维护,请保存数据。"
  • 定时广播(cron)
    • 例:每天 08:00 推送
      0 8 * * * /usr/bin/wall "这是一条定时消息"
      
  • 定时广播(systemd 定时器,更现代)
    • 服务单元 /etc/systemd/system/send-message.service
      [Unit]
      Description=Send a scheduled message
      [Service]
      ExecStart=/usr/bin/wall "这是一条定时消息"
      
    • 定时器单元 /etc/systemd/system/send-message.timer
      [Unit]
      Description=Run send-message.service every day at 8 AM
      [Timer]
      OnCalendar=*-*-* 08:00:00
      Persistent=true
      Unit=send-message.service
      [Install]
      WantedBy=timers.target
      
    • 启用:systemctl daemon-reload && systemctl enable --now send-message.timer

三、服务器事件告警与第三方 Webhook

  • SSH 登录即告警到企业微信(示例思路)
    • 准备脚本(如 /etc/ssh/sshrc 或放到用户 profile),获取 用户、IP、时间、服务器IP,调用企业微信 API 发送文本消息;企业微信需提前准备 corpID、secret、agentID 并获取 access_token
    • 关键点:脚本要轻量、幂等;企业微信消息体示例
      {
        "touser": "UserID",
        "msgtype": "text",
        "agentid": 1000002,
        "text": { "content": "用户root在2025-08-22 10:00:00从1.2.3.4登录服务器10.0.0.1" },
        "safe": 0
      }
      
  • 其他 Webhook(Slack/钉钉等)
    • Slack 示例脚本
      #!/usr/bin/env bash
      WEBHOOK_URL="https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX"
      MSG="$1"
      curl -X POST -H 'Content-type: application/json' --data "{\"text\":\"$MSG\"}" "$WEBHOOK_URL"
      
    • 结合 cron/systemd 即可按频率推送或事件触发。

四、自建团队推送平台

  • Gotify(轻量、自托管)
    • 下载解压并运行(默认监听 80 端口,可改配置为 9080);建议前置 Nginx 反向代理并开启 WebSocket 头:
      upstream gotify { server 127.0.0.1:9080; }
      server {
        listen 18080; server_name push.example.com;
        location / {
          proxy_pass http://gotify;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection "upgrade";
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Proto $scheme;
          proxy_set_header Host $http_host;
          proxy_connect_timeout 1m; proxy_send_timeout 1m; proxy_read_timeout 1m;
        }
      }
      
    • 访问 http://your-domain:18080,默认账号 admin/admin;在 APPS → CREATE APPLICATION 获取 Token 用于脚本推送。
  • Rocket.Chat(团队协作平台)
    • 准备 CentOS 7+、建议 ≥2GB 内存、域名与 Nginx/SSL;开放 3000 端口。
    • 安装 Node.js 12MongoDB 4.0,部署 Rocket.Chat,创建 systemd 服务并启动,即可通过 Web 界面与 Webhook/机器人接入。

五、日志与邮件通知

  • 远程日志集中(rsyslog)
    • 将全部日志发往远程 syslog 服务器(UDP 514):
      *.* @192.0.2.10:514
      
    • 应用:systemctl restart rsyslog
  • 邮件告警(Postfix)
    • 安装与基础配置(选择 Internet Site),启动 systemctl start postfix && systemctl enable postfix
    • 测试:echo "Test email body" | mail -s "Test Email" user@example.com

0