Netdata로 LEMP 서버 모니터링
본문
Netdata는 물리적 및 가상 서버, 컨테이너, IoT 등 모든 시스템에 설치하는 최적화 된 오픈 소스 모니터링 에이전트입니다.
시스템에서 실행되는 모든 작업에 대한 실시간 통찰력을 제공합니다. 시스템의 핵심 기능을 방해하지 않도록 설계되었습니다.
또한 Prometheus, Graphite, Kafka 등과 같은 기존 모니터링 도구에 통합 할 수 있을 뿐만 아니라 독립형으로 실행할 수도 있습니다.
이 튜토리얼에서는 Linux, Nginx, MySQL 및 PHP를 모니터링 하도록 Netdata를 설치하고 구성하는 방법을 배웁니다.
https://dev.to/prhomhyse/monitor-your-lemp-server-with-netdata-4ofh
Netdata 설치
스템이나 환경에 따라 Netdata를 설치하는 방법에는 여러 가지가 있습니다.
가장 권장되는 방법은 다음을 사용하여 소스에서 직접 설치하는 것입니다. 자동 한 줄 설치 (기본값) :
bash <(curl -Ss https://my-netdata.io/kickstart.sh)
자동 설치 프로그램은 필요한 시스템 패키지를 설치하고 시스템에서 Netdata를 직접 컴파일합니다.
http://SERVER_IP:19999를 방문하여 브라우저에서 Netdata 대시 보드를 볼 수 있습니다.
Nginx 설치
Nginx는 HTTP 및 리버스 프록시 서버, 메일 프록시 서버 및 모든 규모의 웹 사이트 및 응용 프로그램을 호스팅 하는 데 사용되는 일반 TCP / UDP 프록시 서버입니다. 메모리 리소스에 대한 영향이 적고, 확장 성이 뛰어나며, 안전하고 예측 가능한 성능을 제공 할 수 있는 모듈 식의 이벤트 중심 아키텍처로 알려진 Apache의 일반적인 대안입니다.
운영 체제에 따라 Nginx를 설치하는 방법에는 여러 가지가 있습니다. 패키지와 함께 사용할 수 없는 특수 기능이 필요한 경우 소스에서 Nginx를 빌드 할 수도 있습니다.
패키지 및 포트에서 사용할 수 없는 특수 기능이 필요한 경우 소스 파일에서 Nginx를 컴파일 할 수 있습니다. 그러나 이 튜토리얼에서는 Nginx에 Netdata가 메트릭을 읽을 수 있도록 하는 기능이 번들로 제공됩니다.
Ubuntu에 사용 가능한 사전 빌드 된 Nginx 패키지를 설치하려면 다음을 실행하십시오.
apt install nginx
Ubuntu 용 사전 빌드 Nginx 패키지는 최신 안정 버전의 Nginx로 업데이트 되지 않을 수 있습니다.
Ubuntu에 최신 안정 버전의 Nginx를 설치하려면 :
전제 조건 패키지를 설치하고 안정적인 Nginx 패키지를 위한 적절한 저장소를 설정하십시오 :
sudo apt install curl gnupg2 ca-certificates lsb-release
echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
다음으로, 공식 Nginx 서명 키를 가져 와서 apt가 패키지 진위 여부를 확인할 수 있도록 합니다 :
curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
올바른 키가 있는지 확인하십시오.
sudo apt-key fingerprint ABF5BD827BD9BF62
출력은 다음과 같이 전체 지문 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62를 포함해야 합니다.
pub rsa2048 2011-08-19 [SC] [expires: 2024-06-14]
573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62
uid [ unknown] nginx signing key <signing-key@nginx.com>
다음 명령으로 apt 저장소를 업데이트하고 Nginx를 설치하십시오 :
sudo apt update
sudo apt install nginx
MySQL 설치
MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템입니다.
운영 체제에 따라 MySQL을 설치하는 방법에는 여러 가지가 있습니다.
MySQL APT 저장소는 Ubuntu에서 MySQL 서버, 클라이언트 및 기타 구성 요소를 설치하고 관리하기 위한 deb 패키지를 제공합니다.
아래 명령을 실행하여 리포지토리를 활성화하십시오.
wget http://repo.mysql.com/mysql-apt-config_0.8.13-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.13-1_all.deb
MySQL apt 구성 패키지를 설치하는 동안 시스템에 설치할 MySQL 버전 (8.0 또는 5.7)을 선택할 수 있습니다.
apt 업데이트 및 MySQL 설치
sudo apt update
sudo apt install mysql-server
보안 조치로 다음 명령을 실행하여 MySQL 설치를 추가로 보호 할 수 있습니다.
sudo mysql_secure_installation
PHP 설치
PHP는 웹 개발에 특히 적합한 오픈 소스 범용 스크립팅 언어입니다.
Nginx와 마찬가지로 운영 체제에 따라 PHP를 설치하는 몇 가지 방법이 있습니다.
빠르고 쉬운 프로그램이 실행 중입니다.
apt install php-fpm php-mysql php-cli
이 튜토리얼에서는 Ubuntu 용 최신 안정적인 PHP 릴리스를 사용합니다.
Ondrej PHP 저장소를 활성화하여 시작하십시오.
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
apt를 업데이트하고 필요한 PHP 패키지를 설치하십시오
sudo apt update
sudo apt install php-fpm php-mysql php-cli
이제 구성 파일에서 Nginx 서버 블록을 편집 할 수 있으므로 Nginx는 PHP 파일을 처리 할 수 있습니다.
server {
# . . . your other code
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
}
}
새 구성이 적용되도록 Nginx 서비스를 다시 시작하십시오.
sudo systemctl restart nginx
LEMP 스택이 준비되면 Nginx, MySQL 및 PHP에서 메트릭을 읽도록 Netdata를 구성하십시오.
Netdata 구성
Netdata를 처음 설치하거나 다시 시작하면 Nginx, PHP, MySQL, Redis 등과 같은 사용 가능한 데이터 소스를 자동 감지합니다.
이제 Netdata 서비스를 다시 시작해야 메트릭을 자동 감지하고 수집 할 수 있습니다.
service netdata restart
참고 : 재시작 후 Netdata가 메트릭을 수집하지 않는 경우 소스를 올바르게 구성하지 않았을 수 있습니다.
Netdata + Nginx
Netdata가 Nginx 웹 서버를 자동 감지하려면 ngx_http_stub_status_module을 활성화하고 Nginx 구성 파일의 위치 블록에서 stub_status 지시문을 전달해야 합니다.
다음 명령을 사용하여 필요한 모듈이 활성화되어 있는지 확인하십시오.
nginx -V 2>&1 | grep -o with-http_stub_status_module
이 위치 블록을 Nginx 구성 파일에 추가하십시오.
location /stub_status {
stub_status;
}
다음 명령을 사용하여 Netdata Nginx 모듈의 구성 파일을 편집하여 로컬 Nginx 서버 이외의 많은 원격 Nginx 서버를 모니터링 하도록 Netdata를 구성 할 수 있습니다.
/etc/netdata/edit-config python.d/nginx.conf
모니터링 하려는 서버에서 ngx_http_stub_status_module을 활성화 해야 합니다.
파일 맨 아래에는 더 많은 서버를 추가하려는 경우 아래의 주석 처리가 제거 된 안내서가 표시됩니다.
localhost:
name: "local"
url: "http://localhost/stub_status"
remote1:
name: "local"
url: "http://[REMOTE_IP_ADDRESS]/stub_status"
Nginx 차트는 Netdata 대시 보드에 아름답게 표시됩니다.
Netdata + MySQL
Nginx와 마찬가지로 Netdata는 이미 설치되어 실행중인 Python 라이브러리 (https://github.com/PyMySQL/mysqlclient-pythonMySQLdb)의 요구 사항을 충족하는 경우 MySQL (또는 드롭 인 대체-MariaDB)을 자동 감지 할 수 있습니다.
또한 로컬 호스트의 MySQL 서버에 연결하는 로컬 netdata 사용자가 필요합니다. 이 사용자는 데이터를 변경하거나 MySQL의 작업에 영향을 미칠 수 있는 능력 없이 MySQL의 통계를 수집 할 수 있습니다.
이 사용자를 작성하려면 다음을 실행하십시오.
create user 'netdata'@'localhost';
grant usage on *.* to 'netdata'@'localhost';
flush privileges;
MySQL 서버의 필수 Python 라이브러리 및 netdata 사용자는 Netdata 대시 보드에서 차트를 볼 수 있지만 다음 명령을 사용하여 Netdata MySQL 모듈의 구성 파일을 편집하여 요구 사항을 충족 한 다른 원격 MySQL 서버를 모니터링 할 수 있습니다.
/etc/netdata/edit-config python.d/mysql.conf
# Other content of the config file appear here
...
remote:
user : 'netdata'
host : 'example.org'
port : 3306 # or any port which MySQL can be accessed
대시 보드의 MySQL 차트는 다음과 같아야 합니다.
Netdata + PHP
상태 페이지에서 php-fpm이 활성화되어 있고 웹 서버를 통해 상태 페이지에 액세스 할 수있는 경우 Netdata는 하나 이상의 PHP-FPM 인스턴스를 자동 감지하고 모니터링 합니다.
다음 코드를 실행하여 php-fpm 모듈 구성을 보거나 편집하십시오.
/etc/netdata/edit-config python.d/phpfpm.conf
파일 내용 :
update_every : 3
priority : 90100
local:
url : 'http://localhost/status'
PHP-FPM 차트는 Netdata 대시 보드에 다음과 같이 나타납니다.
결론
Hadoop 및 Kubernetes 클러스터까지 원하는 만큼의 서비스를 모니터링 하도록 Netdata를 설정할 수 있습니다.
그러나 새 서비스 나 구성을 추가 할 때마다 Netdata를 다시 시작하는 것을 잊지 마십시오.
- 이전글Apache2에서 Nginx 웹 서버로 이동 19.11.08
- 다음글라인을 따라 흐르기 19.11.08