반응형
반응형

테스트용도로 이리저리 지지고 볶는 서버가 한 대 있는데,

희한하게 이것만 SSH접근이 느린거다.


리소스 사용량도 거의 없고, 떠있는것도 없는데 느리길래 원인을 파악해보기로 함.


일단 원인은 DNS lookup이 문제인 경우가 대부분이라고 한다.


네트워크가 복잡한 경우에는 이리저리 많이 왔다갔다할테니...

VPN을 사용하지 않는 환경일 경우는 문제가 없는게 대부분일테지만, VPN 환경에서는 가는 곳마다 한 두 서버는 항상 이런 현상이 있었던 것 같다.


이런경우 SSH 접속 시 DNS lookup을 하지 않는 방향으로 설정을 바꿔버리면 손쉽게 해결이 된다.


/etc/ssh/sshd_config 파일을 열어서

UseDNS no 라는 구문을 추가해주고, ssh를 재시작해주면 해결이 된다.


물론 이걸로 해결이 안될지도 모르지만.. 내가 사용하는 환경에서는 이 옵션이면 다 해결이 되는것 같다.


# 추가

UseDNS를 no로 지정하면, postfix (메일 관련 모듈) 이용 시에 문제가 발생하는 것을 확인하였다.

이런 경우에는 UseDNS옵션은 다시 제거 후, GSSAPIAuthentication no 옵션을 지정하면, 메일 관련 모듈에는 영향 없이 SSH 접속만 빨라진다.


GSSAPIAuthentication 옵션은 인증 관련 프레임워크고, openSSH에서 활용하고 있는 모듈 중 하나라고 한다.

yes로 되어 있으면 좀 더 견고한 보안상태로 ssh를 이용할 수 있는 것 같긴한데, 요즘 acl같은게 앞단에 존재하고 있어서 굳이 ssh접속을 느리게 하면서까지 이 옵션을 켜서 써야되나 싶기는하다.


그래서 난 과감하게 no로 지정..;

물론 ssh접속이 빠른 경우에는 굳이 손을 대지 않는게 맞는 것 같다.

반응형
,
반응형

간혹 3rdParty에서 제공하는 바이너리들을 이용하여 스크립트를 짜다보면, 

배치 스크립트는 분명히 인터프리터 방식으로 동작하는데, 자기꺼만 실행하고, 

이후에 명령어는 무시해버리는 경우가 발생한다.


이런 경우, 3rdPary 바이너리를 이용한 스크립트와, 이후 구문을 Background에서 동작하게끔하면,

동시에 실행이 되어 위의 문제가 해결된다.


단, 동시에 실행이 안되는 경우는, 별도의 배치로 빼서 call 실행할Batch.bat 실행을 하면, 순차적으로도 실행이 가능하다.


일단 본 포스팅은 Background로 명령어 실행하는 게 목적이기 때문에, 아래와 같이 하면 된다.


@START /b cmd /c 명령어 입력
@START /b cmd /c 명령어2 입력
반응형
,
반응형

기초적인 건데 나중에도 찾아볼까봐 적어둠.

SET /p param=입력하세요 : 

입력받은 값이 param으로 들어가서, 아래 구문부터 %param% 커맨드로 사용이 가능하다.

반응형
,
반응형

9200번 포트를 외부에 열지 않기 위해, nginx의 proxy를 이용하여 간단히 연결만 해주면 될줄 알았는데,

쪼끄만거 때문에 삽질을 여러번해서 정리함.


[elastic search]

location /elastic {
       proxy_pass http://127.0.0.1:9200/;        // 맨 마지막에 / 를 꼭 넣어주어야 한다.
}

[kibana]

location /kibana/ {      // 여기서도 마지막에 / 를 넣어준다.
    rewrite /kibana/(.*) /$1 break;            // 이걸 빼먹으면, url이 /kibana/를 빼고 세팅이 되버려서, 유지하려면 넣어줌.
    proxy_pass http://127.0.0.1:5601/;    // 마찬가지로 / 를 꼭 넣자 
}

[elastic search hq]

