#!/bin/bash

# Skip if already installed and configured
if systemctl is-active --quiet amazon-cloudwatch-agent; then
  echo "CloudWatch Agent already running — skipping setup."
  exit 0
fi

echo "Setting up CloudWatch Agent for log shipping..."

cd /tmp
wget -q https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb
sudo dpkg -i -E amazon-cloudwatch-agent.deb

sudo mkdir -p /opt/aws/amazon-cloudwatch-agent/etc/

sudo tee /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json > /dev/null << 'EOF'
{
  "logs": {
    "logs_collected": {
      "files": {
        "collect_list": [
          {
            "file_path": "/home/ubuntu/.pm2/logs/api-connector-cc-error-*.log",
            "log_group_name": "/connectorclub/api/pm2-error",
            "log_stream_name": "{instance_id}",
            "timezone": "UTC"
          },
          {
            "file_path": "/home/ubuntu/.pm2/logs/api-connector-cc-out-*.log",
            "log_group_name": "/connectorclub/api/pm2-out",
            "log_stream_name": "{instance_id}",
            "timezone": "UTC"
          },
          {
            "file_path": "/home/ubuntu/.pm2/logs/app-connector-cc-error.log",
            "log_group_name": "/connectorclub/app/pm2-error",
            "log_stream_name": "{instance_id}",
            "timezone": "UTC"
          },
          {
            "file_path": "/home/ubuntu/.pm2/logs/app-connector-cc-out.log",
            "log_group_name": "/connectorclub/app/pm2-out",
            "log_stream_name": "{instance_id}",
            "timezone": "UTC"
          },
          {
            "file_path": "/var/log/apache2/error.log",
            "log_group_name": "/connectorclub/apache/error",
            "log_stream_name": "{instance_id}",
            "timezone": "UTC"
          },
          {
            "file_path": "/var/log/apache2/access.log",
            "log_group_name": "/connectorclub/apache/access",
            "log_stream_name": "{instance_id}",
            "timezone": "UTC"
          },
          {
            "file_path": "/var/log/apache2/other_vhosts_access.log",
            "log_group_name": "/connectorclub/apache/other-vhosts",
            "log_stream_name": "{instance_id}",
            "timezone": "UTC"
          }
        ]
      }
    }
  }
}
EOF

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
  -a fetch-config -m ec2 -s \
  -c file:/opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.json

# Ensure log retention is set (prevents indefinite storage growth)
for group in \
  "/connectorclub/api/pm2-error" \
  "/connectorclub/api/pm2-out" \
  "/connectorclub/app/pm2-error" \
  "/connectorclub/app/pm2-out" \
  "/connectorclub/apache/error" \
  "/connectorclub/apache/access" \
  "/connectorclub/apache/other-vhosts"; do
  aws logs put-retention-policy --log-group-name "$group" --retention-in-days 30 --region ap-southeast-1 2>/dev/null || true
done

echo "CloudWatch Agent setup complete."
