R 고수님들께 여쭙습니다.

mandugukbap의 이미지

워낙에 확률,통계와도 안 친했지만 R은 거의 써 보질 못해서 이렇게 바보같은 질문 몇 개 드립니다.

제가 R을 이용해서 어떤 로그파일을 플로팅해야 합니다.

로그파일은 각 라인이 TIMESTAMP BYTE MESSAGE의 구성으로 이루어져 있습니다. 각 필드는 공백 하나로 띄워져 있구요.

이 중, 예를 들어 BYTE만을 이용해서

1. Mean, Median 등의 통계를 구하고
2. CDF를 플로팅 하고자 합니다.
3. CCDF까지 나타낼 수 있으면 금상첨화겠습니다.

아! 또 다른 질문이 있네요. 제가 이 작업을 하는 서버로 접속하기 위해서는 두,서너개의 서버를 SSH로 접속해야 합니다.
즉, 내컴퓨터->SERVER_1->SERVER_2-> ... -> 목적지 서버 의 방식으로 접속해야 하죠.
목적지 서버에서 작업한 것은 어떤 파일도 FTP나 다른 방법으로 타 서버로 전송할 수가 없게되어 있습니다.
이 경우 해당 로그 파일을 cat으로 화면 출력 시킨걸 "내컴퓨터"에서 Grap할 수 있을까요? 참고로 제 컴퓨터는 Fedora 또는 Windows XP를 쓸 수 있습니다.

mandugukbap의 이미지

누구든 아시는 것만이라도 답변 부탁 드리겠습니다.

raymundo의 이미지

SFTP 는 시도해보셨나요? SSH는 열면서 SFTP는 닫을 수가 있는지 잘 모르겠네요. (같은 22번 포트일텐데.. 뭐 SSH서버 설정에 그런 게 있는지 모르겠습니다만)

정 안 되면, SSH클라이언트 중에 화면 출력을 자동으로 갈무리하는 기능이 있는 게 있지 않을까 싶은데요. 하이텔 같은 PC통신망 시절에도 있던 기능이니...

좋은 하루 되세요!

mandugukbap의 이미지

답변 감사 드립니다. ftp가 막혀 있는건 아니구요, 실시간으로 모니터링되고 있기 때문에 문제네요. 그래서 어드민이 제가 파일 전송을 하려고 한다는 걸 모르게 하고 싶거든요.

송효진의 이미지

ssh 로 접속하시는거죠?
ssh userid@serverip "cd yourdir; cat yourfile" | cat - > yourfile
추천하는 방식은 파일을 일단 bzip2 압축해서 cat 해 오는것입니다.

여러 파일이라면 요렇게도 됩니다.
ssh userid@serverip "cd yourdir; tar cjf - *" | tar xjf -

근데 경유지가 많네요-_-;;;
ssh key 로 하지 않는다면 한단계씩 파일을 가지고 올라와야겠군요.;;
ssh key 로 한다면
ssh user1@server1 "ssh user2@server2 \"ssh user3@server3 \\\"
이런식으로 한번에 할 수 있을겁니다.
적고보니까 그냥 한단계씩 가져오고 싶어지네요;;

심심해서 한번 해 봤는데, 정말 하기 싫어지는군요;;;
ssh localhost "ssh localhost \"ssh localhost \\\\\"ssh localhost \\\\\\\\\"ls -alh\\\\\\\\\"\\\\\"\""

역슬래시가 +4 씩 늘어나는군요.

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇 개 안돼요~
http://xenosi.de/

mandugukbap의 이미지

아주 멋진 방법인데요. 슬래쉬의 압박이 좀 있지만 좋은 방법 같습니다. 감사합니다.

김동수의 이미지

R을 서버에서 돌리실건지? 아니면 클라이언트(윈도우 환경등?) 에서 돌리실건지 우선 정하시구요.
개인적으로 윈도우 환경에서 돌리는거 추천.

일단 데이터를 끍어 오셔야 하는데 ssh 환경에서 sftp, scp 가 막혀있지 않으면 대충 저걸로 땡겨 오시면 되고, 아니라면 putty 에서 세션 로깅을 하시던지 Window 에서 스크롤백 라인을 적당히 크게 설정 후 cat 로 출력해서 마우스로 긁으시던지 하셔서 데이터 추출 하시구요,

