Setup Grafana in EC2
前言
這篇文會出現是因為,今天回去學校培訓學弟的時候與學長聊了一下天,他給了一個需求是想要監控 Server,但有以下幾個需求:
- Free
- Open Source
- Alarms
- Search Logs
目前在公司只有用過 Datadog,並沒有使用過其他 Third-Party Package 的經驗,這也讓我也想知道其他的 Monitor 是怎麼設置的 🤔
Setup IAM
Step IAM Step - 1
我們先去 AWS Console,會有一個輸入框,輸入「IAM」之後點擊即可

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

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

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

Step IAM Step - 5
這邊我們需要把 CloudWatchAgentServerPolicy 給加上去

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

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

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

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

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

Setup EC2
Step EC2 Step - 1
在 AWS Console上,搜尋「EC2」

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

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

Step EC2 Step - 4

(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

Launch Instance

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


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

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

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

Grafana Home page

Add data resource step - 1

Add data resource step - 2

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

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

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

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

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

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

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


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


這邊選擇我們建立的 Data resource


這邊一定要選擇 「CloudWatch Logs」

選擇我們要查詢的 CloudWatch Log Group

按下「Run queries」

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



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

Conclusion
在這篇文章當中,我們使用了 Grafana 來讀取 CloudWatch Logs 和 EC2 的一些基本資訊。
感謝你與我走到這裡,你該給你一個掌聲 👏