public ip가 나타나게 설정하려면 secure로 설정해야한다. 2023-10-25일에 생각나서 수정하는데 필자는 이 글을 쓸 때 그걸 기억을 못해서 auth로 글을 작성했다.
https://stackoverflow.com/questions/1967452/ec2-and-login-logging
SSH 접근에 대한 로그는 /var/log/auth.log 에 저장된다. 이를 CloudWatch Agent를 이용하여 CloudWatch에 로그를 남길 수 있다. 이는 외부 사용자에 의해 서버에서 로그가 지워져도 해당 로그를 확인할 수 있는 좋은 방법이다.
IAM ROLE setup
AmazonAPIGatewayPushToCloudWatchLogs 권한을 가진 역할을 생성한 후 서버에 해당 역할을 할당한다.
CloudWatch agent Download && setup
wget <https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb>
sudo dpkg -i -E ./amazon-cloudwatch-agent.deb
위 두 명령어로 CloudWatch Agent를 설치한다.
이제 구성 마법사 파일을 실행하여 로깅 설정을 구성해야한다.
/opt/aws/amazon-cloudwatch-agent* On which OS are you planning to use the agent? linux
* Are you using EC2 or On-Premises hosts? EC2
* Which user are you planning to run the agent? cwagent
* Do you want to turn on StatsD daemon? no
* Do you want to monitor metrics from CollectD? yes
* Do you want to monitor any host metrics? yes
* Do you want to monitor cpu metrics per core? yes
* Do you want to add ec2 dimensions (ImageId, InstanceId, InstanceType, AutoScalingGroupName)
into all of your metrics if the info is available? yes
* Do you want to aggregate ec2 dimensions (InstanceId)? yes
* Would you like to collect your metrics at high resolution (sub-minute resolution)? 60s
#agent가 몇 초마다 metric을 수집할 것인지 지정하는 부분이다.
* Which default metrics config do you want? Basic
* Are you satisfied with the above config? yes
* Do you have any existing CloudWatch Log Agent configuration file to import for migration? no
* Do you want to monitor any log files? yes
- Log file path: `/var/log/auth.log` (SSH logs)
- Log group name: `ec2-bastion-log-group`
- Log stream name: `[{instance_id}]`
- Log Group Retention in days: -1
#저장된 로그가 몇일 이후 자동 삭제될지 지정 -1 == 영구 저장
* Do you want to specify any additional log files to monitor? no
* Do you want to store the config in the SSM parameter store? no
* The config file is located at `/opt/aws/amazon-cloudwatch-agent/bin/config.json`./bin/amazon-cloudwatch-agent-config-wizard
구성 후 명령어를 통해 agent의 상태를 확인하면 실행되지 않은 것을 확인할 수 있다.
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json
amazon-cloudwatch-agent-ctl -m ec2 -a status
최초 실행은 무조건 위 명령어를 이용하여야지 구성 마법사를 통해 구성한 설정이 반영된다. 구성 마법사를 통해 구성 파일을 변경했다면 항상 위 명령어를 통해 실행해야 설정이 반영된다.
amazon-cloudwatch-agent-ctl -m ec2 -a start
위 명령어로 실행한다.
정상적으로 실행되면 모든 지표 → CWagent 라는 항목이 나타나야한다.
cat /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log
위 파일에서 agent가 실행되면서 생성하는 로그를 볼 수 있다. 본인은 로그 그룹에 로그가 생성되지 않아서 해당 로그를 살펴봤고 /var/log/auth.log에 read 권한이 없어 로그가 cloudwatch로 이동되지 않았다는 사실을 알았다.
권한 변경 이후 다시 해당 파일을 확인했고 오류없이 실행된 것을 확인할 수 있디.
다시 cloudwatch → log group 으로 이동하여 확인해보겠다.
로그 스트림이 인스턴스 id로 생성되었고 /var/log/auth.log의 내용을 성공적으로 가져온 것을 확인할 수 있다.
'네트워크 > 클라우드 컴퓨팅' 카테고리의 다른 글
Kinesis,API gateway,Glue를 이용한 ETL 파이프라인 구성 (0) | 2023.04.09 |
---|---|
ALB path based routing(컨테이너 배포) (1) | 2023.04.09 |
ECS,ECR을 이용한 Flask web 배포 (0) | 2023.04.09 |
Lambda와 Event Bridge 이용해서 EC2 실행,종료 제어 (0) | 2023.03.16 |
AWS ECR 컨테이너 이미지 업로드, 다운로드 (1) | 2023.03.15 |