반응형

어느날 갑자기

 

잘 WAR 배포 되던 사이트에서

 

tomcat 시작시 오류가 발생했습니다.

 

물론 간헐적으로 종종 있었지만,

 

아에 시작이 안되는 오류가 발생한것은 처음이었지요

 

-------------------- 오류 내역 ----------------------

 

23-Apr-2019 08:41:39.156 심각 [Catalina-startStop-1] org.apache.catalina.core.ContainerBase.startInternal A child container failed during start
 java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
        at java.util.concurrent.FutureTask.report(FutureTask.java:122)
        at java.util.concurrent.FutureTask.get(FutureTask.java:192)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:942)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:872)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1423)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1413)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
        ... 6 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.webresources.StandardRoot@1e50349c]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
        at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4885)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5020)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 6 more
Caused by: java.lang.IllegalArgumentException: The main resource set specified [/factory] is not valid
        at org.apache.catalina.webresources.StandardRoot.createMainResourceSet(StandardRoot.java:748)
        at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:706)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 9 more

 

23-Apr-2019 08:41:39.158 심각 [main] org.apache.catalina.core.ContainerBase.startInternal A child container failed during start
 java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
        at java.util.concurrent.FutureTask.report(FutureTask.java:122)
        at java.util.concurrent.FutureTask.get(FutureTask.java:192)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:942)
        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:793)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:688)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:353)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:493)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1423)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1413)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:953)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:872)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 6 more
Caused by: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
        at java.util.concurrent.FutureTask.report(FutureTask.java:122)
        at java.util.concurrent.FutureTask.get(FutureTask.java:192)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:942)
        ... 8 more

 

Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
        ... 6 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.webresources.StandardRoot@1e50349c]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
        at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4885)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5020)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 6 more
Caused by: java.lang.IllegalArgumentException: The main resource set specified [/factory] is not valid
        at org.apache.catalina.webresources.StandardRoot.createMainResourceSet(StandardRoot.java:748)
        at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:706)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 9 more

 

23-Apr-2019 08:41:39.160 심각 [main] org.apache.catalina.startup.Catalina.start The required Server component failed to start so Tomcat is unable to start.
 org.apache.catalina.LifecycleException: Failed to start component [StandardServer[8005]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:688)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:353)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:493)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardService[Catalina]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:793)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 7 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:422)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 9 more
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:953)
        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 11 more
Caused by: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
        at java.util.concurrent.FutureTask.report(FutureTask.java:122)
        at java.util.concurrent.FutureTask.get(FutureTask.java:192)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:942)
        ... 13 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1423)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1413)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.catalina.LifecycleException: A child container failed during start
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:953)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:872)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 6 more

 

-------------------------------------------------------------

 

해당 원인

1. Tomcat JMX(Java Management Extensions) 사용 + STS JMX 사용 = 2개 포트 중복으로 인한 충돌 발생
2. Local 개발 환경에서는 Tomcat을 사용하지 않아 발생하지 않음
3. 개발 서버에서는 Startup 시 Tomcat JMX가 먼저 부팅되는 경우(그동안) 정상적으로 UP이 되었으나
    언젠가는 발생해야 하는 문제였음.

해결 방법

1. STS 에서 사용하는 JMX 사용하지 않기(Tomcat만 사용하기)
    application.properties 설정 변경 방식 => 이 방식 설정 (우리는 JMX를 쓰지 않음, 만약 쓰고 싶다면 2번 해결 방식 참고)
2. STS에서 사용하는 JMX 포트 변경
    There are a few things we could do to avoid the error. We could open the editor again and change the JMX port as well, or we could disable ‘Live Bean Support’. But probably we don’t really want to run more than one copy of our app in this scenario. So we should just stop the already running instance before launching a new one. As this is such a common thing to do, STS provides a Relaunch Toolbar Button for just this purpose. Click the Button, the running app is stopped and restarted with the changes you just made to the Launch Configuration now taking effect. If it worked you should now have a 404 error page at http://localhost:8888 instead of 8080. (Note: the Relaunch button won’t work if you haven’t launched anything yet because it works from your current session’s launch history. However if you’ve launched an app at least once, it is okay to ‘Relaunch’ an app that is already terminated)

    https://spring.io/blog/2015/03/18/spring-boot-support-in-spring-tool-suite-3-6-4

