
PHP ์จ๋ผ์ธ ๊ฐ์
>PHP - ๊ณ ๊ธ
๐ PHP ๊ณ ๊ธ - 7์ฃผ์ฐจ: ์ฑ๋ฅ ์ต์ ํ ๋ฐ ๋๋ฒ๊น - 04 ๋ก๊ทธ ๊ด๋ฆฌ ๋ฐ ๋ชจ๋ํฐ๋ง
![]() |
ํ์ | 10.0 | ๋ผ์ด์ผ์ค | free |
---|---|---|---|---|
์ฌ์ฉ์ํ์ | 10.0 | ์ด์์ฒด์ | ||
๋ค์ด๋ก๋ | 1 | ํ์ผํฌ๊ธฐ | 0 | |
์ ์์ฌ | LUZENSOFT | ๋ฑ๋ก์ผ | 2025-09-25 18:36:28 | |
์กฐํ์ | 5 |
๋ก๊ทธ ๊ด๋ฆฌ ๋ฐ ๋ชจ๋ํฐ๋ง์ ์ค์์ฑ
์น ์ ํ๋ฆฌ์ผ์ด์ ์ #์ฑ๋ฅ_์ต์ ํ ๋ฐ #๋๋ฒ๊น ์ ์์ด #๋ก๊ทธ_๊ด๋ฆฌ ์ #๋ชจ๋ํฐ๋ง ์ ํ์์ ์ธ ์์์ ๋๋ค. ๋ก๊ทธ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ด๋ถ ๋์, ์ค๋ฅ ๋ฐ์, ์ฌ์ฉ์ ํ๋, ์ฑ๋ฅ ์งํ ๋ฑ ์๋ง์ ์ ๋ณด๋ฅผ ๊ธฐ๋กํ๋ ์ค์ํ ๋๊ตฌ์ ๋๋ค. ์ด ๋ก๊ทธ๋ค์ ์ฒด๊ณ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์ค์๊ฐ์ผ๋ก ๋ชจ๋ํฐ๋งํจ์ผ๋ก์จ, ์ฐ๋ฆฌ๋ ๋ฌธ์ ๋ฐ์ ์ ์ ์ํ๊ฒ ์์ธ์ ํ์ ํ๊ณ , ์ ์ฌ์ ์ธ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ๋ฏธ๋ฆฌ ์์ธกํ๋ฉฐ, ๋ณด์ ์ํ์ ํ์งํ ์ ์์ต๋๋ค. ๐ก
PHP ์๋ฌ ๋ก๊ทธ ์ค์ ๋ฐ ํ์ธ
PHP๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์ํ ์ข
๋ฅ์ ์๋ฌ๋ฅผ ๊ธฐ๋กํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. php.ini
ํ์ผ์์ ๊ด๋ จ ์ค์ ์ ์กฐ์ ํ ์ ์์ต๋๋ค.
์ฃผ์ php.ini
์ค์
error_reporting
: ์ด๋ค ์ข ๋ฅ์ PHP ์๋ฌ๋ฅผ ๋ณด๊ณ ํ ์ง ์ ์ํฉ๋๋ค. ์ด์ ํ๊ฒฝ์์๋E_ALL & ~E_NOTICE & ~E_DEPRECATED
์ ๊ฐ์ด ์ค์ ํ์ฌ ๋ถํ์ํ ์๋ฆผ์ ์ ์ธํ๊ณ ์ค์ํ ์๋ฌ๋ง ๊ธฐ๋กํ๋ ๊ฒ์ด ์ข์ต๋๋ค.display_errors
: ๋ธ๋ผ์ฐ์ ํ๋ฉด์ ์๋ฌ๋ฅผ ํ์ํ ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ๋ณด์ ๋ฐ ์ฌ์ฉ์ ๊ฒฝํ์ ์ํด ์ด์ ํ๊ฒฝ์์๋ ๋ฐ๋์Off
๋ก ์ค์ ํด์ผ ํฉ๋๋ค.log_errors
: ์๋ฌ๋ฅผ ๋ก๊ทธ ํ์ผ์ ๊ธฐ๋กํ ์ง ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. ํญ์On
์ผ๋ก ์ค์ ํ์ฌ ์๋ฌ ๊ธฐ๋ก์ ํ์ฑํํด์ผ ํฉ๋๋ค.error_log
: ์๋ฌ ๋ก๊ทธ ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํฉ๋๋ค. ์ง์ ํ์ง ์์ผ๋ฉด ์น ์๋ฒ์ ์๋ฌ ๋ก๊ทธ(์: Apache์error_log
, Nginx์error.log
)์ ๊ธฐ๋ก๋ฉ๋๋ค.
Ini, TOML
; php.ini
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED
display_errors = Off
log_errors = On
error_log = /var/log/php/php_error.log
์๋ฌ ๋ก๊ทธ ํ์ธ
error_log
์ ์ง์ ๋ ๊ฒฝ๋ก์ ํ์ผ์ ํ์ธํ๋ฉด ๋ฐ์ํ PHP ์๋ฌ๋ค์ ๋ณผ ์ ์์ต๋๋ค.
Bash
tail -f /var/log/php/php_error.log
์น ์๋ฒ ๋ก๊ทธ (Apache / Nginx)
PHP ์๋ฌ ๋ก๊ทธ ์ธ์๋ ์น ์๋ฒ ์์ฒด์ ๋ก๊ทธ๋ ์ค์ํ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
Apache ๋ก๊ทธ
access_log
: ๋ชจ๋ HTTP ์์ฒญ์ ๋ํ ์ ๋ณด๋ฅผ ๊ธฐ๋กํฉ๋๋ค (IP ์ฃผ์, ์์ฒญ ์๊ฐ, URL, ์๋ต ์ฝ๋ ๋ฑ).error_log
: Apache ์น ์๋ฒ ์์ฒด์ ์๋ฌ, ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
Nginx ๋ก๊ทธ
access.log
: Apache์access_log
์ ์ ์ฌํฉ๋๋ค.error.log
: Nginx ์๋ฒ ์์ฒด์ ์๋ฌ, ๊ฒฝ๊ณ ๋ฉ์์ง๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
์ด๋ค ๋ก๊ทธ๋ ์น ์๋ฒ ์ค์ ํ์ผ์์ ๊ฒฝ๋ก๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ๋ณ ์ปค์คํ ๋ก๊น (Monolog)
PHP ์๋ฌ ๋ก๊ทธ๋ง์ผ๋ก๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ชจ๋ ๋์์ ์ถ์ ํ๊ธฐ ์ด๋ ต์ต๋๋ค. ํน์ ์ด๋ฒคํธ(์: ๋ก๊ทธ์ธ ์๋, ๊ฒฐ์ ์๋ฃ, ์ค์ํ ๋ฐ์ดํฐ ๋ณ๊ฒฝ)๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ก์ง ๋ด๋ถ์ ๊ฒฝ๊ณ /์ ๋ณด๋ฅผ ๊ธฐ๋กํ๋ ค๋ฉด #์ปค์คํ _๋ก๊น ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
#Monolog ๋ PHP์์ ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ๋ก๊น ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. PSR-3 ํ์ค์ ์ค์ํ๋ฉฐ, ๋ค์ํ ํธ๋ค๋ฌ(ํ์ผ, ๋ฐ์ดํฐ๋ฒ ์ด์ค, ์ด๋ฉ์ผ, Syslog ๋ฑ)๋ฅผ ํตํด ๋ก๊ทธ๋ฅผ ๋ณด๋ผ ์ ์์ต๋๋ค.
PHP
<?php
require 'vendor/autoload.php'; // Composer๋ก Monolog ์ค์น ํ
use MonologLogger;
use MonologHandlerStreamHandler;
// ๋ก๊ฑฐ ์์ฑ ๋ฐ ํธ๋ค๋ฌ ์ถ๊ฐ
$log = new Logger('my_app');
$log->pushHandler(new StreamHandler('/var/log/my_app/app.log', Logger::WARNING));
$log->pushHandler(new StreamHandler('/var/log/my_app/debug.log', Logger::DEBUG));
// ๋ค์ํ ๋ ๋ฒจ๋ก ๋ก๊ทธ ๊ธฐ๋ก
$log->warning('์ฌ์ฉ์ ๋ก๊ทธ์ธ ์คํจ: ' . $userId);
$log->error('๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ค๋ฅ!', ['exception' => $e]);
$log->info('๊ด๋ฆฌ์ ํ์ด์ง ์ ๊ทผ ์ฑ๊ณต: ' . $adminId);
$log->debug('๋ณ์ ๊ฐ ํ์ธ: ' . var_export($someVar, true));
?>
๋ก๊ทธ ๋ชจ๋ํฐ๋ง ๋ฐ ๋ถ์ ๋๊ตฌ
๋ฐฉ๋ํ ๋ก๊ทธ ํ์ผ์ ์๋์ผ๋ก ๋ถ์ํ๋ ๊ฒ์ ๋นํจ์จ์ ์ ๋๋ค. ์ ๋ฌธ์ ์ธ #๋ก๊ทธ_๋ชจ๋ํฐ๋ง_๋๊ตฌ ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ก๊ทธ๋ฅผ ์ค์์์ ์์งํ๊ณ , ์ค์๊ฐ์ผ๋ก ๋ถ์ํ๋ฉฐ, ์ด์ ์งํ ๋ฐ์ ์ ์๋์ผ๋ก ์๋ฆผ์ ๋ฐ์ ์ ์์ต๋๋ค.
ELK Stack (Elasticsearch, Logstash, Kibana):
Logstash: ๋ค์ํ ์์ค(ํ์ผ, DB ๋ฑ)์์ ๋ก๊ทธ๋ฅผ ์์งํ๊ณ ์ ๊ทํํฉ๋๋ค.
Elasticsearch: ์์ง๋ ๋ก๊ทธ๋ฅผ ์ ์ฅํ๊ณ ์ธ๋ฑ์ฑํ์ฌ ๋น ๋ฅธ ๊ฒ์์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
Kibana: Elasticsearch์ ์ ์ฅ๋ ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ์๊ฐํํ๊ณ ๋์๋ณด๋๋ฅผ ํตํด ์ค์๊ฐ ๋ชจ๋ํฐ๋ง์ ์ ๊ณตํฉ๋๋ค.
Grafana: ๋ค์ํ ๋ฐ์ดํฐ ์์ค(Elasticsearch ํฌํจ)์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ๊ฐ๋ ฅํ ๋์๋ณด๋์ ์๋ฆผ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
Prometheus & Grafana: ์๋ฒ ๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฉํธ๋ฆญ(CPU, ๋ฉ๋ชจ๋ฆฌ, ๋คํธ์ํฌ, ์๋ต ์๊ฐ ๋ฑ)์ ์์งํ๊ณ , Grafana๋ฅผ ํตํด ์๊ฐํํ๋ฉฐ, ์๋ฆผ ๊ท์น์ ์ค์ ํ ์ ์์ต๋๋ค.
์ด๋ฌํ ๋๊ตฌ๋ค์ ํ์ฉํ๋ฉด ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ๋จ์ํ ๊ธฐ๋ก์ ๋์ด, ์ค์๊ฐ ์ด์ ์ํฉ์ ํ์ ํ๊ณ ๋ฌธ์ ํด๊ฒฐ์ ํ์ฉํ๋ ๊ฐ๋ ฅํ ์์์ผ๋ก ๋ง๋ค ์ ์์ต๋๋ค.
๋ง์น๋ฉฐ
ํจ์จ์ ์ธ #๋ก๊ทธ_๊ด๋ฆฌ ๋ฐ #๋ชจ๋ํฐ๋ง_์์คํ ๊ตฌ์ถ์ ์์ ์ ์ด๊ณ ๊ณ ์ฑ๋ฅ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด์ํ๊ธฐ ์ํ ํ์์ ์ธ ํฌ์์ ๋๋ค. PHP ์๋ฌ ๋ก๊ทธ, ์น ์๋ฒ ๋ก๊ทธ, ๊ทธ๋ฆฌ๊ณ ์ปค์คํ ๋ก๊น ์ ์ ์ ํ ํ์ฉํ๊ณ , ์ ๋ฌธ ๋ชจ๋ํฐ๋ง ๋๊ตฌ๋ฅผ ํตํด ์ด๋ฅผ ํตํฉ ๊ด๋ฆฌํจ์ผ๋ก์จ, ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ๊ณ ์ ์ํ๊ฒ ๋์ํ ์ ์๋ ๋ฅ๋ ฅ์ ๊ฐ์ถ๊ฒ ๋ ๊ฒ์ ๋๋ค. ๐
์๋, ์์ ์ฑ ํ์ค. ๋๊น์์ด ๋น ๋ฅธ VPN. ๊ณ ํ์ง ๋ธ์ดํผ์ ๋ฌด๋ฃ์ฒดํ!