2022-07-22
EC2에 접속하는 ssh와 tomcat에서 발생하는 로그 정보를 cloudwatch 등록하는 방법을 알아보자.
1. 패키지 설치
# sudo yum install amazon-cloudwatch-agent
우선 cloudwatch 등록하기 위해 aws에서 제공하는 agent를 설치해야 한다.
2. 권한설정
서버와 cloudwatch 간에 통신을 하기 위해서는 ec2에 권한을 부여해 주어야 한다. aws IAM에서 아래와 같은 역할을 만들어준다. (정책명: CloudWatchAgentServerRole)
해당 역할에는 아래의 정책을 연결해주면 된다.
두 가지 중에 CloudWatchAgentServerPolicy 만 넣어줘도 크게 상관없다.
cloudwatch에 연동할 ec2에도 해당 권한을 넣어 준다.
추가적으로 EC2 등록된 IAM 계정(사용자)에도 위와 동일한 정책을 연결해 주는 것은 로그 보존 정책을 사용하려면 필요하다. 서버에 사용자 등록과 / IAM 권한이 궁금하면 아래 링크를 확인하자.
https://seeminglyjs.tistory.com/399?category=1280624
3. EC2 설정하기
이제 서버 내에서 설정해야 하는 사항을 살펴보자.
//타입디비 생성 없으면 실행 안됨
# mkdir /usr/share/collectd/
# cd /usr/share/collectd/
# touch types.db
/usr/share/collectd/ 해당 위치에 types.db라는 것이 없으면 오류가 나기 때문에 경로에 해당 파일을 만들어주자.
아래의 설정 파일이 있는 디렉터리로 이동한다.
# cd /opt/aws/amazon-cloudwatch-agent/bin
config.json은 어떤 방식으로 cloudwatch에 로그 파일을 보낼 것인지에 대한 설정 파일이다.
# vi config.json
만약에 해당 파일이 없으면 아래 명령어를 실행하여 기본값으로 진행하면 위의 파일이 생기게 된다.
# cd /opt/aws/amazon-cloudwatch-agent/bin/
# ./amazon-cloudwatch-agent-config-wizard
해당 config의 내용은 아래와 같은 형식으로 구성하면 된다.
{
"agent": {
"run_as_user": "root"
},
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/var/log/secure",
"log_group_name": "자신의 원하는 로그 그룹 이름",
"log_stream_name": "자신의 원하는 로그 스트림 이름",
"retention_in_days": -1,
"encoding" : "자신의 서버의 인코딩 방식"
},
{
"file_path": "톰켓 로그가 저장되는 파일",
"log_group_name": "자신의 원하는 로그 그룹 이름",
"log_stream_name": "자신의 원하는 로그 스트림 이름",
"retention_in_days": -1,
"encoding" : "자신의 서버의 인코딩 방식"
}
]
}
}
},
"metrics": {
"aggregation_dimensions": [
[
"InstanceId"
]
],
"append_dimensions": {
"AutoScalingGroupName": "${aws:AutoScalingGroupName}",
"ImageId": "${aws:ImageId}",
"InstanceId": "${aws:InstanceId}",
"InstanceType": "${aws:InstanceType}"
},
"metrics_collected": {
"collectd": {
"metrics_aggregation_interval": 60
},
"disk": {
"measurement": [
"used_percent"
],
"metrics_collection_interval": 60,
"resources": [
"*"
]
},
"mem": {
"measurement": [
"mem_used_percent"
],
"metrics_collection_interval": 60
},
"statsd": {
"metrics_aggregation_interval": 60,
"metrics_collection_interval": 10,
"service_address": ":8125"
}
}
디테일한 파라미터 정보는 아래 링크에서 확인하면 된다.
4. amazon-cloudwatch-agent 가동
# sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status
config.json 파일의 수정이 완료되면 위의 명령어를 통해서 재실행시키면 세팅은 완료된다.