2020-02-07

Elasticsearch Heap Size

  Elasticsearch는 Java 기반으로 동작을 합니다. Java는 가비시 컬렉터 (garbage-collected)에 의해서 관리가 되며, Java 객체는 힙(Heap) 이라고하는 메모리의 런타임 영역에 상주합니다.
 Elasticsearch는 기본적으로 1GB의 Heap 으로 구성이 되어 있습니다. 이 기본값은 대부분의 클러스터 구성에서 매우 작기 때문에 Elasticsearch에서 충분히 사용이 가능하도록 메모리 크기를 늘려 주어야 합니다. 
Elasticsearch에서 힙 크기를 변경하는 방법에는 두 가지가 있습니다. 가장 쉬운 것은 ES_HEAP_SIZE 이라는 환경 변수를 설정하는 것 입니다. 서버 프로세스가 시작되면이 환경 변수를 읽고 이에 따라 힙을 설정합니다. 예를 들어, 다음과 같이 명령 행을 통해 설정할 수 있습니다.

export ES_HEAP_SIZE=16g
또는 프로세스를 시작할 때 JVM 플래그를 통해 힙 크기를 전달할 수 있습니다 

ES_JAVA_OPTS = "-Xms10g -Xmx10g" ./ bin / elasticsearch
jvm 플래그 옵션은 jvm.option 파일을 통해서 설정을 할 수도 있습니다.
Elasticsearch는 전체적인 Heap 사이즈를 jvm.option의 Xms (minimum heap size) and Xmx (maximum heap size) 값을  통해 조절이 가능합니다. 단, 두개의 사이즈 값은 모두 동일하게 세팅해 주어야 합니다. 

vi /etc/elasticsearch/jvm.option

-Xmx16g
-Xms16g

"32G 이하"

여기서 그러면 Heap 메모리의 적당한 값은 얼마가 되어야 할까요?
적당한 heap 메모리가 얼마인지는 워크로드에 따라 달라지겠지만, 너무 작은 Heap 메모리는 Out-of-Memory를 일으킬수 있고, 또 반대로 너무 큰 메모리는 GC(Gabage Colection)가 발생할 경우 응답 대기 시간이 길어질 수 있습니다. 
 Elasticsearch에서는 힙(Heap) 크기를 32G이하로 사용하도록 권장하고 있습니다.
jvm은 자신이 사용하기 위해 필요한 데이터를 heap 메모리에 올려 두고 사용을 하는데 이때 이 데이터 단위를 object라고 합니다. 그리고 이 object에 접근하기 위한 가상의 주소를 ordinary object pointers(이하 oop) 라고 부릅니다. 
 jvm은 32bit에서는 2의 32제곱인 4G까지 32bit의 oop를 사용을 하며 4G 이상은 64bit의 oop를 사용을 하게 됩니다. 그런데 64bit는 32bit에 비해 포인터가 크기 때문에(8배)  성능 저하가 발생을 하게 됩니다. 그래서 나온것이 64bit 에서도 32bit의 oop를 사용할 수 있는 compressed ordinary object pointers ( compressed oops ) 입니다. 
  native oop는 object 자체이지만, compressed oops 는 object의 주소의 오프셋을 가리킵니다.  64bi의 jvm object pointer는 8바이트 단위이며, 8의 n의 배수마다 object 주소의 오프셋인 compressed oops를 사용하여 32bit 처럼 동작을 하게 됩니다.  8바이트 단위인 0, 8, 16, 24 의 object에 32bit의 0, 1, 2, 3을 사용하여 기존보다 8배  이상 사용이 가능하게 됩니다. 즉 사용 가능한 메모리가 32bit 4G 의 8배, 32G가 되는 것입니다. 
 만약 heap 사이즈가 32G를 넘어가게 되면 jvm이 64bit oop를 사용하게 되어 성능이 급격하게 떨어집니다. 그래서 Elastic에서는 32G 이상의 메모리를 사용하지 않도록 권고 하고 있는 것입니다. 
 그리고 시스템 전체 메모리의 절반인 약 50% 정도만 사용하는 것이 좋습니다. Elasticsearch에는 JVM 힙 이외의 용도로 메모리가 필요하므로 이를위한 공간을 확보하는 것이 중요합니다.

