앞서 작성한 code-server에 HTTPS를 적용해 보도록 하겠습니다. 이번 글에선 certbot의 nginx옵션 이용해 인증서를 발급받고 적용해 보도록 하겠습니다.

 

편의를 위해 code-server 설치와 nginx를 통한 역방향 프록시 설정에 대한 설명은 스킵하도록 하겠습니다.

 

 

 

01. code-server 설치 및 역방향 프록시 설정.

 

다음 글을 참고하여 code-server를 미리 준비합니다: https://smoh.tistory.com/456

 

[Ubuntu] 아이패드에서 code-server로 코딩 공부 해보기.

아이패드에서 프로그래밍 공부를 해보고자 여러 어플을 찾아봤습니다. 파이썬 같은 경우는 적당한 유료 어플이 있었지만 VSCode와 같은 무료면서 강력한 기능을 가진 어플은 없었습니다. 다양한

smoh.tistory.com

 

** 위 글에선 예시를 위해 AWS의 EC2를 사용하였습니다만 현재는 관리하는 서버에 code-server를 옮겨둔 상태입니다.

** NGINX를 통한 역방향 프록시 설정 방법은 별도로 설명하지 않습니다.

 

 

 

02. CERTBOT 설치.

 

만약 apt 같은 OS 패키지 관리자를 사용하여 설치된 Certbot 패키지가 있는 경우 기존 Certbot은 제거해야 합니다. 다음 명령어로 Certbot을 제거해 주세요.

sudo apt-get remove certbot

 

이제 snap을 사용해 최신 Certbot을 설치해 줍니다. 다음 명령어로 snap을 사용해 Certbot을 설치합니다.

sudo snap install --classic certbot

 

설치가 완료되면 다음 명령어를 실행해 certbot 명령을 실행할 수 있는지 확인합니다.

sudo ln -s /snap/bin/certbot /usr/bin/certbot

 

이제 다음 명령어를 수행해 인증서를 발급받습니다.

sudo certbot certonly --nginx

 

만약 nginx에 여러 개의 사이트가 등록되어 있으면 위의 그림처럼 리스트가 나열됩니다. 발급을 원하는 사이트의 번호를 입력합니다. 만약 입력하지 않는 경우 모든 사이트가 선택됩니다. 

 

이제 인증서 발급이 완료되었습니다. 인증서의 위치는 /etc/letsencrypt/live/사이트명 폴더에 저장됩니다.

 

 

 

03. NGINX 설정 변경.

 

다음 명령어를 통해 nginx의 설정 파일을 엽니다. 전 별도 설정 파일에 server 설정을 관리하고 있습니다. 설정 파일 이름은 사용자에 따라 다릅니다.

sudo vi /etc/nginx/conf.d/my-server.conf

 

설정 파일을 열고 다음과 같이 설정을 추가합니다.

#/etc/nginx/conf.d/my-server.conf
#code-server
server {
  listen 80;
  server_name your.domain.here;
  location / {
    proxy_pass http://localhost:{PORT};
    proxy_set_header Host $host;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection upgrade;
    proxy_set_header Accept-Encoding gzip;
  }
  listen [::]:443 ssl ipv6only=on;
  listen 443 ssl;
  ssl_certificate /etc/letsencrypt/live/your.domain.here/fullchain.pem;
  ssl_certificate_key /etc/letsencrypt/live/your.domain.here/privkey.pem;
  include /etc/letsencrypt/options-ssl-nginx.conf;
  ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}

 

이제 다음 명령어로 nginx 서비스를 재시작합니다.

sudo service nginx restart

 

접속해서 확인해 봅시다.

 

 

도메인에 접속하면 https가 정상적으로 적용된 것을 확인할 수 있습니다.

 

 

 

 

 

 

반응형

 

 

아이패드에서 프로그래밍 공부를 해보고자 여러 어플을 찾아봤습니다. 파이썬 같은 경우는 적당한 유료 어플이 있었지만 VSCode와 같은 무료면서 강력한 기능을 가진 어플은 없었습니다.

 

