Skip to content

Kõik WordPressist, veebiarendusest — ja mitte ainult

🧠 EC2 mälu ja ketta jälgimine CloudWatch Agentiga: samm-sammuline seadistamine

🧠 EC2 mälu ja ketta jälgimine CloudWatch Agentiga: samm-sammuline seadistamine

Teie EC2 instants lakkas reageerimast, kuid CloudWatch näitab, et kõik on korras? Klassika. AWS pakub vaikimisi protsessori, võrgu ja ketta I/O mõõdikuid, kuid see ei näita mälukasutust ega vaba kettaruumi. Need numbrid on peidus virtuaalmasina sees ja kuni te need välja toote, lendate pimeduses.

Kui mälu saab otsa, siis instants ei hoiatagi; see lihtsalt jookseb kokku. OOM Killer lõpetab protsesse juhuslikus järjekorras ja teile jääb mõistatus: kas plugin ebaõnnestus? Kas andmebaas läks maas? Tegelik põhjus on see, et teil said otsa gigabaidid RAM-i, mida te ei jälginud. Ketas räägib sama lugu: logid, varukoopiad ja ajutised failid täidavad salvestusruumi hääletult ja ühel hommikul näete teadet No space left on device.

Lahendus on CloudWatch Agent, standardne AWS-i agent, mis kogub mälu, ketta, saaleala ja umbes paarikümne muu süsteemimõõdiku andmeid ning saadab need CloudWatchi. Seadistamine võtab 20 minutit ja mahub tasuta paketti (10 kohandatud mõõdikut kuus). Allpool on samm-sammuline juhend alates IAM-ist kuni valmis armatuurlauani.

💡 Kiire ülevaade:

  • Looge IAM-i poliitika cloudwatch:PutMetricData õigusega ja kinnitage see kasutajale
  • Laadige alla ja installige CloudWatch Agent Ubuntu instantsile
  • Seadistage JSON-fail: mälu, ketas, saaleala
  • Käivitage agent ja veenduge, et mõõdikud liiguvad CloudWatchi
  • Looge kohandatud armatuurlaud mälu- ja kettakasutuse graafikutega

AWS-i identiteedi- ja pääsuhaldus

Agent vajab õigusi mõõdikute saatmiseks CloudWatchi. Loome IAM-i poliitika ja kinnitame selle programmilise pääsuga kasutajale.

IAM-i poliitika

Avage IAM-i konsool, minge jaotisse Policies → Create policy ja lülituge JSON vahekaardile. Kleepige see dokument:

1{
2 "Version": "2012-10-17",
3 "Statement": [
4 {
5 "Sid": "CloudWatchAgentMetrics",
6 "Effect": "Allow",
7 "Action": [
8 "cloudwatch:PutMetricData",
9 "ec2:DescribeTags",
10 "cloudwatch:GetMetricStatistics",
11 "cloudwatch:ListMetrics"
12 ],
13 "Resource": "*"
14 }
15 ]
16}

Klõpsake Review policy, sisestage nimi (näiteks CloudWatchAgentPolicy) ja klõpsake Create policy.

IAM-i kasutaja

Minge jaotisse Users → Add user. Sisestage nimi ja veenduge, et märgiksite kasti „Programmatic access"; see annab pääsuvõtme ID ja salajase pääsuvõtme, mida agent autentimiseks kasutab.

IAM-i kasutaja loomine programmilise juurdepääsuga

Õiguste ekraanil valige Attach existing policies directly. Poliitika tüübi filtris valige Customer managed, et leida kiiresti äsja loodud CloudWatchAgentPolicy.

CloudWatchi poliitika kinnitamine IAM-i kasutajale

Märkige poliitika ja klõpsake Next → Create user. AWS kuvab pääsuvõtmed. Salvestage pääsuvõtme ID ja salajane pääsuvõti kohe. Kui sulgete lehe, kaovad võtmed jäädavalt ja peate need uuesti looma.

IAM-i pääsuvõtmed pärast kasutaja loomist

CloudWatch Agenti installimine

Vanad Perli seireskriptid (CloudWatchMonitoringScripts-1.2.2.zip) on juba ammu aegunuks märgitud. Praegune lähenemine on ühtne CloudWatch Agent, mis kogub lisaks mälule ja kettale ka saaleala, protsessori koormuse, võrguliidesed ja umbes paarkümmend muud mõõdikut kohe algusest peale.

Allalaadimine ja installimine

Ühenduge instantsiga SSH kaudu ja laadige alla agendi pakett Ubuntu jaoks:

1wget https://amazoncloudwatch-agent.s3.amazonaws.com/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb

Installige pakett käsuga dpkg:

1sudo dpkg -i amazon-cloudwatch-agent.deb

