Splunk 문서 원본 보기
←
Splunk
둘러보기로 가기
검색하러 가기
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
이 문서는 편집하거나 다른 명령을 할 수 없도록 보호되어 있습니다.
문서의 원본을 보거나 복사할 수 있습니다.
[[Hadoop]]을 사용하는 상용 솔루션인 Splunk를 정리 합니다. *홈페이지 : http://www.splunk.com/, http://ko.splunk.com/, https://www.facebook.com/SplunkKorea?ref=stream :*Document : http://docs.splunk.com/Documentation, [http://docs.splunk.com/Documentation/Splunk/latest/Translated/Koreanmanuals 한글 문서] :*Apps : http://apps.splunk.com/ :*Answer : http://answers.splunk.com/ :*Wiki : http://wiki.splunk.com/ :*Blog : http://blogs.splunk.com/ :*Developer : http://dev.splunk.com/ :*Conference : http://conf.splunk.com/ :*Schwag Store : http://www.co-store.com/splunk :*Splunk Base : http://splunk-base.splunk.com/ *다운로드 : http://www.splunk.com/download *라이선스 : 상용 솔루션 *플랫폼 : ==Splunk 개요== 로그 수집 및 로그 기반 통계 전문 솔루션인 Splunk는 간단한 ETL 및 자동으로 내용에 대한 Index를 생성 합니다. *Flume Architecture :*데이터 검색 ::*[[Python]] / [[Django]] ::*[[Solr]] : [[Luncene]]를 기반으로 동작하는 검색 관리 :*데이터 인텍싱 ::*[[Luncene]] : 검색 엔진 ::*[[Hadoop]]의 MapReduce : 분산 처리 :*데이터 수집 ::*[[Hadoop]]의 HDFS : 분산 데이터 저장 (Object Storage) ::*[[Flume]] with [[avro]] http://coverall2.splunk.com/web_assets/developers/diagrams/NSAF/NSAF_Architecture.jpg http://1.bp.blogspot.com/-sn0wYFlSrv0/UU3Hjuq-4xI/AAAAAAAABPk/P8ttGMkMvtQ/s1600/LogAggregation.png http://cdn-static.zdnet.com/i/story/60/01/032704/splunk-41_press_overview_v3pptx.jpg ==CentOS에 Splunk 설치== ===사전 준비 사항=== *[[UCloud#UCloud_기본_설정|UCloud 기본 설정]]을 참조하여 CentOS 설치 및 설정 ===Splunk 설치=== *[http://www.splunk.com/download 다운로드 사이트]에서 설치 파일을 다운로드 합니다. :*[http://www.splunk.com/view/free-vs-enterprise/SP-CAAAE8W Splunk의 Free vs. Enterprise 기능 비교] :*[http://www.splunk.com/download?ac=get_splunk_download 다운로드 사이트]에서 Splunk 설치 파일을 다운로드 합니다. ### wget http://download.splunk.com/releases/5.0.3/splunk/linux/splunk-5.0.3-163460-linux-2.6-x86_64.rpm ### wget http://download.splunk.com/releases/6.0/splunk/linux/splunk-6.0-182037-linux-2.6-x86_64.rpm wget http://download.splunk.com/releases/6.0.2/splunk/linux/splunk-6.0.2-196940-linux-2.6-x86_64.rpm rpm -i splunk-6.0-182037-linux-2.6-x86_64.rpm ### rpm -i --prefix=~ splunk-5.0.3-163460-linux-2.6-x86_64.rpm #--- 설치되는 폴더 변경시 ### rpm -U splunk-5.0.3-163460-linux-2.6-x86_64.rpm #--- Splunk upgrade ### rpm -U --prefix=~ splunk-5.0.3-163460-linux-2.6-x86_64.rpm #--- SPlunk upgrade *vi .bashrc ### ---------------------------------------------------------------------------- ### Splunk 설정 ### ---------------------------------------------------------------------------- export SPLUNK_HOME=/opt/splunk export PATH=${PATH}:${SPLUNK_HOME}/bin CDPATH=${CDPATH}:/opt *Splunk 실행 및 접속 splunk start --accept-license #--- Splunk 시작 (첫 시작시) ### splunk enable boot-start #--- CentOS 기동시 자동 시작 설정 ### splunk enable boot-start -user splunk :*http://localhost:8000/, admin / changeme ===Splunk Universal forwarder 설치=== wget http://download.splunk.com/releases/5.0.4/universalforwarder/linux/splunkforwarder-5.0.4-172409-linux-2.6-x86_64.rpm?ac=get_splunk_download ===Splunk 정보=== *설치 폴더 : /opt/splunk :*SplunkWeb : /opt/splunk/var :*Splunk DB : /opt/splunk/var/lib/splunk :*Python 폴더 : /opt/splunk/lib/python2.7 *설정 파일 :*vi /opt/splunk/etc/splunk-launch.conf :*설정 폴더 ::*cd /opt/splunk/etc/system/local/ ::*cd /opt/splunk/etc/apps/~/local/ ::*cd /opt/splunk/etc/apps/~/default/ ::*cd /opt/splunk/etc/system/default/ :*설정 파일 목록 ::*vi web.conf ::*vi server.conf ::*vi inputs.conf *Version 확인 :*vi /opt/splunk/etc/splunk.version *Demon : /opt/splunk/bin/splunkd *기동 종료 : splunk start / stop / restart / status :*splunk start splunkd :*splunk start splunkweb *Process 확인 : ps -ef | grep splunk | grep -v grep *Ports :*8000 port : splunkweb 포트 :*8009 port : splunkd 데몬이 사용하는 포트 :*9997 port : Forwarder에서 데이터를 수신하는 포트 ==Splunk 매뉴얼== *Splunk 폴더 구조 (설치 폴더 : /opt/splunk/) :*bin/ :*etc/ ::*splunk-launch.conf : 설정 파일 ::*splunk.version : 버전 정보 ::*passwd : Splunk 사용자 정보 저장 ::*apps/~/ : Splunk App 폴더 ::*users/~/ : 사용자별 정보 저장 :*include/ :*lib/ ::*python2.7/ : Python 설치 폴더 ::*python2.7/site-packages/splunk/ : Splunk Application :::*appserver/mrsparkle/ : Document Root :::*appserver/mrsparkle/root.py : splunkweb 데몬, 502 라인 참조 :::*appserver/mrsparkle/lib/module.py : ModuleController :::*appserver/mrsparkle/controllers/view.py : ViewController ::*python2.7/sitepackages/cherrypy/ : [[CherryPy]] Web Server ::*python2.7/sitepackages/mako/ : [[Mako]] Template Engine :*openssl/ :*share/ ::*splunk/ : Splunk 개발 프로그램 샘플 :::*app_templates : Splunk App 샘플 :*var/ : SplunkWeb에서 사용하는 폴더 ::*lib/splunk/ : 데이터 저장 ::*log/splunk/ : 로그 저장 ::*run/splunk/ : Splunk Web에서 사용하는 작업용 폴더 *Splunk CLI 도움말 splunk splunk help cheatsheet *Port 설정 splunk set web-port 9000 splunk set splunkd-port 9089 ===함수=== *Unix time을 년월일 형태의 포맷으로 변환 eval sTime=strftime(time / 1000000, "%Y-%m-%d %H:%M:%S.%6N") ==Splunk 검색== error OR failed OR severe OR (sourcetype=access_* (404 OR 500 OR 503)) error OR failed OR severe OR (sourcetype=access_* (status=404 OR status=500 OR status=503)) sourcetype=access_* action=purchase | top category_id ==SplunkWeb== *http://localhost:8000/locale/app/AppName/ViewName :*시작 프로그램 : lib/python2.7/site-packages/splunk/appserver/mrsparkle/root.py ::*run() 함수 : :*Config 파일 ::*etc/system/default/web.conf -> cherrypy.config['~'] ::*etc/system/local/web.conf :*Model : lib/python2.7/site-packages/splunk/model/ ::*base.py : SplunkAppObjModel class ::*app.py : App class ::*field.py : Field class, FieldValue class :*Module folder : share/splunk/search_mrsparkle/modules/ ::*~.html, ~.py, ~.js, ~.conf ::*lib/python2.7/site-packages/splunk/appserver/mrsparkle/lib/module.py ::*lib/python2.7/site-packages/splunk/appserver/mrsparkle/controllers/module.py :::*ModuleHandle class, ModuleController class :*Controller : lib/python2.7/site-packages/splunk/appserver/mrsparkle ::*controllers/top.py : TopController class : URL Path에 따른 Controller 지정 ::*controllers/custom.py : CustomController class : Customer Controller 사용 지원 ::*controllers/__init__.py : BaseController class ::*root.py : RootController class의 index(self) 함수 ::*controllers/view.py : ViewController class :*Template : share/splunk/search_mrsparkle/ ::*template/viw/**.html ::*exposed/js/, exposed/html/ ::*CSS : exposed/css, exposed/css/skins/default/default.css, modules/**/*.css :*log folder : var/log/splunk/ ::*etc/log.cfg, etc/log-local.cfg ::*web_service.log :*static folder : share/splunk/search_mrsparkle/exposed/ :*Splunk apps : /etc/apps/ :*다국어 지원 ::*lib/python2.7/site-packages/splunk/appserver/mrsparkle/lib/i18n.py ::*share/splunk/search_mrsparkle/exposed/js/i18n.js *http://localhost:8000/ko_KR/moduleName/viewName :*module : etc/apps/~/, Splunk.Module, Splunk.Module.Dispatcher :*view : ~.xml, ~.html :*API Call ::*is_api parameter ::*http://localhost:8000/api/~ *CherryPy Web Server : lib/python2.7/site-packages/cherrypy/ *Mako Template Engine : lib/python2.7/site-packages/mako/ ==Splunkd== ==Splunk App== *Splunk에 Plug-and-Play 형태로 설치되는 모듈 ===Splunk App 구조=== *폴더 구조 :*bin/ : 실행 파일 :*appserver/ : Splunk Web에서 사용되는 화면 :*local/, default/ : 로컬 설정과 디폴트 설정, 반드시 local 설정 폴더에 있는 파일만 수정 하세요. :*metadata/ : 메타 데이터 :*logs/ : 로그 폴더 ===Splunk Hadoop Connect=== *홈페이지 : http://splunk-base.splunk.com/apps/Splunk+Hadoop+Connect *설치 폴더 : /opt/splunk/etc/apps/HadoopConnect/ *사용자별 설정 폴더 :*etc/users/admin/HadoopConnect/ ::*history/ : HadoopConnect에서 작업한 history 저장 ::*metadata/ *[[HDFS]] 실행 start-dfs.sh *참고 문헌 :*http://blogs.splunk.com/2012/08/27/do-you-hadoop-how-splunk-can-help/ ===Splunk Technology Add-on for HadoopOps=== *홈페이지 : http://splunk-base.splunk.com/apps/57282/splunk-technology-add-on-for-hadoopops :*http://docs.splunk.com/Documentation/HadoopOps/1.1.1/HadoopOps/TheSplunkAppforHadoopOpsuserinterface *설치 폴더 : /opt/splunk/etc/apps/Splunk_TA_hadoopops/ *Hadoop Operations ==Splunk 한글화== *POT (Portable Object Template) 파일 : PO 파일을 생성하기 위해서 사용하는 Template :*lib/python2.7/site-packages/splunk/appserver/mrsparkle/locale/messages.pot :*etc/apps/~/locale/messages.pot *PO (Portable Object) 파일 : GNU Gettext 카탈로그 :*lib/python2.7/site-packages/splunk/appserver/mrsparkle/locale/ko_KR/LC_MESSAGES/messages.po :*etc/apps/~/locale/ko_KR/LC_MESSAGES/messages.po *MO (Machine Object) 파일 : PO 파일이 번역된 binary 기반의 파일 :*lib/python2.7/site-packages/splunk/appserver/mrsparkle/locale/ko_KR/LC_MESSAGES/messages.mo :*etc/apps/~/locale/ko_KR/LC_MESSAGES/messages.mo *참고 문헌 :*[[오픈소스 한글화]] ==Hunk== *참고 문헌 :*http://www.splunk.com/view/hunk/SP-CAAAH2E :*http://blogs.splunk.com/2013/06/26/hunk-splunk-analytics-for-hadoop-intro-%E2%80%93-part-1/ :*http://blogs.splunk.com/2013/08/03/hunk-intro-part-3/ :*http://www.slideshare.net/eyeball/splunk-hunkbeta-20130812 ==이슈== ===CheckPoint=== *ERROR: SIC ERROR 119 - SIC Error for lea: Client could not choose an authentication method for service lea :*fwasync_mux_in: 10: handler returned with error :*opsec_auth_client_connected: connect failed (119) :*opsec_auth_client_connected: SIC Error for lea: Client could not choose an authentication method for service lea splunk internal call command: $SPLUNK_HOME/bin/splunk _internal call /servicesNS/nobody/Splunk_TA_opseclea_linux22/opsec/log_status/1@opsec splunk output: QUERYING: 'https://127.0.0.1:8089/servicesNS/nobody/Splunk_TA_opseclea_linux22/opsec/log_status/1@opsec' FAILED: 'HTTP/1.1 404 Not Found' Content: <?xml version="1.0" encoding="UTF-8"?> <response> <messages> <msg type="ERROR">In handler 'log_status': Could not find object id=1@opsec</msg> </messages> </response> *$SPLUNK_HOME/Splunk_TA_opseclea_linux22/local/opsec.conf lea_server_auth_port = 18185 lea_server_auth_type = sslca lea_server_ip = 10.0.xxx.5 *$CHECKPOINT_HOME/conf/fwopsec.conf lea_server auth_port 18185 lea_server auth_type sslca :*cpstop :*cpstart *sslca 대신 ssl_opsec 인증 방식을 지원할 경우 :*http://wiki.splunk.com/Community:Configure_OPSEC_LEA_input :*http://informationsecuritytips.com/2013/02/configuring-splunk-for-checkpoint-authenticated-lea/ cd etc/apps/Splunk_TA_opseclea_linux22/opsec-tools ./opsec_putkey port 18185 CMA_IP authkey.C 파일이 생성됨 etc/apps/lea-loggrabber-splunk/bin 폴더에 authkey.C 파일 복사 vi etc/apps/Splunk_TA_opseclea_linux22/default/lea.conf ### lea_server auth_type ssl_opsec lea_server auth_type auth_opsec Splunk restart ==Splunk 관리== *Index 데이터 삭제 splunk stop splunk clean eventdata 인덱스명 splunk start ==Splunk Development== ===권한에 따른 파일 위치=== *권한 설정 :*비공개 유지 : "$SPLUNK_HOME/etc/users/사용자_아이디/CustomApp/" 폴더 아래에 파일 생성 :*이 앱만 : "$SPLUNK_HOME/etc/apps/CustomApp/" 폴더 아래에 파일 생성 :*모든 앱 : "$SPLUNK_HOME/etc/users/CustomApp/" 폴더 아래에 파일 생성 ===Splunk App 생성=== *"앱 -> 앱 관리" 메뉴에서 "앱 만들기" 버튼을 선택 합니다. :*이름 : CustomApp :*폴더 이름 : CustomApp :*버전 : 0.01 :*표시 여부 : 예 :*작성자 : :*설명 : :*템플릿 : barebones ::*$SPLUNK_HOME/share/splunk/app_templates/ 폴더에 있는 Application Template를 사용 합니다. ::*Application Template 종류 : barebones, sample_app :*자산 업로드 : ::*$SPLUNK_HOME/etc/apps/CustomApp/appserver/static/ 폴더로 업로드 됩니다. *생성된 App 정보 :*폴더 : $SPLUNK_HOME/etc/apps/CustomApp/ ::*appserver/ : 앱 관련 데이터 저장 ::*bin/ : 앱 관련 실행 파일 저장 ::*default/ : 앱 관련 디폴트 설정 저장 :::*app.conf : CustomApp의 기본 정보 :::*data/ui/nav/default.xml : 앱의 메뉴 정보 :::*data/views/ : 앱의 view 정보 ::*local/ : default/ 폴더에서 customize된 정보 저장 ::*metadata/ : 메타 데이터 저장 :::*default.meta : 앱의 설정 정보 :::*local.meta : 앱의 custom 설정 정보 *앱 관리 :*"앱 -> 앱 관리" 메뉴에서 권한, 속성, 개체 등을 편집 합니다. ===App 메뉴 수정=== *"설정 -> 사용자 인터페이스 -> 탐색 메뉴" 메뉴에서 앱 컨텍스트로 "CustomApp(CustomApp)"을 선택 합니다. *"default"를 선택하여 메뉴을 수정 합니다. <nav search_view="search" color="#65A637"> <view name="search" default='true' /> #--- 검색 <view name="data_models" /> #--- 피벗 <view name="reports" /> #--- 보고서 <view name="alerts" /> #--- 경고 <view name="dashboards" /> #--- 대시보드 <collection label="분석 요건 I"> #--- View 모음 <view name="view101"/> #--- 개별 view <view name="view102"/> <view name="view103"/> <view name="view104"/> </collection> <collection label="발생 서비스 분석"> <view name="view211"/> <view name="view212"/> </collection> <collection label="운영자 요청 분석"> <view name="view221"/> </collection> <collection label="발생 데이터 분석"> <view name="view232"/> </collection> </nav> *메뉴 관리 :*"설정 -> 사용자 인터페이스 -> 탐색 메뉴" 메뉴에서 앱 컨텍스트로 "CustomApp(CustomApp)"을 선택 합니다. :*default 메뉴의 권한을 설정 합니다. ===View 추가 및 생성=== *"설정 -> 사용자 인터페이스 -> 뷰" 메뉴에서 앱 컨텍스트로 "CustomApp(CustomApp)"을 선택 합니다. *"새로 만들기" 버튼을 선택 합니다. :*대상 앱 : CustomApp :*뷰 이름 : CustomView001 <form script="CustomView001.js" stylesheet="CustomView001.css"> <label>CustomView001</label> </form> :*$Splunk_HOME/etc/apps/CustomApp/local/data/ui/views/CustomView001.xml 파일이 생성 됩니다. *View에서 사용하는 파일 업로드 :*"앱 -> 앱 관리" 메뉴를 선택 합니다. :*CustomApp이 "속성 편집" 메뉴을 선택 합니다. :*"자산 업로드"에서 업로드할 파일을 선택한 후 업로드 합니다. ::*$SPLUNK_HOME/etc/apps/CustomApp/appserver/static/ 폴더로 파일이 업로드 됩니다. :*업로드한 파일을 View에서 사용하기 위해서는 Splunk를 재기동 하여야 합니다. ::*"설정 -> 서버 컨트롤" 메뉴을 선택한 후 "Splunk 재시작" 버튼을 선택 합니다. *View 페이지 접속 및 편집 :*"앱 -> CustomApp" 메뉴을 선택 합니다. :*"대시보드" 메뉴에서 CustomView001 을 선택 합니다. *View 관리 :*"설정 -> 사용자 인터페이스 -> 뷰" 메뉴에서 앱 컨텍스트로 "CustomApp(CustomApp)"을 선택 합니다. :*view의 권한 설정과 복제, 이동, 삭제 등을 합니다. ===View용 Template=== *Template 폴더 : $SPLUNK_HOME/share/splunk/search_mrsparkle/templates/ :*대시보드 Template : dashboards/dashboard.html *정적 파일 저장 폴더 : $SPLUNK_HOME/share/splunk/search_mrsparkle/exposed/ *Template 파일에 정적 파일 추가 :*CSS 파일 : css/bootstrap.min.css :*CSS 추가 : <link rel="stylesheet" type="text/css" href="${url('/static/css/bootstrap.min.css')}" /> :*JS 파일 : js/i18n.js :*JS 추가 : <script src="${url('/static/js/i18n.js')}"></script> *RequireJS의 Base 폴더 :*$SPLUNK_HOME/share/splunk/search_mrsparkle/exposed/js/ *RequireJS를 위하여 JavaScript 파일의 위치를 관리 :*share/splunk/search_mrsparkle/exposed/js/build/simplexml/config.js *주의 : JavaScript 추가시 config.js를 사용하여 추가하지 않을 경우, 오류가 발생할 수 있습니다. ===패널 추가 및 관리=== *View 화면에서 "편집 -> 패널 편집" 메뉴를 선택 합니다. *"패널 추가" 버튼을 선택 합니다. :*콘텐츠 제목 : Panel001 :*콘텐츠 유형 : 인라인 검색 ::*인라인 검색, 인라인 피벗, 보고서 :*검색 문자열 : index=_internal :*시간 범위 : 전체시간 *HTML Element 추가 :*"편집 -> 원본 편집" 메뉴를 선택 합니다. <form script="CustomView001.js" stylesheet="CustomView001.css"> <label>CustomView001</label> <row> <html> <p>HTML Element</p> </html> </row> </form> *명명 규칙 :*Element 명명 규칙 : element1, element2, element3 형태의 id로 지정 합니다. <div class="dashboard-cell" style="width: 50%;"> <div class="dashboard-panel clearfix"> <div class="panel-element-row"> <div class="dashboard-element html" id="element2" style="width: 100%"> <div class="panel-body html"> <div><p>HTML Element</p></div> </div> </div> </div> </div> </div> :*검색 명명 규칙 : search1, search2, search3 형태로 지정 합니다. *JavaScript에서 HTML Element 노드 찾기 require( ["splunkjs/mvc", "splunkjs/mvc/utils", "splunkjs/mvc/tokenutils", "underscore", "jquery"], function(mvc, utils, TokenUtils, _, $) { var node = null; node = $("#element2 .panel-body"); alert(node.html()); } ); ===외부 JavaScript 사용=== *JavaScript에서 d3.js 파일 사용 방법 :*RequireJS의 Base 폴더 : $SPLUNK_HOME/share/splunk/search_mrsparkle/exposed/js/ :*$SPLUNK_HOME/share/splunk/search_mrsparkle/exposed/jslib/d3/d3.js 파일이 존재할 경우 require( ["splunkjs/mvc", "splunkjs/mvc/utils", "splunkjs/mvc/tokenutils", "underscore", "jquery", "../jslib/d3/d3"], function(mvc, utils, TokenUtils, _, $, d3) { var node = null; viewTemplate(); viewJavaScriptObject(window, "window"); chart001(d3); } ); ===SplunkJS로 데이터 가져오기=== *Search 생성 var search004 = new SearchManager({ "id": "search004 ", "search": "index=json | head 10 | table _time guid gubun filename maxDuration source sourcetype", "earliest_time": "-2400h", "latest_time": "now", "preview": true }); *Search 결과 가져오기 var manager = splunkjs.mvc.Components.getInstance('search004'); #--- SearchManager 인스턴스 생성 var data = manager.data('results', { #--- SplunkResultsModel 생성 (events, preview, results, summary) output_mode: 'json_rows', count: 0 #--- 가져올 레코드 수 지정 (0. 모두 가져오기) }); data.on('data', function(results) { #--- results : SplunkResultsModel #--- 데이터를 가져올 때까지 반복적으로 호출됨 if (!data.hasData()) { return; } var collection = results.collection().toJSON(); #--- collection에 배열 형태로 레코드가 저장됨. 각 레코드는 object 형태를 가짐 ("{name: value}") for (var idx = 0; idx < collection.length; idx++) { var item = collection[idx]; window.alert("item[" + idx + "] = " + JSONtoString(item)); } }); manager.startSearch(); ==Splunk REST API== ==SplunkJS== ===SplunkJS Apps 생성=== cd /nas/appl/splunk/etc/apps/framework ./splunkdj createapp zzapps splunk stop splunk start cd /nas/appl/splunk/etc/apps/zzapps */nas/appl/splunk/etc/apps/zzapps/default/data/ui/nav/default.xml <nav> <view name="default" default="true"/> <a href="/dj/redirector/zzapps/home">Home</a> </nav> */nas/appl/splunk/etc/apps/zzapps/default/data/ui/views/default.xml <view template="zzapps:/templates/redirect.tmpl" isVisible="false"><label>Home</label></view> */nas/appl/splunk/etc/apps/zzapps/appserver/templates/redirect.tmpl <script> var root = "/dj/redirector/"; var path = document.location.pathname; var appName = path.match(/\/app\/(.*)\/default/)[1] window.alert(path); //--- /en-US/app/zzapps/default window.alert(root + appName + "/home"); //--- /dj/redirector/zzapps/home document.location = root + appName + "/home"; </script> *http://node201.hadoop.com:8000/dj/redirector/zzapps/home - /nas/appl/splunk/etc/apps/zzapps/django/zzapps/urls.py urlpatterns = patterns('', url(r'^home/$', 'zzapps.views.home', name='home'), ) - /nas/appl/splunk/etc/apps/zzapps/django/zzapps/views.py def home(request): return { "message": "Hello World from zzapps!", "app_name": "zzapps" } *http://node201.hadoop.com:8000/dj/en-us/zzapps/home/ - http://node201.hadoop.com:8000/dj/static/zzapps/custom.css /nas/appl/splunk/etc/apps/zzapps/django/zzapps/static/zzapps/custom.css ===SplunkJS Page 추가=== *vi /nas/appl/splunk/etc/apps/zzapps/django/zzapps/templates/home001.html {# Boilerplate for a Django Bindings template #} {% extends "splunkdj:base_with_app_bar.html" %} {% load splunkmvc %} {% block title %}{ {app_name}} Your page title goes here{% endblock title %} {% block css %} <!-- Style sheets are loaded here --> <link rel="stylesheet" type="text/css" href="{ {STATIC_URL}}{ {app_name}}/custom.css" /> <link rel="stylesheet" type="text/css" href="{ {STATIC_URL}}splunkjs/css/dashboard.css" /> <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" /> <style> /* Define any page styles here*/ </style> {% endblock css %} {% block content %} <!-- You can use HTML and <div> tags for layout --> {# Splunk views go here #} <!-- http://dev.splunk.com/view/SP-CAAAEQA --> <div class="dashboard-body container-fluid main-section-body"> <div class="row"> <div class="dashboard-header clearfix"> <h2>Add views to a template using Django template tags</h2> </div> </div> <div class="fieldset"> {% dropdown id="drop_headcount" default="1" value="$headcount$"|token_safe %} {% radiogroup id="radio_sourcetype" managerid="search_sourcetypes" labelField="sourcetype" valueField="sourcetype" value="$sourcetype$"|token_safe default="splunkd"%} <div class="input form-submit" id="search_btn"> <button class="btn btn-primary submit">Search</button> </div> </div> <div class="dashboard-row"> <div class="dashboard-cell" style="width: 50%;"> <div class="dashboard-panel"> <div class="panel-head"> <h3>Chart</h3> </div> <div class="panel-body"> <p>view chart</p> {% chart id="chart1" managerid="search1" type="bar" %} </div> </div> </div> <div class="dashboard-cell" style="width: 50%;"> <div class="dashboard-panel"> <div class="panel-head"> <h3>Chart</h3> </div> <div class="panel-body"> <p>view chart</p> {% chart id="chart_sourcetype" managerid="search_chart" type="pie" %} </div> </div> </div> </div> <div class="dashboard-row"> <div class="dashboard-cell" style="width: 100%;"> <div class="dashboard-panel"> <div class="panel-head"> <h3>Table</h3> </div> <div class="panel-body"> <p>view table : $sourcetype$</p> {% table id="table_searchresults" managerid="search_resulttable" %} </div> </div> </div> </div> <div class="dashboard-row"> <div class="dashboard-cell" style="width: 30%;"> <div class="dashboard-panel"> <div class="panel-head"> <h3>Timeline</h3> </div> <div class="panel-body"> <p>view timeline</p> {% timeline id="timeline1" managerid="search1" %} </div> </div> </div> <div class="dashboard-cell" style="width: 70%;"> <div class="dashboard-panel"> <div class="panel-head"> <h3>Event Viewer</h3> </div> <div class="panel-body"> <p>view events</p> {% eventsviewer id="eviewer1" managerid="search1" %} </div> </div> </div> </div> </div> {% endblock content%} {% block managers %} {# Search managers go here #} {% searchmanager id="search1" search="index=_internal | head 1000 | stats count by sourcetype" preview=True required_field_list="*" status_buckets=300 %} {% savedsearchmanager id="search2" searchname="Top five sourcetypes" app="search" %} {% searchmanager id="search_resulttable" search="index=_internal sourcetype=$sourcetype$ | head $headcount$"|token_safe cache=True %} {% searchmanager id="search_chart" search="index=_internal | head 1000 | stats count by sourcetype" cache=True %} {% searchmanager id="search_sourcetypes" search="index=_internal | head 1000 | top sourcetype" cache=True %} {% endblock managers %} {% block js %} {# JavaScript goes here #} <script> var deps = [ "splunkjs/ready!", "splunkjs/mvc/radiogroupview" ]; require(deps, function(mvc) { var choices_headcount = [ {label:"1", value: "1"}, {label:"2", value: "2"}, {label:"3", value: "3"} ]; splunkjs.mvc.Components.getInstance("drop_headcount").settings.set("choices", choices_headcount); }); </script> {% endblock js %} ===SplunkJS View 페이지 생성=== *local/data/ui/views/view102.xml *appserver/static/view102.js :*appserver/static/view102.css <form stylesheet="view102.css" script="view102.js"> <label>분당 인덱싱</label> <fieldset submitButton="false" autoRun="true"> <input type="time" searchWhenChanged="true"> <default> <earliestTime>rt-5m</earliestTime> <latestTime>rt</latestTime> </default> </input> </fieldset> <row> <html> <h1>분당 인덱싱 건수</h1> <ul> <li>최대 초당 6,000개의 서비스, 서비스 당 2 이벤트</li> <li> <b> <font color="blue">최대 분당 720,000 인덱싱을 하여야 함</font> </b> </li> </ul> </html> <html> <h1>데이터부 인덱싱 자동화 방안</h1> <ul> <li>서비스별 IO폼 파일을 프로그램으로 자동 파싱하여 데이터베이스에 저장함</li> <li> <b> <font color="blue">데이터베이스 저장된 정보를 사용하여 서비스 로그 인덱싱 자동화함</font> </b> </li> </ul> </html> </row> <row> <chart> <title>분당 인덱싱 건수</title> <searchString>index=_internal sourcetype=splunkd series=json | eval epm = eps * 60 | stats avg(epm) as "분당 인덱싱 건수"</searchString> <earliestTime>$earliest$</earliestTime> <latestTime>$latest$</latestTime> <option name="charting.axisTitleX.visibility">visible</option> <option name="charting.axisTitleY.visibility">visible</option> <option name="charting.axisX.scale">linear</option> <option name="charting.axisY.scale">linear</option> <option name="charting.chart">radialGauge</option> <option name="charting.chart.nullValueMode">gaps</option> <option name="charting.chart.rangeValues">["0","216000","720000","936000"]</option> <option name="charting.chart.sliceCollapsingThreshold">0.01</option> <option name="charting.chart.stackMode">default</option> <option name="charting.chart.style">shiny</option> <option name="charting.drilldown">all</option> <option name="charting.gaugeColors">[0xFFE800,0x84E900,0x000080]</option> <option name="charting.layout.splitSeries">0</option> <option name="charting.legend.labelStyle.overflowMode">ellipsisMiddle</option> <option name="charting.legend.placement">right</option> </chart> <chart> <title>분당 인덱싱 건수/용량</title> <!-- <searchString>index=_internal sourcetype=splunkd series=json | bucket _time span=1m | eval epm = eps * 60 | eval kbpm = kbps * 60 | stats avg(epm) as "분당 인덱싱 건수" avg(kbpm) as "분당 인덱싱 용량(KB)" by _time</searchString> --> <searchString>index=_internal sourcetype=splunkd series=json | bucket _time span=1m | eval epm = eps * 60 | eval kbpm = kbps * 60 | stats avg(epm) as "분당 인덱싱 건수" by _time</searchString> <earliestTime>$earliest$</earliestTime> <latestTime>$latest$</latestTime> <option name="charting.axisTitleX.visibility">visible</option> <option name="charting.axisTitleY.visibility">visible</option> <option name="charting.axisX.scale">linear</option> <option name="charting.axisY.scale">linear</option> <option name="charting.chart">line</option> <option name="charting.chart.nullValueMode">gaps</option> <option name="charting.chart.sliceCollapsingThreshold">0.01</option> <option name="charting.chart.stackMode">default</option> <option name="charting.chart.style">shiny</option> <option name="charting.drilldown">none</option> <option name="charting.layout.splitSeries">0</option> <option name="charting.legend.labelStyle.overflowMode">ellipsisMiddle</option> <option name="charting.legend.placement">right</option> </chart> </row> <row> <table> <title>분당 인덱싱 현황</title> <searchString>index=_internal sourcetype=splunkd series=json | bucket _time span=1m | eval epm = eps * 60 | eval kbpm = kbps * 60 | stats avg(epm) as "분당 인덱싱 건수" avg(kbpm) as "분당 인덱싱 용량(KB)" by _time splunk_server | rename splunk_server as "인덱스 서버"</searchString> <earliestTime>$earliest$</earliestTime> <latestTime>$latest$</latestTime> <option name="wrap">true</option> <option name="rowNumbers">false</option> <option name="dataOverlayMode">none</option> <option name="drilldown">none</option> <option name="count">10</option> </table> </row> </form> ==JavaScript SDK== *[[Apache_HTTP_Server#CentOS.EC.9A.A9_.EC.84.A4.EC.B9.98_.EA.B0.80.EC.9D.B4.EB.93.9C|Apache HTTP Server]] 설치 yum install httpd httpd-* yum install mod_ssl *vi /etc/httpd/conf/httpd.conf <IfModule mod_proxy.c> ProxyRequests On ProxyVia On <Proxy *> Order deny,allow Allow from all </Proxy> SSLProxyEngine On ProxyPass /proxy https://node201.hadoop.com:8089/ retry=0 timeout=5 ProxyPassReverse /proxy/ https://node201.hadoop.com:8089/ </IfModule> *같은 장비의 다른 서비스 호출시 SELinux에 의해 차단됨 :*오류 메시지 Permission denied: proxy: HTTP: attempt to connect to 127.0.0.1:8888 (*) failed :*조치 방안 /usr/sbin/setsebool httpd_can_network_connect true *참고 문헌 :*http://dev.splunk.com/view/javascript-sdk/SP-CAAAEDD :*https://groups.google.com/forum/#!topic/splunkdev/nQxOnZ5JwYg :*http://www.slideshare.net/damiendallimore/splunk-developer-platform ==Python SDK== ==참고 문헌== *[[Python]] *[[Django]], [[CherryPy]] *[[Mako]] *매뉴얼 :*[http://docs.splunk.com/Documentation/Splunk/latest/AdvancedDev/AppIntro Developing Views and Apps for Splunk Web] *리셀러 등 :*[http://splunk.cqcloud.com/xe/ CQCloud] ::*[http://blog.naver.com/PostList.nhn?blogId=splunk Splunk Naver Blog] ::*[http://cafe.naver.com/splunk Splunk Naver Cafe] :*[http://www.mobile-os.com/wp/ MOS Asia] ::*[http://blog.daum.net/kosena2121/15 Splunk Daum Blog] *http://docs.splunk.com/Documentation/Splunk/5.0.1/Installation/InstallonLinux#RedHat_RPM_install *[http://jmnote.com/wiki/Splunk_%EC%84%A4%EC%B9%98 Splunk 설치] *[http://socurites.com/149 Splunk 설치하기 on 리눅스, 2013.01] *[http://socurites.tistory.com/151 Splunk와 하둡 연동하기 - HadoopConnect] *http://jmnote.com/wiki/분류:Splunk *http://blog.naver.com/PostView.nhn?blogId=daonmate&logNo=110108653763 *[http://blog.daum.net/kosena2121/15 SPLUNK의 IT 인프라 운영분야 활용 방안, 2013.01] *[http://blog.daum.net/kosena2121/14 Splunk 주요 Q&A, 2013.01] [[Category:BigData]]
Splunk
문서로 돌아갑니다.
둘러보기 메뉴
개인 도구
로그인
이름공간
문서
토론
변수
보기
읽기
원본 보기
역사 보기
더 보기
검색
주요 메뉴
오픈소스 컨설팅
오픈소스
오픈소스 라이선스
오픈소스 커뮤니티
오픈소스 종류
오픈소스 현황
오픈소스 한글화
문자셋과 인코딩
Storage
Network
보안
고가용성
모니터링
오픈 API
오픈 서비스
Cloud
BigData
Android
산사랑 노트
둘러보기
인기 문서
최근 수정 문서
모든 문서
모든 분류
임의 문서
위키 사용법
자매 사이트
CMS
오비컨 홈페이지
오비컨 CMS
블로그
데모 - SuiteCRM
산사랑의 Twitter
산사랑의 Facebook
친구 사이트
공개SW 포털
OLIS
한국공개소프트웨어협회
AppCenter 지원본부
OLC
PSEG
개발자 블로그
블로터
개인 메뉴
메뉴 수정
양식함
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보