在多台机器上搜索日志

问题描述 投票:3回答:5

有没有人知道一个好的工具,可以让你尾随和搜索分布在一个机器集群中的日志文件。 我们有多个Web服务器和应用服务器,逐一挖掘每个服务器上的日志是一种痛苦。

logging production-environment
5个回答
1
投票

你可以使用下面的bash脚本(如果你可以ssh到远程机器,并有读取日志文件的权限)。

less


1
投票

I don't know how much work it is to install 花斑君. YMMV。


1
投票

Splunk在聚合日志文件进行搜索,并将结果按时间显示为点击次数的图表方面非常有效,但它也很昂贵。我最近了解到 Kibana 它是splunk的一个开源替代品。


0
投票

你可以使用 布料 来跟踪多个主机并grep所有结果。

$ 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
© www.soinside.com 2019 - 2024. All rights reserved.