{"id":1888,"date":"2023-08-06T14:24:43","date_gmt":"2023-08-06T14:24:43","guid":{"rendered":"https:\/\/dev95.site\/cloudwatch-dashboards-and-alarms-on-mac-instances\/"},"modified":"2023-08-06T14:24:43","modified_gmt":"2023-08-06T14:24:43","slug":"cloudwatch-dashboards-and-alarms-on-mac-instances","status":"publish","type":"post","link":"https:\/\/dev95.site\/ar\/cloudwatch-dashboards-and-alarms-on-mac-instances\/","title":{"rendered":"CloudWatch dashboards and alarms on Mac instances"},"content":{"rendered":"<div id=\"dev95-2101870920\" class=\"dev95-- dev95-entity-placement\"><script async=\"async\" data-cfasync=\"false\" src=\"https:\/\/pl27862732.profitableratecpmnetwork.com\/2ad7a50e0bbc23ac6801d7b77c501463\/invoke.js\"><\/script>\r\n<div id=\"container-2ad7a50e0bbc23ac6801d7b77c501463\"><\/div><\/div><div><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/storage.ghost.io\/c\/ae\/f4\/aef4d625-32a2-417b-86f4-22c70a9b47a1\/content\/images\/2026\/09\/ChatGPT-Image-Sep-10--2026--10_53_38-AM.png?w=1280&#038;ssl=1\" alt=\"CloudWatch dashboards and alarms on Mac instances\"><\/p>\n<p><a href=\"https:\/\/aws.amazon.com\/cloudwatch\/?ref=albertodebortoli.com\">CloudWatch<\/a> is great for observing and monitoring resources and applications on AWS, on premises, and on other clouds.<\/p><div id=\"dev95-3803513376\" class=\"dev95- dev95-entity-placement\"><center>\r\n<script>\r\n  atOptions = {\r\n    'key' : '4ba6b6513c00e0ba76511f798ae56401',\r\n    'format' : 'iframe',\r\n    'height' : 50,\r\n    'width' : 320,\r\n    'params' : {}\r\n  };\r\n<\/script>\r\n<script src=\"https:\/\/www.highrevenueformat.com\/4ba6b6513c00e0ba76511f798ae56401\/invoke.js\"><\/script>\r\n\t<\/center><\/div>\n<p>While it&#8217;s trivial to have the agent running on Linux, it&#8217;s a bit more involved for mac instances (which are commonly used as CI workers). The support <a href=\"https:\/\/aws.amazon.com\/about-aws\/whats-new\/2021\/01\/amazon-cloudwatch-agent-now-supports-macos-on-amazon-ec2-mac-instances\/?ref=albertodebortoli.com\">was announced<\/a> in January 2021 for mac1.metal (Intel\/x86_64) and I bumped into some challenges on mac2.metal (M1\/ARM64) that the team at AWS helped me solve (see <a href=\"https:\/\/github.com\/aws\/amazon-cloudwatch-agent\/issues\/798?ref=albertodebortoli.com\">this issue<\/a> on the GitHub repo).<\/p>\n<p>I couldn&#8217;t find other articles nor precise documentation from AWS which is why I&#8217;m writing this article to walk you through a common CloudWatch setup.<\/p>\n<p>The given code samples are for the HashiCorp tools <a href=\"https:\/\/www.packer.io\/?ref=albertodebortoli.com\">Packer<\/a> and <a href=\"https:\/\/www.terraform.io\/?ref=albertodebortoli.com\">Terraform<\/a> and focus on mac2.metal instances.<\/p>\n<p>I&#8217;ll cover the following steps:<\/p>\n<ul>\n<li>install the CloudWatch agent on mac2.metal instances<\/li>\n<li>configure the CloudWatch agent<\/li>\n<li>create a CloudWatch dashboard<\/li>\n<li>setup CloudWatch alarms<\/li>\n<li>setup IAM permissions<\/li>\n<\/ul>\n<h3 id=\"install-the-cloudwatch-agent\">Install the CloudWatch agent<\/h3>\n<p>The CloudWatch agent can be installed by downloading the <code>pkg<\/code> file listed on <a href=\"https:\/\/docs.aws.amazon.com\/AmazonCloudWatch\/latest\/monitoring\/download-cloudwatch-agent-commandline.html?ref=albertodebortoli.com\">this page<\/a> and running the installer. You probably want to bake the agent into your AMI, so here is the Packer code for mac2.metal (ARM):<\/p>\n<pre><code># Install wget via brew\nprovisioner \"shell\" {\n  inline = [\n    \"source ~\/.zshrc\",\n    \"brew install wget\"\n  ]\n}\n\n# Install CloudWatch agent\nprovisioner \"shell\" {\n  inline = [\n    \"source ~\/.zshrc\",\n    \"wget https:\/\/s3.amazonaws.com\/amazoncloudwatch-agent\/darwin\/arm64\/latest\/amazon-cloudwatch-agent.pkg\",\n    \"sudo installer -pkg .\/amazon-cloudwatch-agent.pkg -target \/\"\n  ]\n}<\/code><\/pre>\n<p>For the agent to work, you&#8217;ll need <code>collectd<\/code> (<a href=\"https:\/\/collectd.org\/?ref=albertodebortoli.com\">https:\/\/collectd.org\/<\/a>) to be installed on the machine, which is usually done via brew. Brew installs it at <code>\/opt\/homebrew\/sbin\/<\/code>. This is also a step you want to perform when creating your AMI.<\/p>\n<pre><code># Install collectd via brew\nprovisioner \"shell\" {\n  inline = [\n    \"source ~\/.zshrc\",\n    \"brew install collectd\"\n  ]\n}<\/code><\/pre>\n<h3 id=\"configure-the-cloudwatch-agent\">Configure the CloudWatch agent<\/h3>\n<p>In order to run, the agent needs a configuration which can be created using the wizard. <a href=\"https:\/\/docs.aws.amazon.com\/AmazonCloudWatch\/latest\/monitoring\/create-cloudwatch-agent-configuration-file-wizard.html?ref=albertodebortoli.com\">This page<\/a> defines the metric sets that are available.<\/p>\n<p>Running the wizard with the command below will allow you to generate a basic json configuration which you can <a href=\"https:\/\/docs.aws.amazon.com\/AmazonCloudWatch\/latest\/monitoring\/CloudWatch-Agent-Configuration-File-Details.html?ref=albertodebortoli.com\">modify<\/a> later.<\/p>\n<pre><code>sudo \/opt\/aws\/amazon-cloudwatch-agent\/bin\/amazon-cloudwatch-agent-config-wizard<\/code><\/pre>\n<p>The following is a working configuration for Mac instances so you can skip the process.<\/p>\n<pre><code>{\n\t\"agent\": {\n\t  \"metrics_collection_interval\": 60,\n\t  \"run_as_user\": \"root\"\n\t},\n\t\"metrics\": {\n\t  \"aggregation_dimensions\": [\n\t\t[\n\t\t  \"InstanceId\"\n\t\t]\n\t  ],\n\t  \"append_dimensions\": {\n\t\t\"AutoScalingGroupName\": \"${aws:AutoScalingGroupName}\",\n\t\t\"ImageId\": \"${aws:ImageId}\",\n\t\t\"InstanceId\": \"${aws:InstanceId}\",\n\t\t\"InstanceType\": \"${aws:InstanceType}\"\n\t  },\n\t  \"metrics_collected\": {\n\t\t\"collectd\": {\n\t\t  \"collectd_typesdb\": [\n\t\t\t\"\/opt\/homebrew\/opt\/collectd\/share\/collectd\/types.db\"\n\t\t  ],\n\t\t  \"metrics_aggregation_interval\": 60\n\t\t},\n\t\t\"cpu\": {\n\t\t  \"measurement\": [\n\t\t\t\"cpu_usage_idle\",\n\t\t\t\"cpu_usage_iowait\",\n\t\t\t\"cpu_usage_user\",\n\t\t\t\"cpu_usage_system\"\n\t\t  ],\n\t\t  \"metrics_collection_interval\": 60,\n\t\t  \"resources\": [\n\t\t\t\"*\"\n\t\t  ],\n\t\t  \"totalcpu\": false\n\t\t},\n\t\t\"disk\": {\n\t\t  \"measurement\": [\n\t\t\t\"used_percent\",\n\t\t\t\"inodes_free\"\n\t\t  ],\n\t\t  \"metrics_collection_interval\": 60,\n\t\t  \"resources\": [\n\t\t\t\"*\"\n\t\t  ]\n\t\t},\n\t\t\"diskio\": {\n\t\t  \"measurement\": [\n\t\t\t\"io_time\",\n\t\t\t\"write_bytes\",\n\t\t\t\"read_bytes\",\n\t\t\t\"writes\",\n\t\t\t\"reads\"\n\t\t  ],\n\t\t  \"metrics_collection_interval\": 60,\n\t\t  \"resources\": [\n\t\t\t\"*\"\n\t\t  ]\n\t\t},\n\t\t\"mem\": {\n\t\t  \"measurement\": [\n\t\t\t\"mem_used_percent\"\n\t\t  ],\n\t\t  \"metrics_collection_interval\": 60\n\t\t},\n\t\t\"netstat\": {\n\t\t  \"measurement\": [\n\t\t\t\"tcp_established\",\n\t\t\t\"tcp_time_wait\"\n\t\t  ],\n\t\t  \"metrics_collection_interval\": 60\n\t\t},\n\t\t\"statsd\": {\n\t\t  \"metrics_aggregation_interval\": 60,\n\t\t  \"metrics_collection_interval\": 10,\n\t\t  \"service_address\": \":8125\"\n\t\t},\n\t\t\"swap\": {\n\t\t  \"measurement\": [\n\t\t\t\"swap_used_percent\"\n\t\t  ],\n\t\t  \"metrics_collection_interval\": 60\n\t\t}\n\t  }\n\t}\n  }<\/code><\/pre>\n<p>I have enhanced the output of the wizard with some reasonable metrics to collect. The configuration created by the wizard is almost working but it&#8217;s lacking a fundamental config to make it work out-of-the-box: the <code>collectd_typesdb<\/code> value. <\/p>\n<p>Linux and Mac differ when it comes to the location of <code>collectd<\/code> and <code>types.db<\/code>, and the agent defaults to the Linux path even if it was built for Mac, causing the following error when trying to run the agent:<\/p>\n<pre><code>======== Error Log ========\n2023-07-23T04:57:28Z E! [telegraf] Error running agent: Error loading config file \/opt\/aws\/amazon-cloudwatch-agent\/etc\/amazon-cloudwatch-agent.toml: error parsing socket_listener, open \/usr\/share\/collectd\/types.db: no such file or directory\n<\/code><\/pre>\n<p>Moreover, the <code>\/usr\/share\/<\/code> folder is not writable unless you disable SIP (System Integrity Protection) which cannot be done on EC2 mac instances nor is something you want to do for security reasons.<\/p>\n<p>The final configuration is something you want to save in <a href=\"https:\/\/docs.aws.amazon.com\/systems-manager\/latest\/userguide\/systems-manager-parameter-store.html?ref=albertodebortoli.com\">System Manager Parameter Store<\/a> using the <a href=\"https:\/\/registry.terraform.io\/providers\/hashicorp\/aws\/latest\/docs\/resources\/ssm_parameter?ref=albertodebortoli.com\">ssm_parameter<\/a> resource in Terraform:<\/p>\n<pre><code>resource \"aws_ssm_parameter\" \"cw_agent_config_darwin\" {\n  name        = \"\/cloudwatch-agent\/config\/darwin\"\n  description = \"CloudWatch agent config for mac instances\"\n  type        = \"String\"\n  value       = file(\".\/cw-agent-config-darwin.json\")\n}<\/code><\/pre>\n<p>and use it when running the agent in a provisioning step:<\/p>\n<pre><code>resource \"null_resource\" \"run_cloudwatch_agent\" {\n\n  depends_on = [\n    aws_instance.mac_instance\n  ]\n\n  connection {\n    type        = \"ssh\"\n    agent       = false\n    host        = aws_instance.mac_instance.private_ip\n    user        = \"ec2-user\"\n    private_key = tls_private_key.mac_instance.private_key_pem\n    timeout     = \"30m\"\n  }\n\n  # Run CloudWatch agent\n  provisioner \"remote-exec\" {\n    inline = [\n      \"sudo \/opt\/aws\/amazon-cloudwatch-agent\/bin\/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -s -c ssm:${aws_ssm_parameter.cw_agent_config_darwin.name}\"\n    ]\n  }\n}<\/code><\/pre>\n<h3 id=\"create-a-cloudwatch-dashboard\">Create a CloudWatch dashboard<\/h3>\n<p>Once the instances are deployed and running, they will send events to CloudWatch and we can create a dashboard to visualise them. You can create a dashboard manually in the console and once you are happy with it, you can just copy the source code, store it in a file and feed it to Terraform.<\/p>\n<figure class=\"kg-card kg-image-card\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/storage.ghost.io\/c\/ae\/f4\/aef4d625-32a2-417b-86f4-22c70a9b47a1\/content\/images\/2023\/08\/image.png?resize=370%2C688&#038;ssl=1\" class=\"kg-image\" alt=\"CloudWatch dashboards and alarms on Mac instances\" loading=\"lazy\" width=\"370\" height=\"688\"><\/figure>\n<p>Here is mine that could probably work for you too if you tag your instances with the <code>Type<\/code> set to <code>macOS<\/code>:<\/p>\n<pre><code>{\n    \"widgets\": [\n        {\n            \"height\": 15,\n            \"width\": 24,\n            \"y\": 0,\n            \"x\": 0,\n            \"type\": \"explorer\",\n            \"properties\": {\n                \"metrics\": [\n                    {\n                        \"metricName\": \"cpu_usage_user\",\n                        \"resourceType\": \"AWS::EC2::Instance\",\n                        \"stat\": \"Average\"\n                    },\n                    {\n                        \"metricName\": \"cpu_usage_system\",\n                        \"resourceType\": \"AWS::EC2::Instance\",\n                        \"stat\": \"Average\"\n                    },\n                    {\n                        \"metricName\": \"disk_used_percent\",\n                        \"resourceType\": \"AWS::EC2::Instance\",\n                        \"stat\": \"Average\"\n                    },\n                    {\n                        \"metricName\": \"diskio_read_bytes\",\n                        \"resourceType\": \"AWS::EC2::Instance\",\n                        \"stat\": \"Average\"\n                    },\n                    {\n                        \"metricName\": \"diskio_write_bytes\",\n                        \"resourceType\": \"AWS::EC2::Instance\",\n                        \"stat\": \"Average\"\n                    }\n                ],\n                \"aggregateBy\": {\n                    \"key\": \"\",\n                    \"func\": \"\"\n                },\n                \"labels\": [\n                    {\n                        \"key\": \"Type\",\n                        \"value\": \"macOS\"\n                    }\n                ],\n                \"widgetOptions\": {\n                    \"legend\": {\n                        \"position\": \"bottom\"\n                    },\n                    \"view\": \"timeSeries\",\n                    \"stacked\": false,\n                    \"rowsPerPage\": 50,\n                    \"widgetsPerRow\": 1\n                },\n                \"period\": 60,\n                \"splitBy\": \"\",\n                \"region\": \"eu-west-1\"\n            }\n        }\n    ]\n}<\/code><\/pre>\n<p>You can then use the <a href=\"https:\/\/registry.terraform.io\/providers\/hashicorp\/aws\/latest\/docs\/resources\/cloudwatch_dashboard?ref=albertodebortoli.com\">cloudwatch_dashboard<\/a> resource in Terraform:<\/p>\n<pre><code>resource \"aws_cloudwatch_dashboard\" \"mac_instances\" {\n  dashboard_name = \"mac-instances\"\n  dashboard_body = file(\".\/cw-dashboard-mac-instances.json\")\n}<\/code><\/pre>\n<p>It will show something like this:<\/p>\n<figure class=\"kg-card kg-image-card kg-width-wide\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/storage.ghost.io\/c\/ae\/f4\/aef4d625-32a2-417b-86f4-22c70a9b47a1\/content\/images\/2023\/08\/Screenshot-2023-08-06-at-13.43.09.png?resize=1280%2C1004&#038;ssl=1\" class=\"kg-image\" alt=\"CloudWatch dashboards and alarms on Mac instances\" loading=\"lazy\" width=\"1280\" height=\"1004\" srcset=\"https:\/\/storage.ghost.io\/c\/ae\/f4\/aef4d625-32a2-417b-86f4-22c70a9b47a1\/content\/images\/size\/w600\/2023\/08\/Screenshot-2023-08-06-at-13.43.09.png 600w, https:\/\/storage.ghost.io\/c\/ae\/f4\/aef4d625-32a2-417b-86f4-22c70a9b47a1\/content\/images\/size\/w1000\/2023\/08\/Screenshot-2023-08-06-at-13.43.09.png 1000w, https:\/\/storage.ghost.io\/c\/ae\/f4\/aef4d625-32a2-417b-86f4-22c70a9b47a1\/content\/images\/size\/w1600\/2023\/08\/Screenshot-2023-08-06-at-13.43.09.png 1600w, https:\/\/storage.ghost.io\/c\/ae\/f4\/aef4d625-32a2-417b-86f4-22c70a9b47a1\/content\/images\/size\/w2400\/2023\/08\/Screenshot-2023-08-06-at-13.43.09.png 2400w\" sizes=\"auto, (min-width: 1200px) 1200px\"><\/figure>\n<h3 id=\"setup-cloudwatch-alarms\">Setup CloudWatch alarms<\/h3>\n<p>Once the dashboard is up, you should set up alarms so that you are notified of any anomalies, rather than actively monitoring the dashboard for them.<\/p>\n<p>What works for me is having alarms triggered via email when the used disk space is going above a certain level (say 80%). We can use the <a href=\"https:\/\/registry.terraform.io\/providers\/hashicorp\/aws\/latest\/docs\/resources\/cloudwatch_metric_alarm?ref=albertodebortoli.com\">cloudwatch_metric_alarm<\/a> resource.<\/p>\n<pre><code>resource \"aws_cloudwatch_metric_alarm\" \"disk_usage\" {\n  alarm_name          = \"mac-${aws_instance.mac_instance.id}-disk-usage\"\n  comparison_operator = \"GreaterThanThreshold\"\n  evaluation_periods  = 30\n  metric_name         = \"disk_used_percent\"\n  namespace           = \"CWAgent\"\n  period              = 120\n  statistic           = \"Average\"\n  threshold           = 80\n  alarm_actions       = [aws_sns_topic.disk_usage.arn]\n  dimensions = {\n    InstanceId = aws_instance.mac_instance.id\n  }\n}\n<\/code><\/pre>\n<p>We can then create an SNS topic and subscribe all interested parties to it. This will allow us to broadcast to all subscribers when the alarm is triggered. For this, we can use the <a href=\"https:\/\/registry.terraform.io\/providers\/hashicorp\/aws\/latest\/docs\/resources\/sns_topic?ref=albertodebortoli.com\">sns_topic<\/a> and <a href=\"https:\/\/registry.terraform.io\/providers\/hashicorp\/aws\/latest\/docs\/resources\/sns_topic_subscription?ref=albertodebortoli.com\">sns_topic_subscription<\/a> resources.<\/p>\n<pre><code>resource \"aws_sns_topic\" \"disk_usage\" {\n  name = \"CW_Alarm_disk_usage_mac_${aws_instance.mac_instance.id}\"\n}\n\nresource \"aws_sns_topic_subscription\" \"disk_usage\" {\n  for_each  = toset(var.alarm_subscriber_emails)\n  topic_arn = aws_sns_topic.disk_usage.arn\n  protocol  = \"email\"\n  endpoint  = each.value\n}\n\nvariable \"alarm_subscriber_emails\" {\n  type = list(string)\n}<\/code><\/pre>\n<p>If you are deploying your infrastructure via <a href=\"https:\/\/github.com\/features\/actions?ref=albertodebortoli.com\">GitHub Actions<\/a>, you can set your subscribers as a workflow input or as an environment variable. Here is how you should pass a list of strings via a variable in Terraform:<\/p>\n<pre><code>name: Deploy Mac instance\n\nenv:\n  ALARM_SUBSCRIBERS: '[\"user1@example.com\",\"user2@example.com\"]'\n  AMI: ...\n  \njobs:\n  deploy:\n    ...\n    steps:\n      - name: Terraform apply\n        run: |\n          terraform apply \n            --var ami=${{ env.AMI }} \n            --var alarm_subscriber_emails='${{ env.ALARM_SUBSCRIBERS }}' \n            --auto-approve<\/code><\/pre>\n<h3 id=\"setup-iam-permissions\">Setup IAM permissions<\/h3>\n<p>The instance that performs the deployment requires permissions for CloudWatch, System Manager, and SNS.<\/p>\n<p>The following is a policy that is enough to perform both <code>terraform apply<\/code> and <code>terraform destroy<\/code>. Please consider restricting to specific resources. <\/p>\n<pre><code>{\n    \"Version\": \"2012-10-17\",\n    \"Statement\": [\n        {\n            \"Sid\": \"CloudWatchDashboardsPermissions\",\n            \"Effect\": \"Allow\",\n            \"Action\": [\n                \"cloudwatch:DeleteDashboards\",\n                \"cloudwatch:GetDashboard\",\n                \"cloudwatch:ListDashboards\",\n                \"cloudwatch:PutDashboard\"\n            ],\n            \"Resource\": \"*\"\n        },\n        {\n            \"Sid\": \"CloudWatchAlertsPermissions\",\n            \"Effect\": \"Allow\",\n            \"Action\": [\n                \"cloudwatch:DescribeAlarms\",\n                \"cloudwatch:DescribeAlarmsForMetric\",\n                \"cloudwatch:DescribeAlarmHistory\",\n                \"cloudwatch:DeleteAlarms\",\n                \"cloudwatch:DisableAlarmActions\",\n                \"cloudwatch:EnableAlarmActions\",\n                \"cloudwatch:ListTagsForResource\",\n                \"cloudwatch:PutMetricAlarm\",\n                \"cloudwatch:PutCompositeAlarm\",\n                \"cloudwatch:SetAlarmState\"\n            ],\n            \"Resource\": \"*\"\n        },\n        {\n            \"Sid\": \"SystemsManagerPermissions\",\n            \"Effect\": \"Allow\",\n            \"Action\": [\n                \"ssm:GetParameter\",\n                \"ssm:GetParameters\",\n                \"ssm:ListTagsForResource\",\n                \"ssm:DeleteParameter\",\n                \"ssm:DescribeParameters\",\n                \"ssm:PutParameter\"\n            ],\n            \"Resource\": \"*\"\n        },\n        {\n            \"Sid\": \"SNSPermissions\",\n            \"Effect\": \"Allow\",\n            \"Action\": [\n                \"sns:CreateTopic\",\n                \"sns:DeleteTopic\",\n                \"sns:GetTopicAttributes\",\n                \"sns:GetSubscriptionAttributes\",\n                \"sns:ListSubscriptions\",\n                \"sns:ListSubscriptionsByTopic\",\n                \"sns:ListTopics\",\n                \"sns:SetSubscriptionAttributes\",\n                \"sns:SetTopicAttributes\",\n                \"sns:Subscribe\",\n                \"sns:Unsubscribe\"\n            ],\n            \"Resource\": \"*\"\n        }\n    ]\n}\n<\/code><\/pre>\n<p>On the other hand, to send logs to CloudWatch, the Mac instances require permissions given by the <code>CloudWatchAgentServerPolicy<\/code>:<\/p>\n<pre><code>resource \"aws_iam_role_policy_attachment\" \"mac_instance_iam_role_cw_policy_attachment\" {\n  role       = aws_iam_role.mac_instance_iam_role.name\n  policy_arn = \"arn:aws:iam::aws:policy\/CloudWatchAgentServerPolicy\"\n}<\/code><\/pre>\n<h3 id=\"conclusion\">Conclusion<\/h3>\n<p>You have now defined your CloudWatch dashboard and alarms using &#8220;Infrastructure as Code&#8221; via Packer and Terraform. I&#8217;ve covered the common use case of instances running out of space on disk which is useful to catch before CI starts becoming unresponsive slowing your team down.<\/p>\n<\/div>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_1888\" class=\"pvc_stats total_only  \" data-element-id=\"1888\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.0\" viewBox=\"0 0 502 315\" preserveAspectRatio=\"xMidYMid meet\"><g transform=\"translate(0,332) scale(0.1,-0.1)\" fill=\"\" stroke=\"none\"><path d=\"M2394 3279 l-29 -30 -3 -207 c-2 -182 0 -211 15 -242 39 -76 157 -76 196 0 15 31 17 60 15 243 l-3 209 -33 29 c-26 23 -41 29 -80 29 -41 0 -53 -5 -78 -31z\"\/><path d=\"M3085 3251 c-45 -19 -58 -50 -96 -229 -47 -217 -49 -260 -13 -295 52 -53 146 -42 177 20 16 31 87 366 87 410 0 70 -86 122 -155 94z\"\/><path d=\"M1751 3234 c-13 -9 -29 -31 -37 -50 -12 -29 -10 -49 21 -204 19 -94 39 -189 45 -210 14 -50 54 -80 110 -80 34 0 48 6 76 34 21 21 34 44 34 59 0 14 -18 113 -40 219 -37 178 -43 195 -70 221 -36 32 -101 37 -139 11z\"\/><path d=\"M1163 3073 c-36 -7 -73 -59 -73 -102 0 -56 133 -378 171 -413 34 -32 83 -37 129 -13 70 36 67 87 -16 290 -86 209 -89 214 -129 231 -35 14 -42 15 -82 7z\"\/><path d=\"M3689 3066 c-15 -9 -33 -30 -42 -48 -48 -103 -147 -355 -147 -375 0 -98 131 -148 192 -74 13 15 57 108 97 206 80 196 84 226 37 273 -30 30 -99 39 -137 18z\"\/><path d=\"M583 2784 c-38 -19 -67 -74 -58 -113 9 -42 211 -354 242 -373 16 -10 45 -18 66 -18 51 0 107 52 107 100 0 39 -1 41 -124 234 -80 126 -108 162 -133 173 -41 17 -61 16 -100 -3z\"\/><path d=\"M4250 2784 c-14 -9 -74 -91 -133 -183 -95 -150 -107 -173 -107 -213 0 -55 33 -94 87 -104 67 -13 90 8 211 198 130 202 137 225 78 284 -27 27 -42 34 -72 34 -22 0 -50 -8 -64 -16z\"\/><path d=\"M2275 2693 c-553 -48 -1095 -270 -1585 -649 -135 -104 -459 -423 -483 -476 -23 -49 -22 -139 2 -186 73 -142 361 -457 571 -626 285 -228 642 -407 990 -497 242 -63 336 -73 660 -74 310 0 370 5 595 52 535 111 1045 392 1455 803 122 121 250 273 275 326 19 41 19 137 0 174 -41 79 -309 363 -465 492 -447 370 -946 591 -1479 653 -113 14 -422 18 -536 8z m395 -428 c171 -34 330 -124 456 -258 112 -119 167 -219 211 -378 27 -96 24 -300 -5 -401 -72 -255 -236 -447 -474 -557 -132 -62 -201 -76 -368 -76 -167 0 -236 14 -368 76 -213 98 -373 271 -451 485 -162 444 86 934 547 1084 153 49 292 57 452 25z m909 -232 c222 -123 408 -262 593 -441 76 -74 138 -139 138 -144 0 -16 -233 -242 -330 -319 -155 -123 -309 -223 -461 -299 l-81 -41 32 46 c18 26 49 83 70 128 143 306 141 649 -6 957 -25 52 -61 116 -79 142 l-34 47 45 -20 c26 -10 76 -36 113 -56z m-2057 25 c-40 -58 -105 -190 -130 -263 -110 -324 -59 -707 132 -981 25 -35 42 -64 37 -64 -19 0 -241 119 -326 174 -188 122 -406 314 -532 468 l-58 71 108 103 c185 178 428 349 672 473 66 33 121 60 123 61 2 0 -10 -19 -26 -42z\"\/><path d=\"M2375 1950 c-198 -44 -350 -190 -395 -379 -18 -76 -8 -221 19 -290 114 -284 457 -406 731 -260 98 52 188 154 231 260 27 69 37 214 19 290 -38 163 -166 304 -326 360 -67 23 -215 33 -279 19z\"\/><\/g><\/svg><\/i> <img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/i0.wp.com\/dev95.site\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif?resize=16%2C16&#038;ssl=1\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>CloudWatch is great for observing and monitoring resources and applications on AWS, on premises, and on other clouds. While it&#8217;s trivial to have the agent running on Linux, it&#8217;s a bit more involved for mac instances (which are commonly used<\/p>\n<div class=\"hosteria-entry-more\"><a href=\"https:\/\/dev95.site\/ar\/cloudwatch-dashboards-and-alarms-on-mac-instances\/\" class=\"no-underline font-light  group-hover:text-primary-800 dark:group-hover:text-primary-300 py-1\">Read more &gt;&gt;&gt;<\/a><\/div>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_1888\" class=\"pvc_stats total_only\" data-element-id=\"1888\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" version=\"1.0\" viewbox=\"0 0 502 315\" preserveaspectratio=\"xMidYMid meet\"><g transform=\"translate(0,332) scale(0.1,-0.1)\" fill=\"\" stroke=\"none\"><path d=\"M2394 3279 l-29 -30 -3 -207 c-2 -182 0 -211 15 -242 39 -76 157 -76 196 0 15 31 17 60 15 243 l-3 209 -33 29 c-26 23 -41 29 -80 29 -41 0 -53 -5 -78 -31z\"\/><path d=\"M3085 3251 c-45 -19 -58 -50 -96 -229 -47 -217 -49 -260 -13 -295 52 -53 146 -42 177 20 16 31 87 366 87 410 0 70 -86 122 -155 94z\"\/><path d=\"M1751 3234 c-13 -9 -29 -31 -37 -50 -12 -29 -10 -49 21 -204 19 -94 39 -189 45 -210 14 -50 54 -80 110 -80 34 0 48 6 76 34 21 21 34 44 34 59 0 14 -18 113 -40 219 -37 178 -43 195 -70 221 -36 32 -101 37 -139 11z\"\/><path d=\"M1163 3073 c-36 -7 -73 -59 -73 -102 0 -56 133 -378 171 -413 34 -32 83 -37 129 -13 70 36 67 87 -16 290 -86 209 -89 214 -129 231 -35 14 -42 15 -82 7z\"\/><path d=\"M3689 3066 c-15 -9 -33 -30 -42 -48 -48 -103 -147 -355 -147 -375 0 -98 131 -148 192 -74 13 15 57 108 97 206 80 196 84 226 37 273 -30 30 -99 39 -137 18z\"\/><path d=\"M583 2784 c-38 -19 -67 -74 -58 -113 9 -42 211 -354 242 -373 16 -10 45 -18 66 -18 51 0 107 52 107 100 0 39 -1 41 -124 234 -80 126 -108 162 -133 173 -41 17 -61 16 -100 -3z\"\/><path d=\"M4250 2784 c-14 -9 -74 -91 -133 -183 -95 -150 -107 -173 -107 -213 0 -55 33 -94 87 -104 67 -13 90 8 211 198 130 202 137 225 78 284 -27 27 -42 34 -72 34 -22 0 -50 -8 -64 -16z\"\/><path d=\"M2275 2693 c-553 -48 -1095 -270 -1585 -649 -135 -104 -459 -423 -483 -476 -23 -49 -22 -139 2 -186 73 -142 361 -457 571 -626 285 -228 642 -407 990 -497 242 -63 336 -73 660 -74 310 0 370 5 595 52 535 111 1045 392 1455 803 122 121 250 273 275 326 19 41 19 137 0 174 -41 79 -309 363 -465 492 -447 370 -946 591 -1479 653 -113 14 -422 18 -536 8z m395 -428 c171 -34 330 -124 456 -258 112 -119 167 -219 211 -378 27 -96 24 -300 -5 -401 -72 -255 -236 -447 -474 -557 -132 -62 -201 -76 -368 -76 -167 0 -236 14 -368 76 -213 98 -373 271 -451 485 -162 444 86 934 547 1084 153 49 292 57 452 25z m909 -232 c222 -123 408 -262 593 -441 76 -74 138 -139 138 -144 0 -16 -233 -242 -330 -319 -155 -123 -309 -223 -461 -299 l-81 -41 32 46 c18 26 49 83 70 128 143 306 141 649 -6 957 -25 52 -61 116 -79 142 l-34 47 45 -20 c26 -10 76 -36 113 -56z m-2057 25 c-40 -58 -105 -190 -130 -263 -110 -324 -59 -707 132 -981 25 -35 42 -64 37 -64 -19 0 -241 119 -326 174 -188 122 -406 314 -532 468 l-58 71 108 103 c185 178 428 349 672 473 66 33 121 60 123 61 2 0 -10 -19 -26 -42z\"\/><path d=\"M2375 1950 c-198 -44 -350 -190 -395 -379 -18 -76 -8 -221 19 -290 114 -284 457 -406 731 -260 98 52 188 154 231 260 27 69 37 214 19 290 -38 163 -166 304 -326 360 -67 23 -215 33 -279 19z\"\/><\/g><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/dev95.site\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=\"0\" \/><\/p>\n<div class=\"pvc_clear\"><\/div>","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fp_fajr_begins":"","fp_fajr_iqamah":"","fp_dhuhr_begins":"","fp_dhuhr_iqamah":"","fp_asr_begins":"","fp_asr_iqamah":"","fp_maghrib_begins":"","fp_maghrib_iqamah":"","fp_isha_begins":"","fp_isha_iqamah":"","fp_midnight":"","fp_midnight_name":"","fp_sunrise":"","fp_single_prayer_begins_title":"","fp_single_prayer_iqamah_title":"","fp_prayer_times_for_today":"","fp_hijra_date":"","fp_fajr_name":"","fp_dhuhr_name":"","fp_asr_name":"","fp_maghrib_name":"","fp_isha_name":"","fp_sunrise_name":"","fp_currentDate":"","fp_current_time":"","fp_current_title":"","fp_current_location":"","fp_masjid_name":"","fp_prayer_title":"","fp_next_prayer_iqamah_time":"","fp_next_prayer_iqamah_title":"","fp_next_prayer_begins_time":"","fp_next_prayer_begins_title":"","fp_next_prayer_title":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[37],"tags":[],"class_list":["post-1888","post","type-post","status-publish","format-standard","hentry","category-posts"],"a3_pvc":{"activated":true,"total_views":1,"today_views":1},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>CloudWatch dashboards and alarms on Mac instances - Dev95<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dev95.site\/ar\/cloudwatch-dashboards-and-alarms-on-mac-instances\/\" \/>\n<meta property=\"og:locale\" content=\"ar_AR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"CloudWatch dashboards and alarms on Mac instances - Dev95\" \/>\n<meta property=\"og:description\" content=\"CloudWatch is great for observing and monitoring resources and applications on AWS, on premises, and on other clouds. While it&#8217;s trivial to have the agent running on Linux, it&#8217;s a bit more involved for mac instances (which are commonly usedRead more &gt;&gt;&gt;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dev95.site\/ar\/cloudwatch-dashboards-and-alarms-on-mac-instances\/\" \/>\n<meta property=\"og:site_name\" content=\"Dev95\" \/>\n<meta property=\"article:published_time\" content=\"2023-08-06T14:24:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/storage.ghost.io\/c\/ae\/f4\/aef4d625-32a2-417b-86f4-22c70a9b47a1\/content\/images\/2026\/09\/ChatGPT-Image-Sep-10--2026--10_53_38-AM.png\" \/>\n<meta name=\"author\" content=\"dev95\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u0643\u064f\u062a\u0628 \u0628\u0648\u0627\u0633\u0637\u0629\" \/>\n\t<meta name=\"twitter:data1\" content=\"dev95\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u0648\u0642\u062a \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u064f\u0642\u062f\u0651\u0631\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 \u062f\u0642\u0627\u0626\u0642\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/dev95.site\\\/cloudwatch-dashboards-and-alarms-on-mac-instances\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/cloudwatch-dashboards-and-alarms-on-mac-instances\\\/\"},\"author\":{\"name\":\"dev95\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#\\\/schema\\\/person\\\/b807805ffe2916206b04d0938bce0298\"},\"headline\":\"CloudWatch dashboards and alarms on Mac instances\",\"datePublished\":\"2023-08-06T14:24:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/cloudwatch-dashboards-and-alarms-on-mac-instances\\\/\"},\"wordCount\":777,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/cloudwatch-dashboards-and-alarms-on-mac-instances\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/storage.ghost.io\\\/c\\\/ae\\\/f4\\\/aef4d625-32a2-417b-86f4-22c70a9b47a1\\\/content\\\/images\\\/2026\\\/09\\\/ChatGPT-Image-Sep-10--2026--10_53_38-AM.png\",\"articleSection\":[\"Posts\"],\"inLanguage\":\"ar\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/dev95.site\\\/cloudwatch-dashboards-and-alarms-on-mac-instances\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/dev95.site\\\/cloudwatch-dashboards-and-alarms-on-mac-instances\\\/\",\"url\":\"https:\\\/\\\/dev95.site\\\/cloudwatch-dashboards-and-alarms-on-mac-instances\\\/\",\"name\":\"CloudWatch dashboards and alarms on Mac instances - Dev95\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/cloudwatch-dashboards-and-alarms-on-mac-instances\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/cloudwatch-dashboards-and-alarms-on-mac-instances\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/storage.ghost.io\\\/c\\\/ae\\\/f4\\\/aef4d625-32a2-417b-86f4-22c70a9b47a1\\\/content\\\/images\\\/2026\\\/09\\\/ChatGPT-Image-Sep-10--2026--10_53_38-AM.png\",\"datePublished\":\"2023-08-06T14:24:43+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/cloudwatch-dashboards-and-alarms-on-mac-instances\\\/#breadcrumb\"},\"inLanguage\":\"ar\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/dev95.site\\\/cloudwatch-dashboards-and-alarms-on-mac-instances\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ar\",\"@id\":\"https:\\\/\\\/dev95.site\\\/cloudwatch-dashboards-and-alarms-on-mac-instances\\\/#primaryimage\",\"url\":\"https:\\\/\\\/storage.ghost.io\\\/c\\\/ae\\\/f4\\\/aef4d625-32a2-417b-86f4-22c70a9b47a1\\\/content\\\/images\\\/2026\\\/09\\\/ChatGPT-Image-Sep-10--2026--10_53_38-AM.png\",\"contentUrl\":\"https:\\\/\\\/storage.ghost.io\\\/c\\\/ae\\\/f4\\\/aef4d625-32a2-417b-86f4-22c70a9b47a1\\\/content\\\/images\\\/2026\\\/09\\\/ChatGPT-Image-Sep-10--2026--10_53_38-AM.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/dev95.site\\\/cloudwatch-dashboards-and-alarms-on-mac-instances\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/dev95.site\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"CloudWatch dashboards and alarms on Mac instances\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#website\",\"url\":\"https:\\\/\\\/dev95.site\\\/\",\"name\":\"Dev95\",\"description\":\"A comprehensive platform for data and knowledge, delivering reliable content that meets the aspirations of readers and enthusiasts.\",\"publisher\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/dev95.site\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ar\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#organization\",\"name\":\"Dev95\",\"url\":\"https:\\\/\\\/dev95.site\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ar\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/dev95.site\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/rbrrbr-6.png?fit=512%2C512&ssl=1\",\"contentUrl\":\"https:\\\/\\\/i0.wp.com\\\/dev95.site\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/rbrrbr-6.png?fit=512%2C512&ssl=1\",\"width\":512,\"height\":512,\"caption\":\"Dev95\"},\"image\":{\"@id\":\"https:\\\/\\\/dev95.site\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/dev95.site\\\/#\\\/schema\\\/person\\\/b807805ffe2916206b04d0938bce0298\",\"name\":\"dev95\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ar\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g\",\"caption\":\"dev95\"},\"url\":\"https:\\\/\\\/dev95.site\\\/ar\\\/author\\\/mohammad\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"CloudWatch dashboards and alarms on Mac instances - Dev95","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/dev95.site\/ar\/cloudwatch-dashboards-and-alarms-on-mac-instances\/","og_locale":"ar_AR","og_type":"article","og_title":"CloudWatch dashboards and alarms on Mac instances - Dev95","og_description":"CloudWatch is great for observing and monitoring resources and applications on AWS, on premises, and on other clouds. While it&#8217;s trivial to have the agent running on Linux, it&#8217;s a bit more involved for mac instances (which are commonly usedRead more &gt;&gt;&gt;","og_url":"https:\/\/dev95.site\/ar\/cloudwatch-dashboards-and-alarms-on-mac-instances\/","og_site_name":"Dev95","article_published_time":"2023-08-06T14:24:43+00:00","og_image":[{"url":"https:\/\/storage.ghost.io\/c\/ae\/f4\/aef4d625-32a2-417b-86f4-22c70a9b47a1\/content\/images\/2026\/09\/ChatGPT-Image-Sep-10--2026--10_53_38-AM.png","type":"","width":"","height":""}],"author":"dev95","twitter_card":"summary_large_image","twitter_misc":{"\u0643\u064f\u062a\u0628 \u0628\u0648\u0627\u0633\u0637\u0629":"dev95","\u0648\u0642\u062a \u0627\u0644\u0642\u0631\u0627\u0621\u0629 \u0627\u0644\u0645\u064f\u0642\u062f\u0651\u0631":"7 \u062f\u0642\u0627\u0626\u0642"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/dev95.site\/cloudwatch-dashboards-and-alarms-on-mac-instances\/#article","isPartOf":{"@id":"https:\/\/dev95.site\/cloudwatch-dashboards-and-alarms-on-mac-instances\/"},"author":{"name":"dev95","@id":"https:\/\/dev95.site\/#\/schema\/person\/b807805ffe2916206b04d0938bce0298"},"headline":"CloudWatch dashboards and alarms on Mac instances","datePublished":"2023-08-06T14:24:43+00:00","mainEntityOfPage":{"@id":"https:\/\/dev95.site\/cloudwatch-dashboards-and-alarms-on-mac-instances\/"},"wordCount":777,"commentCount":0,"publisher":{"@id":"https:\/\/dev95.site\/#organization"},"image":{"@id":"https:\/\/dev95.site\/cloudwatch-dashboards-and-alarms-on-mac-instances\/#primaryimage"},"thumbnailUrl":"https:\/\/storage.ghost.io\/c\/ae\/f4\/aef4d625-32a2-417b-86f4-22c70a9b47a1\/content\/images\/2026\/09\/ChatGPT-Image-Sep-10--2026--10_53_38-AM.png","articleSection":["Posts"],"inLanguage":"ar","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/dev95.site\/cloudwatch-dashboards-and-alarms-on-mac-instances\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/dev95.site\/cloudwatch-dashboards-and-alarms-on-mac-instances\/","url":"https:\/\/dev95.site\/cloudwatch-dashboards-and-alarms-on-mac-instances\/","name":"CloudWatch dashboards and alarms on Mac instances - Dev95","isPartOf":{"@id":"https:\/\/dev95.site\/#website"},"primaryImageOfPage":{"@id":"https:\/\/dev95.site\/cloudwatch-dashboards-and-alarms-on-mac-instances\/#primaryimage"},"image":{"@id":"https:\/\/dev95.site\/cloudwatch-dashboards-and-alarms-on-mac-instances\/#primaryimage"},"thumbnailUrl":"https:\/\/storage.ghost.io\/c\/ae\/f4\/aef4d625-32a2-417b-86f4-22c70a9b47a1\/content\/images\/2026\/09\/ChatGPT-Image-Sep-10--2026--10_53_38-AM.png","datePublished":"2023-08-06T14:24:43+00:00","breadcrumb":{"@id":"https:\/\/dev95.site\/cloudwatch-dashboards-and-alarms-on-mac-instances\/#breadcrumb"},"inLanguage":"ar","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dev95.site\/cloudwatch-dashboards-and-alarms-on-mac-instances\/"]}]},{"@type":"ImageObject","inLanguage":"ar","@id":"https:\/\/dev95.site\/cloudwatch-dashboards-and-alarms-on-mac-instances\/#primaryimage","url":"https:\/\/storage.ghost.io\/c\/ae\/f4\/aef4d625-32a2-417b-86f4-22c70a9b47a1\/content\/images\/2026\/09\/ChatGPT-Image-Sep-10--2026--10_53_38-AM.png","contentUrl":"https:\/\/storage.ghost.io\/c\/ae\/f4\/aef4d625-32a2-417b-86f4-22c70a9b47a1\/content\/images\/2026\/09\/ChatGPT-Image-Sep-10--2026--10_53_38-AM.png"},{"@type":"BreadcrumbList","@id":"https:\/\/dev95.site\/cloudwatch-dashboards-and-alarms-on-mac-instances\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dev95.site\/"},{"@type":"ListItem","position":2,"name":"CloudWatch dashboards and alarms on Mac instances"}]},{"@type":"WebSite","@id":"https:\/\/dev95.site\/#website","url":"https:\/\/dev95.site\/","name":"Dev95","description":"A comprehensive platform for data and knowledge, delivering reliable content that meets the aspirations of readers and enthusiasts.","publisher":{"@id":"https:\/\/dev95.site\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dev95.site\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ar"},{"@type":"Organization","@id":"https:\/\/dev95.site\/#organization","name":"Dev95","url":"https:\/\/dev95.site\/","logo":{"@type":"ImageObject","inLanguage":"ar","@id":"https:\/\/dev95.site\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/dev95.site\/wp-content\/uploads\/2026\/07\/rbrrbr-6.png?fit=512%2C512&ssl=1","contentUrl":"https:\/\/i0.wp.com\/dev95.site\/wp-content\/uploads\/2026\/07\/rbrrbr-6.png?fit=512%2C512&ssl=1","width":512,"height":512,"caption":"Dev95"},"image":{"@id":"https:\/\/dev95.site\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/dev95.site\/#\/schema\/person\/b807805ffe2916206b04d0938bce0298","name":"dev95","image":{"@type":"ImageObject","inLanguage":"ar","@id":"https:\/\/secure.gravatar.com\/avatar\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a70a73d950838b20cd80d7ebdc955737e802e8cd896044c5473b32b946c0662a?s=96&d=mm&r=g","caption":"dev95"},"url":"https:\/\/dev95.site\/ar\/author\/mohammad\/"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/posts\/1888","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/comments?post=1888"}],"version-history":[{"count":0,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/posts\/1888\/revisions"}],"wp:attachment":[{"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/media?parent=1888"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/categories?post=1888"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dev95.site\/ar\/wp-json\/wp\/v2\/tags?post=1888"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}