<참고 자료 >

2020-01-23

[ELK] Fortigate Firewall 로그 수집 및 분석 - Logstash filter


이번시간에는 ELK 를 활용하여  Fortigate 방화벽 로그를 수집하고 구성하는 방법에 대해서 알아보도록 하겠습니다.
 로그 수집시 중요한 것은 장비 밴더사나 로그 특성등에 따라서 형식이 다 다르기 때문에 수집한 로그에 대해서 적절한 필터링을 통해 정형화 해 주어야 로그 분석 및 탐지가 용이하게 됩니다. 
 여기서는 방화벽에서 ELK Stack으로 로그를 전송을 Logstash.conf 필터를 통해서 로그 데이터 파싱하고 인덱싱하는 부분에 대해서 살펴보도록 하겠습니다. .
1. Fortigate 방화벽 Syslog 설정.
  우선 Fortigate 방화벽 장비 CLI 접속하여 Logstash 서버로 로그 데이터를 전송하도록 설정을 해 줍니다.
  syslog 설정은 최대 4개까지 설정이 가능하며, Fortigate Web UI 에서는 첫번채 syslogd 만 세팅이 가능하여 중복설정등이 필요할 경우 CLI를 통해 설정하는 것을 추천 드립니다. 
config log syslogd2 setting
 set status enable
 set server "192.168.0.100"    
 set port 5514  
 저는 syslogd2에 설정하였으며, 로그 수집 서버 IP와 포트를 지정을 해 주고 enable 활성화 해 주시면 됩니다.
 syslog 포트는 default 514(udp) 인데 udp 514는 다른 로그 수집용 포트로 사용하고 있어서 구분을 위해서 5514로 지정하였습니다. 
  - syslog 설정 확인.
Fortigate # config log syslogd3 setting

Fortigate (setting) # show
config log syslogd3 setting
    set status enable
    set server "192.168.0.100"
    set port 5514
end

Fortigate (setting) # 

2. ELK 로그 서버 Logstash.conf 필터 설정
  방화벽에서 로그 전송 설정을 했으면 이제 Logstash.conf 설정 파일을 통해 로그를 수집하여 필터링 해 주시면 됩니다.
  logstash.conf 파일은 /etc/logstash/conf.d/logstash.conf 에 만들었으며 아래와 같은 형식으로 만들었습니다.  
Input
  - udp 플러그인을 사용.
  - 0.0.0.0 네트워크 바인딩.
  - 5514 포트 활성화
  - 로그 수집시 Tag 필드에 에 "FWlog" 생성. ( Kibana 대시보드 구성시 tag를 활용하여 로그 데이터 구분 )
input { 
    udp { 
        tags => "FWlog" 
        host => "0.0.0.0" 
        port =>  5514 
        #codec => "json" 
    } 
} 

Filter 
 -  필터에는 다양한 플러그인 이 있으며, 아래와 같이 grok, data, mutate, geoip 등 플러그인을 활용하여 로그 데이터 변환을 해 주었습니다. 
