CloudWatch 사용자 지정 지표에 sidekiq 및 unicorn 프로세스 모니터링 추가
8177 단어 ShellScriptaws-cliCloudWatchAWS
소개
현재 작업중인 프로젝트는 EC2 인스턴스를 모니터링하는 데 CloudWatch를 사용합니다.
이번에는 sidekiq나 unicorn 등의 프로세스도 CloudWatch에서 감시할 수 있도록 했으므로 정리하겠습니다.
AWS에서 사전 준비
이번에는 aws cli를 사용하여 CloudWatch에 사용자 지정 지표로 프로세스 수를 보냅니다.
IAM 역할을 생성하고 EC2 인스턴스에 정책을 연결하는 등의 사전 준비에 대해서는 다음 문서를 참조하십시오.
Run Command에서 여러 EC2 인스턴스의 사용자 지정 메트릭을 일괄 설정 | Developers.IO
프로세스 모니터링 쉘 스크립트
SSM을 사용하지 않는다면 아래 스크립트를 서버에 넣고 cron을 설정하는 것만으로도 괜찮습니다.
주로 이쪽의 기사를 참고로 했습니다
CloudWatch에서 EC2의 프로세스 모니터링 - 합작회사 조토
#!/bin/bash
NAMESPACE="Ec2Process"
UNIT="Count"
REGION=`curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone | sed -e 's/.$//'`
INSTANCE_ID=`curl -s http://169.254.169.254/latest/meta-data/instance-id`
DIMENSIONS="InstanceId=$INSTANCE_ID"
# 監視対象プロセスリスト
PROCESS_LIST=(sidekiq unicorn)
PUT_COMMAND="aws cloudwatch put-metric-data"
# 監視対象プロセス毎にプロセス数をカウントしてCloudWatchに格納する
for PROCESS in ${PROCESS_LIST[@]}; do
COUNT=`ps aux | grep $PROCESS | grep -v grep | wc -l`
echo $PROCESS:$COUNT
$PUT_COMMAND --metric-name $PROCESS --namespace $NAMESPACE --dimensions $DIMENSIONS --value $COUNT --unit $UNIT --region $REGION
done
이번에는 서버에 로그인하여 작업하는 것이 번거롭기 때문에 SSM을 사용하여 cron을 설정합니다.
AWS Systems Manager(SSM)를 사용하여 cron 구성
AWS Systems Manager > 명령 실행 > AWS-RunShellScript를 선택하고 명령 매개변수에 다음을 붙여넣습니다.
# ディレクトリ作成
mkdir -p /opt/cw-monitoring
# ユーザーがいなければ作成
if ! id cw-mon >/dev/null 2>&1; then
useradd cw-mon
fi
# メモリ使用率カスタムメトリクス送信スクリプト作成
tee /opt/cw-monitoring/processCounter.sh << "EOF" > /dev/null
#!/bin/bash
NAMESPACE="Ec2Process"
UNIT="Count"
REGION=`curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone | sed -e 's/.$//'`
INSTANCE_ID=`curl -s http://169.254.169.254/latest/meta-data/instance-id`
DIMENSIONS="InstanceId=$INSTANCE_ID"
# 監視対象プロセスリスト
PROCESS_LIST=(sidekiq unicorn)
PUT_COMMAND="aws cloudwatch put-metric-data"
# 監視対象プロセス毎にプロセス数をカウントしてCloudWatchに格納する
for PROCESS in ${PROCESS_LIST[@]}; do
COUNT=`ps aux | grep $PROCESS | grep -v grep | wc -l`
echo $PROCESS:$COUNT
$PUT_COMMAND --metric-name $PROCESS --namespace $NAMESPACE --dimensions $DIMENSIONS --value $COUNT --unit $UNIT --region $REGION
done
EOF
# オーナー、グループ、パーミッション設定
chown -R cw-mon:cw-mon /opt/cw-monitoring
chmod 744 /opt/cw-monitoring/processCounter.sh
# cron設定
tee /var/spool/cron/cw-mon << EOF > /dev/null
*/1 * * * * /opt/cw-monitoring/processCounter.sh
EOF
위 스크립트에서는 다음 작업을 수행합니다.
앞으로 시작하려는 프로세스가 늘어나더라도
PROCESS_LIST
에 추가하면 괜찮습니다 '실행'을 잡고 CloudWatch> 지표를 보러 가면,
사용자 지정 메트릭에 "Ec2Process"가 추가되어 각 인스턴스에서 값이 검색되는지 확인할 수 있습니다
그리고는 임계값을 설정해 Alerm 되도록(듯이) 하면 사활 감시할 수 있네요.
이상
참고
Reference
이 문제에 관하여(CloudWatch 사용자 지정 지표에 sidekiq 및 unicorn 프로세스 모니터링 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/paranishian/items/da68b835e733221e05e6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)