Oracle Cloud A1 Flex: Ubuntu 系統初始化與監控系統建置全攻略
取得 Oracle Cloud (OCI) 免費的 A1 Flex 執行個體後,首要任務便是系統最佳化。本文將帶你從基礎環境設定、安全性配置到 Docker 監控環境建置,發揮 ARM 核心的強大效能。
Oracle Cloud 的 A1 Flex (ARM64) 執行個體以其高達 4 個 OCPU 與 24GB 記憶體的免費額度,成為許多開發者的首選伺服器。然而,要讓這台伺服器跑得穩定且具備觀測性,初期的環境配置至關重要。
本文紀錄了從全新的 Ubuntu 系統開始,如何進行最佳化,並快速佈署一套 Elasticsearch 與 Grafana 監控方案。
一、 系統基礎環境最佳化
在開始安裝軟體前,我們先針對核心系統進行更新與時區校正。
1. 系統更新與必備工具
# 更新套件清單並升級所有軟體
sudo apt update && sudo apt upgrade -y
# 安裝常用開發與診斷工具
sudo apt install -y curl git htop net-tools build-essential
2. 配置 Swap 置換空間 (建議 4GB)
雖然 A1 執行個體記憶體充足,但配置 Swap 能提高系統處理突發負載的穩定性。
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 寫入 fstab 以後自動掛載
echo '/swapfile swap swap defaults 0 0' | sudo tee -a /etc/fstab
3. 時區校正
將伺服器時間設定為臺灣時間,方便後續讀取 Logs。
sudo timedatectl set-timezone Asia/Taipei
二、 網路安全性與防火牆配置
OCI 的安全性由兩層組成:實例內部的 ufw/iptables 以及 OCI 主機台的 Security List。
1. 調整實例內部防火牆
OCI 的 Ubuntu 映像檔預設帶有較嚴格的 iptables 規則,建議先清理後再重新配置:
# 清空現有 iptables 規則 (謹慎操作)
sudo iptables -F
sudo netfilter-persistent save
# 配置 UFW 開放必要埠號 (Port)
sudo ufw allow 22/tcp # SSH
sudo ufw allow 3000/tcp # Grafana
sudo ufw allow 9200/tcp # Elasticsearch
sudo ufw enable
注意:請務必同時在 OCI 控制台的 VNC Security List 或 Network Security Group 中手動放行 Ingree 規則,否則外部流量仍無法進入。
三、 Docker 環境建置 (ARM64 兼容)
A1 實例基於 ARM64 架構,現代大多數的主流 Image (如 Docker, Elasticsearch) 皆已原生支援。
1. 安裝 Docker 與 Docker Compose
sudo apt install docker.io docker-compose -y
sudo systemctl enable --now docker
# 將當前使用者加入 docker 群組 (非必要,但建議)
sudo usermod -aG docker $USER
2. 調整 Linux 核心參數
Elasticsearch 需要較大的虛擬記憶體區塊,必須手動調增 vm.max_map_count。
echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p
四、 佈署 Elasticsearch & Grafana
我們使用 Docker Compose 快速搭建服務。
1. 目錄配置與權限處理
mkdir -p ~/monitoring/elasticsearch/data
# 確保 Elasticsearch 容器有權限讀寫資料目錄
sudo chown -R 1000:1000 ~/monitoring/elasticsearch/data
cd ~/monitoring
2. 撰寫 docker-compose.yml
version: '3.8'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.12.0
container_name: elasticsearch
environment:
- discovery.type=single-node
- "ES_JAVA_OPTS=-Xms8g -Xmx8g" # 視需求調整,建議佔實體記憶體 1/3
- xpack.security.enabled=true # 開啟安全性驗證
volumes:
- ./elasticsearch/data:/usr/share/elasticsearch/data
ports:
- 9200:9200
restart: always
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- 3000:3000
depends_on:
- elasticsearch
restart: always
五、 初始化與服務串接
1. 重設 Elasticsearch 密碼
啟動服務後,獲取預設 elastic 使用者的密碼:
sudo docker exec -it elasticsearch bin/elasticsearch-reset-password -u elastic
2. Grafana 登入與配置
- 網址:
http://[伺服器實體IP]:3000 - 預設帳密:
admin/admin(登入後需修改)。 - 新增資料源 (Data Source):
- 選擇 Elasticsearch。
- URL 指向
http://elasticsearch:9200(Docker 內部網路)。 - 開啟 Basic Auth,輸入帳號
elastic與剛取得的密碼。 - Index 名稱依據你的採集端定義 (如
logs-*)。
結語
透過以上步驟,你已經成功在 Oracle Cloud A1 實例上打好了扎實的 Linux 基礎,並建立了具備擴展性的監管環境。接下來,你可以進一步佈署 Filebeat 或 Logstash 來採集應用的 Log,並在 Grafana 上建立絢麗的儀表板。
本文同步刊登於 Personal Digital HQ