IT 이야기/Open Source

Monitoring With AWS & On-premise

클톡(CloudTalk) 2021. 10. 9. 20:24

지난 몇 년간 많은 Monitoring Tool을 사용해 오면서 그중 가장 간결하고, 빠르게 적용 할 수 있는 Monitoring Tool(Influxdb, Telegraf, CloudWatch, Grafana)을 소개하고 AWS와 On-premise의 통합 모니터링 사이트 구축 방법을 공유하기 위해서 작성하였습니다.

Monitoring Tool

  • Influxdb
    • Go 언어로 작성되어 외부 의존성이 없습니다.
    • 다양한 API, HTTP(S)를 제공한다.
    • 시계열 데이터베이스로 시간 순서에 따라 저장하고 조회하는 기능으로 인해 실시간 비교가 필요한 모니터링에 적합합니다.
  • Telegraf
    • Go 언어로 작성되어 외부 의존성이 없습니다. (Influxdb와 동일한 업체에서 개발)
    • 다양한 매트릭을 수집하여 데이터베이스로 보내는 에이전트입니다.
    • 다양한 메트릭을 수집하기 위해 수많은 In-Out Put 플러그인을 제공합니다.
  • CloudWatch
    • AWS에서 운영되고 있는 서비스를 모니터링을 할 수 있게 해주는 서비스입니다.
    • 별도의 CloudWatch Agent를 다운받아서 On-premise에서 운영이 가능합니다.
    • 별도 다운받아 사용 할 수 있듯 커스텀 매트릭 설정이 가능합니다.
  • Grafana
    • 수집된 매트릭에 대한 자료를 한눈에 볼 수 있도록 시각화를 지원합니다.
    • 수많은 대시보드 템플릿 및 데이터 소스(Influxdb, CloudWatch, ETC.)를 지원합니다.

Monitoring Installation (OS: Ubuntu18.04)

1.Grafana Installing

  • apt-get 패키지 설정
sudo add-apt-repository "deb <https://packages.grafana.com/oss/deb> stable main"
curl <https://packages.grafana.com/gpg.key> | sudo apt-key add -
  • Install
sudo apt-get update && sudo apt-get install grafana
  • 설정
systemctl daemon-reload # 설정 반영
systemctl start grafana-server
systemctl status grafana-server
systemctl enable grafana-server.service # 부팅시 활성화

2.Influxdb Installing

  • apt-get 패키지 설정
curl <https://repos.influxdata.com/influxdb.key> | sudo apt-key add -
source /etc/lsb-release
echo "deb <https://repos.influxdata.com/${DISTRIB_ID,,}> ${DISTRIB_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
  • Install
sudo apt-get update && sudo apt-get install influxdb
  • 설정
systemctl start influxdb systemctl status influxdb systemctl enable influxdb

3.Telegraf Installing

  • Download (모니터링 대상 서버의 패키지 관리를 위해 다운로드 형식으로 진행)
wget <https://dl.influxdata.com/telegraf/releases/telegraf_1.12.2-1_amd64.deb>
  • Install
sudo dpkg -i telegraf_1.12.2-1_amd64.deb
  • 설정
systemctl start telegraf
systemctl status telegraf
systemctl enable telegraf

4.CloudWatch Setup

  • Setup-Policy (AWS > IAM > Policies > Create policy > JSON)
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowReadingMetricsFromCloudWatch", "Effect": "Allow", "Action": [ "cloudwatch:DescribeAlarmsForMetric", "cloudwatch:ListMetrics", "cloudwatch:GetMetricStatistics", "cloudwatch:GetMetricData" ], "Resource": "*" }, { "Sid": "AllowReadingTagsInstancesRegionsFromEC2", "Effect": "Allow", "Action": [ "ec2:DescribeTags", "ec2:DescribeInstances", "ec2:DescribeRegions" ], "Resource": "*" }, { "Sid": "AllowReadingResourcesForTags", "Effect" : "Allow", "Action" : "tag:GetResources", "Resource" : "*" } ] }
  • Setup-Access Key (AWS > IAM > User >)
    • Access Type: Programmatic access
    • Set permissions: Attach existing policies directly
    • Filter policies: 1번에서 생성한 Policy Name 등록
    • Create User: Download.csv (credentials.csv)

Monitoring Setup

Grafana Datasources Setup & Monitoring Agent(Telegraf)

Influxdb Config Setup (/etc/influxdb/influxdb.conf)

[http]
  enabled = true # 활성화
  bind-address = ":8086" # 활성화

Grafana 웹페이지 > datasources > Add data source

HTTP (localhost = Public IP(34.220.10.205))

Database (기본 설정 사용 패스워드 미 설정)

CloudWatch Setup (AWS AccessKey)

Grafana 웹페이지 > datasources > Add data source AccessKey 등록

Telegraf Setup (/etc/telegraf/telegraf.conf)

[[outputs.influxdb]]
  urls = ["<http://34.220.10.205:8086>"] # 활성화
  database = "telegraf" #활성화
systemctl restart telegraf
systemctl status telegraf

Monitoring Dashboard Setup

Grafana Dashboard

  • Telegraf Dashboard Grafana 웹페이지 > Dashboards > Import

  • ID는 위의 Grafana Dashboard URL에서 마음에 드는 Dashboard 찾아서 입력(블로그에서 사용하는 Dashboard 링크)

  • Name/Folder/Unique identifier (uid): 임의 지정
  • servermonitor: InfluxDB

 

  • 커뮤니티 Dashboard를 적용하여 표현

  • AWS-CloudWatch Dashboard Grafana 웹페이지 > Dashboards > New dashboard > Add Query

  • Query: CloudWatch
  • Region: 사용하는 리전 지정
  • Metric: 확인하고 싶은 매트릭 지정
  • Dimensions: InstanceId = 타겟-InstanceId

 

  • 다양한 차트로 표현

Conclusion

설치 명령어 10줄 정도와 설정 파일 내용을 한두 번 변경하면서 AWS & On-premise 모두를 모니터링할 수 있는 환경의 기초를 마련했습니다. 지금 보여드린 부분은 Grafana, Influxdb, Telegraf, CloudWatch 기능에 극히 일부분 및 모니터링 구성에서 보안 요구 사항이 전혀 반영되지 않은 설정이지만 위와 같이 최대한 간결하게라도 구성을 경험하는데 취지를 두고 작성하였습니다.

다음 포스팅 내용은 아래의 내용들을 정리해서 포스팅 하겠습니다.

  • CloudWatch Custom Metric
  • Telegraf Plugins
  • Granafa & Influxdb 최적화

'IT 이야기 > Open Source' 카테고리의 다른 글

Kubernetes(K8S) Meetup  (0) 2021.10.13
Kubernetes 기본 개념  (0) 2021.10.12
Atom Editor (atom 에디터)  (0) 2015.10.28
Python Programming  (0) 2015.10.20
Apache Spark  (0) 2015.10.20