CloudWatch 맞춤 측정항목으로 다양한 모니터링

첫 EC2를 세울 때까지
EC2 초기 설정
에서 EC2의 초기 설정까지 할 수 있었으므로, 실제로 운용해 갈 때에 필요한 것 같은 커스텀 메트릭스를 자작합니다.

맞춤 메트릭 도입 에서 메모리 사용률, 디스크 사용률을 설정했습니다.

이번은 +α 쉘을 작성해 여러가지 감시할 수 있는 상태로 하고 싶습니다.

기본 정보



기본적으로 "/var/tmp/aws-mon/"에 인스턴스 정보가 들어 있습니다.
※AMI로부터 작성한 인스턴스는 이 디렉토리가 클리어 되어 있지 않은 일도 있으므로, EC2 기동하면 삭제해 두는 편이 좋습니다.
/aws-scripts-mon/mon-put-instance-data.pl을 실행하면 만들어지는 것 같습니다.
/instance-id :インスタンスID
/placement/availability-zone :アベイラビリティゾーン
/as-group-name :オートスケーリンググループ名

템플릿 스크립트



/opt/aws/bin/mon-put-data를 실행하여 CloudWatch에 등록할 수 있습니다.
#!/bin/sh
export JAVA_HOME=/usr/lib/jvm/jre
export AWS_CLOUDWATCH_HOME=/opt/aws/apitools/mon
export EC2_REGION=ap-northeast-1
export AWS_CREDENTIAL_FILE=/home/ec2-user/cloudwatch/credential
InstanceId=`cat /var/tmp/aws-mon/instance-id`

/opt/aws/bin/mon-put-data --metric-name "[メトリクス名]" --namespace "CustomMetrix" --dimensions "InstanceId=${InstanceId}" --value [登録するデータ]

각 옵션은 아래 그림과 같이 CloudWatch에 반영됩니다.
"dimensions"에 관해서는, ","단락으로 복수 설정하는 것도 가능합니다.
예) --dimensions "InstanceID=\${InstanceID}, HostName=\${hostname}"
  • --metric-name
  • --namespace
  • --dimensions
  • --value




  • 맞춤 측정항목 만들기



    아래 스크립트를 나열하고 cron으로 설정하면 CloudWatch에서 모니터링할 수 있습니다.

    필수 모듈 설치


    yum install aws-apitools-mon
    



    실제로 작성해 보았습니다.
    예제는 LoadAverage와 httpd, crond 프로세스를 확인하는 스크립트입니다.

    이 디렉토리에 작성
    $ pwd
    /home/ec2-user/cloudwatch
    $ ll
    total 4
    drwxrwxr-x 2 ec2-user ec2-user 185 Mar 21 00:08 aws-scripts-mon
    -rw------- 1 ec2-user ec2-user  91 Mar 21 00:32 credential
    

    스크립팅



    · CustomMetrix.sh
    #!/bin/sh
    CUR_DIR=/home/ec2-user/cloudwatch
    
    export JAVA_HOME=/usr/lib/jvm/jre
    export AWS_CLOUDWATCH_HOME=/opt/aws/apitools/mon
    export EC2_REGION=ap-northeast-1
    export AWS_CREDENTIAL_FILE=${CUR_DIR}/credential
    InstanceId=`cat /var/tmp/aws-mon/instance-id`
    # 設定ファイル
    PROCESSCONFIG=${CUR_DIR}/process-conf.txt
    
    # Process Check(設定したファイルから読み込む)
    cat ${PROCESSCONFIG} | sed '/^$/d' | grep -v '^#.*' | while read PROCESS
    do
      COUNT=`ps -aux | grep ${PROCESS} | grep -v grep | wc -l`
    echo ${PROCESS}:${COUNT}
      /opt/aws/bin/mon-put-data --metric-name ${PROCESS} --namespace "CustomMetrix" --dimensions "InstanceId=${InstanceId}" --value ${COUNT}
    done
    
    # LoadAverage(1分間の測定値を取得)
    /opt/aws/bin/mon-put-data --metric-name "LoadAverage" --namespace "CustomMetrix" --dimensions "InstanceId=${InstanceId}" --value `cat /proc/loadavg | awk '{print $1;}'`
    

    실행할 수 있도록 권한 조정
    $ chmod u+x CustomMetrix.sh 
    

    설정 파일 준비



    · process-conf.txt에 체크하고 싶은 프로세스를 기재합니다.
    $ cat process-conf.txt 
    httpd
    crond
    

    실행



    실행하여 CloudWatch에 등록되어 있으면 OK입니다.
    $ ./CustomMetrix.sh 
    httpd:6
    crond:1
    

    CustomMetrix가 추가되면 OK입니다.


    이런 식으로 등록됩니다.


    cron 설정



    이제 매분의 상황을 CloudWatch에서 모니터링할 수 있습니다.
    적절하게 경고를 설정하고 모니터링을 수행하십시오.
    $ crontab -e
    crontab: installing new crontab
    $ crontab -l
    */1 * * * * /home/ec2-user/cloudwatch/CustomMetrix.sh > /dev/null 2>&1
    

    이상으로 맞춤 측정항목을 직접 만들 수 있었습니다.
    기타 감시하고 싶은 것이 있으면, 적절히 스크립트를 작성하면 감시 가능합니다.

    좋은 웹페이지 즐겨찾기