有谁知道一个好工具,它允许您跟踪和搜索分布在一组机器上的日志文件。我们有多个 Web 服务器和应用程序服务器,一个一个地挖掘每个服务器上的日志是一件很痛苦的事情。
Nick
问问题
1486 次
5 回答
1
我不知道安装/配置有多少工作量,但我听说过一些关于splunk的好消息。YMMV。
于 2009-04-02T22:51:51.113 回答
1
您可以使用以下 bash 脚本(如果您可以通过 ssh 连接到远程机器并具有对日志文件的读取权限)
(echo "machine1"; ssh machine1 tail /var/log/messages; echo "machine2"; ssh machine2 tail /var/log/messages;) | 较少的
于 2009-04-02T22:01:24.463 回答
1
Splunk 在聚合日志文件以搜索并将结果显示为按时间计算的命中计数图表方面非常有效,但它也很昂贵。我最近了解了Kibana,它是 splunk 的开源替代品。
于 2014-12-14T01:10:21.990 回答
0
您可以使用fabric来跟踪多个主机并 grep 所有结果:
$ fab -P -u 'USER' -p 'PASSWORD' --linewise -H host1,host2,host3 -- tail -f /path/to/my/log.log | grep ERROR
于 2013-02-07T17:52:07.727 回答
0
您可以使用一个小的 shell 脚本来实现这一点:
- 定义你的参数:
machines=("user@address1" "user@address2" "user@address3")
log_files=("/path/to/application.log" "/path2/to2/application.log" "/path3/to3/application.log" "/path4/to4/application.log")
- 跟踪每台机器并等待中断:
#!/bin/bash
pids_arr=()
for ((i=0;i<${#machines[@]};++i)); do
ssh "${machines[$i]}" "tail -f ${log_files[$i]}" & pids_arr+=("$!")
done
pids="${pids_arr[*]}"
trap "kill -9 $pids" SIGINT SIGKILL
for pid in ${pids}; do wait $pid; done
trap - SIGINT SIGKILL
额外:如果您不想查看作业监视器日志,可以使用:
job_mon=${-//[^m]/} ; set +m
(...)
sleep 0 ; if [[ -n "$job_mon" ]]; then set -m; else set +m; fi
于 2020-05-13T14:53:36.640 回答