sudo curl -o /usr/local/bin/portal-log-push \ https://portal.steps.tw/scripts/portal-log-push.py sudo chmod +x /usr/local/bin/portal-log-push
或直接複製腳本內容到 /usr/local/bin/portal-log-push。
開啟腳本,修改 AGENT_TOKEN 為主機的 Agent Token(主機管理 → 編輯):
PORTAL_URL = "https://portal.steps.tw" AGENT_TOKEN = "貼上你的 Agent Token"
sudo mkdir -p /var/lib/portal-log-push # 測試執行 sudo /usr/local/bin/portal-log-push # 加入 cron(每 10 分鐘執行一次) echo "*/10 * * * * root /usr/local/bin/portal-log-push" \ | sudo tee /etc/cron.d/portal-log-push
sudo /usr/local/bin/portal-log-push # 輸出:[portal-push] /var/log/syslog: pushed 142 lines
建立 /etc/rsyslog.d/99-portal.conf:
module(load="imfile")
# Apache access log
input(type="imfile"
File="/var/log/apache2/access.log"
Tag="apache-access"
Severity="info"
Facility="local6"
PersistStateInterval="200"
freshStartTail="on")
# Apache error log
input(type="imfile"
File="/var/log/apache2/error.log"
Tag="apache-error"
Severity="error"
Facility="local6"
PersistStateInterval="200"
freshStartTail="on")
# syslog + auth + kernel
*.* action(type="omfwd"
target="portal.steps.tw"
port="5140"
protocol="tcp"
action.resumeRetryCount="-1"
queue.type="linkedList"
queue.size="10000"
queue.saveOnShutdown="on")
# Apache(local6)
local6.* action(type="omfwd"
target="portal.steps.tw"
port="5140"
protocol="tcp"
action.resumeRetryCount="-1"
queue.type="linkedList"
queue.size="5000")
sudo systemctl restart rsyslog
sudo rsyslog -N1 # 語法檢查 logger "test from $(hostname)" # 送一筆測試 log
curl ifconfig.me)| 項目 | 方法 B(HTTPS Push) | 方法 A(rsyslog TCP) |
|---|---|---|
| 連線型態 | 間歇性 HTTPS 請求 | 持續長連線 |
| 使用 Port | 443 | 5140 |
| 資安設備誤判風險 | 低(正常 HTTPS) | 中(可能觸發 DLP) |
| 傳輸加密 | TLS 加密 | 明文(未加密) |
| 認證方式 | Bearer token | 來源 IP |
| 安裝複雜度 | cron + Python 腳本 | rsyslog 設定檔 |
| 即時性 | 最多 10 分鐘延遲 | 準即時(幾秒內) |
{{ $key }}