filter { 

    if "FWlog" in [tags] { 
        grok { 
            match => ["message", "%{SYSLOG5424PRI:syslog_index}%{GREEDYDATA:message}"] 
            overwrite => [ "message" ] 
        } 

        date { 
            match => ["timestamp" , "yyyy-MM-dd'T'HH:mm:ss.SSSZ"] 
            target => "@timestamp" 
            #add_field => { "debug" => "timestampMatched"} 
        } 

        kv { 
            source => "message" 
            exclude_keys => [ "type", "tags"] 
        } 

        geoip { source => "dst" } 
        geoip { source => "dstip" } 
        geoip { source => "src" } 
        geoip { source => "srcip" } 

        mutate { 
            rename => [ "dst", "dst_ip" ] 
            rename => [ "dstip", "dst_ip" ] 
            rename => [ "dstport", "dst_port" ] 
            rename => [ "devname", "device_id" ] 
            rename => [ "status", "action" ] 
            rename => [ "src", "src_ip" ] 
            rename => [ "srcip", "src_ip" ] 
            rename => [ "zone", "src_intf" ] 
            rename => [ "srcintf", "src_intf" ] 
            rename => [ "srcport", "src_port" ] 
            rename => [ "rcvd", "byte_recieved" ] 
            rename => [ "rcvdbyte", "bytes_recieved" ] 
            rename => [ "sentbyte", "bytes_sent" ] 
            rename => [ "sent", "bytes_sent" ] 
            rename => [ "cpu", "cpu_usage" ] 
            rename => [ "mem", "mem_usage" ] 
            rename => [ "disk", "disk_usage" ] 
            convert => ["bytes_recieved", "integer"] 
            convert => ["bytes_sent", "integer"] 
            convert => ["cpu_usage", "integer"] 
            convert => ["mem_usage", "integer"] 
            convert => ["disk_usage", "integer"] 
            convert => ["disklograte", "integer"] 
        } 
    } 
} 

Output

 - 필터링된 데이터를 elasticsearch로 전송해 주는 설정입니다.
  - 로그 전송시 index를 day로 구분하도록 하였으며, 인덱스를 분산해 주시면 Elasticsearch에서 로그 검색 및 분석 성능 향상에 도움이 됩니다. 
output { 

       if "FWlog" in [tags] { 
           elasticsearch { 
             hosts => ["localhost:9200"] 
             index => "fwlog-%{+YYYY.MM.dd}" 
           } 
           stdout { codec => rubydebug } 
       } 
}

3. Logstash 시작
/usr/share/logstash/bin/logstash -f /etc/logstash/conf.d/logstash.conf  --path.settings /etc/logstash &

4. Kibana 접속 및 로그 확인. 
 - Kibana 접속 후 discover 항목을 보면 아래 와 같이 fields(column) 로 구분되어 데이터가 수집이 되는 것을 확인 할 수 있습니다. 

2020-01-22

[ELK] ELK(Elasticsearch+Logstash+Kibana) 설치 및 구성


이번시간에는 ELK(Elasticsearch+Logstash+Kibana) 를 설치하여 ELK Stack 서버를 구축해 보겠습니다.
현재 Elasticsearch는 7.5 버전까지 출시가 되었으며, CentOS에서 Yum 패키지를 통해 설치해 보도록 하겠습니다.

Elasticsearch는 7.5 버전의 새로운 기능 및 릴리즈 정보는 아래 링크를 참고하시기 바랍니다.
Elastic Stack 7.5.0 출시
< OS 환경 설정 >  - OS : Centos 7 64bit
  - Partition : / 50G  (System 영역)
                   /ELK  300G (ELK Data  영역)
  - CPU : 8Core
  - RAM : 32G

1. Java 설치 ( java 8 이상)
  Elasticsearch 는 Java8 이상이 필요합니다. 만약 java가 설치되어 있지 않으면 jdk 1.8.0-openjdk 파일을 설치합니다.
yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel

[root@localhost ~]# yum install java-1.8.0-openjdk java-1.8.0-openjdk-devel
BDB2053 Freeing read locks for locker 0x1b: 5689/140083220739904
Loaded plugins: fastestmirror
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  mesa-libglapi.x86_64 0:18.3.4-5.el7                     pango.x86_64 0:1.42.4-4.el7_7                          
  pcsc-lite-libs.x86_64 0:1.8.8-8.el7                   pixman.x86_64 0:0.34.0-1.el7                                        python-javapackages.noarch 0:3.4.1-11.el7               python-lxml.x86_64 0:3.2.1-4.el7                       
  ttmkfdir.x86_64 0:3.0.9-42.el7                        tzdata-java.noarch 0:2019c-1.el7                                    xorg-x11-font-utils.x86_64 1:7.5-21.el7                 xorg-x11-fonts-Type1.noarch 0:7.5-9.el7                