다양한 방면으로 찾아보던 중 Code Server라는 기능을 사용하면 웹 브라우저에서 VSCode의 기능을 이용할 수 있다고 하여 사용하는 방법에 대해 포스팅합니다.

 

 

 

1. Code server란?

 

Run VS Code on any machine anywhere and access it in the browser.

* Code on any device with a consistent development environment
* Use cloud servers to speed up tests, compilations, downloads, and more
* Preserve battery life when you're on the go; all intensive tasks run on your server

🔔 code-server is a free browser-based IDE while Coder, is our enterprise developer workspace platform. For more information, visit Coder.com

 

사실상 마지막 줄이 핵심입니다. code-server은 무료입니다!

 

https://github.com/coder/code-server

 

GitHub - coder/code-server: VS Code in the browser

VS Code in the browser. Contribute to coder/code-server development by creating an account on GitHub.

github.com

 

자세한 내용은 깃 허브에서 확인하실 수 있습니다.

 

 

 

2. Code server 설치 서버 요구 사항.

 

우선 Ubuntu 서버를 미리 준비합니다. 서버 스펙의 요구사항은 다음과 같습니다.

  • 1 GB of RAM
  • 2 CPU cores

전 이 글에서 AWS EC2의 Free tier를 사용한 우분투 서버를 사용합니다.

 

 

 

3. Code server 설치.

 

code-server를 설치하는 데는 다음과 같은 세 가지 방법이 있습니다

  • 대부분의 프로세스가 자동화된 설치 스크립트를 사용하는 방법.
  • 수동으로 설치하는 방법.
  • 클라우드 업체에 원버튼으로 배포하는 방법.

 

저는 가장 처음 방법인 설치 스크립트를 사용해 설치를 진행해 보도록 하겠습니다. 

 

SSH를 사용해 우분투 서버에 접속합니다. 접속 후 다음 명령어를 수행해 설치를 미리 테스트해 봅니다.

curl -fsSL https://code-server.dev/install.sh | sh -s -- --dry-run

위와 같이 드라이 런의 결과를 미리 확인해 볼 수 있습니다.

 

이제 진짜 설치를 진행해 보도록 합니다. 다음 명령어를 수행해 주세요.

curl -fsSL https://code-server.dev/install.sh | sh

설치가 완료되면 다음 명령어로 서버 부팅 시 서비스가 시작될 수 있게 만들어 준 뒤 code-server를 확인해 줍니다.

sudo systemctl enable --now code-server@ubuntu
code-server -h

** @뒤는 유저의 이름을 적절히 변경해 넣어 주셔야 합니다.

 

이제 설정 파일을 수정해 봅시다.

 

 

 

4. 설정 구성.

 

설정 파일은 ~/.config/code-server/config.yaml입니다. 다음 명령어로 설정 파일을 열어줍니다.

sudo vi ~/.config/code-server/config.yaml

파일을 열면 기본 설정 파일은 다음과 같습니다.

외부에서 접속 가능하도록 하기 위해서 127.0.0.1을 0.0.0.0으로 변경하고 포트도 원하시면 변경해 주시면 됩니다.

비밀번호는 자신이 편한 값으로 수정해 주시거나 외울 수 있다면 그래도 쓰시면 됩니다.

cert 옵션은 자체 인증 서버를 사용해 https 통신을 할 때 사용합니다. 우선 그대로 두고 넘어가도록 하겠습니다.

 

설정 파일 변경이 완료되었다면 다음 명령어를 사용해 code-server를 재시작해 줍니다.

sudo systemctl restart code-server@ubuntu

이제 code-server에 접속해 봅시다.

 

 

 

5. 접속 확인.

 

처음 접속하면 다음과 같은 화면을 확인할 수 있습니다.

 

설정에서 변경한 암호를 입력해 줍시다.

이제 맘껏 사용하시면 됩니다!

 

다음 글을 참고하시면 HTTPS 설정을 진행할 수 있습니다: https://smoh.tistory.com/457

 

[Ubuntu] Certbot(Nginx)을 이용해 code-server에 https 적용하기.