관련 정보

1. 외국 관련 정보 사이트
https://stackoverflow.com/questions/28607506/disabling-jmx-in-a-spring-application/30853954  


application.properties 추가 내역
============================================================================================================================ 
 
# Prevent Spring from automatically exposing beans to JMX. Tomcat automatically creates an MBean when setting the
# JNDI data source, and an error gets thrown if spring then tries to add the data source MBean itself.
# 번역 : Spring이 자동으로 Bean을 JMX에 노출시키는 것을 방지한다. Tomcat은 JNDI 데이터 소스를 설정할 때 자동으로 MBean을 만들고, 스프링이 데이터 소스 MBean 자체를 추가하려고하면 오류가 발생합니다.
#
org.springframework.jmx.export.UnableToRegisterMBeanException 예외처리용
spring.jmx.enabled=false

============================================================================================================================

1. 스트링 부팅 application.properties 환경 설정 (config 정보들)
https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html


2. jmx 란?

참고 : https://en.wikipedia.org/wiki/Java_Management_Extensions
Java Management Extensions 의 약자로 각종 프로그램/장치 등을 모니터링/관리 하기 위한 API 입니다.

출처 : https://gs.saro.me/dev?tn=467

 

 

반응형
반응형

https://www.nginx.com/blog/introduction-to-microservices/

 

위의 이미지와 같이 차량 요금 수집하는 앱을 만들때 하나의 결과물로 배포됩니다.

이런 형태를 모놀리스 or 모노리스 식 어플리케이션이라고 합니다.

 

반응형

'IT 관련 용어' 카테고리의 다른 글

이메일 발송 서비스 사이트  (0) 2019.04.22
MSA (MicroService Architecture) 관련 링크  (0) 2019.04.22
반응형

1. Sendgrid

 

메일 전송을 위한 서비스

 

무료 가입시 하루 100통 전송 가능.

 

https://sendgrid.com/pricing/

 

Pricing and Plans | SendGrid

Sign up to send transactional and marketing email. All of our plans are backed by our industry-leading deliverability, reliability, and support.

sendgrid.com

 

2. Mailgun

 

한달에 10,000 개 까지는 무료

 

https://www.mailgun.com/pricing

 

Flexible Pricing & Email Delivery Plans - Email API Service - Mailgun

Pricing plans built for an email delivery solution that brings emails and validations together under one API-driven engine.

www.mailgun.com

 

 

반응형
반응형

 

마이크로서비스 Microservices (1) 아키텍처 소개

https://futurecreator.github.io/2018/09/14/what-is-microservices-architecture/

 

마이크로서비스 Microservices (1) 아키텍처 소개

주변에서 마이크로서비스 아키텍처(Microservices architecture; MSA)에 대한 이야기가 많이 들려옵니다. 마이크로서비스가 모든 것을 해결해줄 것처럼 이야기하는 사람이 있는가하면, 서비스 지향 아키텍처(Service-oriented architecture;SOA)랑 다를 게 없는 마케팅 용어에 불과하다고 폄하하는 사람들도 있습니다. 마이크

futurecreator.github.io

 

 

반응형
반응형

1. 방화벽

3690 : svn 포트, 3306 : mariadb 포트

8080 -> 80 포트 포워딩

8443 -> 443 포트 포워딩

작업 하기

firewall-cmd --permanent --zone=public --add-port=3690/tcp
firewall-cmd --permanent --zone=public --add-port=3306/tcp
firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
firewall-cmd --zone=public --add-forward-port=port=443:proto=tcp:toport=8443 --permanent
firewall-cmd --reload

 