Complete!
[root@localhost ~]# 
 Java 버전 확인
[root@localhost ~]# java -version
openjdk version "1.8.0_232"
OpenJDK Runtime Environment (build 1.8.0_232-b09)
OpenJDK 64-Bit Server VM (build 25.232-b09, mixed mode)
[root@localhost ~]# 

2. Elasticsearch PGP 키 가져오기   Elasticsearch 설치시 공개 서명키가 필요하며, 아래와 같이 공개 서명키(public signing key) 를 설치해줍니다. 
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

3. Elastic repository 설정  /etc/yum.repos.d 디렉토리 밑에 Elastic.repo 라는 파일을 만들고 아래의 Repository 정보를 등록합니다.
vi /etc/yum.repos.d/Elastic.repo
[Elastic-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
 Elasticsearch, Logstash, Kibana 모두 동일한 저장소를 사용하고 있어서 한번만 등록해 주면 됩니다. 
4. Elasticsearch/ Logstash / Kibana  설치
 
  Repository 등록 후 Yum을 통해 ELK 패키지를 설치합니다. 
yum -y install elasticsearch

yum -y install logstash

yum -y install kibana

5. 환경 설정  ELK 설치가 완료되면 아래와 같이 추가적으로 설정값을 변경해 주면 됩니다. 디스크 용량 관리차원에 서 로그 데이터 파티션을 별도 분리하여 관리하고, Java heap 메모리 설정 및 성능 튜닝등을 통해 퍼포먼스를 향상킬 수 있습니다. 
 1) Elasticsearch.yml 파일 수정 및 디렉토리 생성  -  elasticsearch가 환경 설정 파일 :  /etc/elasticsearch/elasticsearch.yml 
[root@localhost ~]# vi /etc/elasticsearch/elasticsearch.yml 

cluster.name: clustername        // 클러스터 이름 변경(선택)
path.logs: /ELK/log/elasticsearch   // elasticsearch 로그 파일 위치
path.data: /ELK/elasticsearch       // elasticsearch 데이터 파일 위치
network.host: 0.0.0.0    // elasticsearch 바인딩 정보
http.port: 9200    // elasticsearch 서비스 포트(default 9200)

## 성능 튜닝 관련 설정. 
thread_pool.search.queue_size: 10000  
indices.memory.index_buffer_size : 512mb  
cluster.max_shards_per_node : 3000 
  - elasticsearch 디렉토리 생성 및 소유권 변경 
mkdir /ELK/log                  // 로그 파일 디렉토리 생성
mkdir /ELK/log/elasticsearch    // elasticsearch 로그 디렉토리 생성
mkdir /ELK/elasticsearch        // elasticsearch 데이터 디렉토리 생성

## 디렉토리 소유권 변경 ( root => elasticsearch )
chown elasticsearch.elasticsearch /ELK/log/elasticsearch -R
chown elasticsearch.elasticsearch /ELK/elasticsearch -R

  2) elasticsearch jvm.options heap 메모리 사이즈 조절
   Heap 메모리 사이즈는 최대 32G 이하로 세팅하는 것을 권장하며, 여기서는 32G 메모리의 절반인 16G 로 세팅하였습니다.  heap 메모리 관련이나  성능 튜닝관련해서는 차후에 따로 포스팅을 하도록 하겠습니다. 
vi /etc/elasticsearch/jvm.option
-Xms1g    =>  Xms16g
-Xmx1g    =>  Xms16g

 3)  logstash.yml 파일 수정 및 디렉토리 생성  -  logstash 환경 설정 파일 : /etc/logstash/logstash.yml
vi /etc/logstash/logstash.yml

path.data: /ELK/logstash/
path.logs: /ELK/log/logstash

  - logstash 디렉토리 생성 및 소유권 변경
mkdir /ELK/log/logstash    // logstash 로그 디렉토리 생성
mkdir /ELK/logstash        // logstash 데이터 디렉토리 생성

