我需要一种简单的方法来监控分布在多个HP-UX服务器上的多个文本日志文件。它们是来自多个分布式遗留系统的文本和XML日志文件的混合。目前我们只是ssh到服务器并使用 tail -f 和 grep ,但是当你有许多日志需要跟踪时,这不会扩展。
由于日志的格式不同,文件只是文件夹(当达到一定大小时自动轮换),我需要远程收集它们并以不同方式解析每个文件。
我最初的想法是创建一个简单的守护进程,我可以在每个服务器上运行每个文件类型的自定义文件阅读器,将其解析为可以通过套接字通过网络导出的通用格式。在本地运行的另一个查看器程序将连接到这些套接字,并在一些简单的选项卡式GUI中显示已解析的日志或聚合到控制台。
如果我要以这种方式实现它,我应该尝试转换为什么日志格式?
还有其他更简单的方法吗?我是否应该尝试将日志文件转换为log4j格式以与Chainsaw一起使用,或者是否有更好的日志查看器可以连接到远程套接字?我可以按BareTail中的建议使用another log question吗?这不是massivly distributed system,并且更改当前日志记录实现以使所有应用程序使用UDP广播或将消息放在JMS队列上不是一种选择。
答案 0 :(得分:21)
用于实时日志监视的最轻量级解决方案可能是在并发模式下使用Dancer's shell并使用tail -f:
dsh -Mac -- tail -f /var/log/apache/*.log
答案 1 :(得分:12)
我们使用如下所示的简单shell脚本。显然,你必须稍微调整一下,告诉它有关不同的文件名,并决定在哪个框中查找哪个,但你得到了基本的想法。在我们的例子中,我们在多个框的同一位置拖尾文件。这需要通过存储密钥进行ssh身份验证,而不是输入密码。
#!/bin/bash
FILE=$1
for box in box1.foo.com box2.foo.com box3.foo.com box4.foo.com; do
ssh $box tail -f $FILE &
done
关于Mike Funk关于无法做出的评论 使用^ C杀死尾部,我将上面的内容存储在名为multitails.sh的文件中 并在其末尾添加以下内容。这会创建一个kill_multitails.sh文件 当你完成拖尾时你运行它然后它自己删除。
# create a bash script to kill off
# all the tails when you're done
# run kill_multitails.sh when you're finished
echo '#!/bin/sh' > kill_multitails.sh
chmod 755 kill_multitails.sh
echo "$(ps -awx | grep $FILE)" > kill_multitails_ids
perl -pi -e 's/^(\d+).*/kill -9 $1/g' kill_multitails_ids
cat kill_multitails_ids >> kill_multitails.sh
echo "echo 'running ps for it'" >> kill_multitails.sh
echo "ps -awx | grep $FILE" >> kill_multitails.sh
echo "rm kill_multitails.sh" >> kill_multitails.sh
rm kill_multitails_ids
wait
答案 2 :(得分:5)
Logscape - 像没有价格标签的splunk
答案 3 :(得分:2)
选项:
答案 4 :(得分:2)
“chip是系统管理员和开发人员的本地和远程日志解析和监控工具 它将swatch,tee,tail,grep,ccze和mail的功能整合到一个中,并添加一些额外内容“
例如
chip -f -m0 ='RUN'-s0 ='red'-m1 ='。*' - s1 user1 @ remote_ip1:'/ var / log / log1 / var / log / log2 / var / log / log3 user2 @ remote_ip2:'/ var / log / log1 / var / log / log2 / var / log / log3''| egrep“RUN | ==> /”
这将以红色突出显示-m0模式的出现, 预过滤'RUN | ==> /'来自所有日志文件的模式。
答案 5 :(得分:2)
我为了这个目的而编写了vsConsole--轻松访问日志文件 - 然后添加了应用程序监控和版本跟踪。想知道你对它的看法。 http://vs-console.appspot.com/
答案 6 :(得分:1)
Awstats提供了一个可以将多个apache日志文件合并在一起的perl脚本。此脚本可以很好地扩展,因为内存占用非常低,日志文件永远不会加载到内存中。 我知道这不是你所需要的,但也许你可以从这个脚本开始并根据你的需要进行调整。
答案 7 :(得分:1)
您可以使用Chainsaw提供的各种接收器(VFSLogFilePatternReceiver通过ssh,SocketReceiver,UDPReceiver,CustomSQLDBReceiver等来拖尾文件),然后通过更改默认选项卡标识符或创建“自定义表达式logpanel”将日志聚合到单个选项卡中'通过提供与各种源选项卡中的事件匹配的表达式。
答案 8 :(得分:1)
gltail - 使用来自多个服务器的Ruby,SSH和OpenGL实时显示服务器流量,事件和统计信息
答案 9 :(得分:1)
XpoLog for Java