// google adsense
반응형

어떤 저널이 인용된 횟수를 분석하여 얼마나 중요한 저널인지 알려주는 숫자.


높다고해서 꼭 좋은 건 아니며 한계점이 명확하다.


하지만 인정받는 저널의 경우 장기간에 걸쳐 안정적이고 높은 IF를 보인다.

반응형

'ETC > ETC' 카테고리의 다른 글

코스피 코스닥 나스닥 차이  (0) 2018.07.02
반응형

시작하기 앞서

1. JDK를 설치한다.

$sudo yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
  1. 환경변수를 편집한다.
$sudo vim /etc/profile

# 구문 추가
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.102-1.b14.el7_2.x86_64
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
  1. 환경변수를 등록한다.
$source /etc/profile

elasticsearch

설치

  1. /etc/yum.repos.d/ 에 아래의 elasticsearch.repo를 추가한다.
[elasticsearch-5.x]
name=Elasticsearch repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
  1. yum으로 설치한다.
$sudo yum -y install elasticsearch

kibana

설치

elastic 설치와 같이 repo를 추가해주고 yum으로 설치한다.

$sudo vim /etc/yum.repos.d/kibana.repo

[kibana-5.x]
name=Kibana repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

$sudo yum -y install kibana

설정

  1. 호스트, 이름, SSL(옵션)설정
$sudo vi /etc/kibana/kibana.yml

# 주석해제 후 수정
#서버 호스트 입력
server.host: "127.0.0.1"

server.name: "anything"

#로그가 담긴 elasticsearch 주소 입력
elasticsearch.url: "http://127.0.0.1:9200"

#SSL 설정 
#로컬에서만 사용할 것이라면 하지 않아도 된다. 단 외부에서 연결하여 사용할 경우엔 보안상 SSL 설정을 꼭 해주자.
server.ssl.enabled: true
server.ssl.certificate: crt경로
server.ssl.key: key경로

SSL 설정을 해주었을 경우 인증서의 권한을 수정해준다.

$sudo chown kibana. 인증서경로(.crt & .key)
  1. 방화벽 설정
$sudo firewall-cmd --add-port=5601/tcp --permanent
$sudo firewall-cmd --reload

filebeat

filebeat는 로그 파일들을 모아서 logstash로 보내준다. logstash가 과부하 되었을때 속도를 줄여주고, 시스템 가동이 갑자기 중단되고 다시 시작되었을때, 로그의 중단점을 기억하고 그 지점부터 로그를 보내준다. 이러한 장점들이 있기에 filebeat를 사용하였다.

설치

마찬가지로 repo를 추가하고 yum으로 설치한다.

$sudo /etc/yum.repos.d/elastic.repo

[elastic-5.x]
name=Elastic repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

$sudo yum install -y filebeat

filebeat 설정

filebeat에서 보낼 로그의 경로를 설정한다.

우리는 logstash를 사용하여 로그를 보낼 것이므로 output으로 logstash를 사용한다.

$sudo vim /etc/filebeat/filebeat.yml

