ansible_ELK - 전체 Elastic Stack을 설치하고 Grafana로 데이터를 시각화합니다.

(Install the complete Elastic Stack and visualize the data with Grafana. Everything you need to be up and running in 10 minutes.)

Created at: 2018-09-22 05:06:38
Language: HTML

대체 텍스트

Ansible 플레이 북 및 Elastic Stack 용 역할 + 배포를 능가

이 저장소에는 서버에 코드를 배포하기 위해 ansible을 사용하여 Elastic Stack + beats를 시작하는 데 필요한 모든 것이 포함되어 있습니다.

이 저장소에는 하나의 파일 (elk.yml)에 모든 코드가 포함 된 플레이 북이 있으며 "role"디렉터리 아래에는 ansible 역할이 있는데 이는 정확히 동일한 작업을 수행하지만 ansible 역할 설정 내에 있습니다.

가정 된 지식

ansible 플레이 북과 역할에 대한 이해가 도움이되지만 아래에 명령을 나열합니다.

전제 조건

Elastic Stack을 배포하려는 모든 노드에 다음을 설치하십시오.

현지:

  • Ansible 설치

먼:

  • Ubuntu 16.04 AMI에서 테스트 됨 (eu-west1 지역의 ami-0773391ae604c49a4)
  • 다음 패키지를 설치하십시오. wget curl git python-minimal default-jre *
  • 최소 메모리 요구 사항 : 4GB (AWS의 t2.medium)
  • 방화벽 포트 열기 :
    • 수신 : 22 (ssh), 5601 (kibana), 3000 (grafana), 5044 (logstash)
    • 송신 : 모두

용법

저장소를 복제합니다.

# git clone https://github.com/dmccuk/ansible_ELK.git
# cd ansible_ELK

ansible 역할을 실행하려면 :

# cd ansible_ELK/roles
# ansible-playbook -i <server_name/ip>, deployELK.yml

main.yml을 편집하여 실행되는 구성 요소를 사용자 지정할 수 있지만 권장하지는 않습니다.

# vi elk_config/tasks/main.yml

Permission denied UNREACHABLE에 대한 오류가 발생하면 다음을 시도하십시오.

fatal: [34.245.169.116]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Warning: Permanently added '34.245.169.116' (ECDSA) to the list of known hosts.\r\nPermission denied (publickey).\r\n", "unreachable": true}
        to retry, use: --limit @/home/vagrant/ansible/roles/deployELK.retry

PLAY RECAP ************************************************************************************************
34.245.169.116             : ok=0    changed=0    unreachable=1    failed=0

pre_run.sh 스크립트에있는 다음 명령을 실행하십시오. .pem 키 이름으로 바꿉니다.

# ssh-agent bash
# ssh-add ../you_ec2_key.pem

이제 ansible 플레이 북을 다시 실행하십시오. 이번에는 작동합니다.

Kibana 열기

Kibana의 URL로 이동하십시오.

http : // <server_or_IP> : 5601

Kibana에 색인 추가

Kibana 웹 페이지에서 "검색"또는 "관리"를 클릭하고 아래와 같이 색인을 추가합니다. 다음을 클릭하십시오. 대체 텍스트

@timestamp 선택 : 대체 텍스트

검색을 선택하고 메시지를 확인합니다. 대체 텍스트

사용 가능한 색인 나열 :

스택을 배포 한 후에는 서버 명령 줄에서 다음 명령을 실행하여 사용 가능한 인덱스를 확인할 수 있습니다.

# curl -s http://localhost:9200/_cat/indices?v
health status index                     uuid                   pri rep docs.count docs.deleted store.size pri.store.size
green  open   .kibana                   2UuCqV84Rb-u7rpUXHWDWg   1   0          2            0     20.9kb         20.9kb
yellow open   logstash-daily-2018.09.27 tbeKCDg_QOCB-7B-oQUiTQ   5   1     126642            0     77.4mb         77.4mb