적용된 내역 조회하기

firewall-cmd --list-services   --zone=public
firewall-cmd --list-ports   --zone=public
firewall-cmd --list-forward-ports  

 

 

2. SVN 설정

svn info svn://localhost/ai --username jphong --password [암호]

 

[authz 파일]

[/]
tester = rw

 

[passwd 파일]

[users]
tester = tester

 

[svnserve.conf 파일]

# 익명 사용자 권한 없음

anon-access = none  

 

# 인증 사용자 write 권한
auth-access = write

 

# 패스워드 설정 파일

password-db = passwd

 

# 권한 설정 파일 authz

authz-db = authz

 

# 인증시 사용자에게 보여질 인증 메시지

realm = Welcome Test SVN

반응형
반응형

참고자료 : 2019년도 행정공공 웹사이트 구축운영 가이드 (배포본)

 

구분

문서명

발행년도

발행기관

사업대가 산정

o SW사업 대가산정가이드

2017

한국소프트웨어산업협회

사업계획서

o 소프트웨어 분리발주 매뉴얼

2016

정보통신산업진흥원

시스템 도입

o 정보시스템 하드웨어 규모산정 지침

2018

한국정보통신기술협회

o 네트워크 구축을 위한 장비 규모산정 지침

2017

플러그인 제거

o 인터넷 이용환경 개선기술 안내서

2016

행정안전부/

한국인터넷진흥원

o 공공기관 플러그인 제거 가이드라인

2018

행정안전부

정보접근성

o 한국형 웹 콘텐츠 접근성 지침 2.1

2015

과학기술정보통신부

국립전파연구원

o 소프트웨어 접근성 설계지침

2015

산업통상자원부

국가기술표준원

개인정보보호

o 개인정보 영향평가 수행안내서

2016

행정안전부

o 개인정보 수집제공 동의서 작성 가이드라인

2018

o 주민등록번호 수집금지제도 가이드라인

2016

o 개인정보수집 최소화 가이드라인

2016

행정안전부/

한국인터넷진흥원

o 홈페이지 개인정보 노출방지 안내서

2016

정보보안

o 소프트웨어 개발보안 가이드

2017

행정안전부/

한국인터넷진흥원

o 시큐어코딩 가이드

2012

o 소프트웨어 보안약점 진단가이드

2012

o 공개 소프트웨어를 활용한 개발보안 점검가이드

2016

o 웹서버 구축 보안점검 안내서

2010

한국인터넷진흥원

o 홈페이지 취약점 진단제거 가이드

2013

o 보안서버 구축 안내서

2010

UI·UX

o 전자정부 웹사이트 UI·UX 가이드라인

2019

행정안전부

자가진단

o 전자정부 웹사이트 자가진단지표

2019

행정안전부

게시판 관리

o 행정기관 웹사이트 게시판 관리 매뉴얼

2013

행정안전부

테스트 및 시험운영

o 정보시스템 성능관리지침

2007

한국정보통신 기술협회

사업관리

o 행정기관 정보화사업 단계별 관리·점검 가이드

2015

행정안전부,

과학기술정보통신부

한국정보화진흥원

o 행정기관 정보화사업 추진 매뉴얼

2010

정부통합전산센터

운영이관

o IT 아웃소싱 운영 관리 매뉴얼

2011

행정안전부 외

o 행정공공기관 웹사이트 관리 개선 방안

2014

행정안전부

o 정부기능분류시스템(BRM) 운영 지침

2008

검색엔진 최적화

o 검색엔진 최적화 기본 가이드(민간 SEO 가이드)

2013

주요 포털(구글, 네이버 등)

기록물 관리

o 기록물관리지침

2018

국가기록원

o 폐지기관 기록물 관리 지침

2005

 

관련 URL : https://www.mois.go.kr/frt/bbs/type001/commonSelectBoardArticle.do?bbsId=BBSMSTR_000000000045&nttId=69787

반응형

'사업' 카테고리의 다른 글

