SSM
From DikapediaV2
Run Command Troubleshooting Checklist
- Verify if the instance is online (SSM agent pre-requisites). Is the Agent up to date?
- Verify if SSM document supports the type of instance you want to target (Windows and Linux)
- Ask for command ID and verify the status in SSM K2 page from SSM dashboard or from Admiral page.
- Check the logs and the stdout location:
- The agent also stores the script (_script.ps1) and outputs (stderr and stdout) in the worker (Orchestration) folders located at:
- /var/lib/amazon/ssm/<instanceID>/document/orchestration/<RunCommandId>/plug-in/step_number.plugin>/std*
- The agent also stores the script (_script.ps1) and outputs (stderr and stdout) in the worker (Orchestration) folders located at:
/var/lib/amazon/ssm/< i-xxxxxxxxxxxx>/document/orchestration/<command ID>/awsrunShellScript/[PatchLinux or runInSpecLinux for example]/stdout /var/lib/amazon/ssm/<i-instanceid>/document/orchestration/<command ID>/awsrunShellScript/[PatchLinux or runInSpecLinux for example]/stderr # example: "runInSpecLinux" /var/lib/amazon/ssm/i-0bb46bc5e41a7a36b/document/orchestration/6b141723-0c4b-4726-8770-bc8eed816007/awsrunShellScript/runInSpecLinux/stdout # If the command action is aws:runCommand : /var/lib/amazon/ssm/<i-instanceid>/document/orchestration/<command ID>/awsrunDocument/<stepName>/std*
- Manual execution from instance?
- Check the Run command advanced playbooks.
- Reproduce issue
- Cut a TT/SIM
Logs
- /var/log/amazon/ssm
You can view SSM Agent logs on instances in the following locations:
/var/log/amazon/ssm/amazon-ssm-agent.log /var/log/amazon/ssm/errors.log /var/log/amazon/ssm/audits/amazon-ssm-agent-audit-YYYY-MM-DD
Checking command logs:
here is path (replace instance id and command id)
/var/lib/amazon/ssm/<i-instanceid>/document/orchestration/<command ID>/awsrunShellScript/PatchLinux/stdout /var/lib/amazon/ssm/<i-instanceid>/document/orchestration/<command ID>/awsrunShellScript/PatchLinux/stderr # If the command action is aws:runCommand : /var/lib/amazon/ssm/<i-instanceid>/document/orchestration/<command ID>/awsrunDocument/<stepName>/std*
How to install SSM Agent
Manually install SSM Agent on EC2 instances for Linux https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-manual-agent-install.html
How to reboot managed instance once by using custom Run Command document
Yaml template:
---
description: "Command Document Example JSON Template"
mainSteps:
-
action: "aws:runShellScript"
inputs:
runCommand:
- |-
#!/bin/bash
REBOOT_INDICATOR=/var/lib/amazon/ssm/ssm-reboot-indicator
echo 'Rebooting the host via SSM'
if [ ! -f ${REBOOT_INDICATOR} ]; then
uptime
echo 'rebooting... as the reboot file does not exist'
touch ${REBOOT_INDICATOR}
exit 194
else
echo 'reboot file exist'
ls -l ${REBOOT_INDICATOR}
uptime
rm -f ${REBOOT_INDICATOR}
exit 0
fi
name: example
schemaVersion: "2.2"
- It first checks if the reboot tracker file (/var/lib/amazon/ssm/ssm-reboot-indicator) exists in the 'if' condition. If it does not, then it will create it, run mkfs, and then reboot it by sending out exit 194.
- Once the system reboots, then it will go through the entire script again. Now since the reboot tracker does exist, it will remove the file and return exit 0.
- The use of this if-else statement and the reboot tracker file helps prevent the instance from going into a reboot-loop.
---
description: "Command Document Example JSON Template"
mainSteps:
-
action: "aws:runShellScript"
inputs:
runCommand:
- |-
#!/bin/bash
REBOOT_INDICATOR=/var/lib/amazon/ssm/ssm-reboot-indicator
echo 'Mounting volume and Rebooting the host via SSM'
mount -a
if [ ! -f ${REBOOT_INDICATOR} ]; then
uptime
echo 'Creating filesystem on /dev/nvme1n1'
mkfs -t ext4 /dev/nvme1n1
echo 'rebooting... as the reboot file does not exist'
touch ${REBOOT_INDICATOR}
exit 194
else
echo 'reboot file exist, the server has been rebooted after mounting'
ls -l ${REBOOT_INDICATOR}
uptime
rm -f ${REBOOT_INDICATOR}
exit 0
fi
name: example
schemaVersion: "2.2"