Grafana 설정 :

전체 ansible 역할을 실행하면 Grafana가 기본적으로 설치됩니다. 수동으로 실행하려는 경우 다음과 같습니다.

Grafana 설정

# /data/grafana.sh

--2018-09-27 09:11:58--  https://s3-us-west-2.amazonaws.com/grafana-releases/release/grafana_5.1.4_amd64.deb
Resolving s3-us-west-2.amazonaws.com (s3-us-west-2.amazonaws.com)... 54.231.185.64
Connecting to s3-us-west-2.amazonaws.com (s3-us-west-2.amazonaws.com)|54.231.185.64|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 52631282 (50M) [application/x-debian-package]
Saving to: ‘grafana_5.1.4_amd64.deb’
grafana_5.1.4_amd64.deb  100%[=======================================>]  50.19M  7.04MB/s    in 8.1s

2018-09-27 09:10:24 (6.23 MB/s) - ‘grafana_5.1.4_amd64.deb’ saved [52631282/52631282]

Reading package lists... Done
Building dependency tree
Reading state information... Done
Note, selecting 'libfontconfig1' instead of 'libfontconfig'
adduser is already the newest version (3.113+nmu3ubuntu4).
libfontconfig1 is already the newest version (2.11.94-0ubuntu1.1).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
(Reading database ... 60521 files and directories currently installed.)
Preparing to unpack grafana_5.1.4_amd64.deb ...
Unpacking grafana (5.1.4) over (5.1.4) ...
Setting up grafana (5.1.4) ...
Restarting grafana-server service... OK
Processing triggers for systemd (229-4ubuntu21.4) ...
Processing triggers for ureadahead (0.100.0-19) ...
● grafana-server.service - Grafana instance
   Loaded: loaded (/usr/lib/systemd/system/grafana-server.service; disabled; vendor preset: enabled)
   Active: active (running) since Thu 2018-09-27 09:10:27 UTC; 393ms ago
     Docs: http://docs.grafana.org
 Main PID: 2281 (grafana-server)
   CGroup: /system.slice/grafana-server.service
           └─2281 /usr/sbin/grafana-server --config=/etc/grafana/grafana.ini --pidfile=/var/run/grafana/gra

Sep 27 09:10:27 ip-172-31-25-50 grafana-server[2281]: t=2018-09-27T09:10:27+0000 lvl=info msg="Executing mi
Sep 27 09:10:27 ip-172-31-25-50 grafana-server[2281]: t=2018-09-27T09:10:27+0000 lvl=info msg="Skipping mig
Sep 27 09:10:27 ip-172-31-25-50 grafana-server[2281]: t=2018-09-27T09:10:27+0000 lvl=info msg="Executing mi
Sep 27 09:10:27 ip-172-31-25-50 grafana-server[2281]: t=2018-09-27T09:10:27+0000 lvl=info msg="Skipping mig
Sep 27 09:10:27 ip-172-31-25-50 grafana-server[2281]: t=2018-09-27T09:10:27+0000 lvl=info msg="Starting plu
Sep 27 09:10:27 ip-172-31-25-50 grafana-server[2281]: t=2018-09-27T09:10:27+0000 lvl=info msg="Initializing
Sep 27 09:10:27 ip-172-31-25-50 grafana-server[2281]: t=2018-09-27T09:10:27+0000 lvl=info msg="Initializing
Sep 27 09:10:27 ip-172-31-25-50 grafana-server[2281]: t=2018-09-27T09:10:27+0000 lvl=info msg="Initializing
Sep 27 09:10:27 ip-172-31-25-50 grafana-server[2281]: t=2018-09-27T09:10:27+0000 lvl=info msg="Initializing
Sep 27 09:10:28 ip-172-31-25-50 systemd[1]: Started Grafana instance.

Grafana 웹 URL

http : // <fqdn_or_IP> : 3000 방문

로그인 사용자 이름 및 비밀번호 : admin / admin

