首頁 >後端開發 >Golang >令人興奮的 Go-lang 專案來啟動您的 DevOps 之旅

令人興奮的 Go-lang 專案來啟動您的 DevOps 之旅

Linda Hamilton
Linda Hamilton原創
2024-12-12 14:21:11556瀏覽

? 介紹

歡迎來到 DevOps 的世界! ?今天,我帶著另一個令人興奮的部落格回來了,幫助您更深入地了解 DevOps 任務的實際程式設計。在我之前的部落格中,我們探索了 3 個為 DevOps 自動化奠定基礎的 Python 專案。

現在,讓我們換個方向,探索 Go-lang 的力量!本部落格將引導您建立 3 個既實用又適合初學者的 Go-lang 專案:

  • 監控磁碟使用情況用於追蹤儲存統計資料的工具。
  • 使用 HTTP 伺服器託管履歷網站。
  • 用於管理 DevOps 工具的 RESTful API 程式

所以,拿起你最喜歡的程式碼編輯器,讓我們開始吧! ?


?先決條件

在我們深入建立這些項目之前,讓我們確保您的環境已設定完畢並準備就緒。這是您需要的:

1。 Go(Go 語)
您需要在系統上安裝 Go。根據您的作業系統執行以下步驟:

Windows

  • 從官網下載最新的Go安裝程式。
  • 執行安裝程式並按照螢幕上的指示進行操作。
  • 透過開啟命令提示字元或 PowerShell 並鍵入以下內容來驗證安裝:
go version

Ubuntu

  • 開啟終端機並運作:
sudo apt update  
sudo apt install -y golang
  • 驗證安裝:
go version

macOS

  • 使用Homebrew安裝Go。跑步:
brew install go
  • 驗證安裝:
go version

2。對Go的基本了解

雖然您不需要成為專家,但對變數、函數和結構等 Go 概念有基本的了解將有助於您順利地進行操作。如果您是 Go 新手,我建議您探索 Go Tour 以獲取快速介紹。

滿足這些先決條件後,您就可以開始建立這些很棒的 Go-lang 專案了! ?


?監控磁碟使用情況應用程式

讓我們從第一個專案開始我們的旅程—磁碟使用狀況監控工具。該程式將幫助您分析系統上任何指定目錄的磁碟使用情況。

您可以在我的 GitHub 儲存庫中找到原始程式碼。讓我們先建立一個名為 disk_usage.go 的檔案並加入以下程式碼:

package main

import (
    "fmt"
    "os"
    "syscall"
)
func getDiskUsage(path string) {
    var stat syscall.Statfs_t
    err := syscall.Statfs(path, &stat)
    if err != nil {
        fmt.Println("Error Fetching Disk Usage:", err)
        return
    }
    total := stat.Blocks * uint64(stat.Bsize)
    free := stat.Bfree * uint64(stat.Bsize)
    used := total - free
    percentUsed := float64(used) / float64(total) * 100
    fmt.Printf("Disk usage of %s:\n", path)
    fmt.Printf("Total: %d GB\n", total/1e9)
    fmt.Printf("Used: %d GB (%.2f%%)\n", used/1e9, percentUsed)
    fmt.Printf("Free: %d GB\n", free/1e9)
}
func main() {
    path := "/"
    if len(os.Args) > 1 {
        path = os.Args[1]
    }
    _, err := os.Stat(path)
    if os.IsNotExist(err) {
        fmt.Printf("Error: '%s' Path doesn't exist.\n", path)
        return
    } else if err != nil {
        fmt.Printf("Error occurred while accessing path %s: %v \n", path, err)
        return
    }
    getDiskUsage(path)
}

計畫如何運作:

  • 程式使用 syscall.Statfs 函數來取得磁碟統計信息,包括總空間、已使用空間和可用空間。
  • 它計算已用磁碟空間的百分比,並以使用者友好的方式格式化輸出。
  • 實作錯誤處理以檢查提供的路徑是否存在或存取它是否有問題。

運行程式
要運行該程序,請使用以下命令:

  • 查看特定目錄的磁碟使用情況:
go version
  • 如果不指定路徑,程式預設為根目錄(/):
sudo apt update  
sudo apt install -y golang

xciting Go-lang Projects to Kickstart Your DevOps Journey

由於我有一個分割區,如果我提供不同的路徑,我會得到相同的結果。

