首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为CloudWatch EC2实例配置AWS EC2代理的自定义度量[%CPU、%内存、%DiskSpace]

为CloudWatch EC2实例配置AWS EC2代理的自定义度量[%CPU、%内存、%DiskSpace]
EN

Stack Overflow用户
提问于 2019-07-26 10:02:16
回答 1查看 3.7K关注 0票数 0

我编写了一个PowerShell脚本,用于自动下载、安装、配置和启动CloudWatch EC2实例上的AWS代理。

现在,我有一个任务要获取CloudWatch代理的度量,如%CPU使用率、%内存使用率和% EC2实例磁盘空间使用率,这将需要在config.json上定义,我们使用Agent -config-wizard.exe向导进行配置。

请帮助我获得%CPU使用率,%内存使用率和%磁盘空间使用配置的云观看自定义度量的Windows EC2实例,需要配置config.json文件与AutoScalingGroupName已经存在。

我不想做太多复杂的事情,我只需要config.json文件,它的自定义度量为%CPU使用率、%内存使用率和%磁盘空间使用配置,用于EC2实例的cloudwatch自定义度量。

我已经搜索过搜索引擎,无法找到准确的答案来帮助我配置config.json文件。我搜索了示例AWS CloudWatch代理度量,找不到config.json,它给了我%CPU使用率、%内存使用率和%磁盘空间使用率。

AWSCoudWatchAgentInstall.ps1

代码语言:javascript
复制
$file = "C:\AmazonCloudWatchAgent.zip"
$date = Get-date -Format "ddMMyyyy"

#Function to start Windows AmazonCloudWatchAgent service
Function start_service()
{
    Start-Service -Name AmazonCloudWatchAgent
    Start-Sleep 10
    echo "AmazonCloudWatchAgent windows service started"
}

#Function to configure Cloud Watch agent service
Function configure_config()
{
    Set-Location -Path 'C:\Program Files\Amazon\AmazonCloudWatchAgent\'
    Copy-Item -Path $PSScriptRoot\config.json -Destination "C:\Program Files\Amazon\AmazonCloudWatchAgent\" -Force
    echo "Copied config.json to Home Dir for Cloudwatch C:\Program Files\Amazon\AmazonCloudWatchAgent\"
    Start-Process "cmd.exe" "/c $PSScriptRoot\execute.bat"
    Start-Sleep -s 10
    echo "Amazon-cloudwatch agent configuration completed"
    Rename-Item -Path "C:\AmazonCloudWatchAgent" -NewName "C:\AmazonCloudWatchAgent-$date" -ErrorAction stop
    echo "Rename folder C:\AmazonCloudWatchAgent with today date"
    Remove-Item -Path C:\AmazonCloudWatchAgent.zip -Force
    echo "Removed Zip file C:\AmazonCloudWatchAgent.zip" 
}
# Function to install Windows service
Function install_service()
{
    Set-Location -Path "C:\AmazonCloudWatchAgent"
    Start-Process "cmd.exe"  "/c $PSScriptRoot\install.bat"
    Start-Sleep 15
    echo "Amazon Cloud Watch Agent Installed on Windows, please verfiy on service console"
}

# Function to download zip file of cloudwatch agent
Function web_request_status()
{
    Invoke-WebRequest -Uri "https://s3.amazonaws.com/amazoncloudwatch-agent/windows/amd64/latest/AmazonCloudWatchAgent.zip" -Outfile c:\AmazonCloudWatchAgent.zip
    echo "Amazon Cloud Watch Agent downloading..."
    Start-Sleep -s 15
    Start-Process "cmd.exe"  "/c $PSScriptRoot\uzip_file.bat"
    echo "Unzip AmazonCloudWatchAgent.zip file under location C:\AmazonCloudWatchAgent"
    Start-Sleep -s 10
}

# Set ExecutionPolicy and check for file exist
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope LocalMachine
if (Test-Path $file)
{
    echo "File $file already exists" ;
    echo "Downloading latest version.."
    New-Item -ItemType Directory -Path "C:\$date" -Force
    Copy-Item -Path C:\AmazonCloudWatchAgent.zip -Destination C:\$date -Force
    echo "File $file copied as a backup under C drive on today's date folder in format ddMMyyyy"
}
else
{
    echo "File C:\AmazonCloudWatchAgent.zip does not exist"
}

web_request_status
install_service
configure_config
start_service

unzip_specific_file.bat

代码语言:javascript
复制
@echo off
setlocal
Call :UnZipFile "C:\AmazonCloudWatchAgent\" "c:\AmazonCloudWatchAgent.zip"
exit /b