tar 증분 백업 수행하기  (0) 2013.12.18
반응형

File Writing 부분은 작성하지 않았음...

 

여러모로 문제가 있음

 

참고용...


import java.net.URLEncoder;
 
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.*;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList; 
 
public class getMsrstnAcctoRltmMesureDnsty {
 

    // tag값의 정보를 가져오는 메소드
private static String getTagValue(String tag, Element eElement) {
    NodeList nlList = eElement.getElementsByTagName(tag).item(0).getChildNodes();
    Node nValue = (Node) nlList.item(0);
    if(nValue == null) 
        return null;
    return nValue.getNodeValue();
}

public static void main(String[] args) {
int page = 1; // 페이지 초기값 
     int totalCount = 0; // 전체 건수
    
     int nowCnt = 0; // 현재 페이지의 건수
    
     // JSON Object 
     JSONArray jitem = new JSONArray(); 
    
    
    
try{
while(true){

 // 서비스 인증키입니다. 공공데이터포털에서 제공해준 인증키를 넣어주시면 됩니다.         
            String serviceKey = "키입력";
             
             
            // 한페이지에서 읽어올 개수
            String numOfRows   = "5";         
            
            // 한글은 encoding 수행합니다.
         String stationName = URLEncoder.encode("종로구", "UTF-8");
         String ver         = "1.0";
         String dataTerm    = "DAILY";
         String RtnType     = "XML";
    
     StringBuffer jsonSb = null;
        
        
            String urlStr = "http://openapi.airkorea.or.kr/"
                    + "openapi/services/rest/ArpltnInforInqireSvc/getMsrstnAcctoRltmMesureDnsty"
                    + "?"
                    + "ServiceKey="  + serviceKey
                    + "&stationName=" + stationName
                    + "&dataTerm="  + dataTerm 
                    + "&pageNo=" + page
                    + "&numOfRows=" + numOfRows                    
                    + "&ver=" + ver 
                    + "&_retrunType=" + RtnType
                    ;
            
DocumentBuilderFactory dbFactoty = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactoty.newDocumentBuilder(); 
Document doc = dBuilder.parse(urlStr);



if ( page == 1 ) { 
// 파싱할 tag
NodeList nListT = doc.getElementsByTagName("body");

Node nNodeT = nListT.item(0);
if(nNodeT.getNodeType() == Node.ELEMENT_NODE){

Element eElementT = (Element) nNodeT; 

totalCount = Integer.parseInt(getTagValue("totalCount", eElementT));
} // for end

}

// root tag 
doc.getDocumentElement().normalize();  

// 파싱할 tag
NodeList nList = doc.getElementsByTagName("item");


//JSONObject
for(int temp = 0; temp < nList.getLength(); temp++){
Node nNode = nList.item(temp);
if(nNode.getNodeType() == Node.ELEMENT_NODE){

Element eElement = (Element) nNode;

JSONObject jobj = new JSONObject();


jobj.put("dataTime",  getTagValue("dataTime", eElement).toString());
// jobj.put("so2Value",  Float.parseFloat(getTagValue("so2Value", eElement).toString()));
// jobj.put("coValue",   Float.parseFloat(getTagValue("coValue", eElement).toString()));
// jobj.put("o3Value",   Float.parseFloat(getTagValue("o3Value", eElement).toString()));
// jobj.put("pm10Value", Float.parseFloat(getTagValue("pm10Value", eElement).toString()));
// jobj.put("pm25Value", Float.parseFloat(getTagValue("pm25Value", eElement).toString()));
// jobj.put("khaiValue", Float.parseFloat(getTagValue("khaiValue", eElement).toString()));
// jobj.put("khaiGrade", Float.parseFloat(getTagValue("khaiGrade", eElement).toString()));
// jobj.put("so2Grade",  Float.parseFloat(getTagValue("so2Grade", eElement).toString()));
// jobj.put("coGrade",   Float.parseFloat(getTagValue("coGrade", eElement).toString()));
// jobj.put("o3Grade",   Float.parseFloat(getTagValue("o3Grade", eElement).toString()));
// jobj.put("no2Grade",  Float.parseFloat(getTagValue("no2Grade", eElement).toString()));
// jobj.put("pm10Grade", Float.parseFloat(getTagValue("pm10Grade", eElement).toString()));
// jobj.put("pm25Grade", Float.parseFloat(getTagValue("pm25Grade", eElement).toString()));

jobj.put("so2Value",  getTagValue("so2Value", eElement).toString());
jobj.put("coValue",   getTagValue("coValue", eElement).toString());
jobj.put("o3Value",   getTagValue("o3Value", eElement).toString());
jobj.put("pm10Value", getTagValue("pm10Value", eElement).toString());
jobj.put("pm25Value", getTagValue("pm25Value", eElement).toString());
jobj.put("khaiValue", getTagValue("khaiValue", eElement).toString());
jobj.put("khaiGrade", getTagValue("khaiGrade", eElement).toString());
jobj.put("so2Grade",  getTagValue("so2Grade", eElement).toString());
jobj.put("coGrade",   getTagValue("coGrade", eElement).toString());
jobj.put("o3Grade",   getTagValue("o3Grade", eElement).toString());
jobj.put("no2Grade",  getTagValue("no2Grade", eElement).toString());
jobj.put("pm10Grade", getTagValue("pm10Grade", eElement).toString());
jobj.put("pm25Grade", getTagValue("pm25Grade", eElement).toString());

  JSONParser jsonParser = new JSONParser();
jitem.add(jsonParser.parse(jobj.toJSONString()));

    
} // for end
} // if end



nowCnt = page * Integer.parseInt(numOfRows);

page += 1;

 
if(nowCnt > totalCount){
break;
}
} // while end

} catch (Exception e){
e.printStackTrace();
} // try~catch end

System.out.println("[message]:" + jitem.toJSONString());
System.out.println("End of Main");
} // main end 
   
  }
   


