Total: Today: Yesterday:
노하우/Linux | 2021. 7. 22. 12:10 | Posted by 자수씨

top이라는 명령어만으로는 머신 상태를 확인하기에는 부족함이 있다.

페이스북에서 과거의 오늘이라며 8년 전 글을 보여줬는데 지금 봐도 충격과 공포이다.

 

 

요즘에는 AWS EC2 머신을 주로 사용하므로 해당 머신에 설치하는 방법을 공유하고자 한다.

 

htop

top의 대안으로 나온 프로그램으로 c언어로 된 오픈소스이다. Ncurses를 이용하여 키보드 커서도 이용할 수 있다.

 

 

설치 방법은 간단하다.

 

# 설치
sudo install -y htop

# 실행
htop

 

iotop

프로세스 별 io 통계를 볼 수 있는 프로그램이다.

 

 

이것 또한 설치 방법은 간단하다. 실행 시에는 root 권한이 필요하여 sudo를 이용한다.

 

# 설치
sudo yum install -y iotop

# 실행
sudo iotop

 

iftop

네트워크 연결 목록 및 상태를 보여주는 프로그램이다. 실시간 트래픽 확인에 도움이 된다.

 

 

EC2의 경우 기본적으로 EPEL 리포지토리가 활성화가 되어 있지 않기 때문에 다음과 같은 설정이 필요하다.

 

# 1. EC2 리눅스 버전 확인
cat /etc/-release

# 2-1. Amazon Linux AMI 2018.03 의 경우
sudo yum-config-manager --enable epel

# 2-2. Amazon Linux 2 의 경우
sudo sudo yum-config-manager --enable epel

# 3. epel-release 설치
sudo yum install epel-release

# 4. iftop 설치
sudo yum install iftop

# 실행
sudo iftop

 

iotop 과 마찬가지로 root 권한이 요구되어 실행시 sudo를 이용한다.

노하우/Linux | 2020. 5. 31. 19:36 | Posted by 자수씨

1. yum 을 최신으로 업데이트 한 후에 gcc 와 make 를 설치한다.

$ sudo yum update
$ sudo yum install gcc make

 

2. 레디스 최신 버전 소스를 내려받아 빌드한다.

$ wget http://download.redis.io/releases/redis-6.0.4.tar.gz
$ tar xzf redis-6.0.4.tar.gz
$ cd redis-6.0.4
$ make

 

3. 디렉토리 생성 및 복사

$ sudo mkdir /etc/redis 
$ sudo mkdir /var/lib/redis
$ sudo cp src/redis-server src/redis-cli /usr/local/bin/
$ sudo cp redis.conf /etc/redis/

 

4. /etc/redis/redis.conf 수정

daemonize yes
bind 0.0.0.0
dir /var/lib/redis
logfile "/var/log/redis_6379.log"

 

5. 자동 실행을 위한 설정

$ cd /tmp
$ wget https://raw.github.com/saxenap/install-redis-amazon-linux-centos/master/redis-server
 
$ sudo mv redis-server /etc/init.d
$ sudo chmod 755 /etc/init.d/redis-server

$ sudo chkconfig --add redis-server
$ sudo chkconfig --level 345 redis-server on

 

6. redis 서버 실행

$ sudo service redis-server start
Starting redis-server (via systemctl):                 [  OK  ]

 

참고자료:

1. https://redis.io/download

 

Redis

*Download Redis uses a standard practice for its versioning: major.minor.patchlevel. An even minor marks a stable release, like 1.2, 2.0, 2.2, 2.4, 2.6, 2.8. Odd minors are used for unstable releases, for example 2.9.x releases are the unstable versions of

redis.io

2. https://github.com/saxenap/install-redis-amazon-linux-centos

 

saxenap/install-redis-amazon-linux-centos

his is a installation script to setup Redis 2.6 as a service on Amazon Linux AMI and CentOS distributions. - saxenap/install-redis-amazon-linux-centos

github.com

 

'노하우 > Linux' 카테고리의 다른 글

[EC2] htop, iftop, iotop  (0) 2021.07.22
[scouter] AWS EC2 인스턴스에 scouter-paper 설치하기  (0) 2019.04.23
[AWS] EC2 인스턴스에 nodejs 설치  (0) 2019.04.23
Linux 에 OpenJDK 8 설치  (0) 2019.04.13
포트 우회하기  (0) 2019.04.12

노하우/Linux | 2019. 4. 23. 00:25 | Posted by 자수씨

지난번 포스팅 에서 내려받았던 scouter 에 paper 기능을 설치하였습니다.

webapps 설정

인증된 사용자만 노출할 것이므로 net_http_api_auth_bearer_token_enabled 설정을 해주고 collector 서버 설정도 합니다.

net_collector_ip_port_id_pws=127.0.0.1:6100:<계정>:<패스워드>
net_http_port=6180
net_http_api_auth_bearer_token_enabled=true

/scouter/webapps 에서 ./startup.sh 로 실행을 하면 아래와 같이 지정된 포트로 LISTEN 상태를 확인할 수 있습니다.

[ec2-user@~ webapp]$ netstat -na | grep LISTEN
...
tcp        0      0 :::6180                     :::*                        LISTEN    

nat 설정으로 외부포트를 내부 6180 연결하여 로그인이 정상적으로 되지 않습니다.