這個專案示範了 Go 如何與系統的底層 API 交互,使其成為系統監控任務的一個很好的起點。 ?


? HTTP 伺服器程式:託管組合網站

第二個專案涉及在 Go 中建立託管作品集網站的 HTTP 伺服器。此專案示範如何建立和提供靜態網站,同時合併健康檢查端點進行監控。

您可以在我的 GitHub 儲存庫中找到原始程式碼。

建構 HTTP 伺服器的步驟

  • 建立一個名為http_server.go的檔案並加入以下程式碼:
go version

如何運作

  • 靜態檔案伺服器:http.FileServer 函數提供 ./static 目錄中的檔案。
  • 健康檢查端點:定義 /health 路由以提供簡單的健康檢查指標。
  • 伺服器設定:伺服器預設偵聽連接埠 8090,並記錄啟動過程中的任何錯誤。

建立投資組合網站

  1. 結構:在靜態資料夾內,建立:

    • index.html
    • 樣式.css
    • 名為 images 的資料夾,其中包含名為 profile.jpeg 的個人資料圖片。
  2. 將以下內容加入您的文件中:

index.html:

brew install go

運行程式

  • 使用下列指令啟動 HTTP 伺服器:
go version
  • 您的作品集網站現在將位於: 本地主機:8090

訪問健康檢查
要檢查伺服器的健康狀況,請造訪:

package main

import (
    "fmt"
    "os"
    "syscall"
)
func getDiskUsage(path string) {
    var stat syscall.Statfs_t
    err := syscall.Statfs(path, &stat)
    if err != nil {
        fmt.Println("Error Fetching Disk Usage:", err)
        return
    }
    total := stat.Blocks * uint64(stat.Bsize)
    free := stat.Bfree * uint64(stat.Bsize)
    used := total - free
    percentUsed := float64(used) / float64(total) * 100
    fmt.Printf("Disk usage of %s:\n", path)
    fmt.Printf("Total: %d GB\n", total/1e9)
    fmt.Printf("Used: %d GB (%.2f%%)\n", used/1e9, percentUsed)
    fmt.Printf("Free: %d GB\n", free/1e9)
}
func main() {
    path := "/"
    if len(os.Args) > 1 {
        path = os.Args[1]
    }
    _, err := os.Stat(path)
    if os.IsNotExist(err) {
        fmt.Printf("Error: '%s' Path doesn't exist.\n", path)
        return
    } else if err != nil {
        fmt.Printf("Error occurred while accessing path %s: %v \n", path, err)
        return
    }
    getDiskUsage(path)
}

xciting Go-lang Projects to Kickstart Your DevOps Journey

此專案展示如何使用 Go-lang 建立一個用於託管靜態內容的功能性 Web 伺服器,並透過健康檢查端點進行額外監控。 ?


? RESTful API 專案:管理 DevOps 工具

在本部落格的最終專案中,我們將建立一個 RESTful API,讓您管理 DevOps 工具清單。該程式示範如何使用 Go 的 net/http 套件來處理 RESTful 路由和管理資料。

完整的原始程式碼可以在我的 GitHub 儲存庫中找到。

建置 RESTful API
第 1 步:主程式
建立一個名為 main.go 的檔案並加入以下程式碼:

go version

第 2 步:資料處理
在tools目錄中,建立一個名為data.go的檔案並新增:

sudo apt update  
sudo apt install -y golang

第 3 步:處理程序
在tools目錄中,建立另一個名為handler.go的檔案並新增:

go version

初始化模組

運行程式之前,初始化Go模組:

brew install go

這確保項目可以使用項目/工具包。

運行程式
透過運行啟動伺服器:

go version

測試 API

  1. 列出所有工具 若要取得工具列表,請使用:
package main

