CloudWatch 사용자 지정 메트릭을 사용하여 메모리, 여유 디스크 등의 성능 카운터를 모니터링했습니다. CloudWatch를 사용하여 서비스를 모니터링 할 수 있습니까? 나는 클라우드 감시 모니터 기능을 확인했지만 모니터링 서비스와 관련이없는 것을 발견했습니다. 서비스가 실행 중인지 여부를 모니터링하고 서비스 상태가 변경되면 알림을 보내면됩니다.AWS CloudWatch를 사용하여 EC2 Windows 인스턴스의 모니터링 서비스
답변
예를 들어, 언급 한 EC2Config Windows Integration과 같은 바로 사용 가능한 솔루션은 서비스 수준 맞춤 측정 항목에 대해 쉽게 사용할 수 없습니다.
CloudWatch 사용자 정의 메트릭을 사용하면 CloudWatch를 사용자 정의 된 메트릭 및 데이터로 확장 할 수 있으므로 사용자 자신의 서비스를 모니터하기 위해 합리적인 방법으로 구현할 수 있습니다. 서비스가 CloudWatch 자체에 메트릭 데이터를 쓰거나 서비스를 모니터링하는 다른 프로세스를 작성하고 서비스에서 CloudWatch에 대한 응답을 기반으로 메트릭을 작성할 수 있습니다. 우리는 서비스를 핑 (ping) 할 수있는 웹 엔드 포인트를한다고 가정 할 수 없기 때문에 편집 당
는 일부 창 특정 PowerShell을 필요로 Windows 서비스의 임의의 집합에 대한 CloudWatch를 맞춤 측정 항목을 게시합니다.
Get-Service
을 통해 서비스를 평가하는 서비스 모니터를 만든 다음 데이터 포인트가 실행중인 경우 CloudWatch 사용자 지정 메트릭에 게시합니다.
다음은 3003 초마다 이름이 *YOURSERVICENAMESHERE*
인 서비스에 대한 사용자 지정 메트릭을 작성하는 PowerShell의 구현 예입니다. EC2 인스턴스의 모든 서비스에 을 실행하려면 와일드 카드 *
으로 바꿀 수 있지만 규모면에서는 비쌉니다. Write-CwMetricData
을 통해 한 번에 너무 많은 메트릭을 보낼 수 있기 때문에 상자에 너무 많은 서비스가있는 경우 약간의 조정이 필요할 수도 있습니다. 자세한 내용은 코드 주석을 참조하십시오.
성공했을 때만 데이터 포인트를 만들면 알림 제약 조건을 충족하는 CloudWatch Alarms를 만드는 데 사용할 수있는 '실패'조건 (X 초 동안 INSUFFICIENT_DATA)이 설정됩니다. 파일에
Param
(
[string]$Period = 300,
[string]$Namespace = 'service-monitor'
)
# Use the EC2 metadata service to get the host EC2 instance's ID
$instanceId = (New-Object System.Net.WebClient).DownloadString("http://169.254.169.254/latest/meta-data/instance-id")
# Associate current EC2 instance with your custom cloudwatch metric
$instanceDimension = New-Object -TypeName Amazon.CloudWatch.Model.Dimension;
$instanceDimension.Name = "instanceid";
$instanceDimension.Value = $instanceId;
# "Job" loop; write to CloudWatch and then sleep for the interval defined by the period variable above, in seconds.
while($true)
{
$metrics = @();
$runningServices = Get-Service -Name *YOURSERVICENAMESHERE* | ? { $_.Status -eq 'Running' }
# For each running service, add a metric to metrics collection that adds a data point to a CloudWatch Metric named 'Status' with dimensions: instanceid, servicename
$runningServices | % {
$dimensions = @();
$serviceDimension = New-Object -TypeName Amazon.CloudWatch.Model.Dimension;
$serviceDimension.Name = "service"
$serviceDimension.Value = $_.Name;
$dimensions += $instanceDimension;
$dimensions += $serviceDimension;
$metric = New-Object -TypeName Amazon.CloudWatch.Model.MetricDatum;
$metric.Timestamp = [DateTime]::UtcNow;
$metric.MetricName = 'Status';
$metric.Value = 1;
$metric.Dimensions = $dimensions;
$metrics += $metric;
Write-Host "Checking status for: $($_.Name)"
}
# Write all of the metrics for this run of the job at once, to save on costs for calling the CloudWatch API.
# This will fail if there are too many services in metrics collection; if this happens, just reduce the amount of
# services monitored, or edit this line into the above foreach loop and write each metric directly.
Write-CWMetricData -Namespace $Namespace -MetricData $metrics
Write-Host "Sleeping for $Period seconds."
Start-Sleep -s $Period
}
저장이를 당신은 서면으로 측정을 시작하기위한 명령 행에서 실행할 수 있습니다
이 스크립트
은 설치 및 구성 AWS Tools for PowerShell있는 Windows EC2 인스턴스에서 실행해야합니다. 일단 마음에 들지 않으면 예약 된 작업이나 PowerShell 작업에 대해 "while true"루프를 자유롭게 사용할 수 있습니다.추가 자료 :
- AWS Documentation - Scenario: Publish Metrics to CloudWatch - 가상 응용 프로그램에 대한 사용자 지정 메트릭을 게시하기위한 튜토리얼/연습. 자신의 맞춤 측정 항목을 게시하는 방법을 배우기에 좋은 곳입니다.
- MSDN - Get-Service Cmdlet Reference
- AWS Documentation - Publish Custom Metrics
- AWS Tools For PowerShell Documentation - Write-CWMetricData
- 1. AWS cloudwatch를 사용하여 nginx 모니터링 ngx_http_stub_status_module
- 2. AWS - CloudWatch를 사용하여 ec2 인스턴스에서 스크립트 실행
- 3. AWS EC2 Cloudwatch 모니터링
- 4. CloudWatch를 사용하여 AWS 외부의 앱을 모니터링 할 수 있습니까?
- 5. AWS CloudWatch를 사용하여 개별 디렉토리의 사용을 모니터링 할 수 있습니까?
- 6. AWS EC2 인스턴스의 PostgreSQL 백업
- 7. 여러 EC2 인스턴스의 메모리 사용 모니터링
- 8. 전체 EC2 서비스 (AWS) 취소
- 9. 경로 53 Amazon Aws - ec2 인스턴스의 서비스 (Solr) 상태 확인
- 10. AWS CloudWatch를 사용하여 상태 URI를 조회 할 수 있습니까?
- 11. ec2 인스턴스의 사용자에게 해당하는 AWS ec2 개인 키입니다.
- 12. AWS ec2 인스턴스의 "sudo pip"오류가 발생했습니다.
- 13. Jenkins/Hudson이 AWS EC2 인스턴스의 스크립트를 호출합니다.
- 14. AWS EC2 인스턴스의 Tomcat 폴더에 액세스
- 15. AWS EC2 인스턴스의 Java에서 Bash 명령을 실행하십시오.
- 16. 전체 네트워크에 AWS EC2 인스턴스의 포트 노출
- 17. AWS Windows EC2 업로드시 S3에서 가져 오기
- 18. EC2 컨테이너 서비스 인스턴스의 라이프 사이클
- 19. AWS Cloudwatch를 사용하여 인스턴스 이름 메타 데이터 (태그에서)를 SNS로 보내는 방법은 무엇입니까?
- 20. 사용자 지정 Windows 서비스 모니터링
- 21. AWS EC2 인스턴스에서로드 평균이보고됩니까?
- 22. aws ec2 컨테이너 서비스 - 클라우드 형성의 이름
- 23. EC2 인스턴스의 로그 파일보기
- 24. AWS EC2 가져 오기/내보내기 서비스 Linux
- 25. aws lambda access ec2
- 26. AWS EC2에서 Windows 서비스 OnStart가 호출되지 않습니다.
- 27. AWS S3 버킷을 EC2 인스턴스와 동기화
- 28. AWS EC2 컨테이너 서비스 무료 티어 부분
- 29. ec2 인스턴스의 루틴 이동
- 30. EC2 인스턴스의 npm 문제
내 요구 사항은 너무 복잡하지 않습니다. 서비스가 실행 중인지 여부를 모니터링해야합니다.그렇게하면 ec2 인스턴스의 Services 열에서 모든 서비스를 모니터링해야합니다. 그리고 한 가지 더요, 저는 Windows 인스턴스에서이 작업을 수행 할 것입니다. – prudhvi
질문을 수정했습니다. 그것을 확인하시기 바랍니다. – prudhvi
@prudhvi 수정하면 내 대답이 변경되지 않습니다. CloudWatch에서이를 달성하려면 CloudWatch 사용자 지정 메트릭을 게시하는 타사 모니터를 찾거나 CloudWatch 사용자 지정 메트릭을 게시하는 서비스 모니터를 작성해야합니다. 링크 된 문서는 시작하기에 충분해야합니다. –