앞서 작성한 code-server에 HTTPS를 적용해 보도록 하겠습니다. 이번 글에선 certbot의 nginx옵션 이용해 인증서를 발급받고 적용해 보도록 하겠습니다. 편의를 위해 code-server 설치와 nginx를 통한 역방향

smoh.tistory.com

 

 

 

 

 

 

반응형

 

Ubuntu Jenkins에서 docker build시 Docker permission denied 문제를 수정하는 방법에 대해 알아봅니다.

 

 

 

1. 문제

 

Ubunto 20.04에 설치된 Jenkins 2.317 버전에서 docker build시 다음 에러 메시지와 함께 permission denied 에러가 발생합니다.

 

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/build?buildargs=%7B%7D&cachefrom=%5B%5D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&labels=%7B%7D&memory=0&memswap=0&networkmode=default&rm=1&shmsize=0&t=my-app%3Alatest&target=&ulimits=null&version=1": dial unix /var/run/docker.sock: connect: permission denied

 

 

 

2. 원인 및 수정

 

jenkins 유저가 docker에 접근할 권한을 설정해야 합니다. 다음 명령을 통해 docker에 권한을 부여합니다

 

> sudo usermod -aG docker jenkins

 

이후 Jenkins 서비스를 재시작 합니다.

 

> sudo service jenkins restart

 

이후 다시 빌드를 수행해보면 정상적으로 빌드가 진행되는 것을 확인할 수 있습니다.

 

[MyApp] $ /bin/sh -xe /tmp/jenkins10435575314027477160.sh
+ docker build --tag my-app:latest --file Dockerfile .
Sending build context to Docker daemon 249.9MB
Step 1/5 : FROM mcr.microsoft.com/dotnet/aspnet:5.0
...

 

jenkins 서비스 재시작을 잊지 마세요.

 

 

 

 

 

반응형

 

WSL2가 나오며 기존의 WSL을 삭제하는 방법에 대해 알아봅니다.

 

 

 

오래된 WSL을 사용하는 우분투 제거하기.

 

먼저 윈도우 키를 눌러 "설정"을 검색해 설정 앱으로 이동합니다.

 

 

설정 앱에서 "앱" 항목을 클릭합니다.

 

 

앱 실행 별칭에 "Ubuntu"를 검색합니다. 구식 우분투를 선택한 뒤 "제거"를 진행해 주면 됩니다.

 

 

이후 터미널을 켜보면 WSL1을 사용하는 우분투가 더 이상 존재하지 않음을 확인할 수 있습니다.

 

 

 

 

Windows Terminal 설정 충돌 문제 수정하기.

 

WSL1을 사용하기 위해 Windows Terminal을 사용하시던 분이라면 설정 충돌이 발생할 수 있습니다: github.com/microsoft/terminal/issues/5458

 

MEGATHREAD: Breaking settings changes in version 0.11! · Issue #5458 · microsoft/terminal

BREAKING SETTINGS CHANGES IN 0.11 BREAKING CHANGE We've deleted a lot of legacy settings handling (#5190) Please see our blog post and our most recent status update for more information. If you...

github.com

설정 충돌이 발생하시는 분은 앱 실행 별칭에 "Terminal"을 검색 후 "고급 옵션"을 클릭해 "초기화"를 진행해주시면 정상적으로 동작합니다.

 

 

 

 

 

반응형

 

Ubuntu 20.04에 설치된 pgAdmin4의 여러 설정을 변경하는 방법에 대해 알아봅니다.

 

다음 글을 참고해 Postgresql 및 pgAdmin4를 준비합니다.

제 서버에선 NGINX가 돌고 있어서 pgAdmin4 설치 후 Apache Web Server 실행 도중 에러가 나 NGINX를 잠시 끈 상태로 설치를 했습니다.

 

계속 이렇게 둘 순 없어서 NGINX와 pgAdmin4를 동시에 사용할 수 있는 방법에 대해 알아봤습니다. 가장 먼저 Apache Web Server의 기본 동작 포트를 변경하도록 합니다.

 

> sudo vi /etc/apache2/port.conf

 

 

