React Native Monitoring API
Instana React Native 代理程式 API
下一節說明 Instana React Native 代理程式的用法。 Instana 的 React Native 代理程式可以透過這裡說明的 Instana 類別方法來使用。
設定
儘早在 App 類別 ' componentDidMount()中起始設定 Instana:
export default class App extends Component {
componentDidMount() {
Instana.setup(YOUR_INSTANA_APP_KEY, YOUR_INSTANA_REPORTING_URL, null);
// Alternatively with configuration options
Instana.setup(YOUR_INSTANA_APP_KEY, YOUR_INSTANA_REPORTING_URL, {'collectionEnabled': false});
}
}
參數
參數
|
說明 |
|---|---|
key (String) |
Instana 監視配置金鑰 |
reportingURL (String) |
指向要將監視資料傳送至其中的 Instana 實例的 URL |
階段作業 ID
每一個 Instana 代理程式實例都有唯一的階段作業 ID ,您可以在應用程式中用於其他用途。
static getSessionID()
參數
傳回: Promise(String)
範例
var sessionID = await Instana.getSessionID();
自動 HTTP 監視
視圖
Instana 可以依邏輯視圖將行動式應用程式見解分段。 如果要這麼做,請透過 Instana.setView(String) 方法來設定視圖名稱。 然後,該視圖將與所有受監視信標相關聯,直到再次呼叫 setView 之後該視圖變更為止。
我們建議不要使用「類別」之類的技術或通用名稱 (例如 WebViewActivity) 以定義視圖。 建議使用視圖的可讀名稱,例如 product detail page 或 payment selection。 聚焦於使用者體驗,可讓團隊成員在對程式碼庫沒有深入瞭解的情況下,瞭解所提供的見解。
附註: 當畫面呈現給使用者時,應該會呼叫 Instana.setView(String) ,而不是在建立畫面時 (例如在可以建立一次但顯示多次的「片段」中)。 設定視圖名稱也會啟用 Instana ,以追蹤 除了頁面載入之外的頁面轉移。
static setView(String name)
參數
參數
|
說明 |
|---|---|
name (String) |
視圖的名稱。 |
範例
Instana.setView('Webview: FitBit authorization');
識別使用者
使用者特定資訊可以選擇性地與傳輸至 Instana 的資料一起傳送。 然後可以使用此資訊來解除鎖定更多功能,例如:
- 計算受錯誤影響的使用者數目,
- 過濾特定使用者的資料
- 以查看哪個使用者起始視圖變更或 HTTP 要求。
依預設, Instana 不會將任何使用者識別資訊與信標相關聯。 當您選擇這樣做時,請注意個別的資料保護法。 透過使用者 ID 來識別使用者。 對於 Instana ,它是透通的 String ,僅用於計算特定度量值。 userName 和 userEmail 也可以用來存取更多過濾器,以及更愉快地呈現使用者資訊。
在您處理匿名使用者因而無權存取使用者 ID 的情況下,您可以選擇使用階段作業 ID。 當您過濾資料時,階段作業 ID 沒有使用者 ID 那麼有用,但它們是用來計算受影響或唯一使用者度量值的良好指標。 設定使用者名稱 (例如 Anonymous ) ,以明確區分已鑑別與未經鑑別的使用者。 階段作業 ID 可以是機密資料 (視使用的架構或平台而定)。 考量雜湊階段作業 ID ,以避免將資料傳輸至可授與存取權的 Instana。
請務必注意,已傳輸至 Instana 伺服器的資料無法追溯更新。 基於此原因,請務必在應用程式啟動程序中儘早呼叫此 API。
static setUserID(String id)
static setUserName(String email)
static setUserEmail(String name)
參數
參數
|
說明 |
|---|---|
id (String) |
使用者的 ID。 |
email (String) |
使用者的電子郵件位址。 |
name (String) |
使用者的名稱。 |
範例
export default class App extends Component {
componentDidMount() {
Instana.setup(YOUR_INSTANA_APP_KEY, YOUR_INSTANA_REPORTING_URL);
Instana.setUserID('1234567890');
Instana.setUserEmail('instana@example.com');
Instana.setUserName('instana react-native agent demo');
}
}
meta 資料
任意 meta 資料可以附加至傳輸至 Instana 的所有資料。 請考量使用它來追蹤使用者介面配置值、設定、特性旗標 ... 任何可能有助於分析的其他環境定義。
附註 :Instana 目前最多支援 50 個 meta 鍵值組。
static setMeta(String key, String value)
參數
參數
|
說明 |
|---|---|
value (String) |
您要新增為 meta 資料之鍵值組的 value 。 |
key (String) |
您要新增為 meta 資料之鍵值組的 key 。 |
範例
export default class App extends Component {
componentDidMount() {
Instana.setMeta('randomKey1', 'randomValue1');
Instana.setMeta('randomKey2', 'randomValue2');
}
}
報告自訂事件
自訂事件可讓您將非標準活動、重要互動及自訂計時報告給 Instana。 當您分析未捕捉的錯誤 (瀏覽途徑) 並追蹤更多效能度量值時,它特別有用。
static reportEvent(String eventName, {
startTime: Number startTime,
duration: Number duration,
viewName: String viewName,
backendTraceId: String backendTraceId,
meta: Map meta
})
參數
參數
|
說明 |
|---|---|
eventName (String) |
定義應用程式中發生的應導致傳輸自訂信標的事件類型。 |
startTime (Number,選用) |
自 Epoch 以來的時間戳記 (毫秒) ,指出事件開始的時間。 未定義時回復為 now() - duration 。 |
duration (Number,選用) |
事件持續多久的持續時間 (毫秒)。 預設值為零 |
viewName (String,選用) |
您可以傳遞字串,將要求分組至視圖。 如果您明確傳送零,則會忽略 viewName 。 或者,您可以省略參數 viewName ,以使用您在 setView(String name)中設定的現行視圖名稱) |
backendTracingId (String,選用) |
用來建立此事件的後端追蹤的 ID。 |
meta (object,選用) |
具有字串值的 JavaScript 物件,可用來僅針對此單一事件將 meta 資料傳送至 Instana。 相對於 meta 資料 API 的使用,此 meta 資料未包含在後續的引標中。 |
範例
Instana.reportEvent('myCustomEvent', {
startTime: Date.now() - 500,
duration: 300,
viewName: 'overridenViewName',
backendTracingId: '31ab91fc1092',
meta: {
state: 'running'
}
});
從監視排除 URL
如果要忽略 URL ,請提供正規表示式,並將它們新增至 ignoreURLs 清單。 使用此功能的良好實務範例是忽略包含任何機密資料 (例如密碼) 的所有 HTTP 要求。
請記住,代理程式需要將您提供給 setIgnoreURLsByRegex 方法的每一個字串轉換為每一個受支援平台的原生正規表示式。 我們強烈鼓勵您追蹤任何 Promise 拒絕,這會通知您代理程式在解譯您的輸入時所遇到的任何問題。
static setIgnoreURLsByRegex([]String regexArray)
參數
參數
|
說明 |
|---|---|
regexArray |
String 物件的陣列,其中包含符合您要忽略之 URL 的正規表示式。 |
傳回: Promise(Boolean)。 如果拒絕,異常狀況會包含無法轉換成原生正規表示式的所有參數清單
範例
export default class App extends Component {
componentDidMount() {
setIgnoreURLsByRegex();
async function setIgnoreURLsByRegex() {
try {
await Instana.setIgnoreURLsByRegex(["http:\/\/localhost:8081.*", "/.*([&?])password=.*/i"]);
} catch (e) {
console.warn(e);
}
}
}
此範例會忽略 Metro bundler 的所有查詢,以及在查詢中包含密碼的所有 URL。
編寫 URL 查詢參數
所收集 URL 中的查詢參數可能包含機密資料。 因此, Instana 代理程式支援為需要編寫其值的查詢參數索引鍵指定 regex 型樣。 任何需要編寫的值都將取代為字串 <redacted>。 在 Instana 代理程式向 Instana 伺服器報告之前,會先在 Instana 代理程式內進行編寫。 因此,密鑰將無法到達 Instana 伺服器進行處理,且無法在 Instana 使用者介面中進行分析或使用 Instana API 進行擷取。
依預設, Instana 代理程式會配置三個正規表示式型樣的清單,以自動編寫索引鍵 "password"、"key" 及 "secret" 的查詢參數值。
static setRedactHTTPQueryByRegex([]String regexArray)
```#### <a href="#parameters-7"><img src="../ecosystem/icons2/anchor.svg" width="15px" height="15px"></img></a> Parameters
{: #parameters-7}
| <div style="width:230px">Parameter</div> | Description |
| --------------------------------- | --------------------------------------------- |
| `regex ` (`[NSRegularExpression]`) | An array of `String ` matching the keys for the values that you want to redact. |
#### <a href="#example-6"><img src="../ecosystem/icons2/anchor.svg" width="15px" height="15px"></img></a> Example {: #example-6}
```javascript {: codeblock}
export default class App extends Component {
componentDidMount() {
setRedactHTTPQueryByRegex();
async function setRedactHTTPQueryByRegex() {
try {
await Instana.setRedactHTTPQueryByRegex(["pass(word|wort)"]);
} catch (e) {
console.warn(e);
}
}
}
此範例會編寫 http 參數金鑰 "password" 或 "passwort" 的值。 擷取的 URL https://example.com/accounts/?password=123&passwort=459 將收集並顯示為 https://example.com/accounts/?password=<redacted>&passwort=<redacted>。
附註: Instana 代理程式不支援處理路徑參數 (/account/
擷取 HTTP 標頭
Instana 代理程式可以選擇性地擷取每一個追蹤要求/回應的 HTTP 標頭。
可以定義正規表示式型樣清單,以決定將擷取哪些標頭。
如果要求及其回應中都有相同的標頭名稱,則只會保留回應的標頭值。
static setCaptureHeadersByRegex([]String regexArray)
範例
export default class App extends Component {
componentDidMount() {
setCaptureHeadersByRegex();
async function setCaptureHeadersByRegex() {
try {
await Instana.setCaptureHeadersByRegex(["cache-control", "etag"]);
} catch (e) {
console.warn(e);
}
}
}
慢速傳送模式
附註: 依預設,會停用慢速傳送模式特性。 必要的話,您可以啟用此特性。
依預設,如果傳送信標失敗, Instana 代理程式會嘗試重新傳送信標,直到傳送成功為止。 然而,此行為在某些行動網路中無法正常運作。 透過啟用慢速傳送模式特性,信標傳送間隔會變更為指派給 slowSendInterval 參數的時間值。 每一個傳送只包含一個引標,而不是一個批次 (批次中最多 100 個引標)。 Instana 代理程式會保持慢速傳送模式,直到順利傳送一個引標為止。
slowSendInterval 參數的有效時間範圍是 2-3600 秒。
範例
export default class App extends Component {
componentDidMount() {
var options = {}
options.slowSendInterval = 120.0;
Instana.setup('<your key>', '<your reporting url>', options);
}
}
使用者階段作業 ID
依預設,會追蹤使用者階段作業,且 ID 是隨機產生的「通用唯一 ID (UUID)」。 安裝應用程式時,此 ID 保持不變。 您可以使用 usiRefreshTimeIntervalInHrs 參數來配置使用者階段作業 ID 的有效期限。 下列參數值指出使用者階段作業 ID 的狀態:
負數: 此值指出使用者階段作業 ID 永不到期。 預設值為 -1。
正數: 此值表示在設定時間之後重新整理使用者階段作業 ID ,亦即產生並使用新的 UUID。
零: 以 0.0 表示的這個值表示已停用使用者階段作業 ID。
範例
export default class App extends Component {
componentDidMount() {
var options = {}
options.usiRefreshTimeIntervalInHrs = 24.0;
Instana.setup('<your key>', '<your reporting url>', options);
}
}