在多台机器上搜索日志

4

有没有好用的工具可以在多台机器上查看和搜索分散在集群中的日志文件?我们有多个Web服务器和应用服务器,逐个服务器地查找日志很麻烦。

5个回答

1
Splunk非常有效地汇总日志文件以进行搜索,并将结果显示为按时间计数的图形,但它也很昂贵。我最近了解到Kibana,这是一个开源替代Splunk的选择。

1
你可以使用以下 Bash 脚本(如果你可以通过 ssh 访问远程机器并且有读取日志文件的权限)
(echo "machine1"; ssh machine1 tail /var/log/messages; echo "machine2"; ssh machine2 tail /var/log/messages;) | less

1

我不知道安装/配置需要多少工作量,但我听说splunk还不错。具体情况因人而异。


0

您可以使用fabric来追踪多个主机并搜索所有结果:

$ fab -P -u 'USER' -p 'PASSWORD' --linewise -H host1,host2,host3 -- tail -f /path/to/my/log.log | grep ERROR

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接