적당한 값으로 변경합니다. 다음으로 virtual host의 포트 정보도 변경해야 합니다.

 

> sudo vi /etc/apache2/sites-enabled/000-default.conf

 

 

앞서 변경한 값으로 맞춰줍니다. 이제 Apache Web Server를 재시작합니다.

 

> sudo service apache2 restart

 

그 후 http://your.domain.com:8080/pgadmin4로 접속합니다. 

 

 

정상 동작이 확인됩니다. 이제 NGINX 설정을 변경합니다.

 

> sudo vi /etc/nginx/conf.d/my-server.conf

 

 

** conf 파일의 위치 및 이름은 NGINX 구성에 따라 달라질 수 있습니다.

 

NGINX를 재시작합니다.

 

> sudo service niginx restart

 

이제 외부에서 http://your.domain.com/pgadmin4를 이용해 pgadmin4에 접속할 수 있습니다.

 

 

 

 

 

반응형

 

Postgresql을 위해 pgAdmin을 사용합니다. 이 글에선 Ubuntu 20.04에 pgAdmin을 설치하는 방법에 대해 알아봅니다.

 

 

 

1. pgAdmin이란

 

pgAdmin은 PostgreSql을 관리할 수 있는 PostgreSQL 전용 GUI 툴입니다.

 

 

psql과 같은 cli 클라이언트 툴을 사용하는데 불편해 GUI를 지원하는 툴이 개발되었으며 웹 버전과 데스크톱 버전으로 나뉘어 있습니다.

 

 

 

2. pgAdmin 설치

 

Ubuntu 20.04에 pgAdmin4를 설치해 보도록 합니다. 먼저 리포지토리를 위한 퍼블릭 키를 설치합니다. 

 

> sudo curl https://www.pgadmin.org/static/packages_pgadmin_org.pub | sudo apt-key add 

 

 

다음으로 리포지토리 설정 파일을 생성합니다.

 

> sudo sh -c 'echo "deb https://ftp.postgresql.org/pub/pgadmin/pgadmin4/apt/$(lsb_release -cs) pgadmin4 main" > /etc/apt/sources.list.d/pgadmin4.list && apt update'

 

 

이제 pgAdmin4를 설치할 수 있습니다. 다음 명령어로 pgAdmin4를 설치합니다.

 

> sudo apt install pgadmin4

 

 

만약 데스크톱 버전 혹인 웹 버전 둘 중 하나만 사용하고 싶다면 다음 명령어 중 하나를 골라 설치하면 됩니다.

 

> sudo apt install pgadmin4-desktop
> sudo apt install pgadmin4-web 

 

만약 웹 버전이 포함된 패키지를 설치했다면 pgAdmin-web을 설치해야 합니다. 다음 명령어를 통해 설치를 진행합니다.

 

> sudo /usr/pgadmin4/bin/setup-web.sh

 

 

이메일 주소와 비밀번호를 입력해줍니다. 지금 입력한 이메일 주소와 비밀번호가 초기 로그인 계정입니다.

 

 

pgAdmin4는 기본적으로 아파치 웹 서버 위에서 구동됩니다. y를 눌러 진행하면 http://your.domain.com/pgadmin4에 에 pgAdmin4를 접속할 수 있습니다. 

 

 

 

 

 

 

반응형

 

Ubuntu 20.04에 설치된 PostgreSQL의 버전을 업그레이드하는 방법에 대해 알아봅니다.

 

 

 

1. 기존 설치된 PostgreSQL 관련 패키지 제거하기.

 

먼저 지워야 할 패키지를 확인합니다. 다음 명령어를 통해 설치된 PostgreSQL의 패키지 리스트를 확인해 줍니다.

 

> dpkg --get-selections | grep postgres

 

 

이제 확인된 구버전의 PostgreSQL을 모두 제거해 줍니다

 

> apt-get --purge remove postgresql-12 postgresql-client-12 postgresql-client-common postgresql-common postgresql-contrib

 

만약 다음과 같이 디렉터리가 비어있지 않다는 메시지가 보이면 강제로 삭제합니다.

 

 

