꼬반 Blog

[유틸] Putty 대신 사용하기 좋은 무료 SSH Client 프로그램 소개

SSH는 서버의 Terminal에 접속하기 위한 보편화된 방법이다. 그래서 다양한 무, 유료 프로그램들이 있고 특히 오픈소스에서 대표적으로 사용되는 클라이언트로는 Putty가 있다. Putty는 기본 기능에 매우 충실한 훌륭한! 프로그램이지만 편의 측면에서는 몇몇 불편한 부분들이 있다. 그래서 오늘은 Putty 대신 사용할만한 좋은 무료 프로그램 하나를 추천해본다. 공식 사이트 : https://www.solarwinds.com/free-tools/solar-putty Solar-PuTTY 위 프로그램 역시 기반은 Putty를 사용하지만 Session 이나 SSH 외 FTP, SFTP, SCP, Telnet 등을 하나의 화면에서 쉽게 사용하고 관리할 수 있게 해준다. 프로그램을 다운받아서 압축을 풀면 실..

Read More

[클라우드] 변경된 Naver TTS(CSS) API 사용해보기

이전 포스트에 (http://ifmkl.tistory.com/354) Naver OpenAPI 인 Clova Speech Synthesis API 사용하기를 작성했었습니다. 그런데 오랜만에 들어가보니 해당 API가 NBP(네이버 비즈니스 플랫폼 - 클라우드 서비스)쪽으로 이관되었더군요.. 즉 무료에서 -> 유료가 되었습니다... 다만 네이버 비즈니스 플랫폼의 경우 신규 사용자에겐 30만 크레딧을 제공하므로 이 크레딧 유효 기간동안은 테스트는 해볼수 있을 듯합니다. 변경된 개발 문서는 http://docs.ncloud.com/ko/naveropenapi_v2/naveropenapi-4-2.html 이고 NBP 가입 후 로그인 후 콘솔에서 접속하면 다음 메뉴에서 api 를 신청할 수 있습니다. 어플리케이션 ..

Read More

[ELK] ELK를 활용한 웹 로그 모니터링 시스템 - 1

회사에서 웹 서버의 로그 수집 및 분석을 위해 2015년 말 부터 ELK Stack과 TICK+Grafana Stack으로 웹 서버 및 주요 서버, 서비스의 로그 수집 및 대시보드를 통한 모니터링을 활용해 왔다. 다만 ELK는 당시에는 버전이 낮았고 성능이나 사용적인 부분에서 InfluxDB 보다 불편함을 느껴 지금까지 주로 TICK을 사용해왔다. ELK는 1.X에서 2.X로, 그리고 5.X로 마이그레이션을 하며 사용은 했었지만 제대로 활용하진 않았다. 얼마전 Elastic Tour 2017 Seoul 에 참석하여 6.X ELK를 보니 다시 한번 제대로 사용해보자는 생각이 들어 처음부터 새로 구축하기로 하였다. 이 글은 간단한 설치 및 구성과 logstash, filebeat 를 통한 로그 수집, 필터 ..

Read More

Nginx, GeoIP, Telegraf, Influxdb, Grafana 연동!

회사에서 사용하고 있는 웹 서비스의 구성은 간단하게 다음과 같다. Nginx (리버스 프록시 서버) --- WAS (각 어플리케이션 서버) --- 백엔드 (DB, 스토리지 등) 여기서 유저는 가장 상단의 Nginx 서버에만 접근이 가능하다. 이러한 구성은 기본적으로 보안이나 관리 등에 용이하다. 그리고 각 서버들의 상태 모니터링 및 로그 수집을 위해 2가지 시스템을 혼용하여 사용하는데 ELK 와 TICK 이 바로 그것이다. ELK는 Elasticsearch, Logstash, Kibana 를 지칭하는데 과거 버전에서 5.x 버전으로 업그레이드를 하면서 이 로그 수집방식이 Logstash-forward 대신에 beat 로 대체 되었다. 그래서 각 단말에 beat가 서버의 로그를 수집하여 Elasticsea..

Read More

[협업개발] Yona

개발을 할때 팀이나 조직에서 사용하기 좋은 오픈소스 https://repo.yona.io/organizations/yona-projects 과거 Yobi가 업그레이드 되었다고 한다. 팀에서 사용하기위해 셋팅해보았다. 추후 사용기를 적어보도록 하겠다.

Read More

[오픈소스] GOQ 구축 (goq: a queuing and job management system fir for the cloud. Written in GO (golang)).

설치 및 구축 프로세스 마스터 노드, 워커 노드 셋팅 VM에 마스터 노드, 워커 노드 2대 생성 후 CentOS 7.2 설치 설치 후 각 서버는 selinux 설정을 permissive 로 변경 워커 노드는 firewalld.service 를 stop 및 disable 시킴 마스터 노드에 eth0, eth1 connection 설정 각 서버 네임서버 셋팅 (210.218.222.100) dhcpd 설치 및 셋팅 (yum 으로 설치 후 아래처럼 dhcpd.conf 수정) option space PXE; option PXE.mtftp-ip code 1 = ip-address; option PXE.mtftp-cport code 2 = unsigned integer 16; option PXE.mtftp-spor..

Read More

[rundeck] 설치 및 기본 작업 설정하기

http://rundeck.org/index.htmlJob Scheduler and Runbook Automation 일련의 workflow를 각 노드에 실행시켜주는 오픈 소스.사용하면 다양한 부분에서 활용이 가능하다. 기본적으로 현재 설치 및 테스트하고 있는 부분은각 Tomcat 서버에 war 파일을 새로 배포할때 workflow는 단순하지만직접 톰캣을 멈추고 war 업로드, 다시 올리는 작업을 자동화 하기 위해서. RUNDECK 서버에 war 파일을 업로드 후 미리 만들어둔 JOB 을 RUN 하여 끝내자는 목표로컬 서버 대상은 실험 완료원격 서버 추가 후 실험 진행 중테스트가 완료되면 개발자가 빌드한 war 파일을 rundeck의 project 내에 특정 폴더에 업로드 (kobic, kobis, pa..

Read More

[DNS] PowerDNS, PowerDNS-Admin 설치

회사에서 그동안 DNS 서버로 bind 를 사용하고 있었는데.. bind가 그냥 익숙해져서 cli, zone 파일 편집에 어려움은 없었지만. 그래도 이게 또 관리나 부재시 부사수가 하기엔 좀 어려운 부분도 있기때문에 다른 대안을 찾아보기로 했다. 그래서 일단은 PowerDNS 를 설치하고 Web UI를 찾아보니 PowerDNS-Admin 이라는 좋은 오픈소스가 있었다. (bind도 web ui 이것저것 찾아서 설치해봤는데 .. 흠.. 한 2개정도 괜찮은 물건을 찾기도 했지만 기존 zone file을 잘 가져오지 못해서.. 포기) 설치는 최신 4.0.1 소스 설치하다가 안되서 포기하고 epel-release 설치 후 3.4.8 버전으로 설치했다. (우분투/데비안 계열은 최신 repo 에서 4.0.1 지원하..

Read More

국산 서버 모니터링 서비스 와탭!

사용하는 서버의 수량이 적다면 모르지만 서버가 한대, 두대가 늘어나면 늘어날수록 관리는 점점 어려워진다. 게다가 OS도 각기 다르고 어플리케이션에 DB에 보안문제까지 생각하면 관리만 하더라도 어지간한 중노동이다. 그래서 다양한 모니터링도구들이 존재하지만 사용하기 썩 좋은 것은 드문것이 사실이다. 우리 회사에서는 그래서 최근에 what's up / nagios / elk 등으로 시스템을 구축했는데 해당 솔루션들이 설치와 설정이 그리만만하지 않다. 그러던중 와탭 (whatap) 서비스를 알게됬다. 무료로(기본 Basic 상품 - 24시간만 데이터 장) 간편하게 서버 모니터링을 할수 있다. 설치도 설정도 매우 쉽다! 일단 https://www.whatap.io/ko.html 사이트에서 가입을 하고 로그인을 하..

Read More

[CentOS 7.1] 네이버 오픈소스 APM PINPOINT 설치하기

네이버에서 얼마전 공개한 오픈소스 APM인 PINPOINT 1.5 버전을 설치하여 테스트 하고 있는 중이다. 설치에 대한 블로그와 동영상을 참고하였고, 결국 결론은 Quick Start Guide 가 짱이다.... 설치 순서는 다음과 같다. 1. yum update -y 2. 사전 요구사항 JDK 6 installedJDK 8 installedMaven 3.2.x+ installedJAVA_6_HOME environment variable set to JDK 6 home directory.JAVA_7_HOME environment variable set to JDK 7+ home directory.JAVA_8_HOME environment variable set to JDK 8+ home director..

Read More

[유틸] Putty 대신 사용하기 좋은 무료 SSH Client 프로그램 소개

SSH는 서버의 Terminal에 접속하기 위한 보편화된 방법이다. 그래서 다양한 무, 유료 프로그램들이 있고


특히 오픈소스에서 대표적으로 사용되는 클라이언트로는 Putty가 있다.


Putty는 기본 기능에 매우 충실한 훌륭한! 프로그램이지만 편의 측면에서는 몇몇 불편한 부분들이 있다.


그래서 오늘은 Putty 대신 사용할만한 좋은 무료 프로그램 하나를 추천해본다.


공식 사이트 : https://www.solarwinds.com/free-tools/solar-putty


Solar-PuTTY


위 프로그램 역시 기반은 Putty를 사용하지만 Session 이나 SSH 외 FTP, SFTP, SCP, Telnet 등을 하나의 화면에서


쉽게 사용하고 관리할 수 있게 해준다. 


프로그램을 다운받아서 압축을 풀면 실행 파일이 보이며, 설치할 필요 없이 바로 실행이 가능한 Portable 버전이다.



위 화면에서 Create  new session 버튼을 클릭하여 신규 세션을 생성한다.



테스트 서버는 네이버 클라우드에 크레딧으로 사용중인 SSD 리눅스 서버를 입력했다. 이후 Create 버튼으로 세션을 생성하면


최초 접속은 자동으로 진행되고 이후에는 Overview 탭에서 생성된 세션을 클릭하여 바로 접속이 가능하다.



Putty에서 접속하면 나타나던 경고창을 확인할 수 있다. 예 버튼을 클릭한다.



정상적으로 접속이 되는것을 확인할 수 있다.



생성된 세션을 확인할 수 있으며 이후 접속에는 해당 세션을 더블 클릭하여 쉽게 접속이 가능하다.


또한 SFTP, FTP, SCP 도 지원하기 때문에 세션생성에서 해당 프로토콜 방식을 선택하는 경우 관련 프로그램이 없을때


자동으로 WinSCP 설치를 지원하고 역시 해당 프로그램내에서 바로 사용이 가능하도록 연동이 된다.


하나의 프로그램에서 다양한 프로토콜을 세션으로 관리하여 사용자가 쉽게 사용할 수 있도록 지원해주는 Solar-Putty는 


Putty 대신 사용하기 좋은 (기반은 Putty라 대신이라고 하기는 뭐하지만.) 프로그램이다.



첨부 1. 

내용을 영문사이트에서 발취 하여 조합하였다고 하나 글 내용이 빨간부분은 맨 끝 해준다. -> 해줍니다. 


만 바뀌고 띄어쓰기까지 동일하고


아래 파란부분은 중간 세션생성 -> 세션 생성 / 연동이 된다. 연동도 가능 합니다. 


로 바뀐 부분 제외 띄어쓰기까지 동일.


외국 사이트 발취를 어디서 한건진 모르겠지만 외국 사이트면 영어로 된 걸 옮겨적은게 


띄어쓰기까지 거~어의 동일하게 옮겼졌다는 말이라는건데.... 흠




반응형

Article By 꼬반

*certificate* : VCP 5(2012), RHCSA 7 (2014), RHCE 7 (2015), RHCSA in REDHAT OpenStack(2017) *development language* : Javascript, NodeJS, Golang, html5, css3, shell script *middle ware* : NGINX, Apache, Tomcat, Docker, Docker Swarm, Mesos, Kubernetes, HCI,

Discuss about post

[클라우드] 변경된 Naver TTS(CSS) API 사용해보기

이전 포스트에 (http://ifmkl.tistory.com/354) Naver OpenAPI 인 Clova Speech Synthesis API 사용하기를 작성했었습니다.


그런데 오랜만에 들어가보니 해당 API가 NBP(네이버 비즈니스 플랫폼 - 클라우드 서비스)쪽으로 이관되었더군요..


즉 무료에서 -> 유료가 되었습니다...


다만 네이버 비즈니스 플랫폼의 경우 신규 사용자에겐 30만 크레딧을 제공하므로 이 크레딧 유효 기간동안은


테스트는 해볼수 있을 듯합니다.


변경된 개발 문서는 http://docs.ncloud.com/ko/naveropenapi_v2/naveropenapi-4-2.html 이고


NBP 가입 후 로그인 후 콘솔에서 접속하면 다음 메뉴에서 api 를 신청할 수 있습니다.



어플리케이션 등록 -> 클로바에 CSS 체크하여 신청하면 됩니다. 그러면 한도 설정을 할 수 있는데 당일 / 당월 설정이 가능하고 요금은


월 300만자 기준으로 12,000원 (VAT별도) 정도 나옵니다. 


기존의 소스는 동일하고 다만 기존 소스의 


api_uri가 https://openapi.naver.com/v1/voice/tts.bin --> https://naveropenapi.apigw.ntruss.com/voice/v1/tts 으로 변경 되었고

api_key는 신청한 어플리케이션의 client_id / api_secret는 client_secret 으로 사용하면 됩니다.

이후 헤더에 추가하는


 req.Header.Add("X-Naver-Client-Id", client_key)
 req.Header.Add("X-Naver-Client-Secret", client_secret)

는 아래 처럼 변경해줍니다.


 req.Header.Add("X-NCP-APIGW-API-KEY-ID", client_id)
 req.Header.Add("X-NCP-APIGW-API-KEY", client_secret)

그러면 소스를 다시 빌드하여 실행하고 로컬에서 테스트하면


# curl "localhost:3000/tts"

# ls

api api.go out.mp3


으로 잘 실행되는 것을 확인할 수 있습니다.

반응형

Article By 꼬반

*certificate* : VCP 5(2012), RHCSA 7 (2014), RHCE 7 (2015), RHCSA in REDHAT OpenStack(2017) *development language* : Javascript, NodeJS, Golang, html5, css3, shell script *middle ware* : NGINX, Apache, Tomcat, Docker, Docker Swarm, Mesos, Kubernetes, HCI,

Discuss about post

[ELK] ELK를 활용한 웹 로그 모니터링 시스템 - 1

회사에서 웹 서버의 로그 수집 및 분석을 위해 2015년 말 부터 ELK Stack과 TICK+Grafana Stack으로


웹 서버 및 주요 서버, 서비스의 로그 수집 및 대시보드를 통한 모니터링을 활용해 왔다.


다만 ELK는 당시에는 버전이 낮았고 성능이나 사용적인 부분에서 InfluxDB 보다 불편함을 느껴


지금까지 주로 TICK을 사용해왔다.


ELK는 1.X에서 2.X로, 그리고 5.X로 마이그레이션을 하며 사용은 했었지만 제대로 활용하진 않았다.


얼마전 Elastic Tour 2017 Seoul 에 참석하여 6.X ELK를 보니 다시 한번 제대로 사용해보자는 생각이 들어


처음부터 새로 구축하기로 하였다. 


이 글은 간단한 설치 및 구성과 logstash, filebeat 를 통한 로그 수집, 필터 처리, kibana를 통한


대시보드 작성을 진행과정에 따라 적어보고자 한다.


1.  ELK Stack 설치


1.1. 설치 버전 : 6.1.1


1.2. 준비 사항 : Docker CE 17.12 / docker-compose 1.18 / Golang 1.5 이상


1.3. 쉽게 사용하기 위해 Docker, Docker-compose 를 통해 elk-cluster 를 구축하려면 다음과 같이 docker-compose.yml 파일을

     사용하여 클러스터를 올린다. 몇몇 세부 옵션들은 yml 파일을 수정하여 사용한다.


version: '2.2'

services:

  elasticsearch1:

    image: docker.elastic.co/elasticsearch/elasticsearch:6.1.1

    container_name: elasticsearch1

    environment:

      - cluster.name=kobic-elk-docker-cluster

      - bootstrap.memory_lock=true

      - "ES_JAVA_OPTS=-Xms4096m -Xmx4096m"

    ulimits:

      memlock:

        soft: -1

        hard: -1

    volumes:

      - esdata1:/usr/share/elasticsearch/data

    ports:

      - 9200:9200

    networks:

      - esnet

  elasticsearch2:

    image: docker.elastic.co/elasticsearch/elasticsearch:6.1.1

    container_name: elasticsearch2

    environment:

      - cluster.name=kobic-elk-docker-cluster

      - bootstrap.memory_lock=true

      - "ES_JAVA_OPTS=-Xms2048m -Xmx2048m"

      - "discovery.zen.ping.unicast.hosts=elasticsearch1"

    ulimits:

      memlock:

        soft: -1

        hard: -1

    volumes:

      - esdata2:/usr/share/elasticsearch/data

    networks:

      - esnet

  kibana:

    image: docker.elastic.co/kibana/kibana:6.1.1

    container_name: kibana

    environment:

      SERVER_NAME: kibana.kobic.re.kr

      ELASTICSEARCH_URL: http://localhost:9200

    ports:

      - 5601:5601

    networks:

      - esnet

  logstash:

    image: docker.elastic.co/logstash/logstash:6.1.1

    container_name: logstash

    environment:

      XPACK_MONITORING_ELASTICSEARCH_URL: http://localhost:9200

    ports:

      - 5044:5044

    networks:

      - esnet

    depends_on: ['elasticsearch1']


volumes:

  esdata1:

    driver: local

  esdata2:

    driver: local


networks:

  esnet:


위 파일이 위치한 곳에서 docker-compose up 명령어를 통해 서비스를 올리면 해당 이미지들을 pulling 하고 기다리면


각 컨테이너가 실행이 된다. 그후 브라우저에서 localhost:5601 로 접속하면 kibana에 접속할수 있고 모니터링 탭을 통하여


각 elk node, kibana, logstash 의 상태를 확인할 수 있다.

반응형

Article By 꼬반

*certificate* : VCP 5(2012), RHCSA 7 (2014), RHCE 7 (2015), RHCSA in REDHAT OpenStack(2017) *development language* : Javascript, NodeJS, Golang, html5, css3, shell script *middle ware* : NGINX, Apache, Tomcat, Docker, Docker Swarm, Mesos, Kubernetes, HCI,

Discuss about post

Nginx, GeoIP, Telegraf, Influxdb, Grafana 연동!

회사에서 사용하고 있는 웹 서비스의 구성은 간단하게 다음과 같다.


Nginx (리버스 프록시 서버) --- WAS (각 어플리케이션 서버) --- 백엔드 (DB, 스토리지 등)


여기서 유저는 가장 상단의 Nginx 서버에만 접근이 가능하다. 이러한 구성은 


기본적으로 보안이나 관리 등에 용이하다.


그리고 각 서버들의 상태 모니터링 및 로그 수집을 위해 2가지 시스템을 혼용하여 사용하는데


ELK 와 TICK 이 바로 그것이다.


ELK는 Elasticsearch, Logstash, Kibana 를 지칭하는데 과거 버전에서 5.x 버전으로 


업그레이드를 하면서 이 로그 수집방식이 Logstash-forward 대신에 beat 로 대체 되었다.


그래서 각 단말에 beat가 서버의 로그를 수집하여 Elasticsearch 로 보내고 저장되며 Kibana를 통해


모니터링 및 대시보드를 통한 Visualize 가 가능하다.


Elasticsearch 와 Kibana 는 Docker와 Docker-composer 를 통해 관리된다. 


TICK 은 Telegraf, Influxdb, Chronograf, Kapacitor를 의미하며 각각 수집, 시계열DB, 모니터링 및 관리, 알람


의 기능을 가지고 있다.


그리고 이 데이터들은 Grafana 라는 Visualize platform 에서 활용이 가능하다.


이번에 한 작업은 다음의 목적을 가지고 진행되었다.


1. 특정 사이트의 접속 로그에 대한 모니터링이 필요

2. 접속 지역에 대한 확인이 가능할 것.

3. Nginx access log 에는 기본 apache log + agent, response time 이 붙은 custom log 이며 접속자의 IP가

   확인이 된다. 이 IP를 IP조회 사이트에서 조회하여 지역이 확인이 가능하나 불편하다.

4. Dashboard 를 통해 바로 확인할 방법이 필요.


그래서 위의 목적을 달성하기 위해 다음과 같은 작업을 진행 하였다.


1. 기존 리버스 프록시 서버인 Nginx 서버에 GeoIP Module 연동

  1.1. nginx-module-geoip 를 설치

  1.2. 설정 파일에 load module 후 테스트 -> 로드 X (버전 문제 nginx geoip version 1013003 

        instead of 1013000, 즉 현재 nginx 는 1.13.0 버전 이고 모듈은 1.13.3 버전

  1.2. 기존 사용하던 1.13.0 버전을 1.13.3 버전으로 재컴파일 (rpm, yum 버전 등 build 버전은 사용하지 않음

        http2 지원등을 위해 직접 소스 컴파일, 라이브 서버에 적용 전 VM에 테스트 후 진행)

  1.3. 1.13.3 버전 설치 후 모듈 연동 테스트 -> 성공

  1.4. access log 형식에 geoip_city, geoip_region, geoip_country_code, geoip_country_code2 추가 후 확인 완료


2. Telegraf 수집 형식 변경

  2.1. 기존 logparse 에 grok matching 을 위해 필드 추가 적용 (country_code 는 2개 추가한 이유가 하나는 tag로

       지정하기 위함.)

  2.2. influxdb 에서 수집된 field, tag 에 반영 확인


3. Grafana 연동

  3.1. Grafana World Map Plugin 설치

  3.2. https://github.com/grafana/worldmap-panelhttps://github.com/grafana/worldmap-panel/issues/30

       참고하여 설정 진행

  3.3. World-Map 연동 확인




총평. 진행된 내용만 간략히 적었지만 사실 각 작업간에 많은 시행착오가 있었다. 물논 그런 시행착오가 없을 순

       없다. 각 작업 내용은 다시 한번 정리해서 추후 포스팅 해야겠다.

반응형

Article By 꼬반

*certificate* : VCP 5(2012), RHCSA 7 (2014), RHCE 7 (2015), RHCSA in REDHAT OpenStack(2017) *development language* : Javascript, NodeJS, Golang, html5, css3, shell script *middle ware* : NGINX, Apache, Tomcat, Docker, Docker Swarm, Mesos, Kubernetes, HCI,

Discuss about post

[협업개발] Yona

개발을 할때 팀이나 조직에서 사용하기 좋은 오픈소스


https://repo.yona.io/organizations/yona-projects


과거 Yobi가 업그레이드 되었다고 한다.


팀에서 사용하기위해 셋팅해보았다.


추후 사용기를 적어보도록 하겠다.


반응형

Article By 꼬반

*certificate* : VCP 5(2012), RHCSA 7 (2014), RHCE 7 (2015), RHCSA in REDHAT OpenStack(2017) *development language* : Javascript, NodeJS, Golang, html5, css3, shell script *middle ware* : NGINX, Apache, Tomcat, Docker, Docker Swarm, Mesos, Kubernetes, HCI,

Discuss about post

[오픈소스] GOQ 구축 (goq: a queuing and job management system fir for the cloud. Written in GO (golang)).

설치 및 구축 프로세스

마스터 노드, 워커 노드 셋팅

VM에 마스터 노드, 워커 노드 2대 생성 후 CentOS 7.2 설치

설치 후 각 서버는 selinux 설정을 permissive 로 변경

워커 노드는 firewalld.service 를 stop 및 disable 시킴

마스터 노드에 eth0, eth1 connection 설정

각 서버 네임서버 셋팅 (210.218.222.100)

dhcpd 설치 및 셋팅 (yum 으로 설치 후 아래처럼 dhcpd.conf 수정)

option space PXE;
option PXE.mtftp-ip    code 1 = ip-address;
option PXE.mtftp-cport code 2 = unsigned integer 16;
option PXE.mtftp-sport code 3 = unsigned integer 16;
option PXE.mtftp-tmout code 4 = unsigned integer 8;
option PXE.mtftp-delay code 5 = unsigned integer 8;
option arch code 93 = unsigned integer 16; # RFC4578

subnet 10.10.10.0 netmask 255.255.255.0 {
    option routers 10.10.10.10;
    range dynamic-bootp 10.10.10.200 10.10.10.250;
    allow booting;
    allow bootp;
    next-server 10.10.10.10;
    filename "pxelinux.0";
}
:wq!
# systemctl enable dhcpd
# systemctl start dhcpd

방화벽 설정

1. 마스커레이드 설정

2. 마스터서버와 워커노드가 통신을 하기위해 해당 대역에 대한 룰 설정

# firewall-cmd --permanent --add-masquerade
# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.10.10.0/24" accept'
# firewall-cmd --reload
  • 워커 노드에 접속해서 네트워크 설정 상태 확인 (마스터 및 다른 노드와 통신이 되는지 확인, nslookup으로 외부 인터넷과 연결이 되는지 확인)
  • 각 서버 OS 최신 패치 yum update

GO 설치

  • Go는 https://golang.org/dl/ 에서 작성일 기준 1.6.2 버전 다운 (동작 확인)
  • /share/apps/ 폴더에 다운 및 압축 해제 (미리 빌드된 버전 사용)
  • 사용자 환경설정에 GOROOT, GOPATH 설정 (root 기준)
vim ~/.bashrc
export GOROOT=/share/apps/go
export PATH=$PATH:$GOROOT/bin
export GOPATH=/share/workspace
export PATH=$PATH:$GOPATH/bin
export GOQ_HOME=/root
추가 후
:wq!
# go version
go version go1.6.2 linux/amd64
  • GOPATH는 워크스페이스 개념
  • GOQ_HOME은 goq init 시 환경 파일이 저장될 위치

goq 설치

github src : https://github.com/glycerine/goq

# go get -t -u github.com/glycerine/mangos/compat
# go get -u -t github.com/glycerine/goq
# cd $GOPATH/src/github.com/glycerine/goq; make; go test -v
  • 3번째 단계에서 goq/vendor/github.com 안에 보면 go-mangos 폴더이름을 gdamore 로 변경
  • 이유는 goq 내 소스에서 해당 mangos 패키지를 참조하는데 github.com/gdamore/mangos 로 되어 있음. (아마도 기존 경로로 보임, 현재 mangos 는 github.com/go-mangos/mangos 로 변경되어 있음)
  • 소스 내 참조를 모두 변경하기 어려우니 해당 폴더명만 변경 후 make 하면 에러가 나지 않고 build 가 완료 됨.
  • 이후 각 서버 별로 테스트 확인

마스터, 워커 설정

  • 먼저 마스터에서 설정
# goq init
  • 이후 GOQ_HOME 에 .goq 폴더 생성 됨. 이 안에 key와 환경파일이 생성.
# cd $GOQ_HOME
# vim serverloc
  • 서버 IP 셋팅 (디폴트는 eth0 ip 를 사용하므로 마스터, 워커가 사용하는 대역으로 변경)
export GOQ_JSERV_IP=10.10.10.10
:wq!
  • 다른 옵션은 디폴트 사용
  • 위 작업 완료 후 마스터의 .goc 폴더를 각 워커 GOQ_HOME에 복사
마스터
$ cd $GOQ_HOME
$ goq init     # only needed once.
$ nohup goq serve &   # start the central server

워커
$ ssh computenode
$ for i in $(seq 1 $(cat /proc/cpuinfo |grep processor|wc -l)); do 
  /usr/bin/nohup goq work forever & done

잡 서밋
$ cd somewhere/where/the/job/wants/to/start
# start by doing 'goq sub' on the same machine 
# that 'goq serve' was launched on. Just to learn the system.
$ goq sub ./myjobscript  

테스트
마스터에서 확인 
root      4060  2959  0 14:33 pts/0    00:00:00 goq serve

워커 1
root     12153 11924  0 14:36 pts/0    00:00:00 goq work forever
root     12154 11924  0 14:36 pts/0    00:00:00 goq work forever

워커 2
root     12215 12004  0 14:36 pts/0    00:00:00 goq work forever
root     12216 12004  0 14:36 pts/0    00:00:00 goq work forever

테스트 잡 서밋
[root@goq .goq]# goq sub /share/workspace/src/github.com/glycerine/goq/bin/sleep20.sh
[pid 5655] submitted job 5 to server at 'tcp://10.10.10.10:1776'.
[root@goq .goq]# goq stat
[pid 5661] stats for job server 'tcp://10.10.10.10:1776':
runQlen=1
waitingJobs=0
waitingWorkers=3
jservPid=4060
finishedJobsCount=3
droppedBadSigCount=0
cancelledJobCount=0
nextJobId=6
jservIP=10.10.10.10
jservPort=1776
badNonceCount=0
maxShow=10
runq 000000   runtime: < 1 heartbeat RunningJob[jid 5] = '/share/workspace/src/github.com/glycerine/goq/bin/sleep20.sh '   on worker 'tcp://10.10.10.201:39504'/pid:0. Lastping: none.   
finished: [jid 1] total-time: 20.006763604s. done: 2016-06-21 14:14:45.162962843 +0900 KST. cmd: '/share/workspace/src/github.com/glycerine/goq/bin/sleep20.sh []' finished on worker 'tcp://192.168.150.73:46641'/pid:3531.  . Err: ''
finished: [jid 3] total-time: 145.624801ms. done: 2016-06-21 14:37:12.110080928 +0900 KST. cmd: '/share/workspace/src/github.com/glycerine/goq/bin/good.sh []' finished on worker 'tcp://10.10.10.200:45736'/pid:12168.  . Err: ''
finished: [jid 4] total-time: 20.019386787s. done: 2016-06-21 14:38:33.327349501 +0900 KST. cmd: '/share/workspace/src/github.com/glycerine/goq/bin/sleep20.sh []' finished on worker 'tcp://10.10.10.200:43298'/pid:12172.  . Err: ''
--- goq security status---
summary-bad-signature-msgs: 0
summary-bad-nonce-msg: 0
--- goq progress status ---
summary-jobs-running: 1
summary-jobs-waiting: 0
summary-known-jobs: 1
summary-workers-waiting: 3
summary-cancelled-jobs: 0
summary-jobs-finished: 3
--- goq end status at time: 2016-06-21 15:44:40.540185547 +0900 KST ---
[root@goq .goq]# goq stat
[pid 5667] stats for job server 'tcp://10.10.10.10:1776':
runQlen=0
waitingJobs=0
waitingWorkers=4
jservPid=4060
finishedJobsCount=4
droppedBadSigCount=0
cancelledJobCount=0
nextJobId=6
jservIP=10.10.10.10
jservPort=1776
badNonceCount=0
maxShow=10
finished: [jid 1] total-time: 20.006763604s. done: 2016-06-21 14:14:45.162962843 +0900 KST. cmd: '/share/workspace/src/github.com/glycerine/goq/bin/sleep20.sh []' finished on worker 'tcp://192.168.150.73:46641'/pid:3531.  . Err: ''
finished: [jid 3] total-time: 145.624801ms. done: 2016-06-21 14:37:12.110080928 +0900 KST. cmd: '/share/workspace/src/github.com/glycerine/goq/bin/good.sh []' finished on worker 'tcp://10.10.10.200:45736'/pid:12168.  . Err: ''
finished: [jid 4] total-time: 20.019386787s. done: 2016-06-21 14:38:33.327349501 +0900 KST. cmd: '/share/workspace/src/github.com/glycerine/goq/bin/sleep20.sh []' finished on worker 'tcp://10.10.10.200:43298'/pid:12172.  . Err: ''
finished: [jid 5] total-time: 20.031627872s. done: 2016-06-21 15:44:58.280047843 +0900 KST. cmd: '/share/workspace/src/github.com/glycerine/goq/bin/sleep20.sh []' finished on worker 'tcp://10.10.10.201:39504'/pid:12970.  . Err: ''
--- goq security status---
summary-bad-signature-msgs: 0
summary-bad-nonce-msg: 0
--- goq progress status ---
summary-jobs-running: 0
summary-jobs-waiting: 0
summary-known-jobs: 0
summary-workers-waiting: 4
summary-cancelled-jobs: 0
summary-jobs-finished: 4
--- goq end status at time: 2016-06-21 15:45:00.384001311 +0900 KST ---
  • 해당 잡 스크립트
#!/bin/bash
echo "sleep.sh begins sleeping for 20 seconds"
sleep 20
echo "sleep.sh done"

워커 2번에서 실행이 된걸 확인할 수 있음.

결과
/root/.goq/o
out.00005 # jid

sleep.sh begins sleeping for 20 seconds
sleep.sh done
  • nfs 공유폴더 설정 및 hpl 벤치를 위한 설정
** 마스터 서버
# vim /etc/exports
/BiO 10.10.10.0/24(rw,sync,no_root_squash)

# systemctl start rpcbind
# systemctl start nfs-server
# systemctl start nfs-idmap
# systemctl start nfs-lock
# systemctl enable nfs-server

** 노드
# showmount -e 10.10.10.10
# mount -t nfs 10.10.10.10:/BiO /BiO

# vim /etc/fstab
10.10.10.10:/BiO /BiO defaults 0 0

** hpl 벤치 준비 (failed...)
** ATLAS 설치 및 install
** hpl 은 추후 다시 설치 시도...
  • 테스트
  • /BiO/test
  • 1 ~ 9 데이터셋
  • run.sh - 1번부터 9번을 읽어서 그 내용을 result 에 저장, 단 5초 대기 시간 있음
#!/bin/bash
echo "sleep 5"
sleep 5
cat $1 >> result
cat $1
  • job.sh - 단순한 반복문으로 실행. 각 파일마다 5초 딜레이 걸리므로 45초 후 작업이 완료
#!/bin/bash
for i in $(seq 1 9); do 
  ./run.sh $i
done
  • job2.sh - 해당 잡을 goq 로 서밋시킴. 이때 4개의 워커가 서밋된 잡을 실행. 즉 한번에 4개씩 처리. 15초에 작업 완료
#!/bin/bash
for i in $(seq 1 9); do 
  goq sub ./run.sh $i
done

[root@goq test]# goq stat
[pid 8221] stats for job server 'tcp://10.10.10.10:1776':
runQlen=0
waitingJobs=0
waitingWorkers=4
jservPid=6641
finishedJobsCount=22
droppedBadSigCount=0
cancelledJobCount=0
nextJobId=24
jservIP=10.10.10.10
jservPort=1776
badNonceCount=0
maxShow=10
finished: [jid 14] total-time: 5.006814286s. done: 2016-06-22 16:46:53.858905226 +0900 KST. cmd: './run.sh [9]' finished on worker 'tcp://10.10.10.200:38134'/pid:9547.  . Err: ''
finished: [jid 15] total-time: 5.009640992s. done: 2016-06-22 16:52:28.8312227 +0900 KST. cmd: './run.sh [1]' finished on worker 'tcp://10.10.10.200:52480'/pid:9678.  . Err: ''
finished: [jid 16] total-time: 5.009856439s. done: 2016-06-22 16:52:28.822657713 +0900 KST. cmd: './run.sh [2]' finished on worker 'tcp://10.10.10.201:54694'/pid:9931.  . Err: ''
finished: [jid 17] total-time: 5.014137871s. done: 2016-06-22 16:52:28.827363219 +0900 KST. cmd: './run.sh [3]' finished on worker 'tcp://10.10.10.201:54228'/pid:9933.  . Err: ''
finished: [jid 18] total-time: 5.005063449s. done: 2016-06-22 16:52:28.866128228 +0900 KST. cmd: './run.sh [4]' finished on worker 'tcp://10.10.10.200:38134'/pid:9681.  . Err: ''
finished: [jid 19] total-time: 5.007172282s. done: 2016-06-22 16:52:33.867240633 +0900 KST. cmd: './run.sh [5]' finished on worker 'tcp://10.10.10.200:52480'/pid:9686.  . Err: ''
finished: [jid 20] total-time: 5.014624321s. done: 2016-06-22 16:52:33.858707659 +0900 KST. cmd: './run.sh [6]' finished on worker 'tcp://10.10.10.201:54694'/pid:9941.  . Err: ''
finished: [jid 21] total-time: 5.015421181s. done: 2016-06-22 16:52:33.863655635 +0900 KST. cmd: './run.sh [7]' finished on worker 'tcp://10.10.10.201:54228'/pid:9942.  . Err: ''
finished: [jid 22] total-time: 5.011072741s. done: 2016-06-22 16:52:33.896002578 +0900 KST. cmd: './run.sh [8]' finished on worker 'tcp://10.10.10.200:38134'/pid:9691.  . Err: ''
finished: [jid 23] total-time: 5.002196052s. done: 2016-06-22 16:52:38.898022316 +0900 KST. cmd: './run.sh [9]' finished on worker 'tcp://10.10.10.200:52480'/pid:9696.  . Err: ''
--- goq security status---
summary-bad-signature-msgs: 0
summary-bad-nonce-msg: 0
--- goq progress status ---
summary-jobs-running: 0
summary-jobs-waiting: 0
summary-known-jobs: 0
summary-workers-waiting: 4
summary-cancelled-jobs: 0
summary-jobs-finished: 22
--- goq end status at time: 2016-06-22 17:43:52.258494225 +0900 KST ---
[root@goq test]#

이후 진행 방안

  • bwa 테스트 완료
  • 18개 fasta 파일 bwa 테스트 진행
run.sh (/BiO/bwa_data/)
#!/bin/bash
for i in *.fasta
do
    #echo $i
    goq sub /BiO/apps/bwa-0.7.15/bwa index $i
done

[root@goq bwa_data]# goq stat
[pid 5300] stats for job server 'tcp://10.10.10.10:1776':
runQlen=0
waitingJobs=0
waitingWorkers=4
jservPid=6641
finishedJobsCount=77
droppedBadSigCount=0
cancelledJobCount=0
nextJobId=79
jservIP=10.10.10.10
jservPort=1776
badNonceCount=0
maxShow=10
finished: [jid 70] total-time: 25.652276979s. done: 2016-06-24 11:26:47.437507654 +0900 KST. cmd: '/BiO/apps/bwa-0.7.15/bwa [index dmel-3R-chromosome-r5.37.fasta]' finished on worker 'tcp://10.10.10.201:54228'/pid:25409.  . Err: ''
finished: [jid 72] total-time: 2m57.995945527s. done: 2016-06-24 11:29:38.320234035 +0900 KST. cmd: '/BiO/apps/bwa-0.7.15/bwa [index dmel-all-chromosome-r5.37.fasta]' finished on worker 'tcp://10.10.10.200:52480'/pid:25095.  . Err: ''
finished: [jid 67] total-time: 5m20.065814901s. done: 2016-06-24 11:31:20.588482645 +0900 KST. cmd: '/BiO/apps/bwa-0.7.15/bwa [index dmel-2R-aligned-r5.37.fasta]' finished on worker 'tcp://10.10.10.201:54694'/pid:25399.  . Err: ''
finished: [jid 74] total-time: 2m32.706963928s. done: 2016-06-24 11:32:11.06134462 +0900 KST. cmd: '/BiO/apps/bwa-0.7.15/bwa [index dmel-all-gene_extended2000-r5.37.fasta]' finished on worker 'tcp://10.10.10.200:52480'/pid:25125.  . Err: ''
finished: [jid 76] total-time: 5.257377818s. done: 2016-06-24 11:32:16.329604209 +0900 KST. cmd: '/BiO/apps/bwa-0.7.15/bwa [index dmel-U-chromosome-r5.37.fasta]' finished on worker 'tcp://10.10.10.200:52480'/pid:25209.  . Err: ''
finished: [jid 69] total-time: 6m56.254709913s. done: 2016-06-24 11:33:07.201563569 +0900 KST. cmd: '/BiO/apps/bwa-0.7.15/bwa [index dmel-3R-aligned-r5.37.fasta]' finished on worker 'tcp://10.10.10.200:38134'/pid:25088.  . Err: ''
finished: [jid 78] total-time: 14.240585455s. done: 2016-06-24 11:33:21.461607565 +0900 KST. cmd: '/BiO/apps/bwa-0.7.15/bwa [index dmel-X-chromosome-r5.37.fasta]' finished on worker 'tcp://10.10.10.200:38134'/pid:25214.  . Err: ''
finished: [jid 77] total-time: 4m4.989334558s. done: 2016-06-24 11:36:21.328854204 +0900 KST. cmd: '/BiO/apps/bwa-0.7.15/bwa [index dmel-X-aligned-r5.37.fasta]' finished on worker 'tcp://10.10.10.200:52480'/pid:25211.  . Err: ''
finished: [jid 75] total-time: 6m35.538950491s. done: 2016-06-24 11:37:56.176649363 +0900 KST. cmd: '/BiO/apps/bwa-0.7.15/bwa [index dmel-all-predicted-r5.37.fasta]' finished on worker 'tcp://10.10.10.201:54694'/pid:25542.  . Err: ''
finished: [jid 73] total-time: 11m17.50777801s. done: 2016-06-24 11:38:04.953963217 +0900 KST. cmd: '/BiO/apps/bwa-0.7.15/bwa [index dmel-all-clones-r5.37.fasta]' finished on worker 'tcp://10.10.10.201:54228'/pid:25415.  . Err: ''
--- goq security status---
summary-bad-signature-msgs: 0
summary-bad-nonce-msg: 0
--- goq progress status ---
summary-jobs-running: 0
summary-jobs-waiting: 0
summary-known-jobs: 0
summary-workers-waiting: 4
summary-cancelled-jobs: 0
summary-jobs-finished: 77
--- goq end status at time: 2016-06-24 13:19:11.903386522 +0900 KST ---
[root@goq bwa_data]#
반응형

Article By 꼬반

*certificate* : VCP 5(2012), RHCSA 7 (2014), RHCE 7 (2015), RHCSA in REDHAT OpenStack(2017) *development language* : Javascript, NodeJS, Golang, html5, css3, shell script *middle ware* : NGINX, Apache, Tomcat, Docker, Docker Swarm, Mesos, Kubernetes, HCI,

Discuss about post

[rundeck] 설치 및 기본 작업 설정하기

http://rundeck.org/index.html

Job Scheduler and Runbook Automation

 

일련의 workflow를 각 노드에 실행시켜주는 오픈 소스.

사용하면 다양한 부분에서 활용이 가능하다.

 

기본적으로 현재 설치 및 테스트하고 있는 부분은

각 Tomcat 서버에 war 파일을 새로 배포할때 workflow는 단순하지만

직접 톰캣을 멈추고 war 업로드, 다시 올리는 작업을 자동화 하기 위해서.

 

RUNDECK 서버에 war 파일을 업로드 후 미리 만들어둔 JOB 을 RUN 하여 끝내자는 목표

로컬 서버 대상은 실험 완료

원격 서버 추가 후 실험 진행 중

테스트가 완료되면

 

개발자가 빌드한 war 파일을 rundeck의 project 내에 특정 폴더에 업로드 (kobic, kobis, patome, biodata 등)

웹에서 해당 job 실행.

배포 완료

 

(현재)

빌드한 war 파일을 삼바서버나 메신져로 받음

해당 서버에 접속해서 war 올림

톰캣 서버 정지

war 복사

톰캣 서버 시작

X 배포 수

 

-- 추가 --

리모트 노드의 tomcat 에 war 배포 테스트 완료

 

rundeck 에서 rsa 키 생성.  # ssh-keygen -t rsa

생성한 key 를 리모트 서버 노드에 키 추가 시켜 줌 # ssh-copy-id user@123.45.56.78

대상 서버의 sshd_config 옵션을 아래와 같이 수정

(현재는 RootPermit 을 no 로 사용하는데 이걸 수정)

# PermitRootLogin without-password

위 작업 시 root 로 remote 연결이 한번 필요하므로 permit yes 로 한번 해주고 작업 해야 된다.

 

이 작업 후 rundeck 서버의 해당 project 폴더안 etc 폴더 내에 resources.xml 에 다음과 같이 노드를 추가 후 rundeck 을 재시작 해준다.

<?xml version="1.0" encoding="UTF-8"?>
<project>
  <node name="nodename" description="Rundeck server node" tags="" hostname="hostname" osArch="amd64" osFamily="unix" osName="Linux" osVersion="3.10.0-327.36.1.el7.x86_64" username="root"/>
</project>
재시작 후 Job에 다음 부분을 아래처럼 선택 한다.

Execute locally -> Dispatch to Nodes 로 변경후 Filter 에서 Job을 돌릴 Node 선택 후 Save

이후 Run 시키고 결과를 확인



정상적으로 실행이 된걸 확인할 수 있다.
이걸로 배포 작업을 자동화 할 수 있다.


반응형

Article By 꼬반

*certificate* : VCP 5(2012), RHCSA 7 (2014), RHCE 7 (2015), RHCSA in REDHAT OpenStack(2017) *development language* : Javascript, NodeJS, Golang, html5, css3, shell script *middle ware* : NGINX, Apache, Tomcat, Docker, Docker Swarm, Mesos, Kubernetes, HCI,

Discuss about post

[DNS] PowerDNS, PowerDNS-Admin 설치

회사에서 그동안 DNS 서버로 bind 를 사용하고 있었는데..


bind가 그냥 익숙해져서 cli, zone 파일 편집에 어려움은 없었지만.


그래도 이게 또 관리나 부재시 부사수가 하기엔 좀 어려운 부분도 있기때문에 다른 대안을 찾아보기로 했다.


그래서 일단은 PowerDNS 를 설치하고 Web UI를 찾아보니 PowerDNS-Admin 이라는 좋은 오픈소스가 있었다.



(bind도 web ui 이것저것 찾아서 설치해봤는데 .. 흠.. 한 2개정도 괜찮은 물건을 찾기도 했지만


기존 zone file을 잘 가져오지 못해서.. 포기)


설치는 최신 4.0.1 소스 설치하다가 안되서 포기하고 epel-release 설치 후 3.4.8 버전으로 설치했다.


(우분투/데비안 계열은 최신 repo 에서 4.0.1 지원하던데 ㅠㅠ)


설치는 공식 문서를 따라서 설치


https://doc.powerdns.com/3/authoritative/installation/


이후 web ui 는 아래 참조


https://github.com/ngoduykhanh/PowerDNS-Admin


https://linuxse.co/2015/12/powerdns-admin-web-ui-install-manage-powerdns-server/


설정을 이리 저리 맞춰보고 웹에서 정상적으로 동작 확인!


다만 환경 차이인지 ui 가 가끔 죽는데 이땐 그냥 다시 올리면 된다. 음.. 오픈소스니까


내가 써보지 않은 python, flask 환경에서 돌아가는거라.. 그냥 다시 올린다 ㅎㅎ


깔끔하니 참 좋다.


다만 기존 bind 에서 사용하는 zone file 마이그레이션 방법이 있긴 한데.. 워낙 많아서 실제 사용되는 것만


옮겨줄까 생각중이다.


그리고 auth 외 recusion 으로 사용하려면 pdns-recursion 버전도 설치해야 한다.


http://toofasttosee.blogspot.kr/2012/08/powerdns.html



반응형

Article By 꼬반

*certificate* : VCP 5(2012), RHCSA 7 (2014), RHCE 7 (2015), RHCSA in REDHAT OpenStack(2017) *development language* : Javascript, NodeJS, Golang, html5, css3, shell script *middle ware* : NGINX, Apache, Tomcat, Docker, Docker Swarm, Mesos, Kubernetes, HCI,

Discuss about post

국산 서버 모니터링 서비스 와탭!

사용하는 서버의 수량이 적다면 모르지만 서버가 한대, 두대가 늘어나면 늘어날수록 관리는 점점 어려워진다.


게다가 OS도 각기 다르고 어플리케이션에 DB에 보안문제까지 생각하면


관리만 하더라도 어지간한 중노동이다.


그래서 다양한 모니터링도구들이 존재하지만 사용하기 썩 좋은 것은 드문것이 사실이다.


우리 회사에서는 그래서 최근에 what's up / nagios / elk 등으로 시스템을 구축했는데


해당 솔루션들이 설치와 설정이  그리만만하지 않다.


그러던중 와탭 (whatap) 서비스를 알게됬다.




무료로(기본 Basic 상품 - 24시간만 데이터 장) 간편하게 서버 모니터링을 할수 있다. 설치도 설정도 매우 쉽다!


일단 https://www.whatap.io/ko.html 사이트에서 가입을 하고 로그인을 하면


다음과 같은 대시보드에서 모니터링 서버를 추가할 수 있다.



지원하는 운영체제는 Windows / Linux 지원하고 있으며 거의 대부분의 버전을 지원하지만 너무 오래된 버전은


지원하지 않는다. (Fedora 8에서 설치가 되지 않았음. 다만 동일버전대의 커널인 CentOS 5에서는 설치가 됨.)


윈도우는 설치파일을 받아 실행 후 라이선스를 등록하기만 하면 되고


리눅스도 리포지토리 추가 후 yum / apt-get 으로 설치 후 실행하면 된다. 


실행은 설정스크립트를 그대로 커맨드 라인에 입력하면 자동으로 라이선스 입력 후 에이전트가 동작된다.


그러면 서버 목록과 대시 보드를 통해 서버의 상태를 모니터링 할 수 있는데


무료 치고는 성능이 매우 훌륭하다.


기본적인 서버상태는 물론이고 각 서버를 선택해서 상세내역으로 들어가면


cpu / memory / 프로세스 / 디스크 / 트래픽 / 알림 / 로그 등을


확인할 수 있고 각 프로세스의 상세 상태도 보여준다.



거기다가 모바일 앱도 존재한다!


모바일 앱을 설치하고 사용자 계정으로 로그인하면 모바일 기기에서도


언제나 서버 상태를 모니터링 할 수 있다.


무료로 이정도의 서비스라면 매우매우 훌륭하다!


다만 아직 부족한 부분들이 조금 남아 있지만 빠르게 개선해나고 있고, 더욱 좋아질 거라는 것을 


기술 블로그를 둘러보고 확신할 수 있었다.


회사 서버들을 무료로 사용하여 보고 괜찮다면 유료 서비스 도입을 한번 고려해봐야 겠다.



반응형

Article By 꼬반

*certificate* : VCP 5(2012), RHCSA 7 (2014), RHCE 7 (2015), RHCSA in REDHAT OpenStack(2017) *development language* : Javascript, NodeJS, Golang, html5, css3, shell script *middle ware* : NGINX, Apache, Tomcat, Docker, Docker Swarm, Mesos, Kubernetes, HCI,

Discuss about post

[CentOS 7.1] 네이버 오픈소스 APM PINPOINT 설치하기

네이버에서 얼마전 공개한 오픈소스 APM인 PINPOINT 1.5 버전을 설치하여 테스트 하고 있는 중이다.


설치에 대한 블로그와 동영상을 참고하였고, 결국 결론은 Quick Start Guide 가 짱이다....


설치 순서는 다음과 같다.


1. yum update -y


2. 사전 요구사항

  • JDK 6 installed
  • JDK 8 installed
  • Maven 3.2.x+ installed
  • JAVA_6_HOME environment variable set to JDK 6 home directory.
  • JAVA_7_HOME environment variable set to JDK 7+ home directory.
  • JAVA_8_HOME environment variable set to JDK 8+ home directory.

  2.1. 각각의 항목은 오라클 자바에서 다운받아 특정 폴더에 설치한다.


  2.2. /usr/local/src 경로에 설치하였다고 할때 환경변수 설치는 아래와 같다.


  2.3. 1.0 대 버전에는 JAVA_8 미지원하였으나 1.5로 업데이트 되면서 JAVA_8 이 추가 되었다.


  2.4. 메이븐은 3.3.3 버전을 사용


# vim~/.bash_profile


export JAVA_HOME=/usr/local/src/jdk1.7.0_80

export JAVA_6_HOME=/usr/local/src/jdk1.6.0_45

export JAVA_7_HOME=/usr/local/src/jdk1.7.0_80

export JAVA_8_HOME=/usr/local/src/jdk1.8.0_60

PATH=$PATH:$HOME/bin

PATH=$PATH:$JAVA_HOME/bin

PATH=$PATH:/usr/local/src/maven/bin


# source ~/.bash_profile

3. pinpoint 설치

  

  3.1. git 으로 pinpoint download 해준다.

  # git clone https://github.com/naver/pinpoint.git


  3.2. 해당 폴더로 이동하여 빌드하여 준다.

  # cd pinpoint

  # mvn install -Dmaven.test.skip=true


  3.3. hbase 설치하기

  빌드한 pinpoint 폴더에 들어가보면 quickstart/bin 폴더가 있고 해당 폴더내에 hbase를 설치하는 스크립트가 있다.

  설치후에는 init-hbase 로 초기 db와 table 을 설정하여 준다.

  # ./quickstart/bin/start-hbase.sh

  # ./quickstart/bin/init-hbase.sh


4. pinpoint 실행

  

  4.1. Collector - # ./quickstart/bin/start-collector.sh


  4.2. Web UI - # ./quickstart/bin/start-web.sh


  4.3. TestApp - # ./quickstart/bin/start-testapp.sh


5. 확인


  5.1. Web UI - http://localhost:28080


  5.2. TestApp - http://localhost:28081


6. 정지


  6.1. Hbase - # ./quickstart/bin/stop-hbase.sh


  6.2. Collector - # ./quickstart/bin/stop-collector.sh


  6.3. Web UI - # ./quickstart/bin/stop-web.sh


  6.4. TestApp - # ./quickstart/bin/stop-testapp.sh


7. 참고

  

  7.1. 공식 quick start guide - https://github.com/naver/pinpoint/blob/master/quickstart/README.md

  

  7.2. 허광남 님의 유투브 동영상 - 1편 https://www.youtube.com/watch?v=xipAXrm4vEI

                                       2편 https://www.youtube.com/watch?v=_IZkQG2kaTI

                                       3편 https://www.youtube.com/watch?v=lGiOCHwr4os


8. agent 설정

  리눅스 환경에서 Tomcat의 실행스크립트에 다음과 깉이 셋팅합니다.

 

  export AGENT_PATH={Pinpoint Agent 경로}
  export CATALINA_OPTS="$CATALINA_OPTS -javaagent:$AGENT_PATH/pinpoint-bootstrap-1.5.0-SNAPSHOT.jar"
  export CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.agentId=agentId_01"
  export CATALINA_OPTS="$CATALINA_OPTS -Dpinpoint.applicationName=agentId_01_Name"

agentID 와 applicationName 은 유일한 값입니다. 그리고 해당 경로에 pinpoint.config 파일에 collector Server ip를 수정합니다. 추가로 포트 번호가 default 는 9994 / 9995 / 9996 으로 되어 있는데 1.5.0 버전엔 29994 / 29995 / 29996 이므로 해당 포트 번호로 수정하고 톰캣을 실행시켜주면 설정은 끝입니다.

반응형

Article By 꼬반

*certificate* : VCP 5(2012), RHCSA 7 (2014), RHCE 7 (2015), RHCSA in REDHAT OpenStack(2017) *development language* : Javascript, NodeJS, Golang, html5, css3, shell script *middle ware* : NGINX, Apache, Tomcat, Docker, Docker Swarm, Mesos, Kubernetes, HCI,

Discuss about post