Kui paketihaldur kurdab puuduvate sõltuvuste üle, installige need ühe käsuga:

1sudo apt-get install -f

Agent on installitud, kuid ei tea veel, milliseid mõõdikuid koguda või milliseid võtmeid CloudWatchi autentimiseks kasutada. Seadistame selle.

Märkus: agent on saadaval ka AWS Systems Manageri (SSM) kaudu. Kui teil on kümneid instantse, on selle tsentraalne juurutamine Run Commandi abil ilma igasse masinasse SSH-d kasutamata mugavam. Ühe või kahe instantsi puhul on käsitsi installimine lihtsam ja kiirem.

Agendi seadistamine

Seadistusfaili loomine

CloudWatch Agenti seadistus on JSON-dokument, mis kirjeldab, milliseid mõõdikuid ja millise intervalliga koguda. Käivitage sisseehitatud viisard:

1sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard

Viisard esitab interaktiivselt mitu küsimust: mis tüüpi server (EC2/kohapealne), kuhu mõõdikuid saata (CloudWatch) ja milliseid mõõdikuid koguda. Mälu ja ketta jälgimiseks vasta järgmiselt:

  • Operatsioonisüsteem: Linux
  • Kas kasutad Amazon EC2?: Jah
  • Milliseid mõõdikuid koguda: Kohandatud mõõdikud (mem ja disk_used_percent)
  • Eraldusvõime: 60 sekundit (Standard)
  • Logifailid: jäta vahele, kui sa logisid ei vaja

Viisard loob config.json faili kataloogis /opt/aws/amazon-cloudwatch-agent/bin/. Siin on minimaalne töötav näide mälu kasutusprotsendi + ketta kasutusprotsendi + saaleala jaoks:

1{
2 "agent": {
3 "metrics_collection_interval": 60,
4 "run_as_user": "root"
5 },
6 "metrics": {
7 "metrics_collected": {
8 "mem": {
9 "measurement": [
10 "mem_used_percent"
11 ]
12 },
13 "disk": {
14 "measurement": [
15 "disk_used_percent"
16 ],
17 "resources": [
18 "/"
19 ]
20 },
21 "swap": {
22 "measurement": [
23 "swap_used_percent"
24 ]
25 }
26 }
27 }
28}

disk parameetri resources määrab ühenduspunkti: "/" on juur-EBS NVMe SSD köide, instantsi peamine salvestusmaht. Kui sul on täiendavaid köiteid (näiteks /data), lisa need massiivi.

Agendi volitused

IAM-i etapis salvestatud pääsuvõtmed tuleb agendile edastada. Loo volitusfail kasutaja kodukataloogi:

1sudo nano /opt/aws/amazon-cloudwatch-agent/etc/amazon-cloudwatch-agent.toml

Lisa see jaotis:

1[credentials]
2 shared_credential_profile = "AmazonCloudWatchAgent"

Seejärel lisa volitused standardsesse AWS-i volitusfaili:

1aws configure --profile AmazonCloudWatchAgent

Süsteem küsib pääsuvõtme ID-d, salajast pääsuvõtit ja piirkonda. Kui oled need täitnud, saab agent mõõdikuid saata sinu loodud IAM-i kasutaja nimel.

Alternatiivne lähenemine on instantsile lisatud IAM-i roll. See on turvalisem (kettale võtmeid ei salvestata) ja skaleerimisel lihtsam. Kui käivitad EC2 koos IAM-i rolliga, millel on cloudwatch:PutMetricData, tuvastab agent õigused automaatselt ja saad volituste etapi vahele jätta.

Testimine

Käivita agent käsitsi ja kontrolli, et mõõdikuid saadetakse:

1sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl \
2 -a fetch-config \
3 -m ec2 \
4 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json \
5 -s

Lipp -s käivitab agendi teenusena. Minuti või paari jooksul ilmuvad esimesed mõõdikud CloudWatchi. Andmevoo kinnitamiseks ava CloudWatchi konsool, mine jaotisse Metrics → All metrics ja leia CWAgent nimeruum (agent kirjutab sinna vaikimisi).

Mõõdikutes navigeerimine CloudWatchi konsoolis

Laienda nimeruumi ja näed InstanceId dimensioone, mis on mõõdikute kaupa jaotatud: mem_used_percent, disk_used_percent ja swap_used_percent. Klõpsa suvalisel real graafiku loomiseks; saad kohe veenduda, et andmed saabuvad ja näevad mõistlikud välja.

