티스토리 뷰
0. 전반적인 구조설명
대략적으로 Telegraf (수집부) -> Influx DB (수집정보 저장) -> Grafana (분석 및 시각화(UI))
blog.naver.com/wonsbsa/221696044468
1) 앞서 진행한 Kafka Cluster와 별도 EC2 Instance를 사용했다.
세 가지 Application 모두 동일 EC2 Instance에 사용하였는데,
메모리가 좀 필요하다는 이미 서비스를 사용해본 사람의 조언에 의해 AMI를 프리티어가 아닌
4GB RAM이 있는 버전을 사용하였다.
2) 드문드문 진행을 했는데, 사용할때 외에는 Instance를 중지시켜놓았는데 Grafana 설치 시점 기준으로 0.5$정도 청구되었다.
처음에는 비계획적으로 해서 유료 Instance를 세대나 세팅하고 중지시켜놓은것도 원인일 수 있을것 같다.
1. Telegraf와 Influx DB 설치 (동일 Instance에 설치)
두 제품은 같은 회사여서 같은 홈페이지에서 다운로드 가능
https://portal.influxdata.com/downloads/
각 제품의 버전을 누르고, 하단에서 Redhat관련 방법확인해서 진행하면 된다.
대충 설치는 구글로 검색해보고 진행하면 된다.
http://blog.naver.com/hanajava/221842160382
https://www.qamilestone.com/post/set-up-telegraf-on-linux-machine-for-monitoring
AWS EC2에 Telegraf를 설치하고 실행해보면 아래와 같은 오류가 난다.
> The name org.freedesktop.PolicyKit1 was not provided by any .service files
- 이걸 해결하는 건 다음 내용으로 참고하였다. ( sudo yum install polkit )
https://forums.aws.amazon.com/thread.jspa?threadID=286066
그리고 systemctl 명령어를 통해 Telegraf나 InfulxDB 실행시 AWS VM (EC2)의 기본유저의 비밀번호를 물어본다. (나의 경우 ec2-user)
지금까지 비밀번호활성화를 안시켜서 관련내용 확인하여 활성화.
https://aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-password-login/
| 추가로, EC2의 다른 프리티어(AMI 2018)에서 다시 진행해보다 확인한 사항으로, systemctl start "service항목" 명령어 사용 시, 아래와 같은 오류가 발생하는 경우가 있다. 원인은 Linux가 기존의 EC2 종류와 달라서 그렇다. >> systemctl: command not found error 이 경우 아래의 명령어를 사용하면 된다. sudo service {servicename} {stop|start|restart} 또한, 아래에 나올 "sudo journalctl -f -u telegraf.service" 명령도 안먹게 되어서 다음 경로의 로그를 직접 봐야한다. /var/log/telegraf (명령어 : "sudo tail -f /var/log/telegraf") |
Telegraf만 설치하고 실행하고나서 잘 동작하는지는 journalctl 명령어 또는 systemctl로 로그를 볼 수 있는데
현재 상태에서는 다음과 같은 오류를 볼 수 있다.
- 명령어 : sudo systemctl status telegraf
(또는) sudo journalctl -f -u telegraf.service
| [outputs.influxdb] When writing to [http://localhost:8086]: Post http://localhost:8086/write?db=telegraf: dial tcp 127.0.0.1:8086: connect: connection refused [agent] Error writing to outputs.influxdb: could not write any address |
Influx DB를 설치하고 나면 실행 후 Telegraf를 실행하면 오류는 사라진다.
> 같은 회사 제품이어서인지, 동일 VM에 설치시 별도로 conf를 손대지 않아도 Telegraf에서 Influx DB를 output 대상으로 인지하는 것으로 보인다.
> Telegraf를 먼저 실행하고 Influx DB를 실행하는경우 Telegraf에서 동적으로 Influx DB를 인지하지는 못하는것 같다
※ Influx DB 쿼리방법
https://docs.influxdata.com/influxdb/v1.7/guides/querying_data/
Influx DB 추가 참고 블로그 (계정 별도 할당 등, 기본 세팅에서는 계정없이 접근 가능)
https://dev-t-blog.tistory.com/34
2. Grafana 설치 (역시 동일 Instance)
Granafana는 AWS EC2에 단독 설치하는 내용으로돈 아래 post가 유용해 보이는데,
중간에 apt-get이라는 명령어로 설치를 진행하는 부분에서 막힌다.
내용을 찾아보니 apt-get은 Devian Linux계열에서 사용하는 package manager tool이고, Amazon은 yum을 사용한다고 한다.
https://techexpert.tips/grafana/grafana-installation-on-the-cloud-aws-ec2/
Grafana의 공식 download page. Linux하위에서 Redhat쪽을 보면 yum을 사용해 설치하는 부분이 있다.
https://grafana.com/grafana/download
Grafana 설치가 끝나면, 다음 명령어로 서비스를 실행시키고 web UI로 접근해서 Influx DB와 연결해야한다.
> sudo service grafana-server start
Grafana Web 초기 관리자 계정 : admin/admin (로그인 후 비번 변경)
기본 port가 3000번이므로 AWS EC2 콘솔에서, 현재 설치를 진행하고 있는 Instance의 보안그룹에
인바운드 규칙 "사용자 지정 TCP" 3000번을 추가한다.
그리고 EC2 콘솔에서 "현재 Instance의 Public IP:3000"를 브라우저 주소창에 입력하면
Grafana Web UI를 확인할 수 있다.
이후 기본적인 연결 설정 등은 아래 블로그를 참조 (맨 위의 블로그랑 동일 블로그)
blog.naver.com/wonsbsa/221696044468
마지막으로 종료명령어들
sudo systemctl stop grafana-server
sudo systemctl stop telegraf
sudo systemctl stop influxdb
※ 설정 참고용
lkhill.com/telegraf-influx-grafana-network-stats/
time range 설정 : 화면 우측 상단에 있음
grafana.com/docs/reference/timerange/
P.S. 4G RAM이 달린 EC2 (t2.medium)의 경우 10.4시간 사용정도에 0.6$가 청구되었다.(VAT별도)
그래서 t2.micro 프리티어로 전환시켜보았음. (Telegraf, influxDB, Grafana를 모두 별도 EC2에 설치)
이 경우 telegraf.conf의 outputs.influxdb에 url만 정확히 넣어주면 influx로 데이터를 넣는다.
추가로 influxDB가 설치된 EC2의 보안그룹에 인바운드 포트를 열어주었다.
Grafana는 InfluxDB를 소스로 사용해야하므로 InfluxDB에 Grafana가 접근하는 포트를 열어주는 것이 추가로 필요할 것으로 보인다.
'프로그래밍 > 빅데이터 관련' 카테고리의 다른 글
| Kafka Partition Assignment Strategy (0) | 2020.06.25 |
|---|---|
| ZooKeeper 예제들의 3 node 세팅의 이유 (기초) (0) | 2020.06.12 |
| AWS EC2에 Kafka 클러스터(3 node) 구축하기 (기초) (0) | 2020.06.10 |
