我正在尝试将 syslog 转发到 logentries.com,这需要在 /etc/rsyslog.conf 中添加一行,到目前为止一切顺利。但是,我在 amazon elastic beanstalk 上运行,并且有 3 个环境(dev、staging、prod),我想根据环境将它们路由到不同的端口(logentries 根据转发的端口区分环境)
我创建了一个在端口 8001 上运行的 Apache 站点,它仅输出我想要用于该特定服务器的端口(由于 Elastic beanstalk 容器属性附加到 php.ini,我需要一种方法来输出 php.ini 变量)。然后我写了一个脚本:
#!/bin/bash
LOGENTRIES_PORT=`curl 127.0.0.1:8001`
if [ "${LOGENTRIES_PORT}" == '' ]; then
exit -1
fi
echo "*.* @@46.51.181.128:${LOGENTRIES_PORT}" >> /etc/rsyslog.conf
service rsyslog restart
从终端运行时效果很好,但我似乎无法在启动时运行。
我把它塞在里面了/etc/rc.d/rc.local
,我把它放进去了/etc/rc.d/rc3.d/S99logentries
(带有777
烫发),但没有成功。有什么想法可能是为什么吗?
答案1
将脚本作为 cron 作业或在启动时运行的“老”技巧是将 stderr 和 stdout 重定向到文件以查看会发生什么:
/path/to/your/script > /var/log/script.log 2>&1
还要记住:始终使用命令的绝对路径。将最后一行更改为/sbin/service rsyslog restart
,然后重试。
附言:绝不 chmod 777
用于 shell 脚本!