Neli põhimõõdikut (mälu, ketas, saaleala, protsessor) kahel instantsil teeb kokku 8 mõõdikut. CloudWatchi tasuta pakett sisaldab 10 kohandatud mõõdikut kuus, nagu on kirjeldatud hinnalehel. Mahud selle piiri sisse. Kui sul on rohkem kui kolm instantsi, ületavad mõned mõõdikud piiri, kuid kulu on tagasihoidlik: 0,30 dollarit mõõdiku kohta kuus (AWS-i andmed 2026. aasta seisuga).

Ajakava seadistamine

Vaikimisi töötab agent systemd teenusena ja saadab mõõdikuid metrics_collection_interval-is määratud intervalliga (meie seadistuses 60 sekundit). Täiendavaid cron-kirjeid pole vaja; systemd tagab, et agent püsib töös ja taaskäivitub, kui see kokku jookseb.

Kontrolli olekut:

1sudo systemctl status amazon-cloudwatch-agent

Veendu, et teenus on active (running) ja käivitamisel lubatud (enabled). Kui ei ole, siis käivita ja luba see:

1sudo systemctl enable amazon-cloudwatch-agent
2sudo systemctl start amazon-cloudwatch-agent

Pärast taaskäivitust käivitub agent automaatselt.

Kogu protsessi visuaalseks demonstratsiooniks IAM-ist kuni armatuurlauani vaata seda videot:

Kohandatud armatuurlaua loomine

Mõõdikud saabuvad; nüüd tuleb need kenasti pakendada. Näitan, kuidas ehitada armatuurlaud toodanguinstantsi jälgimiseks: mälu, ketas, CPU koormus ja krediidijääk (T-seeria puhul) ühel ekraanil.

Armatuurlaua loomine

CloudWatchi konsoolis mine Dashboards → Create dashboard. Sisesta nimi (näiteks Production-EC2) ja vali vidina tüüp.

Uue armatuurlaua loomine CloudWatchis

Vali esimese graafiku jaoks Line; see tüüp sobib kõige paremini mõõdikute ajas kuvamiseks.

Kohandatud armatuurlaua nime sisestamine

Graafiku vidin

Klõpsa Add widget ja vali Line tüüp, lihtne joongraafik ja parim valik enamiku mõõdikute jaoks. Avanevas dialoogis klõpsa Configure ja navigeeri CWAgent nimeruumi.

Joondiagrammi tüübi valimine vidinale

Leia oma instantsi mem_used_percent mõõdik (InstanceId järgi) ja klõpsa real; CloudWatch kuvab kohe graafiku.

Näpunäide: Stacked area tüüp töötab hästi, kui ühel vidinal on mitu mõõdikut (näiteks mälu + saalepind); Number on kasulik hetkeväärtuse kiireks lugemiseks (mugav armatuurlaua nurgas); Text on pealkirjade ja märkmete jaoks graafikute vahel.

Graafiku peenhäälestus

Mõõdikugraafiku seadistamine perioodi valikuga

Mõned seaded, mis muudavad graafiku loetavaks:

  • Period: kui agent saadab mõõdikuid kord minutis, vali 1-minutiline periood, et näha andmete täielikku eraldusvõimet.

  • Title: nimeta graafiku legend ümber millekski inimsõbralikuks, näiteks „RAM kasutatud%", mitte mem_used_percent / i-1234567890abcdef0.

  • Y-axis maximum (Graph options): fikseeri piir (näiteks 100 protsentide või 16 16 GB RAM-i puhul). Ilma selleta skaleerib CloudWatch telge automaatselt ja väike piik näeb välja sama murettekitav kui kriitiline olukord. Fikseeritud piiriga näed ühe pilguga, kui lähedal sa äärele oled.

Graafiku valikute sakk Y-telje maksimumi seadistusega

Klõpsa Create widget; esimene armatuurlaua plokk on valmis. Korda iga mõõdiku jaoks: disk_used_percent, seejärel swap_used_percent, siis cpu_usage (sisseehitatud EC2 mõõdik, mitte CWAgentist) ja CPUCreditBalance T-seeria jaoks. Saad vidinaid lohistada, suurust muuta ja redigeerida. Kui kõik näeb õige välja, klõpsa Save dashboard.

Koostatud armatuurlaua salvestamine CloudWatchis

Armatuurlaud on valmis. Lisa see lemmikutesse (tärn ülemises menüüs) ja naase ühe klõpsuga, kui on vaja enne juurutamist või pärast liikluse hüpet instantsi olekut kontrollida.

⁉️🤔 Korduma kippuvad küsimused

Miks standardsed EC2 mõõdikud ei sisalda mälu ja ketast?

AWS virtualiseerib CPU ja võrgu hüperviisori tasemel; need mõõdikud on kättesaadavad väliselt, ilma külalis-OS-i sisenemata. Mälu ja ketas on virtuaalmasina sisemised ressursid; hüperviisor ei tea neist midagi. Nende nägemiseks vajad agenti OS-i sees, mis loeb /proc/meminfo ja df ning saadab andmed CloudWatchi. Just seda CloudWatch Agent teebki: kord minutis pärib see süsteemiloendureid ja saadab need CWAgent nimeruumi. Täielik nimekiri umbes kahest tosinast mõõdikust on AWS-i ametlikus dokumentatsioonis.

Kui palju see maksab?

Tüüpilise stsenaariumi puhul, kus on 1-2 instantsi, kummalgi 4 mõõdikut, ei maksa see midagi. CloudWatchi tasuta pakett sisaldab 10 kohandatud mõõdikut, 10 häiret ja 3 armatuurlauda konto kohta kuus, vastavalt CloudWatchi hinnakirja lehele. Kaks instantsi 4 mõõdikuga kummalgi võrdub 8 mõõdikuga 10-st tasuta mõõdikust. Kui sul on rohkem kui kolm instantsi, maksab limiidi ületamine 0,30 dollarit mõõdiku kohta kuus. Tosin serveri puhul on see 6-9 dollarit kuus, hind üllatuste vältimise eest kell kolm öösel.

Miks on CloudWatch Agent parem kui vanad Perli skriptid?

Perli skriptid (mon-put-instance-data.pl) on alates 2023. aastast ametlikult iganenuks tunnistatud ega saa enam uuendusi. CloudWatch Agent on ametlikult toetatud tööriist, mis kirjutab mitte ainult CloudWatchi, vaid ka Amazon Managed Prometheusesse; see kogub mõõdikuid StatsD ja collectd kaudu; see võib saata logisid ja jälgi. Mis kõige tähtsam, see integreerub Systems Manageriga, mis tähendab, et saad selle juurutada 50 instantsile ühe käsuga konsoolist, ilma SSH-ta. Kui sul on veel Perli skriptid töös, migreeri: vana awscreds.conf formaat võtmetega lihttekstina kettal on turvaauk. CloudWatch Agent töötab IAM rollidega ega nõua saladuste hoidmist tekstifailis.

Mida teha, kui mõõdikud ei ilmu CloudWatchi?

Kontrolli järjekorras: (1) teenuse olek käsuga systemctl status amazon-cloudwatch-agent, mis peaks olema active; (2) agendi logid asukohas /opt/aws/amazon-cloudwatch-agent/logs/amazon-cloudwatch-agent.log, kust leiad konkreetse vea; (3) IAM õigused, kasutajal või rollil peab olema cloudwatch:PutMetricData õigus; (4) regioon, agent ja konsool peavad osutama samale AWS-i regioonile. Minu kogemuse kohaselt on valdav enamus probleeme kas õigused või regiooni mittevastavus.

Kas ma saan jälgida Windowsi instantse?

Jah, CloudWatch Agent toetab Windows Serverit võrdselt Linuxiga. Paigaldamine toimub MSI paigaldaja kaudu samast S3 ämbrist (amazon-cloudwatch-agent.s3.amazonaws.com/windows/amd64/latest/). Seadistamine kasutab sama JSON-i, kuid mõõdikute nimed erinevad: mem_used_percent asemel kasuta Memory % Committed Bytes In Use. Windowsi seadistusviisard asendab õiged nimed automaatselt.

Mida mälu ja ketta jälgimine praktikas annab

Sa käivitasid CloudWatch Agendi Ubuntu instantsil, seadistasid mälu, ketta ja saalepinna kogumise ning lisasid armatuurlaua graafikutega. Mis muutus? Täpselt üks asi: pime nurk on kadunud. Sa ei näe mitte ainult CPU-d ja võrku, vaid ka kahte peamist instantsi hävitajat: mälulekkeid ja täis kettaid.

Praktikas tähendab see, et märkad mälu hiilimist ülespoole KOLM PÄEVA enne, kui OOM Killer lõpetab PHP-FPM-i. Näed, et ketas sai pärast teema uuendust peaaegu täiesti täis ja tühjendad logid ENNE, kui andmebaas kokku jookseb. Ilma nende mõõdikuteta muutub iga intsident surmajärgseks uurimiseks. Nendega saad hoiatuse kanalisse pool tundi enne katkestust.

Kui sul on rohkem kui kolm instantsi, seadista CloudWatch Alarms läviväärtustel (ütleme, mem_used_percent > 90 5 minuti jooksul) ja ühenda teavitused SNS-i kaudu Slacki või Telegrami. Agent + häired = saad probleemist teada AWS-ilt, mitte kliendilt.

Agendi seadistamine on ühekordne investeering 20 minutit instantsi kohta. Pärast seda töötab see iseseisvalt.