日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

远程监控Swift生产服务器运行

發布時間:2024/3/12 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 远程监控Swift生产服务器运行 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

相信所有Swift全棧的程序員一定都會頭疼一個很大的問題:如何監控已經部署成功的Swift服務器?

上周,Perfect 團隊剛剛宣布了Perfect New Relic Library for Linux,即基于NewRelic.com提供的服務器云端監控的方法。


通過在Linux生產服務器增加new relic服務,并將監控代碼段植入源程序后,您可以自行選擇監控指標(比如CPU/內存/當前用戶數量)并可以將數據庫或服務器在執行關鍵的寫入過程中分析交易過程(Transaction)消耗的時間:


一旦成功設定,您還可以設置監控指標、下載手機應用,實現管理員24x7不間斷監控。


本項目為New Relic云監控服務的Swift 版本 Agent SDK.

本項目采用SPM軟件包管理器編譯,是Perfect 項目的一部分,但也可以作為獨立模塊使用。

發行說明

本項目只兼容 Ubuntu 16.04 和 Swift 3.1 工具鏈。

快速上手

請用Perfect 軟件助手編譯本項目,否則請使用下列命令進行安裝:

$ git clone https://github.com/PerfectlySoft/Perfect-NewRelic-linux.git $ cd Perfect-libNewRelic-linux $ sudo ./install.sh

在安裝過程中,該產品會詢問您在New Relic上注冊的 license key 許可證代碼, application name 應用程序名稱, 開發所用的語言及其版本號。之后安裝程序會將命令行 newrelic-collector-client-daemon 作為系統服務進行安裝,安裝完成后詳細配置可以在這里找到: /usr/local/etc/newrelic.service.

請配置您工程的 Package.swift 文件并追加下列內容:

.Package(url: "https://github.com/PerfectlySoft/Perfect-NewRelic-linux.git", majorVersion: 1)

請將函數庫導入您的程序( ??注意?? 由于 Swift 3.1 linux 版本存在一個明顯的編譯器問題,因此 PerfectNewRelic 導入時必須配合 Foundation 函數庫):

import PerfectNewRelic import Foundation

除了 Swift 與 C 一些語法上的轉化差異之外,詳細的編程手冊情參考 New Relic Agent SDK

配置

安裝后的配置可以在 New Relic - Configuring the Agent SDK 找到,請注意強烈推薦將其配置為Daemon Mode 服務程序模式 因為截至目前為止 Embedded-mode嵌入模式 仍然處于試驗狀態。

如果配置成功,您可以很輕易地創建NewRelic類的例程:

let nr = try NewRelic()
  • 還可以創建回調函數來判讀后臺服務的狀態:
nr.registerStatus { code inguard let status = NewRelic.Status(rawValue: code) else {// 出錯了}//end guardswitch status {case .STARTING: // NewRelic Daemon 服務正在啟動case .STARTED: // NewRelic Daemon 服務啟動成功case .STOPPING: // NewRelic Daemon 服務正在停止default: // NewRelic Daemon 服務已經關閉}//end case }//end callback

Agent SDK 配置和限額

根據 New Relic Agent SDK 配置說明,以下配置信息同樣適用于Perfect NewRelic函數庫:

目標操作……配置方案……
在事務操作過程中關閉服務器性能數據采集nr.enableInstrumentation(false)
在事物操作過程中配置允許用于追蹤的最大分段數量let t = try Transaction(nr, maxTraceSegments: 50) // 最多猜忌50個追蹤段

API 簡要說明

根據 New Relic 開發工具使用說明,Perfect NewRelic 函數庫提供與其C語言函數庫完全一樣的功能:

性能指標和監控

函數recordMetric()
舉例try nr.recordMetric(name: "ActiveUsers", value: 25)
描述記錄一個自定義指標
參數
  • name: 指標名稱;
    - value: 指標數值;
函數recordCPU()
舉例try nr.recordCPU(timeSeconds: 5.0, usagePercent: 1.2)
描述記錄CPU用戶占用時間(秒)以及CPU占用百分比。
參數
  • timeSeconds: Double, 用戶CPU消耗時間
    - usagePercent: Double, CPU 占用百分比
函數recordMemory()
舉例try nr.recordMemory(megabytes: 32)
描述記錄當前內存用量
參數
  • megabytes: Double,內存消耗(單位:兆字節)

Transaction 事務對象

Perfect NewRelic 的事物對象Transaction 被定義為一個Swift類,構造函數如下:

public init(_ instance: NewRelic,webType: Bool? = nil,category: String? = nil,name: String? = nil,url: String? = nil,attributes: [String: String],maxTraceSegments: Int? = nil) throws

參數說明

  • instance: NewRelic 實例, 必填參數.
  • webType: 可選參數,真表示 WebTransaction,假則為其他類型。默認為真。
  • category: 可選參數. 事務分類名稱,默認為 ‘Uri’
  • name: 可選參數. 事務名稱
  • url: 可選參數. 對于 WebTransaction 所使用的URL鏈接
  • attributes: 可選參數. 事務的屬性,字典類型,字典內每個字段對應一個變量值。
  • maxTraceSegments: 可選參數. 在同一個事務內可以跟蹤的最大區段數量限額。默認最大值為2000,也就是說在同一個事務里,如果區段數量超過計劃限額(四倍的apdex_t)時,只有頭2000個分段將用于跟蹤報告。

事務類初始化代碼示范

let nr = NewRelic() let t = try Transaction(nr, webType: false,category: "my-class-1", name: "my-transaction-name",url: "http://localhost",attributes: ["tom": "jerry", "pros":"cons", "muddy":"puddels"],maxTraceSegments: 2000)

錯誤通知

Perfect NewRelic 為事務提供 setErrorNotice() 函數:

try t.setErrorNotice(exceptionType: "my-panic-type-1",errorMessage: "my-notice",stackTrace: "my-stack",stackFrameDelimiter: "<frame>")

setErrorNotice() 方法參數說明:

  • exceptionType: 出錯類型
  • errorMessage: 錯誤信息
  • stackTrace: 堆棧跟蹤
  • stackFrameDelimiter: 堆棧分隔符

Segments 區段

一個事務類型中的區段類型可以是 Generic (通用)、DataStore(數據存儲)或者External(外部調用),參考如下代碼

// 假如 t 是一個Transaction 對象例程 let root = try t.segBeginGeneric(name: "my-segment") // 執行某些常規操作 try t.segEnd(root)// 注意:下面調用方法采用自動 Obfuscation 混合方法并采用自動跟蹤回滾: let sub = try t.segBeginDataStore(table: "my-table", operation: .INSERT, sql: "INSERT INTO table(field) value('000-000-0000')") // 執行某些數據操作 try t.segEnd(sub)let s2 = try t.segBeginExternal(host: "perfect.org", name: "my-seg") // 執行某些外部調用 try t.segEnd(s2)

參數說明:

  • parentSegmentId: 父區段代碼。默認為零,也就是NewRelic.ROOT_SEGMENT.
  • name: 區段名稱

掃一掃 Perfect 官網微信號

如果您喜歡,請加入我們的Slack中文頻道:http://perfect.ly

另外,更歡迎到我們的github上點亮一顆大星星 ? https://github.com/PerfectlySoft/Perfect

總結

以上是生活随笔為你收集整理的远程监控Swift生产服务器运行的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。