반응형

'4차 산업 > ELK 관련' 카테고리의 다른 글

Logstash 대기 오염 관련 Json 처리 예제  (0) 2019.03.21
반응형

히딩크 감독이 연골 치료로 유명해진 제품


오백 ~ 천


관련 URL 

http://www.newspim.com/news/view/20190326000981

http://news.mtn.co.kr/newscenter/news_viewer.mtn?gidx=2019032617152128781



이상사례 관련 URL

http://www.yakup.com/news/index.html?mode=view&cat=12&nid=228690

반응형
반응형

input {

  file {

    type => "json"

    codec => "json" {

        charset => "utf-8"

    }

    path => "/test.json"

    start_position => "beginning"

    sincedb_path => "/dev/null"

  }

}

filter {

  json {

   source => "message"

  }


  # split records tag

  split {

        field => "[records]"

  }


  # new json type append

  if [records][so2Grade] {

  mutate {

        add_field => {

                "so2Grade"    => "%{[records][so2Grade]}"

                "pm25Grade1h" => "%{[records][pm25Grade1h]}"

                "pm10Value24" => "%{[records][pm10Value24]}"

                "khaiValue"   => "%{[records][khaiValue]}"

                "so2Value"    => "%{[records][so2Value]}"

                "coValue"     => "%{[records][coValue]}"

                "pm10Grade1h" => "%{[records][pm10Grade1h]}"

                "o3Grade"     => "%{[records][o3Grade]}"

                "pm10Value"   => "%{[records][pm10Value]}"

                "khaiGrade"   => "%{[records][khaiGrade]}"

                "pm25Value"   => "%{[records][pm25Value]}"

                "no2Grade"    => "%{[records][no2Grade]}"

                "pm25Value24" => "%{[records][pm25Value24]}"

                "pm25Grade"   => "%{[records][pm25Grade]}"

                "mangName"    => "%{[records][mangName]}"

                "coGrade"     => "%{[records][coGrade]}"

                "dataTime"    => "%{[records][dataTime]}"

                "no2Value"    => "%{[records][no2Value]}"

                "pm10Grade"   => "%{[records][pm10Grade]}"

                "o3Value"     => "%{[records][o3Value]}"

        }


        # remove split records

        remove_field => [ "[fields]", "[records]" ]

  }


   # convert field

   mutate {

       convert => {

         "so2Grade"    => "float"

         "pm25Grade1h" => "float"

         "pm10Value24" => "float"

         "khaiValue"   => "float"

         "so2Value"    => "float"

         "coValue"     => "float"

         "pm10Grade1h" => "float"

         "o3Grade"     => "float"

         "pm10Value"   => "float"

         "khaiGrade"   => "float"

         "pm25Value"   => "float"

         "no2Grade"    => "float"

         "pm25Value24" => "float"

         "pm25Grade"   => "float"

         "coGrade"     => "float"

         "no2Value"    => "float"

         "pm10Grade"   => "float"

         "o3Value"     => "float"

         "mangName"    => "string"

      }

   }

}

output {

    stdout { codec => json }

    file {

        codec => json_lines

        path => "/output_test.json"

    }

    elasticsearch {

       hosts => "localhost"

       index => "atmosphere"

    }

}


======================================================


input {

  file {

    type           => "json"

    #codec          => "json"

    codec          => "plain"

    path           => "/media/sf_Class/jptest/jongrogu20190320.json"

    start_position => "beginning"

    sincedb_path   => "/dev/null"

  }

}

filter {

  json {

        source => "message"

  }


  # split records tag

  split {

        field => "[records]"

  }


  # new json type append

  mutate {

        # remove split records

        remove_field => [ "[fields]", "[records]" ]

        add_field => {

                "so2Grade"    => "%{[records][so2Grade]}"

                "pm25Grade1h" => "%{[records][pm25Grade1h]}"

                "pm10Value24" => "%{[records][pm10Value24]}"

                "khaiValue"   => "%{[records][khaiValue]}"

                "so2Value"    => "%{[records][so2Value]}"

                "coValue"     => "%{[records][coValue]}"

                "pm10Grade1h" => "%{[records][pm10Grade1h]}"

                "o3Grade"     => "%{[records][o3Grade]}"

                "pm10Value"   => "%{[records][pm10Value]}"

                "khaiGrade"   => "%{[records][khaiGrade]}"

                "pm25Value"   => "%{[records][pm25Value]}"

                "no2Grade"    => "%{[records][no2Grade]}"

                "pm25Value24" => "%{[records][pm25Value24]}"

                "pm25Grade"   => "%{[records][pm25Grade]}"

                "mangName"    => "%{[records][mangName]}"

                "coGrade"     => "%{[records][coGrade]}"

                "dataTime"    => "%{[records][dataTime]}"

                "no2Value"    => "%{[records][no2Value]}"

                "pm10Grade"   => "%{[records][pm10Grade]}"

                "o3Value"     => "%{[records][o3Value]}"

        }


  }


 # validation

  mutate {

           gsub =>  [

                       "so2Grade" ,    "[^0-9.]" , "",

                       "pm25Grade1h" , "[^0-9.]" , "",

                       "pm10Value24" , "[^0-9.]" , "",

                       "khaiValue" ,   "[^0-9.]" , "",

                       "so2Value" ,    "[^0-9.]" , "",

                       "coValue" ,     "[^0-9.]" , "",

                       "pm10Grade1h" , "[^0-9.]" , "",

                       "o3Grade" ,     "[^0-9.]" , "",

                       "pm10Value" ,   "[^0-9.]" , "",

                       "khaiGrade" ,   "[^0-9.]" , "",

                       "pm25Value" ,   "[^0-9.]" , "",

                       "no2Grade"  ,   "[^0-9.]" , "",

                       "pm25Value24" , "[^0-9.]" , "",

                       "pm25Grade" ,   "[^0-9.]" , "",

                       "coGrade" ,     "[^0-9.]" , "",

                       "no2Value" ,    "[^0-9.]" , "",

                       "pm10Grade" ,   "[^0-9.]" , "",

                       "o3Value" ,     "[^0-9.]" , ""

                    ]

  }




  # convert field

  mutate {

       convert => {

         "so2Grade"    => "float"

         "pm25Grade1h" => "float"

         "pm10Value24" => "float"

         "khaiValue"   => "float"

         "so2Value"    => "float"

         "coValue"     => "float"

         "pm10Grade1h" => "float"

         "o3Grade"     => "float"

         "pm10Value"   => "float"

         "khaiGrade"   => "float"

         "pm25Value"   => "float"

         "no2Grade"    => "float"

         "pm25Value24" => "float"

         "pm25Grade"   => "float"

         "coGrade"     => "float"

         "no2Value"    => "float"

         "pm10Grade"   => "float"

         "o3Value"     => "float"

      }

   }


  # date

  date {

        match => ["dataTime" , "yyyy-MM-dd HH:mm"]

  }


}



output {

    stdout { codec => rubydebug }

    file {

        codec => json_lines

        path => "/media/sf_Class/jptest/output_test.json"

    }

#    elasticsearch {

#       hosts => "localhost"

#       index => "atmosphere"

#    }

}




반응형
반응형



1. 커맨드 환경(CUI)에 화면 크기 1024*768로 설정

   - root 권한

   #> vi /etc/default/grub

   

   다음 라인 수정

   GRUB_CMDLINE_LINUX=" .....(중략)... vga=791"

   

   grub 업데이트

   #> grub2-mkconfig -o /boot/grub2/grub.cfg

   

   시스템 재시작

   #> sync

   #> reboot 





2. daum repository 설정 추가


   - root 권한

   

   #> cd /etc/yum.repos.d/


   #> vi daum.repo


   ###### 아래의 내용을 추가 #########


    [base]

    name=CentOS-$releasever - Base    

    baseurl=http://ftp.daum.net/centos/7/os/$basearch/    

    gpgcheck=1    

    gpgkey=http://ftp.daum.net/centos/RPM-GPG-KEY-CentOS-7         

    

    [updates]    

    name=CentOS-$releasever - Updates    

    baseurl=http://ftp.daum.net/centos/7/updates/$basearch/    

    gpgcheck=1    

    gpgkey=http://ftp.daum.net/centos/RPM-GPG-KEY-CentOS-7         

    

    [extras]    

    name=CentOS-$releasever - Extras    

    baseurl=http://ftp.daum.net/centos/7/extras/$basearch/    

    gpgcheck=1    

    gpgkey=http://ftp.daum.net/centos/RPM-GPG-KEY-CentOS-7

    

    [centosplus]    

    name=CentOS-$releasever - Plus    

    baseurl=http://ftp.daum.net/centos/7/centosplus/$basearch/    

    gpgcheck=1    

    gpgkey=http://ftp.daum.net/centos/RPM-GPG-KEY-CentOS-7    .

    

    - repo clear 후 재로딩

    #> yum clean all

    

    - repo 목록 조회

    #> yum repolist all

    

    


3. virtual box 자동 화면 해상도 관련

   - root 권한 

    yum install -y make kernel-devel gcc perl bzip2

    yum update -y kernel*



  # 재기동(reboot)   


   Virtual Box -> 장치 -> 게스트 확장 CD 이미지 삽입    

반응형

'OS > Centos' 카테고리의 다른 글

Centos 7 Firewall-cmd 관련 정보들  (0) 2019.05.08
Centos 7 서버 설정 하기  (0) 2019.04.17
Centos 6.3 에서 SAMBA 설정하기  (4) 2013.01.22
Centos 6.3 에서 VNC 설치 하기  (0) 2013.01.21
CENTOS 5 버전의 SSH 관련 버그 오류  (0) 2010.10.05

+ Recent posts