AWS
Grafana
Posted on 2024-05-04

前言

這篇文會出現是因為,今天回去學校培訓學弟的時候與學長聊了一下天,他給了一個需求是想要監控 Server,但有以下幾個需求:

  • Free
  • Open Source
  • Alarms
  • Search Logs

目前在公司只有用過 Datadog,並沒有使用過其他 Third-Party Package 的經驗,這也讓我也想知道其他的 Monitor 是怎麼設置的 🤔

Setup IAM

Step IAM Step - 1

我們先去 AWS Console,會有一個輸入框,輸入「IAM」之後點擊即可 Setup IAM Step - 1

Step IAM Step - 2

到了「IAM」之後左邊的 Sidebar 當中會有一個 「Roles」

Setup IAM Step - 2

Step IAM Step - 3

會看到有一個按鈕是「Create Role」 Setup IAM Step - 3

Step IAM Step - 4

這邊我們選擇「AWS Service」並在下方的「Use Case」選擇「EC2」

Setup IAM Step - 4

Step IAM Step - 5

這邊我們需要把 CloudWatchAgentServerPolicy 給加上去

Setup IAM Step - 5

Step IAM Step - 6

最後輸入 IAM Role 的名稱就完成了!

Setup IAM Step - 6

Setup Security Group

Step Security Group Step - 1

我們先去 AWS EC2,在左邊會有一個 Network & Security 會看到一個「Security Groups」

Setup SG Step - 1

Step Security Group Step - 2

到 「Security Groups」之後,會看到一顆橘色的按鈕「Create Security Groups」

Setup SG Step - 2

Step Security Group Step - 3

這邊需要輸入幾個 Security Group 資訊「名稱」、「描述」、「TCP Port」按下 「Create」

Setup SG Step - 3

Step Security Group Step - 4

回到 Security Groups,你會看到剛才你建立的「grafana-demo-sg」

Setup SG Step - 4

Setup EC2

Step EC2 Step - 1

在 AWS Console上,搜尋「EC2」

Setup SG Step - 1

Step EC2 Step - 2

在左邊的 Sidebar 當中,你會看到 Instances 按下「Instances」

Setup SG Step - 2

Step EC2 Step - 3

你會看到一顆橘色的按鈕「Launch Instances」,按下之後可以去建立 Instance

Setup SG Step - 3

Step EC2 Step - 4

EC2 IAM Role

(Optional) EC2 userdata

這邊有準備好 EC2 userdata,可以讓大家不用去確認有沒有安裝 package

#!/bin/bash
sudo bash -c 'cat << EOF > /etc/yum.repos.d/grafana.repo
[grafana]
name=grafana
baseurl=https://packages.grafana.com/oss/rpm
repo_gpgcheck=1
enabled=1
gpgcheck=1
gpgkey=https://packages.grafana.com/gpg.key
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
EOF'
sudo yum update -y
sudo yum install nginx amazon-cloudwatch-agent collectd grafana -y
sudo systemctl start nginx amazon-cloudwatch-agent grafana-server
sudo systemctl enable nginx amazon-cloudwatch-agent grafana-server

Setup SG Step - 5

Launch Instance

Setup SG Step - 4

Connect to EC2

我是使用 AWS Console 裡面的 Connect 來使用 EC2,以下是 Connect EC2 的步驟

navigate to connect ec2 page

click connect button to connect EC2

當你按下「Connect」之後,有出現以下訊息的話就代表你的 EC2 已經成功 Connect 了!

success connect to ec2

Setup Nginx

Install Nginx

sudo yum install nginx

Start Nginx

sudo systemctl start nginx

Check Nginx is active

sudo systemctl status nginx

Setup CloudWatch Agent

Install CloudWatch Agent

sudo yum install amazon-cloudwatch-agent

Setup CloudWatch Agent Config

這邊 CloudWatchAgent Config 儲存的實際上儲存的位置在 /opt/aws/cloud-watch-agent/bin/config.json

如果你不想要自定義的話,可以直接把 Nginx Log Example 貼到 /opt/aws/cloud-watch-agent/bin/config.json 即可

如果你想要自定義的話可以,可以跟著下面這個步驟走

Restart CloudWatch Agent and use the local config

sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -a fetch-config -m ec2 -c file:/opt/aws/amazon-cloudwatch-agent/bin/config.json -s

Restart the service

sudo systemctl daemon-reload

Grafana Setup

Grafana Login

在 EC2 Public IPv4 DNS 後面加上:3000 就可以進入到 Grafana 的 Login 頁面了,預設帳號密碼都是 admin

Grafana Login Page

登入之後會先讓你更改一次密碼,當然你也可以按「Skip」跳過這個步驟

Grafana Update Password

Grafana Home page

Grafana Home Page

Add data resource step - 1

Grafana Data resource

Add data resource step - 2

Search cloudwatch

Add data resource step - 3

這邊我是使用「Access Key ID」、「Secret Access Key」來設置,這邊由於只是自己測試的我就使用我自己的 Key,這邊預設的「Region」也需要填寫哦!

data resource setup

Add data resource step - 4

都設定好之後,滑到最下面有一個「Save & Test」的藍色按鈕就新增好了

Finished add data resource step

Import default dashboard

左邊的 Sidebar 當中有一個是「Connections」有一個 Sub item 是 Data resources,按下之後你就可以看到你剛剛新增的 CloudWatch data resource

data resource cloudwatch

你會看到在上面也有 Item 是 Dashboard,按下去之後你會看到以下圖片的樣子

data resource dashboard

這邊我們需要 Import 兩個 Dashboard,分別是「EC2」、「CloudWatch Logs」

data resource dashboard

Grafana Dashboard

在左邊的 Sidebar 也有一個是「Dashboard」按下去之後你就可以看到你剛剛 Import 的兩個 Dashboard

dashboard page

以下是 EC2 和 CloudWatch 的一些 Dashboard 的樣子

EC2 dashboard page

cloudwatch dashboard page

Grafana CloudWatch Logs

既然都有 Dashboard了,怎麼可以少了 CloudWatch Logs

add new dashboard

add visualization

這邊選擇我們建立的 Data resource

selected data resource

new dashboard page

這邊一定要選擇 「CloudWatch Logs」

alt text

選擇我們要查詢的 CloudWatch Log Group

alt text

按下「Run queries」

alt text

你接下來會很疑惑,為什麼沒有顯示 Logs,那是因為我們目前顯示的是 「Time Series」的圖表

alt text

alt text

alt text

當你都修改好了之後,你會看到類似以下圖片的 Logs,接下來在按下右上角藍色的按鈕「Apply」就可以了呦~

alt text

Conclusion

在這篇文章當中,我們使用了 Grafana 來讀取 CloudWatch Logs 和 EC2 的一些基本資訊。

感謝你與我走到這裡,你該給你一個掌聲 👏

Made with ❤️ by Jiawei Hong