, AWS, CloudWatch
.
elixir
:
config :logger,
handle_otp_reports: true,
handle_sasl_reports: true,
metadata: [:application, :module, :function, :file, :line]
config :logger,
backends: [
{LoggerFileBackend, :shared_error}
]
config :logger, :shared_error,
path: "#{logging_dir}/verbose-error.log",
level: :error
Dockerfile , erl_crash.dump
, :
ERL_CRASH_DUMP=/opt/log/erl_crash.dump
awslogs
.config
.ebextensions
:
files:
"/etc/awslogs/config/stdout.conf":
mode: "000755"
owner: root
group: root
content: |
[erl_crash.dump]
log_group_name=/aws/elasticbeanstalk/your_app/erl_crash.dump
log_stream_name={instance_id}
file=/var/log/erl_crash.dump
[verbose-error.log]
log_group_name=/aws/elasticbeanstalk/your_app/verbose-error.log
log_stream_name={instance_id}
file=/var/log/verbose-error.log
, Dockerrun.aws.json
"Logging": "/var/log",
"Volumes": [
{
"HostDirectory": "/var/log",
"ContainerDirectory": "/opt/log"
}
],
CloudWatch
.
, ElasticBeanstalk
( ) Docker
AWS ECS
, std_input
/var/log/eb-docker/containers/eb-current-app/stdouterr.log
CloudWatch
.
erl_crash.dump
, , , , . AWS EB
, , , . , , , . erl_crash.dump
CloudWatch , S3, :observer
, , .
, remsh
node. distillery
, cookie
node name
:
rel/confix.exs
, cookie:
environment :prod do
set include_erts: false
set include_src: false
set cookie: :"my_cookie"
end
rel/templates/vm.args.eex
:
-name <%= node_name %>
-setcookie <%= release.profile.cookie %>
rel/config.exs
:
release :my_app do
set version: "0.1.0"
set overlays: [
{:template, "rel/templates/vm.args.eex", "releases/<%= release_version %>/vm.args"}
]
set overlay_vars: [
node_name: "p@127.0.0.1",
]
node, , EC2-, , :
CONTAINER_ID=$(sudo docker ps --format '{{.ID}}')
sudo docker exec -it $CONTAINER_ID bash -c "iex --name q@127.0.0.1 --cookie my_cookie"
if need be
, , . - Node.spawn_link target_node, fn Code.eval_file(file_name, path) end
, node cookie, ps aux > t.log
cat t.log
, , cookie .
, epmd
. AWS AMI
, Packer
, .
Amazon AWS ECS
, AWS VPC Networking Mode, , , epmd
, , node. , .
, , AWS, , SSM agent
- .