You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用ulogd2向远程主机发送JSON格式syslog消息

方案1:无本地落盘直接发送JSON到远程主机(推荐)

ulogd2原生支持直接将格式化后的JSON数据通过网络输出,不需要写入本地磁盘,具体配置步骤如下:

  • 首先安装对应依赖插件,Debian/Ubuntu系执行apt install ulogd2 ulogd2-output-http ulogd2-output-json,RHEL/CentOS系执行dnf install ulogd ulogd-json ulogd-http
  • 编辑ulogd2主配置文件/etc/ulogd2.conf,按如下规则修改:
    1. 启用对应功能插件,确保以下配置行存在:
      plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_output_JSON.so"
      plugin="/usr/lib/x86_64-linux-gnu/ulogd/ulogd_output_HTTP.so"
      
    2. 配置JSON输出格式适配网络传输:
      [json1]
      sync = 1
      timestamp = 1
      event_id = 1
      
    3. 配置HTTP输出插件指向远程接收地址:
      [http1]
      url = "http://你的远程主机IP:端口/接收接口路径"
      content_type = "application/json"
      method = "POST"
      buffer_size = 4096
      retry = 3
      retry_delay = 1
      
    4. 配置流处理规则,将连接跟踪事件直接转发到JSON格式化+HTTP输出链:
      stack=ct1:BASE,ip2str:IP2STR,json1:JSON,http1:HTTP
      
  • 重启ulogd2服务生效:systemctl restart ulogd2

该方案全程不会在本地产生任何持久化存储文件,所有JSON数据直接通过HTTP发送到远程主机。

方案2:本地文件中转+发送后自动删除

如果受场景限制必须先写本地文件再发送,可以采用内存文件系统临时存储+发送后自动删除的方案:

  • 原有ulogd2配置保持不变,将JSON输出路径指定为内存文件系统路径,比如/run/ulogd_temp.json(该路径默认挂载在tmpfs下,写入内容不会落到物理磁盘)
  • 安装inotify监控工具:apt install inotify-tools 或 dnf install inotify-tools
  • 编写监控发送脚本/usr/local/bin/ulogd_send.sh,内容如下:
    #!/bin/bash
    TEMP_FILE="/run/ulogd_temp.json"
    REMOTE_URL="http://你的远程主机IP:端口/接收接口路径"
    
    inotifywait -m -e close_write "$TEMP_FILE" | while read -r directory events filename; do
        # 发送文件内容到远程
        curl -X POST -H "Content-Type: application/json" --data-binary @"$TEMP_FILE" "$REMOTE_URL"
        # 发送成功后清空/删除文件
        if [ $? -eq 0 ]; then
            > "$TEMP_FILE"
            # 如需完全删除文件可替换为 rm -f "$TEMP_FILE"
        fi
    done
    
  • 给脚本添加执行权限:chmod +x /usr/local/bin/ulogd_send.sh
  • 配置systemd服务实现开机自启,创建/etc/systemd/system/ulogd-send.service文件:
    [Unit]
    Description=Ulogd JSON send service
    After=ulogd2.service
    
    [Service]
    ExecStart=/usr/local/bin/ulogd_send.sh
    Restart=always
    User=root
    
    [Install]
    WantedBy=multi-user.target
    
  • 启动服务并设置开机自启:
    systemctl daemon-reload
    systemctl enable --now ulogd-send.service
    
排查参考

发送失败可先检查远程主机端口放通情况,ulogd2运行日志可通过journalctl -u ulogd2查看;如果需要用UDP/TCP裸协议发送而不是HTTP,可以将om_http插件替换为om_udp/om_tcp插件,配置逻辑一致。

内容的提问来源于stack exchange,提问作者sebastian montes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 06:36:02