This tutorial will guide you through the steps for configuring awslogs agent on an EC2 Ubuntu 16.04 server instance.
Install and Configure AWSLogs
Step1: Update the system and install python.
sudo apt-get update -y sudo apt-get install python
Step2: Download the latest agent installation script.
curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O
Step3: Run the agent setup command with the region parameter. Replace the eu-west-2
with the aws region code where you are operating.
sudo python ./awslogs-agent-setup.py --region us-west-2
Fill in the required parameters when prompted.
Setup AWSLogs as a service
There is no support for creating awslogs as a service in Ubuntu 16.04. So we need to create our own systemd unit file for running it as a service.
1. cd into /etc/systemd/system
directory.
cd /etc/systemd/system
2. Create a file named awslogs.service
vim awslogs.service
3. Copy the following content on the awslogs.service
file.
[Unit] Description=Service for CloudWatch Logs agent After=rc-local.service [Service] Type=simple Restart=always KillMode=process TimeoutSec=infinity PIDFile=/var/awslogs/state/awslogs.pid ExecStart=/var/awslogs/bin/awslogs-agent-launcher.sh --start --background --pidfile $PIDFILE --user awslogs --chuid awslogs & [Install] WantedBy=multi-user.target
4. Now start the agent using the following command.
systemctl start awslogs.service
To stop and restart, you can use the following commands.
systemctl stop awslogs.service systemctl restart awslogs.service
5. To enable awslogs
service on boot, execute the following command.
systemctl enable awslogs.service
3 comments
very good info, it worked
Glad it helped!
Hey DevopsCube Team!
Thanks for the great article. It fails on the last step for me on the Ubuntu EC2 instance I’m using. Error output is this:
Synchronizing state of awslogs.service with SysV init with /lib/systemd/systemd-sysv-install…
Executing /lib/systemd/systemd-sysv-install enable awslogs
insserv: warning: current start runlevel(s) (0 1 2 3 4 5 6) of script `awslogs’ overrides LSB defaults (2 3 4 5).
insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `awslogs’ overrides LSB defaults (0 1 6).
insserv: warning: current start runlevel(s) (0 1 2 3 4 5 6) of script `awslogs’ overrides LSB defaults (2 3 4 5).
insserv: can not symlink(../init.d/awslogs, ../rc2.d/S01awslogs): File exists
insserv: can not symlink(../init.d/awslogs, ../rc3.d/S01awslogs): File exists
insserv: can not symlink(../init.d/awslogs, ../rc4.d/S01awslogs): File exists
insserv: can not symlink(../init.d/awslogs, ../rc5.d/S01awslogs): File exists
Any ideas what the cause may be?
I previously set this up via another method, but am having trouble changing the configuration. See here for the instructions I used: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/QuickStartEC2Instance.html
Best,
Chris