대체 텍스트

Grafana 설정

예시 grafana 대시 보드 파일을 추가합니다. 이것은 PC에 다운로드하고 Grafana (Grafana_basic_dashboard)로 가져올 수 있습니다.

이제 Elasticsearch를 데이터 소스로 설정하십시오. 대체 텍스트 대체 텍스트

그리고 다음 설정을 사용하십시오. 대체 텍스트

저장하고 테스트합니다.

이제 대시 보드를 가져옵니다. 이 GitHub에서 PC (Grafana_basic_dashboard)로이 파일을 다운로드합니다. 대체 텍스트 대체 텍스트

가져올 파일을 선택하고 다음 설정을 지정하십시오. 대체 텍스트

대시 보드가 나타나고 기본 CPU 및 메모리 사용률이 표시됩니다. 대체 텍스트

메트릭을 테스트하십시오!

Ubuntu에 "스트레스"프로그램을 설치하여 메트릭을 이동하고 grafana에서 확인하십시오.

# sudo apt install stress -y

CPU를 테스트하려면 :

# stress --cpu 3

CPU, 메모리 및 IO를 테스트하려면 :

# stress --cpu 3 -m 2 -d 1

이제 grafana로 돌아가서 서버 리소스 변경을 확인하십시오.

다음 단계?

추가 서버를 모니터링하고 데이터를 logstash로 다시 보냅니다.

다른 Linux 서버에서 ansible 역할을 실행할 수 있습니다. deployELK.yml을 다시 실행하되 metricbeat 및 filebeat 부분 만 실행하십시오.

다른 노드에 비트를 설치하려면 (제어 노드로 돌아 가기) :

# cd ~/ansible_ELK/roles
# ansible-playbook -i inventory_file deployBEATS.yml

배포가 완료되면 메트릭 통계를 원하는 모든 서버의 filebeat.yml에서 다음 줄을 편집합니다.

# ssh <IP_address_in_inventory>
# sudo vi /data/filebeat-6.4.0-linux-x86_64/filebeat.yml
output.logstash:
FROM--> hosts: ["localhost:5044"]
TO --> hosts: ["EC2_IP:5044"]

이제 filebeat를 다시 시작하여 새 설정을 업데이트합니다.

# sudo service filebeat restart

Multiserver grafana 대시 보드를 가져옵니다.

새 메트릭 추가

metricbeat 데이터를 사용하여 자신의 대시 보드를 추가해보십시오. 내 정보는 www.grafana.com으로 이동하십시오 .

이 설정을 사용하려면 서버에있는 여유 공간을 염두에 두어야합니다. 대용량 디스크에 ES 데이터를 저장하기 위해 별도의 LV를 만드는 것이 좋습니다. 한 서버가 24 시간 동안 가져 오는 데이터의 양을 계산하여 환경의 크기를 올바르게 조정해야합니다. 그런 다음 총 서버 수와 ​​보관할 데이터의 기간을 계산하여 숫자를 곱합니다. 그런 다음 좋은 측정을 위해 25 %를 추가합니다.

ES 데이터는 나중에 검색 할 수 있도록 다른 위치에 보관 및 저장할 수 있습니다. 공간 부족 및 데이터 손실을 방지하려면이 프로세스를 자동화해야합니다.

또 다른 옵션은 ES의 infront에 Redis를 추가하는 것입니다. 이러한 방식으로 Redis는 서버 중 하나의 문제로 인해 메시지 폭풍이 닥쳤을 때 트래픽 및 서버의 최고점과 최저점을 버퍼로 관리 할 수 ​​있습니다. 어떤 이유로 든 ES가 중단되는 경우 redis는 일정 시간 동안 (ES가 중단 된 동안) 메시지를 버퍼링 할 수 있으므로 ES를 복구하고 데이터를 손실하지 않을 수 있습니다.

도움이 되었기를 바랍니다. 봐 주셔서 감사합니다-Dennis