{"id":47276,"date":"2026-06-27T22:46:31","date_gmt":"2026-06-27T13:46:31","guid":{"rendered":"https:\/\/raybeam.jp\/docs\/initial-server-setup\/how-to-install-and-configure-monit-to-watch-and-monitor-your-servers\/"},"modified":"2026-06-27T22:47:04","modified_gmt":"2026-06-27T13:47:04","slug":"how-to-install-and-configure-monit-to-watch-and-monitor-your-servers","status":"publish","type":"docs","link":"https:\/\/raybeam.jp\/vi\/docs\/initial-server-setup\/how-to-install-and-configure-monit-to-watch-and-monitor-your-servers\/","title":{"rendered":"C\u00e1ch c\u00e0i \u0111\u1eb7t v\u00e0 c\u1ea5u h\u00ecnh Monit \u0111\u1ec3 theo d\u00f5i v\u00e0 gi\u00e1m s\u00e1t c\u00e1c m\u00e1y ch\u1ee7 c\u1ee7a b\u1ea1n"},"content":{"rendered":"<p class=\"is-style-text-annotation is-style-text-annotation--1 wp-block-paragraph\">B\u00e0i vi\u1ebft n\u00e0y gi\u1ea3 \u0111\u1ecbnh r\u1eb1ng b\u1ea1n s\u1ebd s\u1eed d\u1ee5ng Ubuntu Server 20.04 ho\u1eb7c 24.04.<\/p>\n\n\n\n<h2 id=\"motivation\" class=\"wp-block-heading\">\u0110\u1ed9ng l\u1ef1c<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Monit l\u00e0 m\u1ed9t c\u00f4ng c\u1ee5 \u0111\u01a1n gi\u1ea3n v\u00e0 nh\u1eb9, d\u00f9ng \u0111\u1ec3 gi\u00e1m s\u00e1t v\u00e0 qu\u1ea3n l\u00fd c\u00e1c d\u1ecbch v\u1ee5, ti\u1ebfn tr\u00ecnh, t\u1ec7p tin v\u00e0 h\u1ec7 th\u1ed1ng t\u1ec7p tr\u00ean m\u00e1y ch\u1ee7 Linux c\u1ee7a b\u1ea1n. Nh\u1edd kh\u1ea3 n\u0103ng gi\u00e1m s\u00e1t ch\u1ee7 \u0111\u1ed9ng, Monit l\u00e0 m\u1ed9t l\u1ef1a ch\u1ecdn tuy\u1ec7t v\u1eddi cho vi\u1ec7c t\u1ef1 \u0111\u1ed9ng h\u00f3a m\u00e1y ch\u1ee7. D\u01b0\u1edbi \u0111\u00e2y l\u00e0 c\u00e1c b\u01b0\u1edbc chi ti\u1ebft v\u1ec1 c\u00e1ch c\u00e0i \u0111\u1eb7t, c\u1ea5u h\u00ecnh v\u00e0 s\u1eed d\u1ee5ng Monit tr\u00ean Ubuntu Server 20.04 v\u00e0 24.04.<\/p>\n\n\n\n<h2 id=\"alternatives\" class=\"wp-block-heading\">C\u00e1c l\u1ef1a ch\u1ecdn thay th\u1ebf<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Netdata \u0111\u01b0\u1ee3c t\u00edch h\u1ee3p s\u1eb5n WordOps v\u00e0 hi\u1ec3n th\u1ecb c\u00e1c s\u1ed1 li\u1ec7u th\u1ed1ng k\u00ea c\u1ee7a m\u00e1y ch\u1ee7 m\u1ed9t c\u00e1ch r\u1ea5t hi\u1ec7u qu\u1ea3. Tuy nhi\u00ean, n\u00f3 kh\u00f4ng c\u00f3 c\u00e1c t\u00ednh n\u0103ng gi\u00e1m s\u00e1t ch\u1ee7 \u0111\u1ed9ng nh\u01b0 Monit. C\u00e1c c\u00f4ng c\u1ee5 kh\u00e1c nh\u01b0 Kibana, Zabbix v\u00e0 Nagios c\u0169ng r\u1ea5t ph\u1ed5 bi\u1ebfn, nh\u01b0ng ch\u00fang kh\u00f3 c\u00e0i \u0111\u1eb7t h\u01a1n v\u00e0 ti\u00eau t\u1ed1n nhi\u1ec1u t\u00e0i nguy\u00ean h\u1ec7 th\u1ed1ng h\u01a1n.<\/p>\n\n\n\n<h2 id=\"install-monit\" class=\"wp-block-heading\">C\u00e0i \u0111\u1eb7t Monit<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">May m\u1eafn thay, Monit \u0111\u00e3 c\u00f3 s\u1eb5n trong kho ph\u1ea7n m\u1ec1m c\u1ee7a Ubuntu, v\u1eady n\u00ean h\u00e3y c\u00e0i \u0111\u1eb7t b\u1eb1ng l\u1ec7nh sau:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\nsudo apt install monit<\/code><\/pre>\n\n\n\n<h2 id=\"basic-configuration\" class=\"wp-block-heading\">C\u1ea5u h\u00ecnh c\u01a1 b\u1ea3n<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">T\u1ec7p c\u1ea5u h\u00ecnh ch\u00ednh c\u1ee7a Monit n\u1eb1m t\u1ea1i <code>\/etc\/monit\/monitrc<\/code>. Tr\u01b0\u1edbc khi ch\u1ec9nh s\u1eeda, b\u1ea1n n\u00ean t\u1ea1o m\u1ed9t b\u1ea3n sao l\u01b0u:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo cp \/etc\/monit\/monitrc \/etc\/monit\/monitrc.backup<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Theo m\u1eb7c \u0111\u1ecbnh, Monit ki\u1ec3m tra c\u00e1c d\u1ecbch v\u1ee5 c\u1ee9 sau 2 ph\u00fat (120 gi\u00e2y). B\u1ea1n c\u00f3 th\u1ec3 \u0111i\u1ec1u ch\u1ec9nh gi\u00e1 tr\u1ecb n\u00e0y trong t\u1ec7p b\u1eb1ng c\u00e1ch ch\u1ec9nh s\u1eeda d\u00f2ng d\u01b0\u1edbi \u0111\u00e2y. Ch\u00fang t\u00f4i mu\u1ed1n c\u00e1c l\u1ea7n ki\u1ec3m tra di\u1ec5n ra c\u1ee9 sau 1 ph\u00fat:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u0111\u1eb7t daemon th\u00e0nh 60<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Monit \u0111i k\u00e8m v\u1edbi m\u00e1y ch\u1ee7 th\u01b0 ri\u00eang, nh\u01b0ng v\u00ec ch\u00fang ta c\u1ea7n m\u1ed9t gi\u1ea3i ph\u00e1p \u1ed5n \u0111\u1ecbnh h\u01a1n v\u00e0 \u0111\u00e3 c\u1ea5u h\u00ecnh s\u1eb5n Sendmail, h\u00e3y s\u1eed d\u1ee5ng Sendmail l\u00e0m MTA c\u1ee7a ch\u00fang ta, \u0111\u1ed3ng th\u1eddi \u0111i\u1ec1u ch\u1ec9nh c\u00e0i \u0111\u1eb7t \u0111\u1ec3 tr\u1ecf \u0111\u1ebfn localhost (tham s\u1ed1 n\u00e0y m\u1eb7c \u0111\u1ecbnh b\u1ecb b\u00ecnh lu\u1eadn, n\u00ean b\u1ea1n ch\u1ec9 c\u1ea7n d\u00e1n \u0111o\u1ea1n m\u00e3 v\u00e0o ph\u00eda tr\u00ean n\u00f3):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u0111\u1eb7t m\u00e1y ch\u1ee7 th\u01b0 l\u00e0 localhost<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">C\u00e1c <code>\u0111\u1ecbnh d\u1ea1ng th\u01b0<\/code> C\u00e1c tham s\u1ed1 n\u00e0y x\u00e1c \u0111\u1ecbnh m\u1ecdi kh\u00eda c\u1ea1nh c\u1ee7a c\u1ea5u tr\u00fac email c\u1ee7a b\u1ea1n, do \u0111\u00f3 b\u1ea1n c\u1ea7n ph\u1ea3i b\u1ecf ch\u00fa th\u00edch kh\u1ecfi t\u1ea5t c\u1ea3 c\u00e1c d\u00f2ng li\u00ean quan; v\u00e0 c\u1ea5u h\u00ecnh t\u1ed1i thi\u1ec3u ch\u1ec9 l\u00e0 thay \u0111\u1ed5i \u0111\u1ecba ch\u1ec9 email trong tr\u01b0\u1eddng \u201cFROM\u201d:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>t\u1eeb:    Monit &lt;<span \n                data-original-string='rFenlp2gHWT6twbQ9RjLng==a66BK3f9CZHjKKjqs+gNyIySQOljZdUVJgWYgJ27Nhynmw='\n                class='apbct-email-encoder'\n                title='This contact has been encoded by Anti-Spam by CleanTalk. Click to decode. To finish the decoding make sure that JavaScript is enabled in your browser.'>mo<span class=\"apbct-blur\">************<\/span>@<span class=\"apbct-blur\">*****<\/span>le.com<\/span>&gt;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0110\u1eb7t m\u1ed9t \u0111\u1ecba ch\u1ec9 email \u0111\u1ec3 nh\u1eadn t\u1ea5t c\u1ea3 c\u00e1c th\u00f4ng b\u00e1o t\u1eeb Monit, th\u01b0\u1eddng l\u00e0 \u0111\u1ecba ch\u1ec9 email c\u00f4ng vi\u1ec7c c\u1ee7a b\u1ea1n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u0111\u1eb7t c\u1ea3nh b\u00e1o <span \n                data-original-string='GvQ7BEosXRnrqQJ8GcZyxA==a66r15IL9DwD9ammSJ3gDJbQ5LucJ8kctiNEFnCu0eWyb4='\n                class='apbct-email-encoder'\n                title='This contact has been encoded by Anti-Spam by CleanTalk. Click to decode. To finish the decoding make sure that JavaScript is enabled in your browser.'>al<span class=\"apbct-blur\">****<\/span>@<span class=\"apbct-blur\">*****<\/span>le.com<\/span><\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Monit s\u1eed d\u1ee5ng giao di\u1ec7n HTTP t\u00edch h\u1ee3p s\u1eb5n c\u1ee7a m\u00ecnh \u0111\u1ec3 v\u1eeba cung c\u1ea5p trang tr\u1ea1ng th\u00e1i d\u1ef1a tr\u00ean web, v\u1eeba x\u1eed l\u00fd c\u00e1c l\u1ec7nh t\u1eeb d\u00f2ng l\u1ec7nh. Ngay c\u1ea3 khi b\u1ea1n kh\u00f4ng mu\u1ed1n k\u00edch ho\u1ea1t giao di\u1ec7n web, b\u1ea1n v\u1eabn ph\u1ea3i cung c\u1ea5p m\u1ed9t kh\u1ed1i c\u1ea5u h\u00ecnh h\u1ee3p l\u1ec7 v\u00e0 \u0111\u1ea7y \u0111\u1ee7 \u0111\u1ec3 thi\u1ebft l\u1eadp \u0111i\u1ec3m cu\u1ed1i v\u00e0 qu\u1ea3n l\u00fd Monit m\u1ed9t c\u00e1ch \u0111\u00fang \u0111\u1eafn.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\u0111\u1eb7t c\u1ed5ng httpd l\u00e0 2812 v\u00e0 s\u1eed d\u1ee5ng \u0111\u1ecba ch\u1ec9 localhost \n cho ph\u00e9p truy c\u1eadp t\u1eeb localhost\n cho ph\u00e9p admin:monit # y\u00eau c\u1ea7u ng\u01b0\u1eddi d\u00f9ng 'admin' v\u1edbi m\u1eadt kh\u1ea9u 'monit'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\u0110\u1ec3 cho ph\u00e9p truy c\u1eadp t\u1eeb xa, h\u00e3y thay \u0111\u1ed5i <code><em>localhost<\/em><\/code> \u0111\u1ebfn \u0111\u1ecba ch\u1ec9 IP ho\u1eb7c t\u00ean mi\u1ec1n c\u1ee7a m\u00e1y ch\u1ee7 t\u01b0\u01a1ng \u1ee9ng, v\u00e0 thi\u1ebft l\u1eadp th\u00f4ng tin x\u00e1c th\u1ef1c an to\u00e0n.<\/p>\n\n\n\n<h2 id=\"include-additional-configuration-files\" class=\"wp-block-heading\">Th\u00eam c\u00e1c t\u1ec7p c\u1ea5u h\u00ecnh kh\u00e1c:<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ngo\u00e0i t\u1ec7p c\u1ea5u h\u00ecnh ch\u00ednh, Monit c\u00f3 th\u1ec3 bao g\u1ed3m c\u00e1c t\u1ec7p c\u1ea5u h\u00ecnh b\u1ed5 sung t\u1eeb <code><em>\/etc\/monit\/conf-enabled\/<\/em><\/code>. Ch\u00fang ta s\u1ebd th\u00eam m\u1ed9t s\u1ed1 c\u00f4ng c\u1ee5 gi\u00e1m s\u00e1t v\u00e0o th\u01b0 m\u1ee5c n\u00e0y, bao qu\u00e1t h\u1ea7u h\u1ebft c\u00e1c d\u1ecbch v\u1ee5 m\u00e0 ch\u00fang ta \u0111ang s\u1eed d\u1ee5ng tr\u00ean m\u00e1y ch\u1ee7, nh\u01b0ng tr\u01b0\u1edbc ti\u00ean h\u00e3y b\u1eaft \u0111\u1ea7u v\u1edbi v\u1ea5n \u0111\u1ec1 quan tr\u1ecdng nh\u1ea5t: b\u1ea3o m\u1eadt.<\/p>\n\n\n\n<h3 id=\"monitor-successful-ssh-logins\" class=\"wp-block-heading\">Theo d\u00f5i c\u00e1c l\u1ea7n \u0111\u0103ng nh\u1eadp SSH th\u00e0nh c\u00f4ng<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">\u0110\u00e2y l\u00e0 m\u1ed9t c\u1ea3nh b\u00e1o \u0111\u1ea7u ti\u00ean v\u00f4 c\u00f9ng quan tr\u1ecdng, v\u00ec ch\u00fang ta c\u1ea7n bi\u1ebft ngay khi c\u00f3 ai \u0111\u00f3 \u0111\u0103ng nh\u1eadp th\u00e0nh c\u00f4ng v\u00e0o m\u00e1y ch\u1ee7 c\u1ee7a ch\u00fang ta qua SSH. C\u1ea3nh b\u00e1o n\u00e0y \u0111\u01b0\u1ee3c cung c\u1ea5p b\u1edfi <a href=\"https:\/\/www.elitmus.com\/blog\/technology\/using-monit-to-get-email-alert-on-unauthorized-login\/\">Shireesh t\u1ea1i Elitmus<\/a> v\u00e0 ch\u00fang ta s\u1ebd \u0111\u1eb7t t\u00ean cho n\u00f3 l\u00e0 <em><code>ssh_logins.conf<\/code><\/em>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ki\u1ec3m tra t\u1ec7p ssh_logins t\u1ea1i \u0111\u01b0\u1eddng d\u1eabn \/var\/log\/auth.log\n  b\u1ecf qua n\u1ebfu kh\u1edbp v\u1edbi \"\/etc\/monit\/whitelist_ips.regex\"\n  n\u1ebfu kh\u1edbp v\u1edbi \"Accepted publickey\" th\u00ec g\u1eedi c\u1ea3nh b\u00e1o<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Th\u00eam m\u1ed9t \u0111\u1ecba ch\u1ec9 IP v\u00e0o m\u1ed7i d\u00f2ng trong t\u1ec7p <em><code>\/etc\/monit\/whitelist_ips.regex<\/code><\/em> ho\u1eb7c b\u00ecnh lu\u1eadn\/x\u00f3a n\u00f3 n\u1ebfu b\u1ea1n mu\u1ed1n nh\u1eadn t\u1ea5t c\u1ea3 c\u00e1c th\u00f4ng b\u00e1o.<\/p>\n\n\n\n<h3 id=\"monitor-the-lemp-stack\" class=\"wp-block-heading\">Gi\u00e1m s\u00e1t h\u1ec7 th\u1ed1ng LEMP<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">T\u00ean g\u1ecdi r\u1ea5t ph\u00f9 h\u1ee3p <em>lemp.conf<\/em> B\u1ed9 gi\u00e1m s\u00e1t n\u00e0y theo d\u00f5i c\u00e1c t\u00e0i nguy\u00ean h\u1ec7 th\u1ed1ng c\u1ee7a ch\u00fang t\u00f4i, nh\u01b0 dung l\u01b0\u1ee3ng l\u01b0u tr\u1eef, CPU v\u00e0 RAM, c\u0169ng nh\u01b0 NGINX, PHP v\u00e0 MySQL (trong tr\u01b0\u1eddng h\u1ee3p c\u1ee7a ch\u00fang t\u00f4i l\u00e0 MariaDB). C\u00f4ng th\u1ee9c \u0111\u1ec3 <em>loadavg<\/em> b\u1eb1ng 1,5 nh\u00e2n v\u1edbi s\u1ed1 nh\u00e2n CPU:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Ki\u1ec3m tra m\u1ee9c s\u1eed d\u1ee5ng h\u1ec7 th\u1ed1ng t\u1ec7p tr\u00ean h\u1ec7 th\u1ed1ng t\u1ec7p g\u1ed1c\nki\u1ec3m tra h\u1ec7 th\u1ed1ng t\u1ec7p rootfs v\u1edbi \u0111\u01b0\u1eddng d\u1eabn \/\n    n\u1ebfu m\u1ee9c s\u1eed d\u1ee5ng dung l\u01b0\u1ee3ng &gt; 90% th\u00ec g\u1eedi c\u1ea3nh b\u00e1o  # G\u1eedi c\u1ea3nh b\u00e1o n\u1ebfu m\u1ee9c s\u1eed d\u1ee5ng dung l\u01b0\u1ee3ng \u0111\u0129a v\u01b0\u1ee3t qu\u00e1 90%\n\n# Ki\u1ec3m tra c\u00e1c ch\u1ec9 s\u1ed1 hi\u1ec7u su\u1ea5t h\u1ec7 th\u1ed1ng tr\u00ean localhost\nki\u1ec3m tra h\u1ec7 th\u1ed1ng localhost\n    n\u1ebfu loadavg (1 ph\u00fat) &gt; 6 th\u00ec g\u1eedi c\u1ea3nh b\u00e1o  # G\u1eedi c\u1ea3nh b\u00e1o n\u1ebfu gi\u00e1 tr\u1ecb trung b\u00ecnh t\u1ea3i trong 1 ph\u00fat v\u01b0\u1ee3t qu\u00e1 6\n    n\u1ebfu loadavg (5 ph\u00fat) &gt; 4 th\u00ec g\u1eedi c\u1ea3nh b\u00e1o  # G\u1eedi c\u1ea3nh b\u00e1o n\u1ebfu gi\u00e1 tr\u1ecb trung b\u00ecnh t\u1ea3i trong 5 ph\u00fat v\u01b0\u1ee3t qu\u00e1 4\n    n\u1ebfu m\u1ee9c s\u1eed d\u1ee5ng b\u1ed9 nh\u1edb &gt; 90% th\u00ec g\u1eedi c\u1ea3nh b\u00e1o  # G\u1eedi c\u1ea3nh b\u00e1o n\u1ebfu m\u1ee9c s\u1eed d\u1ee5ng b\u1ed9 nh\u1edb v\u01b0\u1ee3t qu\u00e1 90%\n    # C\u1ea3nh b\u00e1o n\u1ebfu m\u1ee9c s\u1eed d\u1ee5ng CPU v\u01b0\u1ee3t qu\u00e1 80% trong 15 l\u1ea7n ki\u1ec3m tra li\u00ean ti\u1ebfp\n    n\u1ebfu m\u1ee9c s\u1eed d\u1ee5ng CPU &gt; 80% trong 15 chu k\u1ef3 th\u00ec g\u1eedi c\u1ea3nh b\u00e1o # T\u1ed5ng m\u1ee9c s\u1eed d\u1ee5ng CPU\n    n\u1ebfu m\u1ee9c s\u1eed d\u1ee5ng CPU (ng\u01b0\u1eddi d\u00f9ng) &gt; 70% th\u00ec g\u1eedi c\u1ea3nh b\u00e1o # M\u1ee9c s\u1eed d\u1ee5ng CPU c\u1ee7a ng\u01b0\u1eddi d\u00f9ng\n    n\u1ebfu m\u1ee9c s\u1eed d\u1ee5ng CPU (h\u1ec7 th\u1ed1ng) &gt; 30% th\u00ec c\u1ea3nh b\u00e1o # M\u1ee9c s\u1eed d\u1ee5ng CPU h\u1ec7 th\u1ed1ng\n    n\u1ebfu m\u1ee9c s\u1eed d\u1ee5ng CPU (ch\u1edd) &gt; 20% th\u00ec c\u1ea3nh b\u00e1o # M\u1ee9c s\u1eed d\u1ee5ng CPU do ch\u1edd I\/O\n\n# Ki\u1ec3m tra ti\u1ebfn tr\u00ecnh m\u00e1y ch\u1ee7 web Nginx (HTTPS)\nki\u1ec3m tra ti\u1ebfn tr\u00ecnh nginx v\u1edbi t\u1ec7p PID \/var\/run\/nginx.pid\n    ch\u01b0\u01a1ng tr\u00ecnh kh\u1edfi \u0111\u1ed9ng = \"\/usr\/sbin\/service nginx start\"\n    ch\u01b0\u01a1ng tr\u00ecnh d\u1eebng  = \"\/usr\/sbin\/service nginx stop\"\n    n\u1ebfu CPU &gt; 80% trong 2 chu k\u1ef3 th\u00ec g\u1eedi c\u1ea3nh b\u00e1o  # C\u1ea3nh b\u00e1o n\u1ebfu m\u1ee9c s\u1eed d\u1ee5ng CPU v\u01b0\u1ee3t qu\u00e1 80% trong 2 l\u1ea7n ki\u1ec3m tra li\u00ean ti\u1ebfp\n    n\u1ebfu m\u00e1y ch\u1ee7 127.0.0.1 c\u1ed5ng 443 giao th\u1ee9c https b\u1ecb l\u1ed7i th\u00ec kh\u1edfi \u0111\u1ed9ng l\u1ea1i  # Kh\u1edfi \u0111\u1ed9ng l\u1ea1i n\u1ebfu Nginx kh\u00f4ng ph\u1ea3n h\u1ed3i tr\u00ean HTTPS\n\n# Ki\u1ec3m tra ti\u1ebfn tr\u00ecnh m\u00e1y ch\u1ee7 c\u01a1 s\u1edf d\u1eef li\u1ec7u MySQL\nki\u1ec3m tra ti\u1ebfn tr\u00ecnh mysqld v\u1edbi t\u1ec7p PID \/var\/run\/mysqld\/mysqld.pid\n    ch\u01b0\u01a1ng tr\u00ecnh kh\u1edfi \u0111\u1ed9ng = \"\/usr\/sbin\/service mysql start\"\n    ch\u01b0\u01a1ng tr\u00ecnh d\u1eebng  = \"\/usr\/sbin\/service mysql stop\"\n    n\u1ebfu CPU &gt; 80% trong 2 chu k\u1ef3 th\u00ec g\u1eedi c\u1ea3nh b\u00e1o  # G\u1eedi c\u1ea3nh b\u00e1o n\u1ebfu m\u1ee9c s\u1eed d\u1ee5ng CPU v\u01b0\u1ee3t qu\u00e1 80% trong 2 l\u1ea7n ki\u1ec3m tra li\u00ean ti\u1ebfp\n    n\u1ebfu unixsocket \/var\/run\/mysqld\/mysqld.sock kh\u00f4ng ho\u1ea1t \u0111\u1ed9ng th\u00ec kh\u1edfi \u0111\u1ed9ng l\u1ea1i  # Kh\u1edfi \u0111\u1ed9ng l\u1ea1i MySQL n\u1ebfu Unix socket kh\u00f4ng ph\u1ea3n h\u1ed3i\n\n# Ki\u1ec3m tra ti\u1ebfn tr\u00ecnh PHP-FPM cho PHP 8.3\nki\u1ec3m tra ti\u1ebfn tr\u00ecnh php8.3-fpm v\u1edbi t\u1ec7p PID \/var\/run\/php\/php8.3-fpm.pid\n    ch\u01b0\u01a1ng tr\u00ecnh kh\u1edfi \u0111\u1ed9ng = \"\/usr\/sbin\/service php8.3-fpm start\"\n    ch\u01b0\u01a1ng tr\u00ecnh d\u1eebng  = \"\/usr\/sbin\/service php8.3-fpm stop\"\n    n\u1ebfu cpu &gt; 80% trong 2 chu k\u1ef3 th\u00ec c\u1ea3nh b\u00e1o  # C\u1ea3nh b\u00e1o n\u1ebfu m\u1ee9c s\u1eed d\u1ee5ng CPU v\u01b0\u1ee3t qu\u00e1 80% trong 2 l\u1ea7n ki\u1ec3m tra li\u00ean ti\u1ebfp<\/code><\/pre>\n\n\n\n<h3 id=\"monitor-redis\" class=\"wp-block-heading\">Gi\u00e1m s\u00e1t Redis<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">H\u00e3y th\u00eam ph\u1ea7n gi\u00e1m s\u00e1t Redis v\u00e0o m\u1ed9t t\u1ec7p ri\u00eang bi\u1ec7t, <em><code>redis.conf<\/code><\/em>, v\u00ec t\u00ednh n\u0103ng n\u00e0y kh\u00f4ng ph\u1ea3i l\u00e0 y\u1ebfu t\u1ed1 thi\u1ebft y\u1ebfu \u0111\u1ec3 v\u1eadn h\u00e0nh WordPress v\u00e0 c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c t\u1eaft n\u1ebfu c\u1ea7n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Gi\u00e1m s\u00e1t Redis (s\u1eed d\u1ee5ng Unix socket)\nki\u1ec3m tra ti\u1ebfn tr\u00ecnh redis b\u1eb1ng t\u1ec7p pid \/var\/run\/redis\/redis-server.pid\n    ch\u01b0\u01a1ng tr\u00ecnh kh\u1edfi \u0111\u1ed9ng = \"\/usr\/sbin\/service redis-server start\"\n    ch\u01b0\u01a1ng tr\u00ecnh d\u1eebng = \"\/usr\/sbin\/service redis-server stop\"\n    \n    # Gi\u00e1m s\u00e1t t\u00e0i nguy\u00ean qu\u00e1 tr\u00ecnh\n    n\u1ebfu m\u1ee9c s\u1eed d\u1ee5ng CPU &gt; 80% trong 5 chu k\u1ef3 th\u00ec g\u1eedi c\u1ea3nh b\u00e1o\n    n\u1ebfu m\u1ee9c s\u1eed d\u1ee5ng b\u1ed9 nh\u1edb &gt; 75% th\u00ec g\u1eedi c\u1ea3nh b\u00e1o\n    n\u1ebfu s\u1ed1 ti\u1ebfn tr\u00ecnh con &gt; 255 trong 5 chu k\u1ef3 th\u00ec g\u1eedi c\u1ea3nh b\u00e1o\n \n nh\u00f3m redis\n\n# Ki\u1ec3m tra t\u1ec7p nh\u1eadt k\u00fd Redis \u0111\u1ec3 t\u00ecm l\u1ed7i\nki\u1ec3m tra t\u1ec7p redis_log t\u1ea1i \u0111\u01b0\u1eddng d\u1eabn \/var\/log\/redis\/redis-server.log\n    n\u1ebfu t\u00ecm th\u1ea5y \"ERROR\" th\u00ec g\u1eedi c\u1ea3nh b\u00e1o\n    n\u1ebfu t\u00ecm th\u1ea5y \"CRITICAL\" th\u00ec g\u1eedi c\u1ea3nh b\u00e1o\n    nh\u00f3m redis<\/code><\/pre>\n\n\n\n<h3 id=\"monitor-fail2ban\" class=\"wp-block-heading\">M\u00e0n h\u00ecnh Fail2Ban<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">S\u1eed d\u1ee5ng c\u00f9ng ph\u01b0\u01a1ng ph\u00e1p n\u00e0y, ch\u00fang ta h\u00e3y th\u00eam <em><code>fail2ban.conf<\/code><\/em>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ki\u1ec3m tra ti\u1ebfn tr\u00ecnh fail2ban v\u1edbi t\u1ec7p PID \/var\/run\/fail2ban\/fail2ban.pid\n    nh\u00f3m d\u1ecbch v\u1ee5\n    ch\u1ea1y ch\u01b0\u01a1ng tr\u00ecnh = \"\/etc\/init.d\/fail2ban force-start\"\n    d\u1eebng ch\u01b0\u01a1ng tr\u00ecnh = \"\/etc\/init.d\/fail2ban stop\"\n    n\u1ebfu kh\u00f4ng k\u1ebft n\u1ed1i \u0111\u01b0\u1ee3c v\u1edbi unixsocket \/var\/run\/fail2ban\/fail2ban.sock th\u00ec kh\u1edfi \u0111\u1ed9ng l\u1ea1i\n    n\u1ebfu c\u00f3 5 l\u1ea7n kh\u1edfi \u0111\u1ed9ng l\u1ea1i trong v\u00f2ng 5 chu k\u1ef3 th\u00ec h\u1ebft th\u1eddi gian ch\u1edd\n\nki\u1ec3m tra t\u1ec7p fail2ban_log t\u1ea1i \u0111\u01b0\u1eddng d\u1eabn \/var\/log\/fail2ban.log\n    n\u1ebfu t\u00ecm th\u1ea5y chu\u1ed7i \"ERROR|WARNING\" th\u00ec g\u1eedi c\u1ea3nh b\u00e1o<\/code><\/pre>\n\n\n\n<h3 id=\"monitor-clamav\" class=\"wp-block-heading\">Gi\u00e1m s\u00e1t ClamAV<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Ch\u00fang ta c\u1ea7n bi\u1ebft li\u1ec7u ClamAV, ph\u1ea7n m\u1ec1m m\u00e0 ch\u00fang ta \u0111\u00e3 c\u00e0i \u0111\u1eb7t tr\u01b0\u1edbc \u0111\u00f3, c\u00f3 ph\u00e1t hi\u1ec7n ra virus hay ph\u1ea7n m\u1ec1m \u0111\u1ed9c h\u1ea1i n\u00e0o tr\u00ean m\u00e1y ch\u1ee7 c\u1ee7a ch\u00fang ta hay kh\u00f4ng, v\u00ec v\u1eady <em><code>clamav.conf<\/code><\/em> tr\u00f4ng nh\u01b0 th\u1ebf n\u00e0y:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Theo d\u00f5i t\u1ec7p nh\u1eadt k\u00fd ClamAV \u0111\u1ec3 ph\u00e1t hi\u1ec7n c\u00e1c thay \u0111\u1ed5i cho th\u1ea5y c\u00f3 s\u1ef1 ph\u00e1t hi\u1ec7n\nki\u1ec3m tra t\u1ec7p clamav_log t\u1ea1i \u0111\u01b0\u1eddng d\u1eabn \/var\/log\/clamav\/clamav.log\n  n\u1ebfu t\u00ecm th\u1ea5y \"FOUND\" th\u00ec g\u1eedi c\u1ea3nh b\u00e1o<\/code><\/pre>\n\n\n\n<h3 id=\"monitor-the-integrity-of-sensitive-files\" class=\"wp-block-heading\">Gi\u00e1m s\u00e1t t\u00ednh to\u00e0n v\u1eb9n c\u1ee7a c\u00e1c t\u1ec7p tin nh\u1ea1y c\u1ea3m<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Monit c\u00f3 th\u1ec3 theo d\u00f5i c\u00e1c t\u1ec7p quan tr\u1ecdng ho\u1eb7c nh\u1eefng t\u1ec7p m\u00e0 l\u1ebd ra kh\u00f4ng n\u00ean thay \u0111\u1ed5i qu\u00e1 th\u01b0\u1eddng xuy\u00ean v\u00e0 s\u1ebd c\u1ea3nh b\u00e1o cho ch\u00fang ta m\u1ed7i khi \u0111i\u1ec1u \u0111\u00f3 x\u1ea3y ra. Ho\u1ea1t \u0111\u1ed9ng n\u00e0y th\u01b0\u1eddng \u0111\u01b0\u1ee3c g\u1ecdi l\u00e0 \u201cgi\u00e1m s\u00e1t t\u00ednh to\u00e0n v\u1eb9n t\u1ec7p\u201d, do \u0111\u00f3 t\u1ec7p c\u1ea5u h\u00ecnh c\u1ee7a ch\u00fang ta c\u00f3 t\u00ean l\u00e0 <em><code>fim.conf<\/code><\/em> v\u00e0 b\u00ean trong \u0111\u00f3, b\u1ea1n c\u00f3 th\u1ec3 li\u1ec7t k\u00ea c\u00e1c t\u1ec7p c\u1ee7a m\u00ecnh nh\u01b0 sau:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Theo d\u00f5i c\u00e1c thay \u0111\u1ed5i trong t\u1ec7p c\u1ea5u h\u00ecnh WordPress\nki\u1ec3m tra t\u1ec7p wp_config t\u1ea1i \u0111\u01b0\u1eddng d\u1eabn \/var\/www\/example.com\/wp-config.php\n    n\u1ebfu t\u1ed5ng ki\u1ec3m tra thay \u0111\u1ed5i th\u00ec g\u1eedi c\u1ea3nh b\u00e1o\n\nki\u1ec3m tra t\u1ec7p whitelist_ips t\u1ea1i \u0111\u01b0\u1eddng d\u1eabn \/etc\/monit\/whitelist_ips.regex\n    n\u1ebfu t\u1ed5ng ki\u1ec3m tra thay \u0111\u1ed5i th\u00ec g\u1eedi c\u1ea3nh b\u00e1o<\/code><\/pre>\n\n\n\n<h2 id=\"enable-and-start-the-monit-service\" class=\"wp-block-heading\">K\u00edch ho\u1ea1t v\u00e0 kh\u1edfi \u0111\u1ed9ng d\u1ecbch v\u1ee5 Monit<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">K\u00edch ho\u1ea1t t\u00ednh n\u0103ng t\u1ef1 \u0111\u1ed9ng kh\u1edfi \u0111\u1ed9ng Monit khi kh\u1edfi \u0111\u1ed9ng h\u1ec7 th\u1ed1ng:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl enable monit<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Sau \u0111\u00f3, kh\u1edfi \u0111\u1ed9ng d\u1ecbch v\u1ee5 Monit:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl start monit<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">B\u1ea1n c\u00f3 th\u1ec3 ki\u1ec3m tra tr\u1ea1ng th\u00e1i c\u1ee7a d\u1ecbch v\u1ee5 Monit b\u1eb1ng c\u00e1ch:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl status monit<\/code><\/pre>\n\n\n\n<h2 id=\"testing-the-monit-configuration\" class=\"wp-block-heading\">Ki\u1ec3m tra c\u1ea5u h\u00ecnh Monit<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tr\u01b0\u1edbc khi \u0111\u01b0a c\u1ea5u h\u00ecnh Monit v\u00e0o m\u00f4i tr\u01b0\u1eddng s\u1ea3n xu\u1ea5t, h\u00e3y ki\u1ec3m tra n\u00f3:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo monit -t\nsudo monit reload\nsudo monit status<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">C\u00e1c <code>tr\u1ea1ng th\u00e1i monit<\/code> L\u1ec7nh n\u00e0y s\u1ebd li\u1ec7t k\u00ea t\u1ea5t c\u1ea3 c\u00e1c d\u1ecbch v\u1ee5 v\u00e0 ti\u1ebfn tr\u00ecnh hi\u1ec7n \u0111ang \u0111\u01b0\u1ee3c Monit gi\u00e1m s\u00e1t.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">N\u1ebfu c\u00f3 l\u1ed7i c\u1ea5u h\u00ecnh, Monit s\u1ebd hi\u1ec3n th\u1ecb c\u00e1c l\u1ed7i \u0111\u00f3 v\u00e0 b\u1ea1n c\u00f3 th\u1ec3 kh\u1eafc ph\u1ee5c ch\u00fang cho ph\u00f9 h\u1ee3p.<\/p>","protected":false},"featured_media":0,"parent":47233,"menu_order":3,"comment_status":"open","ping_status":"closed","template":"","meta":{"pmpro_default_level":"","nav_title":"","positive":"","negative":"","footnotes":""},"docs_category":[],"class_list":["post-47276","docs","type-docs","status-publish","hentry","pmpro-has-access"],"_links":{"self":[{"href":"https:\/\/raybeam.jp\/vi\/wp-json\/wp\/v2\/docs\/47276","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/raybeam.jp\/vi\/wp-json\/wp\/v2\/docs"}],"about":[{"href":"https:\/\/raybeam.jp\/vi\/wp-json\/wp\/v2\/types\/docs"}],"replies":[{"embeddable":true,"href":"https:\/\/raybeam.jp\/vi\/wp-json\/wp\/v2\/comments?post=47276"}],"version-history":[{"count":1,"href":"https:\/\/raybeam.jp\/vi\/wp-json\/wp\/v2\/docs\/47276\/revisions"}],"predecessor-version":[{"id":47277,"href":"https:\/\/raybeam.jp\/vi\/wp-json\/wp\/v2\/docs\/47276\/revisions\/47277"}],"up":[{"embeddable":true,"href":"https:\/\/raybeam.jp\/vi\/wp-json\/wp\/v2\/docs\/47233"}],"wp:attachment":[{"href":"https:\/\/raybeam.jp\/vi\/wp-json\/wp\/v2\/media?parent=47276"}],"wp:term":[{"taxonomy":"docs_category","embeddable":true,"href":"https:\/\/raybeam.jp\/vi\/wp-json\/wp\/v2\/docs_category?post=47276"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}