說明
工作中的主要部署環境是 AWS,所以這邊紀錄一些常用的指令。
TIPS
CloudFront 中的 504 錯誤
這是一個有趣的問題,在我們的專案裡,504 gateway timeout 的原因是 server 端的 websocket faye 的連線逾時設定為 60 秒,而因為 CloudFront 有自己的 timeout 設定,預設是 30 秒,所以當連線超過 30 秒沒有回應時,就會回傳 504 錯誤。在把 faye 的連線逾時設定改為 50 秒並將 CloudFront改為 60 秒後,就不會再出現 504 錯誤了。EC2 的 EBS 空間擴展
檢查 File System Type:df -hT
檢查 Volume ID:lsblk(xvda or nvme0n1看這裡)
擴展 Volume:sudo growpart /dev/xvda 1orsudo growpart /dev/nvme0n1 1
a. 擴展 xfs File System:sudo xfs_growfs /dev/xvda1orsudo xfs_growfs -d /
b. 擴展 ext4 File System:sudo resize2fs /dev/xvda1orsudo resize2fs /dev/nvme0n1p1DynamoDB Local 的使用
我打算用 Docker Image 來跑本地端的 DynamoDB 開發,安裝時遇到一個使用者權限問題, 如果直接使用 image,data 的路徑是 root 建立的,所以 docker user 沒有權限寫入,所以我決定自己建立一個 image,以下是我的 Dockerfile:1
2
3
4FROM amazon/dynamodb-local
WORKDIR /home/dynamodblocal
RUN mkdir ./data && chown -R 1000 ./data
CMD ["-jar", "DynamoDBLocal.jar", "-sharedDb", "-dbPath", "/home/dynamodblocal/data"]然後要整合 Docker Compose 的話,可以參考以下的設定:
1
2
3
4
5
6
7
8
9
10version: '3.8'
services:
dynamodb-local:
build:
context: .
dockerfile: Dockerfile
ports:
- 8000:8000/tcp
volumes:
- dynamodb_data:/home/dynamodblocal/data這樣就可以在本地端使用 Docker Image 來跑 DynamoDB Local 了。用以下指令來測試一下連線:
1
aws dynamodb list-tables --endpoint-url http://localhost:8000
如果有成功的話,就會看到以下的回應:
1
2
3{
"TableNames": []
}CloudWatch Agent EC2 Instances 監控設定
- 安裝 CloudWatch Agent in Ubuntu EC2 Instances
1
2wget https://s3.amazonaws.com/amazoncloudwatch-agent/ubuntu/amd64/latest/amazon-cloudwatch-agent.deb
sudo dpkg -i -E ./amazon-cloudwatch-agent.deb - IAM 權限設定要加入
CloudWatchAgentServerPolicy,這樣才能正確的上傳資料到 CloudWatch - 執行 CloudWatch Agent Wizard 這邊要注意的是,如果是要監控 EC2 Instances 的話,要選擇
1
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-config-wizard
EC2,如果是要監控 Docker 的話,要選擇Others,然後選擇CollectD,其他的就照著 wizard 的指示設定就可以了。 - Logs的設置可以在稍後的設定檔中修改,我的部分大概長這樣:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25{
"agent": {
"run_as_user": "root"
},
"logs": {
"logs_collected": {
"files": {
"collect_list": [
{
"file_path": "/home/user/app/log/sample.log*",
"log_group_name": "app",
"log_stream_name": "{instance_id}",
"retention_in_days": 180,
"filters": [
{
"type": "include",
"expression": "P(UT|OST)|GET"
}
]
}
]
}
}
}
} - 設定完成後,會產生一個
amazon-cloudwatch-agent.json的設定檔案,可以用以下指令來啟動 CloudWatch Agent:1
2
3
4
5
6
7
8# Ubuntu 要有安裝 collectd
sudo apt-get update && sudo apt-get install collectd -y
# 啟動 CloudWatch Agent
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
# 查看 CloudWatch Agent 狀態
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a status
# 停止 CloudWatch Agent
sudo /opt/aws/amazon-cloudwatch-agent/bin/amazon-cloudwatch-agent-ctl -m ec2 -a stop
- 安裝 CloudWatch Agent in Ubuntu EC2 Instances