import (
    "fmt"
    "os"
    "syscall"
)
func getDiskUsage(path string) {
    var stat syscall.Statfs_t
    err := syscall.Statfs(path, &stat)
    if err != nil {
        fmt.Println("Error Fetching Disk Usage:", err)
        return
    }
    total := stat.Blocks * uint64(stat.Bsize)
    free := stat.Bfree * uint64(stat.Bsize)
    used := total - free
    percentUsed := float64(used) / float64(total) * 100
    fmt.Printf("Disk usage of %s:\n", path)
    fmt.Printf("Total: %d GB\n", total/1e9)
    fmt.Printf("Used: %d GB (%.2f%%)\n", used/1e9, percentUsed)
    fmt.Printf("Free: %d GB\n", free/1e9)
}
func main() {
    path := "/"
    if len(os.Args) > 1 {
        path = os.Args[1]
    }
    _, err := os.Stat(path)
    if os.IsNotExist(err) {
        fmt.Printf("Error: '%s' Path doesn't exist.\n", path)
        return
    } else if err != nil {
        fmt.Printf("Error occurred while accessing path %s: %v \n", path, err)
        return
    }
    getDiskUsage(path)
}

xciting Go-lang Projects to Kickstart Your DevOps Journey

輸出:

go run disk_usage.go /path/to/directory
  1. 新增工具 若要新增工具,請使用:
go run disk_usage.go

xciting Go-lang Projects to Kickstart Your DevOps Journey

輸出:

package main
import (
    "fmt"
    "net/http"
)
func healthCheckHandler(w http.ResponseWriter, r *http.Request) {
    w.WriteHeader(http.StatusOK)
    w.Write([]byte("OK"))
}
func main() {
    fs := http.FileServer(http.Dir("./static"))
    http.Handle("/", fs)
    http.HandleFunc("/health", healthCheckHandler)
    port := "8090"
    fmt.Printf("Starting server on port %s....", port)
    err := http.ListenAndServe(":"+port, nil)
    if err != nil {
        fmt.Println("Error starting server:", err)
    }
}
  1. 獲取工具詳細信息 要獲取特定工具的詳細信息,請使用:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Pravesh Sudha - Portfolio</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <header>
        <div>



<p><strong>style.css:</strong><br>
</p>

<pre class="brush:php;toolbar:false">body {
    font-family: Arial, sans-serif;
    margin: 0;
    padding: 0;
    line-height: 1.6;
    color: #333;
    background-color: #f9f9f9;
}

header {
    background: #4caf50;
    color: #fff;
    padding: 20px 0;
    text-align: center;
}
header .profile-picture {
    width: 150px;
    height: 150px;
    border-radius: 50%;
    margin-bottom: 15px;
}
header h1 {
    font-size: 2.5em;
    margin: 0;
}
header .subtitle {
    font-size: 1.2em;
    margin: 0;
}
main {
    padding: 20px;
    max-width: 800px;
    margin: 20px auto;
    background: #fff;
    border-radius: 8px;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}
main .about,
main .links {
    margin-bottom: 20px;
}
main .links ul {
    list-style: none;
    padding: 0;
}
main .links li {
    margin: 10px 0;
}
main .links a {
    color: #4caf50;
    text-decoration: none;
    font-weight: bold;
}
main .links a:hover {
    text-decoration: underline;
}
footer {
    text-align: center;
    padding: 10px 0;
    background: #333;
    color: #fff;
}

輸出:

go run http_server.go

xciting Go-lang Projects to Kickstart Your DevOps Journey


?結論

在本部落格中,我們探索了三個實用的 Go 項目,可協助您獲得軟體開發不同方面的實務經驗。從監控磁碟使用情況到建立簡單的 HTTP 伺服器,再到託管產品組合網站,最後創建 RESTful API 來管理 DevOps 工具,這些專案為任何希望提高 Go 程式設計技能的人提供了堅實的基礎。

  • 磁碟使用情況監控應用程式向您介紹了 Go 中的系統呼叫和基本檔案處理,讓您深入了解如何與電腦的檔案系統互動。
  • HTTP 伺服器專案 讓您學習如何提供靜態檔案並處理基本的健康檢查端點,幫助您開始使用 Go 進行 Web 開發。
  • RESTful API 專案示範如何建立 API、透過並發控制管理資料以及如何透過 POST 和 GET 請求使應用程式互動。

每個專案都是一個構建塊,可以擴展以適應實際應用程式。無論您是對監控系統、開發 Web 應用程式或建置 API 感興趣,Go 都能提供高效開發所需的簡單性和強大功能。

?如需了解更多資訊博客,請在 Hashnode、X(Twitter) 和 LinkedIn 上關注我。

到此為止,祝您編碼愉快! !

快樂學習! ?

以上是令人興奮的 Go-lang 專案來啟動您的 DevOps 之旅的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn