
🧠 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.

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

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.

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:
1 wget https://amazoncloudwatch-agent.s3.amazonaws.com/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb
Installige pakett käsuga dpkg:
1 sudo dpkg -i amazon-cloudwatch-agent.deb
Kui paketihaldur kurdab puuduvate sõltuvuste üle, installige need ühe käsuga:
1 sudo 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:
1 sudo /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 (
memjadisk_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:
1 sudo 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:
1 aws 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:
1 sudo /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).

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:
1 sudo 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:
1 sudo systemctl enable amazon-cloudwatch-agent 2 sudo 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.

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

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.

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õ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.

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.

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/meminfojadfning saadab andmed CloudWatchi. Just seda CloudWatch Agent teebki: kord minutis pärib see süsteemiloendureid ja saadab needCWAgentnimeruumi. 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: vanaawscreds.confformaat 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 olemaactive; (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 olemacloudwatch: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_percentasemel kasutaMemory % 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.



