我们在 AWS ECS Fargate 中设置了多个运行 NodeJS 服务(node:11-alpine docker image)的容器。
我们已经有一个正在运行的 ElasticSearch 实例从非 Fargate 应用程序收集日志。我想将 Fargate 容器中的日志传递到这个 ElasticSearch 实例中,但我很难弄清楚什么是最好的方法。
1)似乎一种方法是从 Cloudwatch --> Lambda --> ElasticSearch 流式传输日志。这似乎有点矫枉过正 - 没有其他方法可以做到这一点吗?
2)我希望我可以运行一个可以从容器收集日志的 Logstash docker 实例,但我不确定在运行 Fargate 时这是否可行?
3)我应该在每个容器上安装类似 FileBeat 的东西并让它发送日志吗?
任何帮助表示赞赏。
我正在尝试将以下内容作为应用程序启动脚本的一部分运行:
for file in $TEMPLATE_FOLDER/*
do
filename='basename $file'
echo "Processing $filename"
if [ -f "$CONF_FOLDER/$filename" ]
then
echo "Using existing $filename"
else
echo "Creating $filename from template $file"
cp $file $CONF_FOLDER
fi
done
Run Code Online (Sandbox Code Playgroud)
但输出是:
Processing basename $file
Creating basename $file from template ../conf/templates/conf-TEST/log4j.xml
Run Code Online (Sandbox Code Playgroud)
basename 命令不会被评估,只是被打印出来。
当我从提示符运行命令时,它工作正常。
bash 版本:
bash -version
GNU bash, version 3.00.16(1)-release (sparc-sun-solaris2.10)
Copyright (C) 2004 Free Software Foundation, Inc.
Run Code Online (Sandbox Code Playgroud)
谁能看到我做错了什么?
谢谢!
在gradle构建中,我想排除除一个以外的所有文件。我试图这样做:
processResources {
// exclude everything
exclude '*.*'
// except this file
include 'fileA.xml'
}
Run Code Online (Sandbox Code Playgroud)
..但它似乎不起作用-排除了所有文件。这有可能吗?
感谢您的帮助和投入。
我对界面设计有疑问.我将尝试用下面的一个简单示例来说明.
想象一下,我有一个界面:
public interface TestInterface {
public List getData();
}
Run Code Online (Sandbox Code Playgroud)
我有一个实施班:
public class TestInterfaceImpl implements TestInterface{
public List<Customer> getData() {
return null; //will return a list of customers
}
}
Run Code Online (Sandbox Code Playgroud)
我这个糟糕的设计在没有指定类型(List)的接口中返回List然后在实现类(List)中指定它?
谢谢 - 任何评论表示赞赏.
aws-fargate ×1
build.gradle ×1
elk ×1
gradle ×1
interface ×1
java ×1
logging ×1
scripting ×1
shell ×1
unix ×1