1. STS설치
  2. lombok 설치 : java get, setter 등을 소스에서 없애서 가독성 향상
  3. SVN커넥터 설치 : Subversive로 설치








  4. 글꼴 변경
  5. 코드 템플릿 변경





  6. JRE(Java) 설정



  7. 톰캣서버 설정



  8. 로거 자동완성용 Java 템플릿 추가
    • CTRL+Space로 로거 자동 완성을 위한 템플릿 등록(LOG 타이핑 후 CTRL+Space를 누르면 자동 완성 됨)
      • private static final Logger LOG = LoggerFactory.getLogger(${enclosing_type}.class);




  9. 인코딩 변경
















  10. javascript 자동완성 셋팅
    • javascript 어시스트 기능 ON



    • javascript Plug-In 설치(문제가 있을 수 있으니 필요한 경우에만 설치)


  1. STS설치
  2. lombok 설치 : java get, setter 등을 소스에서 없애서 가독성 향상
  3. SVN커넥터 설치 : Subversive로 설치





  4. 글꼴 변경
  5. 코드 템플릿 변경



  6. JRE(Java) 설정


  7. 톰캣서버 설정


  8. 로거 자동완성용 Java 템플릿 추가(lombok을 사용한다면 클래스파일위에 @slf4j를 사용하기 때문에 셋팅할 필요 없음)
    • CTRL+Space로 로거 자동 완성을 위한 템플릿 등록(LOG 타이핑 후 CTRL+Space를 누르면 자동 완성 됨)
      • private static final Logger LOG = LoggerFactory.getLogger(${enclosing_type}.class);



  9. 인코딩 변경









  10. javascript 자동완성 셋팅
    • javascript 어시스트 기능 ON


    • javascript Plug-In 설치(필요시)


  11. 저장시 자동으로 포맷팅 및 import 처리

가끔 kibna 대쉬보드를 다른사람 또는 시스템에 공유(iframe처리)할 때 full 스크린으로 보여줄 필요가 있다.


방법은,

url(shot cut url이 아니라 full url) 뒤에 &embed=true를 붙여주면 된다.


kibana 5.0.1 버전에서 잘 작동됨을 확인하였다.


참고 : https://github.com/elastic/kibana/issues/1610

Mongo DB 설치 및 Replica set으로 설정

#tokumx설치
yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
yum install tokumx-enterprise

-- OS 커널쪽 설정 수정
echo never > /sys/kernel/mm/transparent_hugepage/enabled


프로세스 시작 후 mongo 커멘드로 콘솔 접속


# primary와 arbiter만으로 2개 노드로  replica set 띄워봄
config = {
           _id: "repl_set",
           members: [
                      {_id: 0,host: "Primary IP입력:27017"},
                      {_id: 0,host: "Secondary IP입력:27017"},
                      {_id: 2,host: "Arbiter IP입력:37017",arbiterOnly:true},
                    ]
         }

rs.initiate(config);


# 참고 secondary 장비 셋팅이 완료된 후에 노드 add
rs.add("Secondary IP입력:27017")


참고 샘플 - Primary 또는 Secondary 노드 시작 커멘드
/usr/bin/mongod --replSet repl_set --dbpath /data/mongo/repl_0 --fork --logpath /var/log/tokumx/repl_0.mongod --expireOplogDays 3 --cacheSize 1g --quiet --maxConns 20000

참고 샘플 - arbiter 노드 시작 커멘드

/usr/bin/mongod --replSet repl_set --dbpath /data/mongo/arbiter --fork --logpath /var/log/tokumx/repl_arbiter.mongod --expireOplogDays 1 --oplogSize 1 --port 37017 --noprealloc


정리가 더 필요하지만 메모 목적으로 우선 블로그에 저장


elasticsearch 설치

#유저홈 밑의 apps 디렉토리에 설치하며 1개 물리서버에 인스턴스를 2개띄움
cd ~/apps

wget 'https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.3.1/elasticsearch-2.3.1.tar.gz'
tar -xzf elasticsearch-2.3.1.tar.gz
rm elasticsearch-2.3.1.tar.gz

#2개 인스턴스를 띄울예정
mv elasticsearch-2.3.1 elasticsearch-2.3.1-node-01
ln -s elasticsearch-2.3.1-node-01 elasticsearch-01

#설정 수정
vi ~/apps/elasticsearch-01/config/elasticsearch.yml

