Мне удалось почти сделать это. ... Получается, что для AWS CloudWatch вам необходимо добавить конфигурацию в формате JSON.
Ниже приведен мой файл .ebextensions/custom_logs.config
, который Elastic Beanstalk использует для расширений. Это просто создает файл custom_logs.json
для использования CloudWatch.
files:
"C:/Users/Administrator/Desktop/custom_logs.json":
content: |
{
"agent": {
"metrics_collection_interval": 5
},
"logs": {
"logs_collected": {
"files": {
"collect_list": [{
"file_path": "C:\\MyCustomLogsFolder\\MyCustomLogFile.log",
"log_group_name": "/aws/elasticbeanstalk/UsuallyThisIsTheEnvironmentName/MyCustomLogGroup-Log",
"timezone": "UTC",
"timestamp_format": "%Y-%m-%d %H:%M:%S",
"multi_line_start_pattern": "{timestamp_format}"
}]
}
}
}
}
После создания этого файла на моем рабочем столе Elastic Beanstalk я могу подключиться к экземпляру и выполнить следующую команду (включая &
в начале):
& C:\\'Program Files'\\Amazon\\AmazonCloudWatchAgent\\amazon-cloudwatch-agent-ctl.ps1 -a append-config -m ec2 -c file:C:\\Users\\Administrator\\Desktop\\cu
stom_logs.json -s
Единственное, что мне нужно выяснить сейчас, это как сделать это автоматически после запуска экземпляра.
Удалось сделать это с помощьюследующий код (в дополнение к приведенному выше выражению files:
):
services:
windows:
AmazonCloudWatchAgent:
enabled: 'true'
ensureRunning: 'true'
files:
- "C:/MyCustomLogsFolder/MyCustomLogFile.log"
container_commands:
01_cloudwatch_append:
command: powershell.exe -ExecutionPolicy Bypass -Command "$cwa_ctl='C:\\Program Files\\Amazon\\AmazonCloudWatchAgent\\amazon-cloudwatch-agent-ctl.ps1'; $custom_logs_config='C:\\Users\\Administrator\\Desktop\\custom_logs.json'; & $cwa_ctl -a append-config -m ec2 -c file:$custom_logs_config -s;"
ignoreErrors: true
waitAfterCompletion: 10