AWS : Cloudwatch Agent & collectd
Cloudwatch liefert ja schon von Haus aus viele Metriken will man jedoch "tiefer" ins System schauen empfiehlt es sich einen anderen Agent zu verwenden (zusätzlich oder den Cloudwatch Agent nur als Bridge)
Ich habe mich für den Weg entschlossen die Metriken von collectd üder den cloudwatch agent in Cloudwatch zu reporten. Dort können dann wie gewohnt Alarme definiert werden.
Als erstes braucht man einen IAM User (Programmatic access) und eine IAM Role die das Recht besitzen in Cloudwatch zu reporten.
Die Role "ServerMonitoring" weißt man dann den EC2 Instanzen zu die in das Monitoring aufgenommen werden müssen.
Jetzt müssen die benötigten Packete heruntergeladen & installiert werden. Mein Beispiel ist für Debian 8 und Debian 9 geeignet. Bei anderen Linux Systemen ist der Ablauf etwas anders. Der Cloudwatch Agent kann auf der Seite ( Install Cloudwatch Agent ) für andere Systeme heruntergeladen werden. Das Github Repo für die collectd-cloudwatch Bridge ist hier GitHub - awslabs
die cloudwatch metriken liefern normalerweise
für das debugen sollte dieses Log verwendert werden.
Quellen :
https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-on-first-instance.html
https://github.com/awslabs/collectd-cloudwatch
https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-custom-metrics-collectd.html
https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create-cloudwatch-agent-configuration-file-wizard.html
Ich habe mich für den Weg entschlossen die Metriken von collectd üder den cloudwatch agent in Cloudwatch zu reporten. Dort können dann wie gewohnt Alarme definiert werden.
Als erstes braucht man einen IAM User (Programmatic access) und eine IAM Role die das Recht besitzen in Cloudwatch zu reporten.
Die Role "ServerMonitoring" weißt man dann den EC2 Instanzen zu die in das Monitoring aufgenommen werden müssen.
Jetzt müssen die benötigten Packete heruntergeladen & installiert werden. Mein Beispiel ist für Debian 8 und Debian 9 geeignet. Bei anderen Linux Systemen ist der Ablauf etwas anders. Der Cloudwatch Agent kann auf der Seite ( Install Cloudwatch Agent ) für andere Systeme heruntergeladen werden. Das Github Repo für die collectd-cloudwatch Bridge ist hier GitHub - awslabs
mkdir -p ~/downloads cd ~/downloads wget https://s3.amazonaws.com/amazoncloudwatch-agent/debian/amd64/latest/amazon-cloudwatch-agent.deb wget https://github.com/awslabs/collectd-cloudwatch/archive/master.zip dpkg -i amazon-cloudwatch-agent.deb unzip master.zipUnter Debian muss man das setup.py script leicht abändern
cd collectd-cloudwatch-master/src/ vi setup.pydort suchen nach
DISTRIBUTION_TO_INSTALLER = { "Ubuntu": APT_INSTALL_COMMAND, "Red Hat Enterprise Linux Server": YUM_INSTALL_COMMAND, "Amazon Linux AMI": YUM_INSTALL_COMMAND, "Amazon Linux": YUM_INSTALL_COMMAND, "CentOS Linux": YUM_INSTALL_COMMAND, }ersetze mit
DISTRIBUTION_TO_INSTALLER = { "Debian GNU": APT_INSTALL_COMMAND, "Ubuntu": APT_INSTALL_COMMAND, "Red Hat Enterprise Linux Server": YUM_INSTALL_COMMAND, "Amazon Linux AMI": YUM_INSTALL_COMMAND, "Amazon Linux": YUM_INSTALL_COMMAND, "CentOS Linux": YUM_INSTALL_COMMAND, }Dann muss collectd installiert werden und die aws cli konfiguriert werden
apt install collectd aws configure (AWS Key & Security Key von monitoring user angeben)jetzt installieren wir noch die bridge
chmod u+x ~/downloads/collectd-cloudwatch-master/src/setup.py ~/downloads/collectd-cloudwatch-master/src/setup.pyjetzt wird das alles noch konfiguriert
/opt/aws/amazon-cloudwatch-agent/amazon-cloudwatch-agent-config-wizard vi /etc/collectd/collectd.conf /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -sdann alles neu starten
systemctl restart amazon-cloudwatch-agent systemctl restart collectdes gibt im plugin cloudwatch-collectd zwei Dateien die jetzt steuern was bei cloudwatch ankommt und was nicht. In der Datei /opt/collectd-plugins/cloudwatch/config/blocked_metrics sind alle aktuell erkannten Metriken gelistet. Möchte man jetzt z.B. das der Speicher (memory) an cloudwatch reportet wird so muss dieser in der Datei whitelist.conf eingetragen werden. z.B. für Speicher (memory--.*) ob eure Werte ankommen oder nicht seht ihr nach einer Tasse Kaffee oder Tee hier in cloudwatch
die cloudwatch metriken liefern normalerweise
df-root-percent_bytes-used memory--percent-used swap--percent-used cpu--percent-activeDas Ergebnis seht ihr hier :
für das debugen sollte dieses Log verwendert werden.
less /var/log/collectd.log
Quellen :
https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/install-CloudWatch-Agent-on-first-instance.html
https://github.com/awslabs/collectd-cloudwatch
https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Agent-custom-metrics-collectd.html
https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/create-cloudwatch-agent-configuration-file-wizard.html