Wie man Linux Log Daten an AWS CloudWatch sendet

AWS CloudWatch ist ein Überwachungsdienst, der von der AWS-Wolke bereitgestellt wird. AWS bietet Standard-Monitoring für Server-Parameter wie CPU-Auslastung, Network In, Network Out, etc. AWS CloudWatch kann für benutzerdefinierte Überwachung wie Festplattenauslastung und Speicher (RAM)-Nutzung verwendet werden. Für die benutzerdefinierte Überwachung müssen wir einige Schritte befolgen, um sie zu überwachen.

Auf die gleiche Weise kann AWS CloudWatch zur Überwachung der Server- oder Anwendungsprotokolle verwendet werden. Da dies aus offensichtlichen Gründen keine Standardfunktion von AWS ist, können wir es entsprechend unseren Anforderungen konfigurieren. Es hängt vom Benutzer ab, welche Protokolle wir zur Überwachung an AWS CloudWatch senden müssen.

Nicht auf AWS-Ressourcen beschränkt

Auch wenn AWS CloudWatch ein AWS-Service ist, bedeutet dies nicht, dass er nur für die EC2-Instanzen verwendet werden kann, er kann auch so konfiguriert werden, dass er Anwendungs- oder Serverprotokolle von den VMs anderer Cloud-Anbieter und auch von den VMs auf dem physischen Laufwerk sendet.

Wie man Anwendungs- oder Serverprotokolle an AWS CloudWatch sendet

Um die Anwendungs- oder Serverprotokolle an AWS CloudWatch zu senden, müssen wir den CloudWatch-Agenten auf dem jeweiligen Server installieren. Wir werden die AWS EC2 Instanz verwenden, um unser Ziel in diesem Blog zu erreichen.

Schritte

  1. Angemessene Rolle, die der Instanz zugewiesen wird, um mit AWS CloudWatch zu kommunizieren
  2. Installation des AWS CloudWatch-Agenten
  3. Konfiguration des AWS CloudWatch-Agenten
  4. Testprotokolle im AWS CloudWatch-Portal

IAM-Rolle

Um die Anwendungs- oder Server-Logs an AWS CloudWatch zu senden, müssen wir der EC2-Instanz eine Rolle mit entsprechenden Berechtigungen zuweisen. Die Rolle erlaubt es, Änderungen in der AWS CloudWatch vorzunehmen.

Sie sollte die folgenden Richtlinien enthalten.

  • CreateLogStream
  • Beschreiben SieLogStream
  • Erstellen einerLogGruppe
  • PutLogVeranstaltungen

Lassen Sie uns eine Rolle in AWS IAM schaffen.

Gehen Sie zum IAM-Abschnitt aus der Liste der Dienste auf der AWS-Konsole. Wenn Sie noch kein AWS-Konto haben, erstellen Sie eines von hier aus.

Wählen Sie IAM aus der Liste der Dienstleistungen

Gehen Sie auf dem IAM-Dashboard auf Policy und dann auf Create Policy.

Wählen Sie auf der Seite „Richtlinie erstellen“ auf der Registerkarte „JSON“ aus und fügen Sie die untenstehende JSON-Richtlinie ein, indem Sie die Standard-Richtlinie entfernen.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogStreams"
    ],
      "Resource": [
        "arn:aws:logs:*:*:*"
    ]
  }
 ]
}

Ihre Richtlinie sollte wie unten aussehen. Wenn Sie fertig sind, klicken Sie auf die Schaltfläche „Richtlinie überprüfen“ unten auf der Seite.

Auf der nächsten Seite müssen Sie den Namen der Richtlinie angeben.

Wenn Sie fertig sind, klicken Sie auf die Schaltfläche „Richtlinie erstellen“ unten auf der Seite.

Sobald Sie eine Richtlinie erstellt haben, werden Sie auf die IAM-Rollenseite weitergeleitet. Da wir die erforderliche Richtlinie bereits erstellt haben, werden wir eine Rolle erstellen, die an die Instanz angehängt wird.

Auf der Seite „Rolle erstellen“ wählen Sie „EC2“. Da wir die Rolle an die Instanz EC2 anhängen werden, wählen Sie „EC2“.

Klicken Sie auf die Seite „Weiter“: Erlaubnis“ unten links auf der Seite.

Auf der nächsten Seite werden Sie aufgefordert, eine Richtlinie an die Rolle anzuhängen. Suchen Sie den Namen der Policy, den Sie im vorherigen Schritt angegeben haben. Wenn Sie ihn gefunden haben, wählen Sie die Richtlinie aus der Liste aus.

Klicken Sie anschließend auf „Weiter“: Tags“ unten auf der Seite.

Auf der nächsten Seite werden Sie aufgefordert, der Rolle einige Tags zu geben. Da dies ein optionaler Schritt ist, gebe ich der Rolle keine Tags und überspringe den Schritt.

Sobald Sie auf „Weiter“ klicken, werden Sie aufgefordert, der Rolle einen Namen zu geben.

Ihre Rolle wird in wenigen Sekunden erstellt.