> sudo rm -rf /etc/postgresql-common
> sudo rm -rf /var/lib/postgresql

 

다시 한번 다음 명령어를 입력해 남아있는 패키지가 있는지 확인합니다.

 

> dpkg --get-selections | grep postgres

 

 

 

2. 시스템 업그레이드

 

이제 가장 최신의 릴리즈인 PostgreSQL13을 설치하도록 하겠습니다. 설치에 앞서 제 우분투 버전은 20.04 임을 미리 안내해 드립니다. 아래의 예시는 모두 우분투 20.04를 기준으로 작성되었습니다.

 

먼저 시스템을 업그레이드해줍니다

 

> sudo apt-get update
> sudo apt -y upgrade

 

 

만약 업그레이드할 항목이 있어 리붓이 필요하다면 리붓까지 시켜줍니다

 

> sudo reboot

 

 

 

3. PostgreSQL 13 리포지토리 추가하기

 

시스템이 업데이트되었으면 이제 PostgreSQL 13을 위한 APT 리포지토리를 추가합니다.

 

> wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -  

 

다음으로 리포지토리에 대한 구성 파일을 생성합니다.

 

> sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

 

 

이제 패키지 리스트를 업데이트합니다.

 

> sudo apt-get update

 

 

 

 

4. PostgreSql 13 설치

 

이제 모든 준비가 끝났습니다 다음 명령어로 PostgreSQL 13을 설치합니다.

 

> sudo apt-get -y install postgresql

 

 

정상적으로 설치가 끝나면 Postgresql 서비스를 실행시켜줍니다.

 

> sudo service postgresql start
> sudo service postgresql status

 

 

정상적으로 동작하는 것을 확인할 수 있습니다.

 

 

 

** Ubuntu firewall에서 PostgreSql 허용하기

 

PostgreSql은 기본적으로 5432 포트를 사용합니다. 다음 명령어를 사용해 5432 포트를 허용해 줍시다.

 

> ufw allow 5432

 

 

 

 

 

 

반응형

 

우분투 20.04에 4TB의 추가 디스크를 마운트 하는 방법에 대해 알아봅니다.

 

 

 

1. 디스크 마운트

 

일반적인 방식의 디스크 마운트는 다음 글을 확인해주시기 바랍니다:

2020/11/30 - [Programming/Linux] - [Ubuntu] 디스크 추가하기.

 

[Ubuntu] 디스크 추가하기.

우분투 20.04에 추가 디스크를 마운트 하는 방법에 대해 알아봅니다. 1. 디스크 확인하기. 디스크를 마운트 한 후 마운트가 제대로 되었는지 확인합니다. $ sudo fdisk -l 1TB짜리 SSD와 4TB짜리 HDD가 마

smoh.tistory.com

 

 

 

2. 파일 시스템 변경.

 

리눅스는 파일 시스템 구조상 2TB 이상의 마운트가 불가능합니다. 따라서 gpt로 파일 시스템을 변경해 주도록 하겠습니다. 다음 명령어를 통해 놀고 있는 디스크를 확인합니다.

 

$ sudo fdisk -l

 

 

찾았으면 다음 명령어로 파티션을 재구성합니다.

 

$ sudo parted /dev/sdb

 

 

이미 사용 중인 공간이므로 재부팅이 필요하단 메시지가 나옵니다. 재부팅 전에 자동 마운트를 해제해 둡시다.

 

$ sudo vi /etc/fstab

 

 

주석 처리 후 재부팅해줍니다. 재부팅 후 다시 다음 명령어로 디스크를 확인해 봅니다.

 

$ sudo fdisk -l

 

 

디바이스 마운트 정보가 사라진 것을 확인할 수 있습니다. 잘 보면 디스크 라벨 타입도 변경이 되어있습니다.

 

 

 

3. 디스크 포맷

 

이제 디스크를 다시 포맷해줍니다.

 

$ sudo mkfs.ext4 /dev/sdb

 

 

디스크 포맷이 완료되며 UUID가 변경되었음을 확인할 수 있습니다.

 

 

 