추출한 데이터가 스페이스로 띄워져 있다면 excel 에서 구분자를 공백으로 설정해서 읽어들여서 csv 로 적당히 저장 합니다.
(개인적으로 xls 파일보다 csv파일이 R에서 쓰기 좋았었음. 뭐 취향따라 하시구요. xls 쓰시려면 RODBC 라이브러리 임포트 하셔야 합니다)

library(RODBC)
xls = odbcConnectExcel("파일명")
cds = sqlFetch(xls, "DataSet")

이렇게 하시거나

cds <- read.csv('파일명', header = FALSE, sep = ",", quote="\"", dec=".")

뭐 이렇게 하시거나 하면 데이터 읽어 들일 수 있구요. 텍스트 파일을 그냥 읽을 수도 있긴 합니다(비추..개인적으로 싫어라 하는 방법)
그리고 colnames(cds) 로 컬럼 이름 확인 해 보시고... 아마 V1, V2, V3 ... 으로 세팅될겁니다

Mean 같은 경우 mean(cds$V2)
Median 은 median(cds$V2)

쉽죠?

cumulative distribution function 이나 complementary cumulative distribution function 같은 경우는.. 졸려서 다음분에게 패스..

-------------------------------------
김동수 - Prototype for Evolution

김동수 - Prototype for Evolution

mandugukbap의 이미지

우선 리눅스에서 R을 사용하고 있습니다. sftp같은건 막혀있진 않은데 어노멀리 디텍션으로 어드민한테 자꾸 보고가 가거든요. 그 때마다 터미널로 뭐하는거냐고 텍스트를 찍어대서 말이죠. 마우스로 긁기엔 데이터가 좀 큽니다. 6테라 바이트 로그가 300메가 바이트씩 나누어져 있더군요. 우선 데이터 가져온 후에 cdf 플로팅 해 보겠습니다. 답변 감사 드려요.

sangwoo의 이미지

참고로 whitespace로 구분되어 있으면 read.table() 쓰셔서 읽으시거나, fixed width로 구분되어 있으면 read.fwf()로 읽으셔도 됩니다. 텍스트파일을 읽으면 안좋은 점이 있는지는 잘 모르겠네요. 어차피 로그파일이면 컴퓨터가 systematic 하게 쓸 테니 별 문제 없을 겁니다.
cdf는 plot.ecdf()를 사용해서 그려볼 수 있습니다. ccdf는 뭔지 잘 모르겠네요.

----
Let's shut up and code.

----
Let's shut up and code.

mandugukbap의 이미지

헐 그런 함수가 있었군요. 답변 감사 드립니다. netcat이란건 써 본 적이 없는데 이름이 딱 내가 원하는 기능을 지원할 것 같습니다.

sangwoo의 이미지

파일 옮기는 건 netcat이랑 쉘 파이프(|)를 잘 연결하면 내 컴퓨터까지 가지고 올 수 있을 것 같네요.
----
Let's shut up and code.

----
Let's shut up and code.

mandugukbap의 이미지

Sangwoo님이 알려주신 plot.ecdf()을 이용해서 플로팅을 해 보았습니다.

그런데, X축의 단위가 00e+00, 5.0e+06 식으로 표기되더군요.

이걸
1. 일반적인 수로 표현을 하려면 어떻게 하면 되나요?
2. 로그형식으로 표현할려고 하면 어떻게 하면 되나요?
2.1 로그형식 표현을 위해 plot.ecdf(x, log="x")라고 해 봤더니 아래와 같은 경고가 뜨면서 플롯이 안되더군요.

----------------- 아 래 ----------------------------
이하에 에러plot.window(...) : 대수축는 정의 한계를 가지지 않으면 안됩니다
추가정보:Warning message:
In xy.coords(x, y, xlabel, ylabel, log) :
1 x value <= 0 omitted from logarithmic plot
----------------------------------------------------

3. 두개의 데이터를 한 디바이스에 플로팅 하려면 어찌하면 되는지요?
3.1 둘이 구분이 되도록 플로팅하는 점(선?)을 가늘게 만들고 점선과 실선으로 차이를 두고 싶습니다.

mandugukbap의 이미지

1. 2는 해결이 되었습니다.

일반 10진수 표현하는 것은 options(scipen=10)
로그 표기시 오류가 나는 것은 limit을 지정해 주지 않아서 였습니다. r<-range(1, max(col)); 후에 xlim=r 을 지정해 주니 문제 없이 logarithmic 하게 표시해 주더군요.

두 개의 플롯을 하나의 디바이스에 같이 표현하는 방법과 플로팅하는 브러시의 굵기를 조절하는 방법을 알려 주시면 감사 드리겠습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.