Cloudwatch Agent ашиглаж сервер дээрх логийг Cloudwatch Logs-руу илгээх

Ankhbayar Gansukh
Unimedia Solutions
Published in
4 min readMay 14, 2019

Cloudwatch Agent нь сервер дээрх дурын лог файлыг Cloudwatch Logs- руу stream-ээр илгээх функцтэй юм. Энэ функцыг нь ашиглаж шаардлатай логуудаа Cloudwatch Logs -руу авч ашигласнаар доорх давуу талуудтай.

  • Логууд нэг дор буюу centralized болно.
  • Логуудад хүссэн нөхцөлөөр филтер тодорхойлон метрик үүсгэж түүн дээр аларм тавиж боломжтой болно.
  • Сервер-рүүгээ SSH-ээр орж логоо grep-дэх шаардлаггүй болно. Ялангуяа лоадбалансерийн ардах олон серверийн логтой ажиллах, мөн тус бүрдээ логротэйт хийгдэж олон тусдаа архив файл болсон үед гар ажиллагаа их орж цаг алддаг. Харин Cloudwatch Logs ашигласнаар Insights query бичээд хүссэн өгөгдөлөө хайгаад олж болно.
  • Манай төсөл дээр продакшн серверүүдийн SSH access релийз-с бусад үед хөгжүүлэгчдэд хаалттай байдаг. Гэтэл хөгжүүлэгчдэд аппликэшн логоо харах шаардлага байгаад байдаг. Тэгвэл хөгжүүлэгчид Cloudwatch Log-с логоо харах боломжтой болно.

Жишээ болгож Ubuntu сервер дээрх апачи-ийн access.log, error.log хоёрыг Cloudwatch Logs руу илгээж, access.log-ийн response time нь 1 секундээс илүү гарсан үед мэйлээр мэдэгддэг болгож үзэцгээе. Таны сервер дээр Cloudwatch Agent-г суусан гэж үзэе, хэрэв суугаагүй бол энэ заавар-ын дагуу суулгаарай.

Эхний алхам тун амархан ажиллав, Cloudwatch Agent-ийн тохиргоонд доорх хэсгийг нэмээд агентаа рестарт хийхэд Cloudwatch Logs-руу лог маань ороод ирэв.

"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/var/log/apache2/other_vhosts_access.log",
"log_group_name": "/var/log/apache2/other_vhosts_access.log",
"log_stream_name": "{ip_address}",
"timezone": "Local"
},
{
"file_path": "/var/log/apache2/error.log",
"log_group_name": "/var/log/apache2/error.log",
"log_stream_name": "{ip_address}",
"timezone": "Local"
}
]
}
},
"log_stream_name": "defaultstreamname",
"force_flush_interval" : 15
}

Дээрх тохиргоонуудын тайлбарыг CloudWatch Agent Configuration File: Logs Section холбоосноос харна уу.

Агентаа рестарт хийсний дараа Cloudwatch Logs руу орж ирсэн байдал

log_group_name -д тохируулсан нэр харагдаж байна, файлын нэртэйгээ адил байвал ойлгомжтой гэж үзсэн.

Error.log -г дараад ороход

log_stream_name-д тохируулсан нэрээр харагдаж байна, олон серверийн лог цуглуулах тул IP хаяг байвал ойлгомжтой гэж үзсэн.

10.0.1.11 -г дараад ороход

error.log-ийн өгөгдөл

Үнэ төлбөр

Төлбөр нь Cloudwatch Logs -руу илгээсэн өгөгдөлийн хэмжээ, одоо хадгалж байгаа өгөгдлийн хэмжээ, өгөгдөлөөс хайлт хийсний төлбөр(Insights query) гурваас бүрдэнэ. Жишээ нь Tokyo рэжион дээр 1GB нь 0.79$ орчим болж байна↓

Үнийн дэлгэрэнгүй мэдээллийг эндээс харна уу.

Мөн бүх логоо хадгалж үлдээд байвал хэмжээ нь ихсээд төлбөр өндөр гарна. Тиймээс дээрх хоёр логийг Cloudwatch Logs дээр удаан хадгалах шаардлаггүй гэж үзэн нэг сараас хөгшин логийг устгахаар тохируулав.

Metric үүсгэж аларм тавих

access.log-т 1 cекундээс илүү удсан респонс гарвал бидэнд мэдэгддэг Cloudwatch Alarm үүсгэж үзэцгээе.

Эхлээд metric filter үүсгэх шаардлагатай. Metric filter нь ирж буй логийг байнга сонсож, өөрийн нөхцөлд таарсан өгөгдөл орж ирвэл энгийн metric болгон хувиргадаг.

Metric filter-ийн нөхцөлийг Filter Pattern дээр тодорхойлно. Апачи access.log -т өгөгдөлүүд нь хүснэгтэн хэлбэрээр зайгаар тусгаарлагдан бичигддэг. Талбар бүрийг нь өөртөө ойлгомжтойгоор нэрлэж түүнийгээ Filter Pattern-д ашиглана.

Зураг дээрх паттернийг доорх байдлаар илүү ойлгомжтой болгож болно.

[ApplicationiiNerPort, HereglegchiinIp, HereglegchiinNer, Hereglegch, Ognoo, ZartsuulsanHugatsaa>1000000, Request, ButsaasanHTTPStatusCode, ByteiinToo, Referer, Useragent]

эсвэл ингэсэн ч болно↓

[A, B, C, D, E, F>1000000, G, H, I, K, L]

Апачи логийн зарцуулсан хугацаа нь microsecond-р бичигддэг тул spenttime>1000000 гэж тависан. 1 second = 1,000,000 microsecond.

Metric Name талбарт шинээр үүсгэх metric-ийн нэрийг оруулна. Filter Pattern -д тодорхойлсон нөхцөл биелбэл энэ metric-т өгөгдөл ирнэ гэсэн үг.

Одоо Alarm үүсгэе↓

testenv_aws_alert нь SNS дээр бүртгэсэн топик юм, тус топик дээр миний мэйл хаяг бүртгэлтэй байгаа.

Хэсэг хугацаанд хүлээхэд аларм ч хүрээд ирлээ↓

За баахан тайлбаргүй скрийншот тавичихлаа, энэ пост нь step by step заавар биш, ийм боломжууд байдаг талаар хинт өгөх зорилготой гэдгийг ойлгоорой.

--

--