filebeat.prospector:
- input_type: log
  paths:
    #bash 명령어들을 기록한 로그
    - /var/log/bash_history
    #mysql 로그
    - /var/log/mysql/*
    #apache2 로그
    - /var/log/httpd/*

output.logstash:
  hosts: ["127.0.0.1:5044"]

logstash

설치

repo 추가, yum으로 설치한다. 설정은 뒤에 한꺼번에 다룰 것이다.

$sudo vim /etc/yum.repos.d/logstash.repo

[logstash-5.x]
name=Elastic repository for 5.x packages
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

$sudo yum -y install logstash

설정

filebeat로 보내진 로그를 elasticsearch로 보내는 설정을 한다.

기타 다른 beat에서 보내진 로그나 logstash에서 직접 로그를 보낼 수 있다.

sudo vim /etc/logstash/conf.d/filebeat.conf

input {
  beats {
    port => 5044
    host => "0.0.0.0"
  }
}
output {
  elasticsearch {
    hosts => ["http://127.0.0.1:9200"]
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
}

로그 설정

로그를 확인하기 앞서, 실습에 필요한 정보를 로깅한다.

bash_history

리눅스에선 history 명령어를 통해 로그인 했던 사용자가 무슨 명령어를 사용했는지 확인 할 수 있다.

logger를 통하여 쉘 명령어를 syslog 기록하도록 설정하자

$sudo vim /etc/profile.d/cmd.sh
function history_to_syslog
 {
 declare cmd
        who=$(whoami)
        cmd=$(history 1)
        TTY=`tty`
        HISNAME="`basename $TTY`"
 ip=`who |grep pts/${HISNAME} |cut -f 2 -d \(|cut -f 1 -d \)`

 logger -p local7.notice -- IP=$ip USER=$who, PID=$$, PWD=$PWD, CMD=$cmd
 }
 trap history_to_syslog DEBUG || EXIT

HISTSIZE=10000
HISTFILESIZE=1000000
HISTTIMEFORMAT="%F %T "

export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTFILESIZE HISTTIMEFORMAT INPUTRC

declare -r HISTFILE

#환경변수 등록
$sudo source /etc/profile.d/cmd.sh

syslog 설정

$sudo vim /etc/rsyslog.conf
local7.notice    /var/log/bash_history

이제 /var/log/bash_history에 명령어를 입력한 시간, 사용자, 명령어가 기록된다.

bash_history

apache 2.4.6 log설정

웹에서 서버에 무언가를 전달 할때 get과 post 방식으로 데이터를 보낸다.

get에는 무슨 데이터가 오고 갔는지 url로 알 수 있고, post는 패킷 body에 담아져 보내진다.

apache는 접속 url과 method가 기록되어 get 방식은 무슨 데이터가 전달되어있는지 알 수 있지만 post 방식은 그렇지않다.

따라서 post 방식을 이용하였을때 무슨 데이터가 전달되었는지 body를 로깅할 수 있게 설정해준다.

apache의 모듈 mod_dumpio을 이용한다. 기본적으로 내장되어 있으므로 따로 설치할 필요는 없다.

$sudo vim /etc/httpd/conf.d/ssl.conf

<VirtualHost _default_:443>
~~~
LoadModule dumpio_module modules/mod_dumpio.so

ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log

#LogLevel warn
DumpIOInput On
LogLevel dumpio:trace7

그 후 워드프레스 로그인을 해보면 post body의 로그가 ssl_error_log에 남는걸 확인 할 수 있다.

다음은 127.0.0.1/wp-admin에서 로그인시도를 한 기록이다.

id는 105’ OR 1=1, pwd는 00000000을 입력하였다.

[Thu Nov 09 01:00:35.717592 2017] [dumpio:trace7] [pid 27220] mod_dumpio.c(103): [client 127.0.0.1:34232] mod_dumpio:  dumpio_in (data-TRANSIENT): log=105%27+OR+1%3D1&pwd=00000000&wp-submit=Log+In&redirect_to=https%3A%2F%2Fexample.com%2Fwp-admin%2F&testcookie=1

kibana에서 로그 확인

  1. systemd를 통해 elasticsearch,logstash,kibana,filebeat를 실행한다.

이때 시스템이 프리징 걸리는 경우가 있다. 이 경우는 거의 RAM문제 이므로, RAM을 4G이상 주도록 한다.

  1. 127.0.0.1:5601에 접속하여 성공적으로 kibana가 실행되었는지 확인한다.

  2. 처음에 index pattern이 없다고 나올 것이다. bash에 curl localhost:9200/_cat/indices?v을 입력하여 elasticsearch에 저장된 index pattern을 확인하고 추가해준다.

filebeat-* 를 추가해 주면 될것이다.

  1. discover에서 보고싶은 파일의 로그가 있다면 filter를 통해 로그를 추출한다.

이 경우 source is /var/log/httpd/ssl_error_log-20171109와 검색 명령어로 105를 검색한다.

결과가 잘 나온것을 확인할 수 있다.

awstats

awstats는 오픈소스웨어의 로그 분석기이다. 이 툴은 apache log같이 크기가 큰 로그 파일을 빠르게 분석하여 그래픽으로 보여준다.

설치

yum -y install awstats

설정

/usr/share/awstats/tools/awstats_configure.pl 로 설정한다.

$sudo /usr/share/awstats/tools/awstats_configure.pl

도메인 이름에는 example.com을 설정해준다.

그 다음 config파일의 경로를 지정해준다.

/etc/awstats/awstats.example.com.conf

설정이 완료되었으면 config 파일을 수정한다.

$sudo vi /etc/awstats/awstats.example.com.conf

LogFile="/var/log/httpd/access_log"
Lang="ko"

실행

/usr/local/awstats/wwwroot/cgi-bin/awstats.pl -update -config=www.example.com

http://www.example.com/awstats/awstats.pl?config=www.example.com 으로 들어가 로그를 확인한다.

반응형

'Backend > 리눅스 & 우분투' 카테고리의 다른 글

우분투 설치 후 드라이버 설치  (0) 2018.07.03
우분투 한글 설정  (0) 2018.07.03
우분투 설치  (0) 2018.07.02
반응형

데이터가 주어졌을 때 가장 먼저 해야하는 것은 데이터의 구조를 파악하는 것이다.

이번에는 데이터를 파악하는데 도움이 되는 함수를 알아보자.


# csv를 exam에 할당
exam <- read.csv("csv_exam.csv")

# 데이터의 앞부분 6행까지
head(exam)
# 앞부분 10행까지
head(exam,10)

# 뒷부분 6행
tail(exam)
# 뒷부분 10행까지
tail(exam,10)

#데이터 뷰어창에서 데이터 확인
View(exam)

#데이터 행, 열 확인
dim(exam)

#데이터 속성 확인
str(exam)

#데이터 요약 통계량 확인
summary(exam)


summary에서 확인 할 수 있는 통계량은 다음과 같다.


출력값통계량설명
Min최솟값(Minimum)가장 작은 값
1st Qu1사분위수(1st Quantile)하위 25% 지점에 위치하는 값
Median중앙값(Median)중앙에 위치하는 값
Mean평균(Mean)모든 값을 더해 값의 개수로 나눈 값
3rd Qu3사분위수(3rd Quantile)하위 75% 지점에 위치하는 값
Max최댓값(Maximum)가장 큰 값


Median과 Mean 값은 데이터 보정에 사용되는 중요한 값이다.




데이터의 특징을 파악했다면, 이제 알아보기 쉽게 변수명을 바꾸는 작업을 해보자.


#df_raw를 df_new로 백업
df_new <- df_raw

# 변수 이름 변경
df_new <- rename(df_new,v2=var2)

# var_sum 이름의 파생 변수 생성
df_new$var_sum <- df_new$var1 + df_new$v2

# 조건문을 활용 파생 변수 생성
df_new$exam <- ifelse(df_new$var_sum >=5,"pass","fail")


빈도별로 데이터를 파악, 시각화 해보자.


# 등급 빈도표
# 표 생성
table(df_new$var1)

# 등급 빈도 막대 그래프
# 막대 그래프 생성
library(ggplot2)
qplot(df_new$var1)


반응형

'Computer Science > R' 카테고리의 다른 글

R 데이터 프레임 (data frame)  (0) 2018.07.03
R 패키지 사용하기  (0) 2018.07.03
R 변수 할당  (0) 2018.07.03
데이터 분석 기초  (1) 2018.07.03

+ Recent posts