오랜만에 찾아왔다 -
이직해서 하는 일도 (얼추 비슷한가?) 좀 바뀌어가지고, 이제 매일 매일 AWS랑 전쟁중이다.
AWS도 보면 그냥 국내 클라우드 호스팅 업체 별반 다를게 있을까 (..) 싶을 정도로 안정적이지 못한 경우가 종종 있는 것 같다.
혹은 내가 아직 에러 소명을 못했겠지 ....
아무튼 한줄 적어본다.
AWS는 기본 모니터링에 Memory 수집 지표(metrics)가 없다.
따라서 Memory를 수집하고 싶다면 직접 config를 만들어서 추가해줘야 한다.
일단, OS에 따라 다르다.
Amazon Linux를 이용하는 경우, amazon-cloudwatch-agent
가 이미 있을 것이다.
근데, Ubuntu를 사용하는 경우, 아마 없을 것이다.
Ubuntu의 경우 install이 쉽게 되지 않아서 (..) 좀 귀찮다.
wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb
sudo dpkg -i amazon-cloudwatch-agent.deb
우분투용 패키지를 받아서 디패키징 해준다.
amazon-cloudwatch-agent-ctl -a status
그럼 이제 amazon-cloudwatch-agent-ctl을 사용할 수 있게 된다.
cd /opt/aws/amazon-cloudwatch-agent/etc/
/opt/aws/amazon-cloudwatch-agent/etc
의 경로로 이동 !
만약 amazon-cloudwatch-agent 경로가 없는 경우 문제가 있는 것이므로 부디 다시 설치를 하기를 바란다. (확실하진 않고 경험상 그랬어요)
이제 여기다가 config.json
을 만들어 줄 것이다.
경로나, config의 이름은 자유롭게 해도 상관없다. 어차피 커맨드로 잡아줄거라서
나의 경우 gunicorn의 memory usage를 보고 싶었던 거라서, config를 다음과 같이 잡아줬다.
{
"metrics": {
"metrics_collected": {
"procstat": [
{
"pattern": "gunicorn",
"alias": "gunicorn",
"measurement": [
"cpu_usage",
"cpu_time",
"cpu_time_system",
"memory_rss",
"num_fds",
"num_threads",
"write_count"
],
"metrics_collection_interval": 60
}
],
"mem": {
"measurement": [
"used_percent", "available", "total"
],
"metrics_collection_interval": 60
}
}
}
}
대충 ~~ 지표들을 수집할거고, gunicorn이라는 이름이 들어간 프로세스의 지표를 수집하게 해줘, 라는 의미라고 한다.
이거는 직접 찾는 것보다 chatgpt가 더 잘해줄 것입니다. 한번 찾아보시길 바랍니다!
이제 이걸 적용해주면 끝이다
/opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
-a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/etc/config.json \
-s
아시겠지만 -c의 옵션 위치에 나의 설정 파일을 지정해주면 된다.
뭐시기 뭐시기하여 validation success가 뜨면 끝이다-
이제 Dashboard나 지표 수집기 쪽에 가서 데이터를 확인해보자.
아마도 CWAgent의 어딘가에 있을 것이다.
나의 경우 host 안에 있었다.
사실 실제로 config 잡고 수집하는 것보다, 여기서 찾는 게 더 시간이 오래 걸린다.
중분류 (?)가 분기가 많이 되어 있으니 CWAgent 쪽에서 꼼꼼히 ip 대조해보면서 찾아보길 바란다.
이렇게 하면 메모리 수집 끝-!