2020-01-17

[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 입력 후 로그인후 사용하면 된다.







Putty Session List Export / Import


Putty에 등록된 세션 리스트 정보를 백업하여 다른 곳에 그대로 사용할 경우 아래과 같이 Registry에 등록 된 값을 이용할 수 있다. 

1. Putty Session Export 
1) cmd.exe
Session 만 내보내기 ( Only Sessions )
regedit /e "%USERPROFILE%\Desktop\putty-sessions.reg" HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions

모든 세팅 정보 내보내기 ( All Settings)
regedit /e "%USERPROFILE%\Desktop\putty.reg" HKEY_CURRENT_USER\Software\SimonTatham

2) powershell.exe
Session 만 내보내기( Only Sessions )
reg export HKCU\Software\SimonTatham\PuTTY\Sessions ([Environment]::GetFolderPath("Desktop") + "\putty-sessions.reg")

모든 세팅 정보 내보내기( All Settings)
reg export HKCU\Software\SimonTatham ([Environment]::GetFolderPath("Desktop") + "\putty.reg")

2. Putty Session Import
1) cmd.exe
## Only Sessions List
regedit /i putty-sessions.reg 

## All Setting Info
regedit /i putty.reg

2) Powershell.exe
## Only Sessions List
reg import putty-sessions.reg

## All Setting Info
reg import putty.reg

Ansible Backup Cisco IOS Switch Config

Ansible은 누구나 쉽게 인프라를 관리할 수 있는 자동화 도구로 Agent가 필요하지 않으며, 특히 네트워크 장비를 가장 완벽하게 관리할 수 있는 자동화 도구이다.

Ansible은 기타 다른 자동화 도구와는 다르게 Agent가 필요없으며, 기본적으로 SSH를 통한 암호화 통신을 통해 원격 접근 및 자동화 관리가 가능하다. 따라서 Cisco 스위치를 Ansible을 이용해서 관리하기 위해서는 SSH 통신이 되도록 우선 설정이 되어 있어야 한다.
  Cisco 장비 SSH 설정방법은 아래 블로그 내용을 확인해 보면 된다.

Cisco Switch SSH 접속 설정 하기



네트워크 엔지니어로 가장 중요한 스위치 Config 백업을 Ansible을 활용하여 구성하는 방법에 대해 설명해보도록 하겠다.  

1. Ansible host에 스위치 정보 입력.

 - vi /etc/ansible/hosts

## Host 그룹 및 host 지정
## []에 그룹명을 지정해 주고 하위에 hostname 및 host ip 정보등을 입력해 주면 그룹에 host가 등록이 된다.
[CiscoSW]
SW01 ansible_host=192.168.254.101

## 그룹에 대한 환경 변수 등록.
## [groupname:vars]형식으로 작성
[CiscoSW:vars]
ansible_network_os=ios
ansible_user=backup             ## User name 입력.
ansible_password=backupPW       ## User password 입력.
ansible_authorize=yes
ansible_connection=network_cli  
ansible_become=yes
ansible_become_method=enable
ansible_become_pass=enablePW    ## enable passwd 입력. ansible-vault를 이용하여 패스워드 등 
                                ## 중요한 정보를 암호화 하여 처리할 수 있다. 
                                ## vault에 대해서는 나중에 별도 섹션으로 포스팅하도록 하겠다.
                                


2. Ansible 스위치 Config Backup Playbooks 작성.

   - vi /etc/ansible/playbooks/swbackup.yaml 

---
- hosts: CiscoSW
  gather_facts: no

  tasks:
    
    - name: Backup switch (ios)
      ios_config:
        backup: yes
      register: backup_ios_location
      when: ansible_network_os == 'ios'

    - name: Create backup dir    ## 백업 Directory 경로 설정(없을 경우 자동 생성)
      file:
        path: "/tmp/backups/{{ inventory_hostname }}"
        state: directory
        recurse: yes

    - name : copy switch config backup to backup directory
      copy:
       src: "{{ backup_ios_location.backup_path }}"
       dest: "/tmp/backups/{{ inventory_hostname }}/{{ inventory_hostname }}_running-config.txt"


3. ansible-playbooks 실행

[root@ansible]# ansible-playbook /etc/ansible/playbooks/swbackup.yaml 

4. 실행 결과

[root@ansible]# ansible-playbook /etc/ansible/playbooks/swbackup.yaml 

PLAY [CiscoSW] *************************************************************************************************
TASK [Backup switch (ios)] *************************************************************************************
changed: [SW01]

TASK [Create backup dir] ***************************************************************************************
changed: [SW01]

TASK [copy switch config backup to backup directory] *******************************************************
changed: [SW01]

PLAY RECAP ****************************************************************************************************
SW01                       : ok=3    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

[root@ansible]#


5. 백업 파일 확인.

[root@ansible]# cd /tmp/backups/SW01/
[root@office_zabbix SW01]# ls -al
drwxr-xr-x 2 root root    37 1227 18:03 .
drwxr-xr-x 4 root root    31 1227 18:03 ..
-rw-r--r-- 1 root root 10506 1227 18:03 SW01_running-config.txt
[root@ansible]#


  /tmp/backups/SW01/ 경로에 SW01_running-config.txt 이름으로 스위치 Config가 백업 된 것을 확인할 수 있다.

위에서는 1대의 장비만 가지고 구성하였는데 수십대 및 수백대의 장비가 있다고 하더라고 Hosts 파일에 등록 해 놓으면 아주 편하게 스위치 장비를 백업 할 수 있다. 

Centos Ansible Install


Centos Ansible 설치 방법
  1. 최신버전 설치를 위한 epel-release 업데이트
    - yum install epel-relrease -y
  2. Ansible install
    - yum install ansible -y
 # ansible 설치 위치 :  /etc/ansible
 # ansible 구성 파일  /etc/ansible/ansible.cfg  

Ansible(앤서블) 이란?





Ansible - Introduction
IT Automation & ConfigurationManagement
www.slideshare.net




Elasticsearch Heap Size

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