Skip to content
Anonymous

Oracle Cloud A1 Flex: Ubuntu 系統初始化與監控系統建置全攻略

取得 Oracle Cloud (OCI) 免費的 A1 Flex 執行個體後,首要任務便是系統最佳化。本文將帶你從基礎環境設定、安全性配置到 Docker 監控環境建置,發揮 ARM 核心的強大效能。

#Oracle Cloud #OCI #Ubuntu #Docker #Elasticsearch #Grafana #DevOps

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 ListNetwork 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 基礎,並建立了具備擴展性的監管環境。接下來,你可以進一步佈署 FilebeatLogstash 來採集應用的 Log,並在 Grafana 上建立絢麗的儀表板。


本文同步刊登於 Personal Digital HQ