4. 디스크 마운트

 

이제 다시 마운트 작업을 진행해야 합니다. 다시 자동 마운트를 등록합니다.

 

$ sudo vi /etc/fstab

 

 

저장 후 앞서 했던 것과 동일하게 마운트를 적용해 줍니다.

 

$ sudo mount -a

 

이제 마운트 된 결과를 확인해 봅시다.

 

$ df -h

 

 

이제 모든 용량이 정상적으로 마운트 된 것을 확인할 수 있습니다.

 

 

 

 

 

반응형

 

우분투 20.04에 추가 디스크를 마운트 하는 방법에 대해 알아봅니다.

 

 

 

1. 디스크 확인하기.

 

디스크를 마운트 한 후 마운트가 제대로 되었는지 확인합니다.

 

$ sudo fdisk -l

 

 

1TB짜리 SSD와 4TB짜리 HDD가 마운트 된 걸 확인할 수 있습니다. 이제 다음 명령어를 수행해 현재 사용 중인 디스크를 봅니다.

 

$ df -h

 

 

4TB HDD가 보이지 않습니다. 이제 새로 추가한 디스크를 우분투 OS에서 인식할 수 있도록 마운트 해 보겠습니다.

 

 

 

2. 파티션 생성.

 

위에서 확인한 디스크에 파티션을 생성해 주기 위해 다음 명령어를 수행합니다.

 

$ sudo fdisk /dev/sdb

 

 

프롬프트에 따라 위와 같은 값을 넣어주고 진행합니다. 공백은 그냥 엔터를 입력해 주시면 됩니다.

 

이후 다음 명령어로 다시 디스크를 확인해 봅니다.

 

$ sudo fdisk -l

 

 

디바이스가 잡힌 게 확인됩니다.

 

 

 

3. 파티션 포맷

 

위에서 확인한 디바이스 파티션의 포맷을 진행합니다.

 

$ sudo mkfs.ext4 /dev/sdb1

 

 

포맷이 완료되면 UUID를 확인할 수 있습니다. 위에서도 보이지만 아래의 명령어를 통해서도 UUID를 확인할 수 있습니다.

 

$ sudo blkid

 

 

 

 

4. 마운트

 

이제 디스크를 사용하기 위해 마운트 할 차례입니다. 먼저 마운트 할 대상 폴더를 만들어줍니다.

 

$ sudo mkdir -p /data

 

자동 마운트를 위해 마운트 정보를 /etc/fstab 파일에 추가합니다.

 

$ sudo vi /etc/fstab

 

 

이제 마운트를 적용해 줍니다.

 

$ sudo mount -a

 

이제 마운트 된 결과를 확인해 봅시다.

 

$ df -h

 

 

별도의 재부팅 작업 없이 바로 디스크가 마운트 된 것을 확인할 수 있습니다.

 

 

 

5. 문제점?

 

가장 위에서 확인해 볼 수 있었듯이 제 HDD는 4TB입니다만 마지막 결과를 보니 2TB밖에 잡히지 않았습니다. 리눅스 파일 구조상 2TB 이상 한 번에 마운트 하기 위해선 GPT로 파일 구조를 변경해야 합니다.

 

해당 현상을 수정하는 방법에 대해서는 다음 글에서 확인해 보도록 하겠습니다.

 

 

 

 

반응형

 

우분투에 Fluentd를 설치하는 방법에 대해 알아봅니다.

 

 

 

0. 사전 준비

 

Fluentd를 설치할 우분투 환경을 미리 준비합니다. 해당 글에선 우분투 20.04 버전을 기준으로 설명합니다.

 

 

 

1. 설치 전 설정.

 

Fluentd를 설치하기 전에 이후 단계에서 문제가 발생하지 않도록 환경을 올바르게 설정할 것을 권장합니다. 공식 문서에 따르면 NTP설정, 최대 File Descriptors 숫자 설정, 네트워크 커널 매개 변수 최적화를 먼저 수행할 것을 권고합니다.

 