Nun, da wir das erforderliche Setup von der Infrastrukturseite her abgeschlossen haben, lassen Sie uns den AWS CloudWatch Agent auf der EC2-Instanz konfigurieren.

Für diesen Schritt benötigen Sie eine EC2-Instanz im laufenden Betrieb. Verbinden Sie sich mit der Instanz so, wie Sie es wünschen. Es gibt mehrere Möglichkeiten, sich mit der Instanz zu verbinden. Sie können diese hier überprüfen.

Wenn Sie eine Amazon-Linux-Instanz haben, folgen Sie den unten genannten Schritten.

Wenn Sie sich zum ersten Mal auf der Instanz anmelden, vergewissern Sie sich, dass Sie den unten stehenden Aktualisierungsbefehl ausführen.

Die folgenden Schritte können Sie für Amazon-Linux-Maschinen befolgen.

sudo yum update -y

Sobald das Update abgeschlossen ist, führen Sie den folgenden Befehl aus, um die awslogs Paket.

sudo yum install -y awslogs

Sobald das Paket installiert ist, können Sie die Region in/etc/awslogs/awscli.conf ändern.

Um nun die Protokolle zu konfigurieren, die Sie auf AWS CloudWatch senden möchten, öffnen Sie die Datei /etc/awslogs/awslogs.conf undsuchen Sie nach den folgenden Zeilen.

[/var/log/messages]
datetime_format = %b %d %H:%M:%S
file = /var/log/messages
buffer_duration = 5000
log_stream_name = {instance_id}
initial_position = start_of_file
log_group_name = Amazon-Linux-2

Die obige Konfiguration zeigt an, dass der Pfad der Protokolldatei von Ihrem System /var/log/messagesauf den AWS CloudWatch hochgeladen werden soll. Die obige Konfiguration erstellt eine Log-Gruppe in AWS CloudWatch mit dem Namen, der im Parameter log_group_name erwähnt wird. Außerdem wird sie die im log_stream_name erwähnte Hierarchie haben . Für diePufferzeit können wir den Wert von buffer_duration ändern . Der Standardwertder buffer_duration ist 5000ms.

Sobald Sie die Änderungen vorgenommen haben, starten Sie die Anwendung neu, indem Sie den unten stehenden Befehl ausführen. Dadurch wird die awslog-Anwendung neu gestartet und der Agent beginnt mit dem Hochladen der Protokolle zu AWS CloudWatch.

$ sudo service awslogsd start

Um den AWS CloudWatch-Agenten auf RHEL oder CentOS zu installieren und zu konfigurieren, können Sie die folgenden Schritte ausführen.

Führen Sie den unten stehenden Befehl aus, um das Paket herunterzuladen.

curl https://s3.amazonaws.com/aws-cloudwatch/downloads/latest/awslogs-agent-setup.py -O

Sie finden eine Datei mit dem Namen awslogs-agent-setup.py am aktuellen Speicherort. Da es sich bei der heruntergeladenen Datei um ein Python-Skript handelt, müssen Sie für den nächsten Schritt Python auf Ihrem Rechner installiert haben. Stellen Sie sicher, dass Sie ein Python-Paket installiert haben, und führen Sie dann den unten stehenden Befehl aus. Sie müssen die Region im unten stehenden Befehl angeben. Sie können diese später auch in der Konfiguration ändern, wenn Sie möchten.

python ./awslogs-agent-setup.py --region ap-south-1

Sobald Sie den obigen Befehl ausführen, werden Sie nach einigen Eingaben gefragt. Erwähnen Sie dasselbe wie bei den Anforderungen.

Das obige Skript erzeugt die Konfigurationsdatei/var/awslogs/etc/awslogs.conf erzeugen. Die Angaben, die Sie im Skript gemacht haben, werden in der Konfigurationsdatei gespeichert.

können Sie die Konfigurationsdatei immer noch gemäß Ihren Anforderungen ändern.

Wenn Sie mit allen Änderungen fertig sind, starten Sie den Agenten neu, indem Sie den untenstehenden Befehl ausführen.

# systemctl start awslogs

Verifizieren Sie das konfigurierte Setup

1. Melden Sie sich wieder bei Ihrem AWS-Konto an.

2. Suchen Sie nach CloudWatch in der Liste der Dienste.

3. Wählen Sie die Option Log Group aus den Menüs auf der linken Seite.

4. 4. Suchen Sie nach dem Wert, den Sie im Parameter log_stram_namein der Konfiguration angegeben haben.

5. Sie werden sehen, wie die Protokolle vom Server zu AWS CloudWatch geschoben werden.

Schlussfolgerung

Sie können jede Logdatei von Ihrem Server so einrichten, dass sie an AWS CloudWatch weitergeleitet wird. Dies kann für die Server konfiguriert werden, die sich nicht in der AWS-Cloud befinden. Das heißt, Sie können die Logs von jedem Ihrer Server, der bei Azure, GCP oder einem anderen Cloud-Provider gehostet wird, oder sogar von einem Vor-Ort-Server pushen.

Das könnte dich auch interessieren …