## 디렉토리 소유권 변경 ( root => logstash )
chown logstash.logstash /ELK/log/logstash -R
chown logstash.logstash /ELK/logstash -R

 4) logstash jvm 옵션 heap 메모리 조절 ( 1G => 4G )
   logstash heap 메모리도 시스템 사양에 따라 적절하게 값을 할당해 주시면 됩니다. 여기서는 4G로 할당하였습니다
vi /etc/logstash/jvm.option
-Xms1g    =>  Xms4g
-Xmx1g    =>  Xms4g

  5) kibana.yml 환경 설정

  -  kibana 환경 설정 파일 : /etc/kibana/kibana.yml
vi /etc/kibana/kibana.yml

server.host: 0.0.0.0
elasticsearch.hosts: "http://localhost:9200"

6. Elasticsearch , Kibana 시작 및 서비스 등록
systemctl enable elasticsearch
systemctl start elasticsearch
systemctl enable kibana
systemctl start kibana

7. Logstash  파일 생성 및 Logstash 실행
  Logstash는 외부 로그데이터 전송시 로그를 수집하고(Input), 변환한 후(filter), elasticsearch로 전송(output) 해주는 역할을 합니다. logstash 실행시 데이터 수집 및 변환 출력을 위한 필터가 필요합니다. 
  1) logstash 필터 파일 구조 ( logstash.conf , 파일 이름 임의 생성 가능 )
    원하는 이름으로 생성하시면 되며 아래와 같은 구조로 작성을 합니다.