먼저 NTP를 설정해줍니다. 정확한 현재 타임 스탬프를 갖도록 노드에 chrony, ntpd 등과 같은 NTP 데몬을 설정하는 것이 좋습니다. 이는 모든 프로덕션 등급 로깅 서비스에 중요합니다. Amazon Web Services 사용자의 경우 AWS에서 호스팅 하는 NTP 서버를 사용하는 것이 좋습니다.

 

다음은 File Descriptors의 최대치를 늘려줘야 합니다. 만약 td-agent 패키지를 사용하는 경우이 값은 기본적으로 설정되므로 스킵하셔도 됩니다. 이 글은 td-agent를 이용할 것이므로 변경 방법만 설명한 뒤 넘어가도록 하겠습니다. 저와 동일한 방법으로 설치를 원하시는 분은 NTP 설정만 하시고 넘겨주시면 됩니다.

 

다음 명령어를 통해 현재 시스템의 File Descriptors의 최댓값을 확인해 줍시다. 만약 해당 값이 1024라면 수정이 필요합니다. 

 

$ ulimit -n

 

 

/etc/security/limits.conf 파일을 열고 다음 내용을 추가해 주세요.

 

$ sudo /etc/security/limits.conf

root soft nofile 65536
root hard nofile 65536
* soft nofile 65536
* hard nofile 65536

 

 

저장 후 시스템을 리부팅 시켜줍니다. 만약 systemd에서 fluentd를 실행한다면 LimitNOFILE = 65536 옵션도 사용할 수 있습니다.

 

Fluentd 인스턴스가 많은 고부하의 환경이라면 네트워크 커널 매개 변수 최적화가 필요합니다. 다음 구성을 /etc/sysctl.conf에 추가합니다.

 

net.core.somaxconn = 1024
net.core.netdev_max_backlog = 5000
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_wmem = 4096 12582912 16777216
net.ipv4.tcp_rmem = 4096 12582912 16777216
net.ipv4.tcp_max_syn_backlog = 8096
net.ipv4.tcp_slow_start_after_idle = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 10240 65535

 

전 개발용으로 사용할 예정이기 때문에 네트워크 커널 매개 변수 최적화 과정도 생략하였습니다. 만약 변경사항을 적용했다면 sysctl -p 명령을 사용하거나 노드를 재부팅해야 합니다.

 

 

 

2. td-agent를 이용한 fluentd 설치.

 

td-agent는 Treasure Data, Inc.에서 관리하는 안정적인 Fluentd 배포 패키지입니다. Fluentd에서는 설치 프로세스를 자동화하기 위해 쉘 스크립트를 제공해 줍니다. /etc/apt/source.list.d/treasure-data.list에 새  apt 저장소를 등록하고 td-agent deb 설치를 시작해 봅시다.

 

$ curl -L https://toolbelt.treasuredata.com/sh/install-ubuntu-focal-td-agnet4.sh | sh

 

 

뭔가 자동으로 쭉 진행 되고 위처럼 맨 마지막에 Installation complete. Happy Logging!이 찍혔다면 정상적으로 설치가 된 겁니다. 이제 데몬을 실행시켜줍시다.

 

$ sudo service td-agent start
$ sudo service td-agent status

 

 

 

3. HTTP를 통해 샘플 로그 업로드 해보기.

 

이제 샘플 로그를 한번 올려보겠습니다. 엔드포인트의 기본 포트는 8888입니다. 다음 명령어를 통해 설정값을 조회할 수 있으며 원하시면 여기서 변경할 수 있습니다.

 

$ vim /etc/td-agent/td-agent.conf

 

 

이제 HTTP 엔드포인트에서 로그를 수신해 stdout으로 라우팅 해보도록 하겠습니다. 다음 명령어를 확인해 주세요. td-agent 로그의 경우 /var/log/td-agent/td-agnet.log를 참고하시면 됩니다.

 

$ curl -X POST -d 'json={"json":"message"}' http://localhost:8888/debug.test
$ tail -n 1 /var/log/td-agent/td-agent.log

 

 

로그를 정상적으로 확인할 수 있습니다.

 

 

 

 

 

반응형

+ Recent posts