:UnZipFile <ExtractTo> <newzipfile>
set vbs="%temp%\_.vbs"
if exist %vbs% del /f /q %vbs%
>%vbs%  echo Set fso = CreateObject("Scripting.FileSystemObject")
>>%vbs% echo If NOT fso.FolderExists(%1) Then
>>%vbs% echo fso.CreateFolder(%1)
>>%vbs% echo End If
>>%vbs% echo set objShell = CreateObject("Shell.Application")
>>%vbs% echo set FilesInZip=objShell.NameSpace(%2).items
>>%vbs% echo objShell.NameSpace(%1).CopyHere(FilesInZip)
>>%vbs% echo Set fso = Nothing
>>%vbs% echo Set objShell = Nothing
cscript //nologo %vbs%
if exist %vbs% del /f /q %vbs%

install.bat

代码语言:javascript
复制
@echo off
cd C:\AmazonCloudWatchAgent\
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File ".\install.ps1""' -Verb RunAs}"

execute.bat

代码语言:javascript
复制
@echo off
cd "c:\Program Files\Amazon\AmazonCloudWatchAgent"
PowerShell -NoProfile -ExecutionPolicy Bypass -Command "& {Start-Process PowerShell -ArgumentList '-NoProfile -ExecutionPolicy Bypass -File "C:\Program Files\Amazon\AmazonCloudWatchAgent\amazon-cloudwatch-agent-ctl.ps1 -a fetch-config -m ec2 -c file:config.json -s""' -Verb RunAs}"

用于自定义度量的config.json CloudWatch代理需要配置。

代码语言:javascript
复制
{
    "metrics": {
        "append_dimensions": {
            "AutoScalingGroupName": "${aws:AutoScalingGroupName}",
            "ImageId": "${aws:ImageId}",
            "InstanceId": "${aws:InstanceId}",
            "InstanceType": "${aws:InstanceType}"
        },
        "metrics_collected": {
            "LogicalDisk": {
                "measurement": [
                    "% Free Space"
                ],
                "metrics_collection_interval": 300,
                "resources": [
                    "*"
                ]
            },
            "Memory": {
                "measurement": [
                    "% Committed Bytes In Use"
                ],
                "metrics_collection_interval": 300
            },
            "Paging File": {
                "measurement": [
                    "% Usage"
                ],
                "metrics_collection_interval": 300,
                "resources": [
                    "*"
                ]
            },
            "PhysicalDisk": {
                "measurement": [
                    "% Disk Time",
                    "Disk Write Bytes/sec",
                    "Disk Read Bytes/sec",
                    "Disk Writes/sec",
                    "Disk Reads/sec"
                ],
                "metrics_collection_interval": 300,
                "resources": [
                    "*"
                ]
            },
            "Processor": {
                "measurement": [
                    "% User Time",
                    "% Idle Time",
                    "% Interrupt Time"
                ],
                "metrics_collection_interval": 300,
                "resources": [
                    "*"
                ]
            }
        }
    }
}

请帮助我获得CloudWatch代理的自定义度量标准,以便在config.json上显示CPU的%Usgae、内存的使用%和EC2实例磁盘空间的%Usgae!

操作系统: Windows OS 64位

到目前为止,该脚本正在为Windows 2012、2016进行测试。

我将使用相同的config.json文件来配置自定义的cloudwatch代理度量。

EN

回答 1

Stack Overflow用户

发布于 2020-04-14 20:21:37

使用这些AWS博士验证配置了所有正确的权限。很可能您只是缺少正确的IAM权限。

要进一步排除故障,可以通过在“度量”之前添加以下部分(确保更新区域)来启用调试:{:

代码语言:javascript
复制
"agent":  {
              "metrics_collection_interval":  60,
              "region":  "us-east-1",
              "logfile":  "c:\\ProgramData\\Amazon\\CloudWatchAgent\\Logs\\amazon-cloudwatch-agent.log",
              "debug":  true,
              "run_as_user":  "cwagent"
          },
 "metrics": {
              ...

在添加了这个之后,用config.json重新导入.\amazon-cloudwatch-agent-ctl.ps1 -a fetch-config -m ec2 -c file:'C:\Program Files\Amazon\AmazonCloudWatchAgent\config.json' -s

查看以下位置以获取日志:

  • C:\ProgramData\Amazon\CloudWatchAgent\Logs
  • C:\ProgramData\Amazon\AmazonCloudWatchAgent\Logs
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57217693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档