네트워크 탭을 보면 loginGetToken 에서 오류가 납니다. (외부포트와 내부포트가 달라서 발생하는 문제)

scouter-paper 수정

github 에서 소스를 내려받은 후 강제로 외부포트를 설정하였습니다. 그리고 빌드 후 다시 webapps/extweb 에 배포

/src/App.js

componentWillMount() {
    ...

    // URL로부터 스카우터 서버 정보를 세팅
    let params = getParam(this.props, "address,port,protocol,authentification");
    if (params[0] && params[1]) {
        let paramAddress = params[0];
        let paramPort = params[1];
        let paramProtocol = params[2] ? params[2] : "http";
        let paramAuthentification = params[3] ? params[3] : "none";

        let found = false;
        for (let i=0; i<config.servers.length; i++) {
            let server = config.servers[i];
            if (server.protocol === paramProtocol && server.address === paramAddress && String(server.port) === String(paramPort) && server.authentification === paramAuthentification) {
                found = true;
                server.default = true;
            } else {
                server.default = false;
            }
        }

        if (!found) {
            config.servers.push({
                protocol: paramProtocol,
                address: paramAddress,
                port: paramPort,
                authentification :paramAuthentification,
                default : true
            });
        }
    }

    config.servers[0].port = <외부포트>;

    if (config && config.servers) {
        config.servers.forEach((server) => {
            server.name = server.protocol + "://" + server.address + ":" + server.port
        });
    }
    ...
}

정상적으로 접근이 됩니다.

'노하우 > Linux' 카테고리의 다른 글

[EC2] htop, iftop, iotop  (0) 2021.07.22
[Redis] AWS EC2 인스턴스에 redis-server 설치  (0) 2020.05.31
[AWS] EC2 인스턴스에 nodejs 설치  (0) 2019.04.23
Linux 에 OpenJDK 8 설치  (0) 2019.04.13
포트 우회하기  (0) 2019.04.12

노하우/Linux | 2019. 4. 23. 00:16 | Posted by 자수씨

nvm(노드 버전 관리자)을 설치

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | bash

nvm 활성화

. ~/.nvm/nvm.sh

npm 설치

2019년 4월 23일 기준 10.15.3 버전이 최신이므로 해당 버전을 설치

[ec2-user@~~]$ nvm install 10.15.3
########################################################################################################################################################################################################################################## 100.0%
Computing checksum with sha256sum
Checksums matched!
Now using node v10.15.3 (npm v6.4.1)
Creating default alias: default -> 10.15.3 (-> v10.15.3)

버전 확인

[ec2-user@~~]$ node -e "console.log('Running Node.js ' + process.version)"
Running Node.js v10.15.3

참고자료

노하우/Linux | 2019. 4. 13. 12:28 | Posted by 자수씨

EC2 인스턴스나 리눅스 기본 패키지에는 아직까지 JRE 1.7 이 설치되어 있는 경우가 많다.

$ java -version
java version "1.7.0_191"
OpenJDK Runtime Environment (amzn-2.6.15.4.82.amzn1-x86_64 u191-b01)
OpenJDK 64-Bit Server VM (build 24.191-b01, mixed mode)

 

다음과 같이 yum 을 이용하여 OpenJDK 8 을 설치한다.

$ sudo yum install -y java-1.8.0-openjdk-devel.x86_64

 

여러 JRE 가 설치된 경우 OS 에서 관리하는 java 를 설정하도록 아래와 같이 수행한다.

$ sudo alternatives --config java

There are 2 programs which provide 'java'.

  Selection    Command
-----------------------------------------------
*+ 1           /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
    2           /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java

Enter to keep the current selection[+], or type selection number: 2

 

불필요한 JRE 7 은 제거한다.

$ sudo yum remove java-1.7.0-openjdk

 

참고자료

 

centos에서 java version관리 (alternatives 사용)

 

blog.seotory.com

 

노하우/Linux | 2019. 4. 12. 15:36 | Posted by 자수씨

머신 환경 상 서버의 기본 포트로 서비스 할 수 없을 경우 

 

서버의 기본 포트를 바꾸는 것 보다는 iptable 로 포트를 리다이렉트하는 것이 편하다.

 

$ sudo iptables -I INPUT 1 -p tcp --dport [외부포트] -j ACCEPT
$ sudo iptables -I OUTPUT 1 -p tcp --dport [외부포트] -j ACCEPT
$ sudo iptables -t nat -A PREROUTING -p tcp --dport [외부포트] -j REDIRECT --to-port [내부포트]

 

UDP 는 아래와 같이 설정

$ sudo iptables -I INPUT 1 -p udp --dport [외부포트] -j ACCEPT
$ sudo iptables -I OUTPUT 1 -p udp --dport [외부포트] -j ACCEPT
$ sudo iptables -t nat -A PREROUTING -p udp --dport [외부포트] -j REDIRECT --to-port [내부포트]

 

 

삭제 시

sudo iptables -D INPUT 1 -p tcp --dport [외부포트] -j ACCEPT
sudo iptables -D OUTPUT 1 -p tcp --dport [외부포트] -j ACCEPT

sudo iptables -t nat -D PREROUTING -p tcp --dport [외부포트] -j REDIRECT --to-port [내부포트]