input {
    udp {      
        host => "0.0.0.0"
        port =>  514
    }

filter {
     grok {
           match => ["message", "%{SYSLOG5424PRI:syslog_index}%{GREEDYDATA:message}"]
           overwrite => [ "message" ]
     }
}

output {
       elasticsearch { hosts => ["localhost:9200"] }
       stdout { codec => rubydebug }
}
  ※  input : 로그데이터를 수신할 프로토콜 및 포트, 코덱 등을 정의
  ※  filter :  수신한 로그에 대한 파싱, 인덱싱 및 변환 작업
  ※  output :  변환한 데이터를 Elasticsearch 등 외부 저장소로 출력

8. ELK 서비스 포트 방화벽 허용
## Allow Logstash Input
firewall-cmd --add-port=514/udp
firewall-cmd --add-port=514/udp --permanent

## Allow Elasticsearch
firewall-cmd --add-port=9200/tcp
firewall-cmd --add-port=9200/tcp --permanent

## Allow Kibana
firewall-cmd --add-port=5601/tcp
firewall-cmd --add-port=5601/tcp --permanent

9. Kibana 웹 URL 접속
http://ELK_ServerIP:5601

웹브라우저에서 http://elk_server_ip:5601 로 접속하면 아래와 같이 Kibana Web UI 화면이 보이게 됩니다. 



다음번에는 Kibana 접속시 아파치 웹 서버를 통한 로그인 인증 설정 방법,
logstash.conf 에 다양한 로그 형식에 대한 필터링 설정 예시 등 대해서 포스팅 하도록 하겠습니다. 
궁금하신 내용 있으면 댓글 남겨 주시면 답변 드리도록 하겠습니다. 

2020-01-17

[EVE-NG] Eve-NG Fortigate Firewall 설치 및 사용


 Fortigate는 중기업 또는 대기업에서 널리 사용되고 있는 방화벽 장비 중 하나이다. 
 EVE-NG 에서도 Fortigate를 사용하여 가상 시뮬레이션을 돌려 Lab 및 테스트 등을 할 수 있다. 




< 사용 가능한 Fortigate 이미지들 >
 EVE-NG 에서 사용할 수 있는 Fortigate 이미지는 다음과 같다. ( 최신 버전 6.0 까지 지원이 가능하다 )



1. Fortigate KVM 이미지 준비.

   위의 이미지는 교육 목적으로 만 제공이 되며 이미지는 개인적으로 준비해야 한다. 
   Fortigate 라이선스 권한이 있다면 아래 웹사이트에서 다운로드 받을 수 있다.




Fortinet SSO

customersso1.fortinet.com

2. 준비한 이미지를 EVE-NG 에 업로드 한다.

 업로드는 Winscp, Filezilla 등을 사용하면 되며, 경로는 /opt/unetlab/addons/qemu/ 로 업로드 하면 된다.

  

3. 업로드한 파일 압축 해제

   -  unzip fortinet-FGT-v5-build1484.zip

root@eve-ng:/opt/unetlab/addons/qemu# unzip fortinet-FGT-v5-build1484.zipArchive: fortinet-FGT-v5-build1484.zipinflating: virtioa.qcow2root@eve-ng:/opt/unetlab/addons/qemu#


4. 이미지 파일명 변경

  -  mv fortios.qcow2 virtioa.qcow2

압축을 해제 하면  fortinet-FGT-v5-build1484 디렉토리 아래에  fortios.qcow2 라는 이미지 파일이 생성이 된다.    EVE-NG에서는 지원되는 파일 이미지 이름이 제한이 되어 있어서 이름을 변경을 해 주어야 한다.  


fortinet-FGT-v5-build1484# ls fortios.qcow2fortinet-FGT-v5-build1484#mv fortios.qcow2 virtioa.qcow2fortinet-FGT-v5-build1484# ls virtioa.qcow2/opt/unetlab/wrappers/unl_wrapper -a fixpermissions

 EVE-NG 에서 지원되는 이미지 파일 이름에 대한 안내 참고 =>  QEMU images used under EVE


5. Permision 수정
/opt/unetlab/wrappers/unl_wrapper -a fixpermissions

6. EVE-NG 접속 후 이미지 추가 후 사용
   EVE-NG 접속 후 Node를 추가하면 Forinet Fortigate Template 가 활성화 된다. 


Forinet Fortigate선택 후 Ethernet 수, CPU, Ram 갑 세팅 후 저장 후에 사용하면 된다.



[ELK] Elastic Stack(ELK + Beats) 이란?

Elastic Stack?   ELK Stack ? 
  "ELK"는 Elasticsearch, Logstash 및 Kibana, 이 세게의 프로젝트의 각 첫글자의 조합입니다.

   Elasticsearch는 검색 및 분석 앤진,
   Logstash는 데이터를 수집 및 변환하는 데이터 처리 파이프라인
   Kibana는 데이터를 차트와 그래프등을 이용해 볼수 있는 시각화 도구

   최근에는 ELK Stack에 단일 목적 데이터 수집기 제품인 Beat 를 추가했으며, 이 네개의 조합을 합쳐서 Elastic Stack 이라고 부르고 있습니다.
  즉, Elastic Stack은 ELK Stack이 그 다음 단계로 발전한 것이라고 할 수 있습니다. 




Elasticsearch
Elasticsearch는 Lucene 검색 엔진을 기반으로하며 RESTful API로 구축 된 NoSQL 데이터베이스입니다. 매우 유연하고 분산 된 검색 및 분석 엔진입니다. 또한 수평 확장 성을 통해 간단한 배포, 최대 안정성 및 손쉬운 관리 기능을 제공합니다. 고급 쿼리를 제공하여 상세 분석을 수행하고 문서를 빠르게 검색 할 수 있도록 모든 데이터를 중앙에 저장합니다. 




Logstash
Logstash는 데이터 수집 파이프 라인 도구입니다. 데이터 입력을 수집하여 Elasticsearch에 공급하는 ELK Stack의 첫 번째 구성 요소입니다. 다양한 소스에서 다양한 유형의 데이터를 한꺼번에 수집하여 즉시 사용할 수 있습니다.






Kibana
Kibana는 데이터 시각화 도구입니다. Elasticsearch 문서를 시각화하는 데 사용되며 개발자가 문서에 대한 즉각적인 통찰력을 갖도록 도와줍니다. Kibana 대시 보드는 Elasticsearch를 사용하여 수행 한 복잡한 쿼리를 시각화하기 위해 다양한 대화 형 다이어그램, 지리 공간 데이터, 타임 라인 및 그래프를 제공합니다.Kibana를 사용하면 특정 요구에 따라 사용자 정의 그래프를 작성하고 저장할 수 있습니다.



ELK Stack Architecture

 다양한 형태의 로그는 Logstash에 수집이 되고, 필터 기준에 따라 변환이 이루어 집니다. 그 다음 Logstash는 해당 로그를 Elasticsearch로 전달 한 후 Elasticsearch는 해당 로그를 분석하고 검색합니다. 마지막으로 Kibana를 사용하여 원하는 형태에 따라 로그를 시각화 하고 관리하게 됩니다. 



이미지 출처 : https://www.edureka.co/blog/elk-stack-tutorial/





여기에 Beats 가 추가가 되었습니다. 
단일 목적의 데이터 수집기 플랫폼인 Beats는 수백 수천 개의 장비와 시스템으로부터 Logstash나 Elasticsearch에 데이터를 전송합니다.

 

Beats 동작 방식.

Beat는 서버에 에이전트 형식으로 설치하는 오픈소스 데이터 수집기 입니다. Beats 는 데이터를 Elasticsearch에 직접 전송할 수 있으며, Logstash를 통해서 데이터를 전송할 수도 있습니다.


이미지 출처 : https://www.elastic.co/guide/en/beats/libbeat/7.x/beats-reference.html#beats-reference


Beats 제품군

Filebeat  -  Real-time insight into log data
  로그와 파일을 경량화된 방식으로 전달하고 중앙 집중화하여 작업을 보다 간편하게 만들어 주는 역할을 합니다
Download

Packetbeat  - Analyze network packet data.
  Packetbeat는 데이터에 실시간으로 접근하여 내용을 분석하면 네트워크 트래픽의 흐름이 어떤지 파악할 수 있습니다
Download

Winlogbeat   Analyze Windows event logs.
 Winlogbeat를 이용해 Windows 이벤트 로그를 Elasticsearch와 Logstash로 스트리밍할 수 있습니다
Download

Metricbeat  - Ship and analyze metrics. 
  CPU부터 메모리, Redis, NGINX까지 Metricbeat를 통해 다양한 시스템 서비스 통계를 가볍게 전송할 수 있습니다
Download

Heartbeat   Ping your Infrastructure.
 Heartbeat를 통해 가동 시간과 반응 시간등 활성 상태를 탐지하고 서비스가 가능한지 모니터링합니다
Download

Auditbeat   Send audit data to Elasticsearch.
  Auditbeat는 Linux 감사 프레임워크 데이터를 수집하고 수집한 데이터를 Elastic Stack에 실시간 전송합니다
Download

Functionbeat   Ship cloud data with serverless infrastructure.
 클라우드 서비스의 Function-as-a-Service (FaaS) 플랫폼에서 기능으로 배포하여 데이터를 수집, 전송, 모니터링합니다
Download

2020-01-13

[EVE-NG] Linux Host - A Start job is running for Raise network interface


Linux Host 이미지 추가 후 부팅을 하게 되면 아래와 같이 "A Start job is running for Raise network interface" 라는 메지지가 뜨면서 5분동안 IP를 할당받으려고 대기를 하게 된다. 5분이 지나면 IP할당 실패 후 부팅이 된다.


이를 해결하기 위한 방법은 여러가지가 있는데 본인이 원하는 구성에 맞게 설정 하면 된다.



1. 고정 IP 세팅

인터페이스가 DHCP로 할당되도로고 되어 있는 구성을 고정IP 할당해 주면 된다.

vi /etc/network/interfacesauto ens3 iface ens3
inet static address xxx.xxx.xxx.xxx
netmask xxx.xxx.xxx.xxx
gateway xxx.xxx.xxx.xxx
dns-nameservers xxx.xxx.xxx.xxx


## 본인이 구성하려는 네트워크 구성에 맞는 정보 입력.

네트워크 재시작.

/etc/init.d/networking restart


2. DHCP Timeout 값 변경.

DHCP 할당 체크 시간을 기본 5분에서 10초로 변경해 준다.

vi /lib/systemd/system/networking.service

기본 값은 5min으로 되어 있으며, "TimeoutStartSec=10sec" 로 변경 후 재부팅.



3. Management Network 연결 후 부팅

Linux 인터페이스에 VMWare의 Bridge 네트워크 로부터 DHCP IP를 할당하도록 변경한다.이 경우 본인 PC에서 Linux Host 이미지에 할당된 IP로 Telnet 등 원격 접근이 가능하다.
가상 장비 Management를 위해 주로 사용하는 방법이다.
VMWare Network 모드가 bridge로 되어 있고, Linux Host 이더넷에 Management Network 를 연결하면 VMWare에서 DHCP IP를 할당받게 된다.

- Management Type의 네트워크 추가.



- Linux Host Image Ethernet 에 연결 후 부팅.


- 부팅 후 ifconfig로 보면 VMWare의 DHCP 대역 IP를 할당받은 것을 확인할 수 있다. 


[EVE-NG] How to Use Linux Image - EVE-NG 에서 리눅스 이미지 사용하기)