#아래 Elasticsearch Plugin 설치완료 후에 복사해서 node-02생성
cp -R ~/apps/elasticsearch-2.3.1-node-01 ~/apps/elasticsearch-2.3.1-node-02
ln -s elasticsearch-2.3.1-node-02 elasticsearch-02
vi ~/apps/elasticsearch-02/config/elasticsearch.yml


Elasticsearch  Plguin 설치

cd ~/apps/elasticsearch-01/bin

-- HQ(head 플러그인보다 비쥬얼적으로 좋음)
./plugin install royrusso/elasticsearch-HQ
접속URL : http://elasticsearch도메인/_plugin/HQ/

-- SQL로 조회하는 Plugin (https://github.com/NLPchina/elasticsearch-sql)
접속URL : http://elasticsearch도메인/_plugin/sql/  

-- 은전한닢 es plugin(한글 형태소 분석기)
./plugin install org.bitbucket.eunjeon/elasticsearch-analysis-seunjeon/2.3.1.0

한글 형태소분석기 은전한닢 설치(은전한닢 설치 : http://guruble.com/?p=416)

[사전작업]
vi ~/.bashrc 후 아래내용 추가(미 추가시 mecab엔진을 제대로 설치 못하거나 logstash로 집계할 때 elastic search가 죽음)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/

1. mecab-ko 형태소 분석기 엔진 설치

cd {다운로드할 경로}
wget https://bitbucket.org/eunjeon/mecab-ko/downloads/mecab-0.996-ko-0.9.2.tar.gz -O mecab-0.996-ko-0.9.2.tar.gz
tar -xvzf mecab-0.996-ko-0.9.2.tar.gz
cd mecab-0.996-ko-0.9.2
./configure
make
make check
sudo make install

아래 명령어로 정상 설치여부 확인
mecab --version


2. mecab-ko-dic 사전(dictionary)파일 설치

cd {다운로드할 경로}
wget https://bitbucket.org/eunjeon/mecab-ko-dic/downloads/mecab-ko-dic-2.0.1-20150920.tar.gz -O mecab-ko-dic-2.0.1-20150920.tar.gz
tar -xvzf ./mecab-ko-dic-2.0.1-20150920.tar.gz
cd mecab-ko-dic-2.0.1-20150920
./autogen.sh
./configure
make
sudo make install

아래 명령어로 정상 설치여부 확인
mecab -d /usr/local/lib/mecab/dic/mecab-ko-dic
# 나는 당신을 사랑합니다.


3. libMeCab.so, MeCab.jar 라이브러리 설치

wget https://mecab.googlecode.com/files/mecab-java-0.996.tar.gz -O mecab-java-0.996.tar.gz
tar -xvzf mecab-java-0.996.tar.gz
cd mecab-java-0.996
Makefile을 열어서
vi Makefile

# Java Home 설정
# 참고. Mac OSX 에서 JAVA HOME 은 /usr/libexec/java_home 명령어로 확인할 수 있습니다.
INCLUDE={your java home path}/include

#  optimize level 을 -O1 로 변경
$(CXX) -O1 -c -fpic $(TARGET)_wrap.cxx $(INC)

# javac 와 test.java 사이에 -cp . 추가
$(JAVAC) -cp . test.java
컴파일 후 복사, 권한 변경

make
sudo cp libMeCab.so /usr/local/lib
sudo cp MeCab.jar /usr/local/lib
sudo chown -R {your user}:{your group} /usr/local/lib/libMeCab.so
sudo chown -R {your user}:{your group} /usr/local/lib/MeCab.jar
sudo chown -R {your user}:{your group} /usr/local/lib/*mecab*

vi ~/.bashrc 후 아래내용 추가(미 추가시 logstash로 집계할 때 elastic search가 죽음)
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib/




4. mecab-ko Elasticsearch plugin 설치

cd {Elastic 디렉토링}
./bin/plugin install https://bitbucket.org/eunjeon/mecab-ko-lucene-analyzer/downloads/elasticsearch-analysis-mecab-ko-2.2.0.0.zip




logstash 설치
all plugin 포함 버전오로 설치

wget 'https://download.elastic.co/logstash/logstash/logstash-all-plugins-2.3.1.tar.gz' -O ~/apps/logstash-all-plugins-2.3.1.tar.gz

tar -xzf ~/apps/logstash-all-plugins-2.3.1.tar.gz
rm ~/apps/logstash-all-plugins-2.3.1.tar.gz
ln -s ~/apps/logstash-2.3.1 logstash

#logstash mysql-jdbc plugin 설치(jdbc는 인터넷에서 다운로드 가능
mkdir -p ~/apps/logstash/lib/jdbc
다운파일 복사

실행
~/apps/kibana/bin/kibana >> /dev/null &


kibana 설치(필요시)
wget 'https://download.elastic.co/kibana/kibana/kibana-4.5.0-linux-x64.tar.gz' -O ~/apps/kibana-4.5.0-linux-x64.tar.gz
tar -xzf ~/apps/kibana-4.5.0-linux-x64.tar.gz
rm ~/apps/kibana-4.5.0-linux-x64.tar.gz
ln -s ~/apps/kibana-4.5.0-linux-x64 kibana

설정값 수정
vi ~/apps/kibana/config/kibana.yml



방화벽오픈(root권한 필요)

sudo vi /etc/sysconfig/iptables 후 내용 추가하고 sudo service iptables restart

#elastic
-A INPUT -m state --state NEW -m tcp -p tcp -s IP주소 --dport 29200:29201 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp -s IP주소 --dport 9300:9301 -j ACCEPT

#logstash listen topbeat
-A INPUT -m state --state NEW -m tcp -p tcp -s IP주소 --dport 5044:5045 -j ACCEPT

#logstash listen packetbeat
-A INPUT -m state --state NEW -m tcp -p tcp -s IP주소 --dport 6044:6045 -j ACCEPT

#kibana
-A INPUT -m state --state NEW -m tcp -p tcp -s IP주소 --dport 5601 -j ACCEPT





포트 스캔 후 서버 공격이 들어오는 패턴이 많다.

그렇기에 가능하면 ping 응답은 막아두자..


방법

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all

(vim으로는 안됨)




AWS ELB를 이용해서 로드밸런싱을 하는데 주기적으로 응답이 느려지는 현상(몇초마다 응답이 10초가 넘어감)이 발생했다.

어플리케이션 문제인가 싶어서 소거법으로 하나하나 테스트를 해봤는데 아니었다.


1. 테스트환경을 구축 후 반복해서 URL을 호출

  watch --interval=1 time curl "검증 URL" > /dev/null


2. ELB 모니터링 및 DNS도 확인




결론은, ELB를 새로 띄우니 감쪽같이 해결되었다.

아직 한국 리전에서 불안전한 케이스가 있는게 아닌가 싶다..(AWS 사용자 사이에서 몇가지 카더라도 있고..)




할때마다 잊어버려서 메모



1) EC2 Role에 CloudWatch FullAccess 권한 부여

2) 필요 Libray 설치

- Centos (RedHat)
$ sudo yum install perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https perl-Digest-SHA unzip -y

- Amazon Linux AMI
$ sudo yum install perl-Switch perl-DateTime perl-Sys-Syslog perl-LWP-Protocol-https

3) EC2 메모리 및 디스크 Matrix 모니터링 스크립트 설치

sudo su
cd /root
unzip CloudWatchMonitoringScripts-1.2.1.zip
rm -rf CloudWatchMonitoringScripts-1.2.1.zip
cd aws-scripts-mon/

4) Test
./mon-put-instance-data.pl --mem-util --verify --verbose

5) CloudWatch에 전송 테스트
./mon-put-instance-data.pl --mem-util --mem-used --mem-avail

6) crontab 등록(disk 체크는 /data 디렉토리만하는 예)
* * * * * $HOME/aws-scripts-mon/mon-put-instance-data.pl --mem-util --mem-used --mem-avail --disk-path=/data --disk-space-util --disk-space-used --disk-space-avail --swap-used --from-cron

7) AutoScaling Group에 데이터 수집
./mon-put-instance-data.pl --mem-util --mem-used --mem-avail --auto-scaling=only


8) 참고


코딩하다가보면 가끔 특정 코드 블럭에는 formatter를 적용 안해야하는 부분이 있음.(가독성을 위해서)
그럴 때 사용하는 방법

  1. Enable tag


  2. 소스에 적용 샘플
   // @formatter:off
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
       
        /** 인터셉터 */
        registry.addInterceptor(getAccessInterceptor())
            .addPathPatterns( "/**")
                .excludePathPatterns( "/")
                .excludePathPatterns( "/favicon.ico")
                .excludePathPatterns( "/resources/**")
                .excludePathPatterns( "/error/**");
       
        super.addInterceptors(registry );
    }
    // @formatter:on


+ Recent posts