location ~ /hq/_site/ {       
         root        /usr/local/elasticsearch-2.3.2/plugins;     // html파일이 들어있는 root 경로 지정
         index       index.html                                     // index 경로
         proxy_pass  http://127.0.0.1:9200/_plugin/hq/_site/;  // 어디로 연결할지 지정
}

분명 다른 방법도 있을거같은데, nginx를 잘 모르고, 더 이상 삽질하기 싫어서

다음 세팅할땐 이렇게 사용하려고 정리함.


다 redirect때문에 발생하는 문제이기 때문에, 왠만하면 그냥 9200포트 열어서 쓰는게 깔끔함;

반응형
,
반응형

vhost설정에서 아래 구문만 추가해주면 된다.

RedirectMatch ^/$ /application/
반응형
,
반응형

mongoDB 로그를 filter해서 kibana에서 봐야할 일이 생겼다.


shipper부분에서 filter grok 부분을 작성해줘야되는데, 커스터마이즈가 쉽지 않아서

이리저리 구글링하다가 정상적으로 동작하는 구문을 발견!


대충 아래처럼 적어주고 shipping 하면 redis로 잘 적재되고, elasticsearch가 indexing하는데 문제가 없었다.

mongoDB는 3.0버전을 사용하였고, 2.x버전에서는 잘 안될지도 모르겠다. match 구문에 보면 MONGO3라고 되어있기 때문이지..


[logstash.conf]


input {
  file {
    path => "/data/log/mongodb/mongod.log"
    type => mongodb
    start_position => "end" # rotate policy 같은건데, 별 차이 없으므로 default인 end로 그냥 놓는다.
# 자세한 설명은 공홈에... (https://www.elastic.co/guide/en/logstash/current/plugins-inputs-file.html)
  }
}

filter {
  grok {
       match => ["message","%{TIMESTAMP_ISO8601:timestamp}\s+%{MONGO3_SEVERITY:severity}\s+%{MONGO3_COMPONENT:component}%{SPACE}(?:\[%{DATA:context}\])?\s+%{GREEDYDATA:body}"]
  }
  if [body] =~ "ms$"  {
       grok {
        match => ["body",".*\}(\s+%{NUMBER:spend_time:int}ms$)?"]
       }
 }
 date {
   match => [ "timestamp", "ISO8601" ]
   #remove_field => [ "timestamp" ]
  }
}

output {
   if [type] == "mongodb" {
     redis {
       host => "서버 host"
       port => "포트"
       data_type => "list"
       key => "redis에 어떤 key로 넣을 것인지"
     }
   }
}
반응형
,
반응형

AWS를 이용중인데, EBS를 추가하는 경우 볼륨을 수동으로 Mount 해주어야 할 일이 있었다. 


아래와 같은 절차로 Mount를 하면 된다.

$ fdisk -l   # 디스크 목록 확인
$ fdisk [디스크명] # (ex : /dev/xvdb)
Command (m ) : # 이렇게 생긴 창이 나오는데, 다음과 같이 입력한다.

n # 새로운 파티션 생성
p # primary
# 이후 계속 물어보는게 나오는데, 사이즈 조절 등이 필요하지 않은 경우 그냥 Enter를 치면 된다. (나눠서 사용하는 것도 가능한것 같은데 해보진 않아서 잘 모름;)

w # 물어보는게 끝난 후 저장하여 빠져나옴.

$ fdisk -l  # 방금 생성한 파티션명을 확인한다.

$ mkfs -t ext4 [파티션명] (ex: /dev/xvdb1) # ext4 형태로 포맷

$ mount [파티션명] [연결할 폴더명]  # 마운트 (사전에 폴더가 생성되어 있어야 함)

$ echo "[파티션명] [연결할 폴더명] ext4 defaults 1 2" >> /etc/fstab # 영구적으로 마운트 되도록 설정 
    # 위에 진행 했던 정보와 동일해야한다. 

마운트를 하다가 잘못된 경우, Instance를 새로 만들어야 하니, 주의해야 한다.

반응형
,
반응형