EVE-NG에 네트워크 장비 이외에 Linux 이미지를 추가하여 사용하는 방법이다.

고맙게도 EVE 사이트에서 EVE-NG에서 사용할 수 있는 Linux 이미지 다운로드 링크를 제공하고 있어서 해당 이미지를 다운로드 받은 후 EVE-NG 서버에 업로드하여 사용할 수 있다.

1. 아래의 다운로드 링크 접속하여 적절한 이미지를 다운로드 받는다.

Download Linux Image

2. 아래의 이미지 중 원하는 이미지 더블 클릭 후 PC에 다운로드 받는다.


여기서는 linux-ubuntu-srv-16.04.4-webmin.tar.gz 이미지를 사용하였다.


3. 다운로드가 완료 되면 Winscp를 이용하여 EVE-NG 서버에 파일을 업로드 한다.업로드 경로는 /opt/unetlab/addons/qemu/ 이다.



4. 업로드가 완료 되면 Putty 나 SecureCRT등을 사용하여 EVE-NG SSH 접속 후 업로드한 파일 압축을 풀어준다.
※ 압축을 풀면 linux-ubuntu-srv-16.04.4-webmin 디렉토리 안에 virtioa.qcow2 파일이 생성이 된다.

root@eve-ng:/opt/unetlab/addons/qemu# tar zxvf linux-ubuntu-srv-16.04.4-webmin.tar.gz
linux-ubuntu-srv-16.04.4-webmin/
linux-ubuntu-srv-16.04.4-webmin/virtioa.qcow2
root@eve-ng:/opt/unetlab/addons/qemu# 


5. 기존 압축 파일은 삭제한다.

rm -f linux-ubuntu-srv-16.04.4-webmin.tar.gz

6. Permision 수정

/opt/unetlab/wrappers/unl_wrapper -a fixpermissions

7. 만약 여러개의 이미지를 사용하고 싶다면 위의 이미지 업로드 방법을 반복하면 된다.

8. EVE-NG 웹 접속 후 신규 Node를 추가하면 아래와 같이 Linux 항목이 활성화 되고 이미지를 사용할 수 있게 된다.


9. Linux 이미지 qemu vga 옵션 값 변경 ( std 를 qxl 로 변경 후 저장)


10. EVE-NG 화면의 Linux Node Start




11. 부팅이 되면 파란색으로 변경이 되며 더블클릭후 ultravnc 앱으로 연결하면 된다.


12. 부팅이 완료 되면 root/root 입력 후 로그인후 사용하면 된다.







Elasticsearch Heap Size

  Elasticsearch는 Java 기반으로 동작을 합니다. Java는 가비시 컬렉터 (garbage-collected)에 의해서 관리가 되며, Java 객체는 힙(Heap) 이라고하는 메모리의 런타임 영역에 상주합니다.  Elasticsear...