[toc]
Infoblox 提供報表和分析 (Reporting and Analytics) 解決方案,會自動收集、分析和呈現核心網路服務數據,協助管理者規劃管理網路。除了提供預先定義的儀表板和報表,可取得核心網路服務相關活動和效能資訊。也提供了增強性報表介面,以便管理者可以自行建立儀表板、報表和警報。
# 啟用報表功能
請先參考 Infoblox NIOS 9 官方文件 [[Setting Up Reporting and Analytics]](https://docs.infoblox.com/space/nios90/280857309/Setting+Up+Reporting+and+Analytics),完成 Reporting 服務組態並確認服務正常啟用。
點選 **Grid** > **Grid Manager** > **Reporting**,確認 Reporting 服務狀態正常。

點選 **Reporting** 繼續還需要完成 **App Configuration** 任務。
> 就是覺得重複性的畫面點擊設定很麻煩!如果也可以用 API 完成就好了?!

設定外部檔案伺服器以提供查詢匯出,若是測試不需要,就任意輸入內容完成即可。

:::warning
若是後續的警報、報表需要匯出至檔案伺服器時,就要重新配置此選項。
點選 **Reporting** 功能,確認 Apps 選單為 **Infoblox Reporting & Analytics**,再點選上方 **Administration** > **Set up** 後,便可調整檔案服務器選項。

:::
:::warning
在 Reporting 功能頁,點選右上方 **Settings** > **Alert actions**,可以設定警報和報表觸發時的作動行為。
<img width=300 src='https://hackmd.io/_uploads/rkePgftA6.png'><br>
其中 **File Transfer Action** 功能就需要設定正確的檔案伺服器,點選右側 **Setup Infoblox Reporting & Analytics** 進行組態。

只不過在我的系統上點選設定後會出現 "**我是傳奇**"?!見 :ghost: 了!暫時就用上面提供的方式進行設定吧!
<img width=280 src='https://hackmd.io/_uploads/BJbB7zKRp.png'>
:::
## 目前設定
選擇 **Grid** > **Grid Manager** > **Reporting**,點擊 **`鉛筆圖示`** 進行編輯。

- 確定進入 **Grid Reporting Properties** 配置,並確認以下設定。
- **`Reporting Server`** 配置主機是否正確。
- 勾選 **`Enable Data Indexing`** 啟用資料傳輸 (預設停用)。
- **報表類別(`Report Category`)** 設定,選擇報告伺服器產生的報表類別。報告伺服器會根據報表類別,自動設定產生所需的資料來源和配置。所需的資料儲存在報告伺服器資料庫中。預設未選擇任何報表類別,至少選擇一種類別,服務才能正常運作。
| Category<br>報表類別 | Index %<br>報表索引儲存空間 | Index Name<br>報表索引名稱 |
| --- | :-: | -- |
| Audit Log | 5 | ib_audit |
| DNS Query<br>DNS Performance<br>DNS Record Scavenging | 20 | ib_dns<br>ib_dns_summary |
| Security | 5 | ib_security<br>ib_security_summary |
| Syslog | 5 | ib_syslog |
| System Capacity | 5 | ib_system_capacity |
| System Utilization | 15 | ib_system<br>ib_system_summary |
| **Total** | **55** | 索引值加總不大於 100 |


:::info
- **`Index %`** 為報表索引所指派的實際儲存空間。
- 啟用類別並將索引設定為 0% 時,會顯示錯誤訊息。**若啟用該報表類別,至少設定為 1%**。
- 若配置索引儲存空間的加總百分比低於 100%,系統會顯示警告訊息。

- 以上配置僅為一般使用設定,若有其他報表分析需求,請參考 [[**官方文件:Grid Reporting Properties**]](https://docs.infoblox.com/space/nios90/280267688/Grid+Reporting+Properties) 進行調整。
:::
# 報表功能
:::warning
:warning: **警告**
- 原廠建議**不要直接修改預先定義的項目 (包含告警、報表和儀表板)**。因為編輯預先定義項目將會更改預設設定,而且變更將永久生效。
- **建議作法**:複製所選擇的預先定義項目,修改其相關配置以符合需求。
:::
## 操作主頁面
點選 **Reporting** 功能選項,若報表服務正確運行,應會顯示 **首頁儀表板 Home Dashboard** 為主頁的報表使用介面。

- 報表主頁面板功能概覽
:::info
詳細說明請參考 [[**官方文件 Reporting User Interface Overview**]](https://docs.infoblox.com/space/nios90/280857174/Reporting+User+Interface+Overview)
:::

報表面板功能區主要分成兩部份:
- **報表主要功能**:提供儀表板、報表、警報、搜尋、報表資料庫和管理權限項目。

- **報表組態及任務狀態**:提供報表訊息、報表內容及格式內容、郵寄報表、警報活動和 Splunk 線上文件。

## 搜尋 (Search)
**搜尋是報告伺服器用來儲存報表和儀表板面板的基本條件**。每個預先定義的報表也都有一個關聯的搜尋。詳細資訊請參閱 [[Splunk 官方文檔]](http://docs.splunk.com/Documentation)。
輸入搜尋條件,並選擇**時間範圍(預設為過去 24 小時)**,點擊搜尋圖示進行資料搜索檢視。點選 **Visualization** 可視覺化搜尋數據。點擊右上方 **另外儲存 (Save As)** 可將搜尋結果為**報表**、**警報**和**儀表板面板**。

:::info
- 上述搜尋語法取自 **`Reports: CPU Utilizaion Trend`**。
```=
index=ib_system_summary report=si_cpu_usage
| timechart bins=1000 avg(CPU_PERCENT) by orig_host where max in top5 useother=f
| interpolate 1200
```
:::
點選紅框標注的 **匯出(Export)** 圖示,可以將搜尋資料匯出成 **CSV/XML/JSON** 格式的檔案。
<img width=540 src='https://hackmd.io/_uploads/HJMGsdTaT.png'>
<img width=400 src='https://hackmd.io/_uploads/ryauo5p66.png'>
:::info
由此可知,所有的報表、警報和儀表板面板,都可透過搜尋條件產生,管理者可根據條件及環境,客製化所需的數據顯示方式,以便提高管理效益。
:::
## 警報 (Alert)
管理者可以設定在發生指定事件時觸發操作警報。透過搜尋結果設定警報條件,若符合條件則會觸發警報操作。警報告知可用電子郵件通知(mail notification)、SNMP 陷阱(SNMP trap)和在系統日誌中記錄訊息。警報是根據對應搜尋的更新頻率而執行的。

### 建立警報
從預先定義警報開始吧!輸入 **`search-dns`** 篩選警報項目。點選 **Edit** 可以編輯該警報類型、觸發條件、警報動作和克隆(Clone)警報。
我們選擇 **si-searhc-dns-rpz-hits** 警報,點擊 **Open in Search** 先在搜尋中開啟設定條件。
:::warning
**注意** 請不要直接修改系統預設定義的設定,若要編輯或新增,可透過克隆及搜尋方式,自行調整,完成後另存。
:::

從搜尋結果顯示,發現系統有多筆符合 RPZ 比對規則事件發生,表示 DNS 防火牆正常作用,內部有不正常的網域查詢行為。

點選 **Custom time**,可以調整搜尋時間範圍,該警報的預設為目前時間的前 10~20 分鐘。
:::info
- 前 20 分鐘以 `-20m@m` 表示。
- `Earliest Time` 表示最早時間,`Latest Time` 表示最晚時間,時間視窗指的是 `Latest Time` - `Earliest Time`。
- {`Earliest=-30m@m`, `Latest=now`} 表示 30 分鐘前,{`Earliest=@d`, `Latest=now`} 則表示今天。有關時間範圍設定,請參考 Splunk 文件說明
- [Select time ranges to apply to your search](https://docs.splunk.com/Documentation/Splunk/8.2.10/Search/Selecttimerangestoapply)
- [Specify time modifiers in your search](https://docs.splunk.com/Documentation/Splunk/8.2.10/Search/Specifytimemodifiersinyoursearch)
:::
點擊 **`Save As`** 另存成警報。
<img width=480 src='https://hackmd.io/_uploads/BJ_1JiR66.png'><br>
根據警報內容指定標題,其他警報設定暫時都使用原先設定。
<img width=480 src='https://hackmd.io/_uploads/r14_ksRa6.png'><br>
在**觸發動作 (Trigger Actions)** 區塊,點擊 **`+ Add Actions`**,選擇 **`Send email`** 設定警報觸發時[**發送電子郵件**](#設定郵件通知)。

在收件者區域中指定電子郵件地址,其餘部份暫時採用預設組態。點選 **Save** 儲存警報。

在 **Alert** 頁面,選擇 **Yours**,可以直接檢視自行定義的警報項目。

接著可以嘗試觸發警報條件讓警報進行作動,執行 BASH 腳本進行觸發警報。
<img width=360 src='https://hackmd.io/_uploads/SJccPaCT6.png'><br>
點擊右上方區域 **Activity** > **Triggered Alerts**,來檢視已觸發的警報資訊。
<img width=480 src='https://hackmd.io/_uploads/rkwUjnA6a.png'>
可以根據警報的 **Owner**、**Severity** 和 **Alert** 篩選警報,也可透過右上方輸入關鍵字搜尋警報。

可觀察到警報都按照設定的每 10 分鐘執行 (`2-59/10 * * * *`),只要滿足條件觸發就會發出警報。

:::danger
當初設定錯誤,完全誤解下列結果:
從公司郵箱可以收到告警通知郵件。其實下列郵件是透過 Infonlox 系統通知(Notification)發出的郵件通知。
<img width=320 src='https://hackmd.io/_uploads/rkUJPaRaa.png'><br>
<img width=320 src='https://hackmd.io/_uploads/BysJP6Cpp.png'>
:::
## 報表 (Report)
有了警報製作的經驗,報表製作也是進行類似的動作。當然系統內建了預先定義搜尋條件的報表,用來從資料庫中檢索特定資料。原廠**不建議修改預先定義的報表**。
:::info
**建立自定義報表**
- 執行搜尋,將搜尋結果另存為報表。
- 複製現有報表,修改搜尋條件儲存。
:::
### 建立報表
透過 **Reporting** > **Reports**,選擇預先定義報告 **CPU Utilization Trend**,點擊 **`Open in Search`** 開啟於搜尋頁面。

調整一下時間範圍為**一個月**,點擊 **Apply** 套用,檢視該報表資訊是否合用。

如同製作警報一樣,點選右上方 **Save As** > **Report**,將搜尋結果儲存為自定義的報表。

編輯報表資訊,點擊 **Save** 完成。
<img width=400 src='https://hackmd.io/_uploads/BycZYAAaT.png'>
:::danger
**注意**
若該報表規劃為排程報表,**請勿啟用 Time Ranger Picker**。
<img width=400 src='https://hackmd.io/_uploads/HJyfeCyRa.png'>
:::
建立報表完成後,可依照畫面功能繼續下一步設定。
<img width=400 src='https://hackmd.io/_uploads/Sko8K0Rpp.png'>
之後若要檢視自定義報表,可以選擇 **Reporting** > **Reports** > **Yours**。

直接點選報表連結即可展開報表檢視。

## 儀表板 (Dashboard)
儀表板可以提供 Infoblox Grid 中大多數資料和趨勢的摘要視圖,原廠也提供預先定義的儀表板清單使用。若管理者需要修改預設儀表板的設置,可以複製預設的儀表板,或從頭開始建立新儀表板。透過建立自行定義的儀表板,可以依據需求配置面板和報表,以顯示與監控活動的相關資訊。
:::info
透過儀表板面板配置,可將**多個報表資訊在一個儀表板**上同時呈現。
:::
選擇 **Reporting** > **Dashboards**,可正確顯示預先定義的儀表板(predefined dashboards)清單。

### 製作儀表板
儀表板製作的方式及流程,也是與警報、報表類似,請根據上述的經驗快速達成。
:::warning
**注意** 請不要直接修改系統預設定義的設定,若要編輯或新增,可透過克隆及搜尋方式,自行調整,完成後另存。
:::
#### 複製儀表板
進入 **Reporting** > **Dashboards** 功能頁面,輸入關鍵字 **`home`** 取得儀表範本。
> **Home Dashboard** 就是 Reporting 主頁的儀表板。
點選該儀表板右側 **Edit** > **Clone** 複製預先定義儀表板。

填入所需資訊,點選 **Clone Dashboard**。
<img width=400 src='https://hackmd.io/_uploads/r1yQceDaT.png'>
:::info
若是不想變更原有的**權限 (Permissions)** 的話,可以點選 **Clone** 複製權限。預設選項為 **Private**,僅有儀表板建立者可供使用。之後編輯儀表板可變更權限。
:::
複製完成後,可以點選其他設定功能。
<img width=400 src='https://hackmd.io/_uploads/S1tPqxwpa.png'>
先直接點擊 **View** 檢視結果吧。

回到 **Reporting** > **Dashboards** 檢視剛剛複製的儀表板,其擁有者(owner)為 **`infoblox-admin`**。

### 新增儀表板
儀表板提供多個面板及報告新增至儀表板,可根據不同管理需求,自行定義建立儀表板,但較為便利的方式,就是以原廠提供預先定義的儀表板或報表作為範本,進行調整後產生。
在此之前,我們先新增一個新的儀表板,作為**儀表板容器**。從 **Reporting** > **Dashboards** 進入儀表板功能,點擊右側 **Create New Dashboard** 新增儀表板容器。

輸入 **Dashboard Title** 標題名稱,這裡不用介意之後還可以進行修改。
:::warning
但這裡設定的標題名稱會影響 **`Dashboard ID`**,在 Reporting 資料庫中,識別碼應該是檔案名稱,必須唯一存在。
:::
儀表板類型先選擇 **Classic Dashboards** 類型,這也是目前 Infoblox Reporting 主要使用的儀表板型態。至於 **Dashboard Studio** 是 Splunk 最新版本的儀表板類型,有興趣的請參考下列資訊研究。
:::info
- **Classic Dashboards** 是 Splunk 傳統類型儀表板。
- **Dashboard Studio** 是 Splunk 最新版本的新型儀表板。相關資訊請參考
[[**Splunk 官方說明**]](https://docs.splunk.com/Documentation/Splunk/8.2.4/DashStudio/IntroFrame)。
:::
點擊 **Create** 完成儀表板容器建立。
<img width=440 src='https://hackmd.io/_uploads/ByLypxw66.png'>
### 編輯儀表板
新儀表板建立完成後,**裡面什麼都沒有**!對,就是剛剛提到的**儀表板(空白)容器**。

先點選右上方 **Edit** 編輯儀表板,再點選左上方的 **Source**。

此時會顯示儀表板的 XML 語法組態。待會我們會**使用編輯 XML 設定的方式來編修儀表板**容器。

暫時先使用之前學到的技巧,將報表 **`CPU Utilization Trend`** 另存至新增的儀表板容器中。先找到相關報表,並顯示於搜尋頁面。

選擇 **Save As** > **Existing Dashboard**,將該報表儲存在指定已存在的儀表板(Existing Dashboard)。

選擇先前新增的儀表板容器,點擊 **Save to Dashboard** 完成儲存。
<img width=400 src='https://hackmd.io/_uploads/rJixhQxAT.png'><br>
這時原先空白的儀表板容器,多了一個 CPU 使用率的面板。

再次查看儀表板 XML 原始檔,發現原本空白的儀表板容器多了一些組態資訊,紅框標注的部份就是使用 UI 流程加入的報表面板。

當然,我們可以這樣一步一腳印,用剛剛 UI 設定的流程步驟,將相關的面板和報表加入儀表板容器。但如果有儀表板或面板的 XML 範本組態檔,**直接編修原始檔案儲存,就可以快速完成自定義儀表板了**!
### XML 編輯
使用原廠提供的 **`CPU Utilization Trend`** 報表並取出以下的 XML 格式組態。
```xml=
<row>
<panel>
<title>CPU Utilization Trend 詳細視圖</title>
<chart>
<search ref="CPU Utilization Trend (Detailed)"></search>
<option name="charting.chart">line</option>
</chart>
</panel>
</row>
```
按照下圖將取得的 XML 組態,置於另一個 **`<row>...</row>`** 區塊上方。同時編輯 **`<label></label>`** 變更儀表板標題名稱。

結果清楚可見!

#### 匯入 XML 組態
從 Infoblox Community 找到專家分享的儀表板範本,按照上述的方式建立儀表板。

該儀表板範本提供以下功能面板:
> 我將部份測試環境用不到或是沒有資料產生的報表面板,用 **`<!--` ... `-->`** 註解封印起來,若後續環境允許再開啟吧。
- **DNS Daily Peak Hour Query Rate by Member - Last 30 Days**
DNS Query rate (QPS) at the busiest hour within a day. One data point per day.
- **DNS Query Rate by Member - Last 7 Days**
QPS plotted every 10 minutes.
- **DNS Query Count - Last 30 Days**
The total DNS query count over the last 30 days.
- **Reporting Disk Utilization**
The capacity (GB), usage (GB) and utilization (%) of each of the file systems used for Reporting
- **DNS kQPS Usage - Last 365 Days (Requires 8.5+)**
Measures every 10 min for a kQuery per second (kQPS) count and records a max for the day. Then displays the 5 day rolling average of those maxes. One data point per day. Report will be empty if not on 8.5 or later code.
##### 儀表板 XML 組態
```xml
<dashboard>
<label>DEMO LAB::Metrics Collection</label>
<description>Value Metrics Collections and Capacity Planning</description>
<row>
<panel>
<title>DNS Daily Peak Hour Query Rate by Member - Last 30 Days</title>
<chart>
<search>
<query>index=ib_dns_summary report=si_dns_member_qps_trend_per_hour | lookup dns_viewkey_displayname_lookup VIEW output display_name | rename orig_host as host | msservers MS_SERVER | eval source_host=if(MS_SERVER !="", coalesce(ms_resolved_names,ms_resolved_ips),host) | stats avg(QCOUNT) as avg_COUNT, max(QCOUNT) as max_COUNT by _time source_host VIEW | bucket span=1d _time | streamstats max(avg_COUNT) as MAX_AVG_COUNT by _time, source_host, VIEW | eval avg_COUNT = if (avg_COUNT == MAX_AVG_COUNT, avg_COUNT, 0) | eval max_COUNT = if (avg_COUNT == MAX_AVG_COUNT, max_COUNT, 0) | stats max(avg_COUNT) as avg_COUNT, max(max_COUNT) as max_COUNT by _time, source_host, VIEW | timechart span=1d eval(max(max_COUNT)/600) by source_host where max in top500 useother=f | interpolate 172800</query>
<earliest>-30d@d</earliest>
<sampleRatio>1</sampleRatio>
</search>
<option name="charting.legend.placement">none</option>
<option name="charting.chart">area</option>
<option name="charting.chart.stackMode">stacked</option>
</chart>
</panel>
</row>
<row>
<panel>
<title>DNS Query Rate by Member - Last 7 Days</title>
<chart>
<search>
<query>index=ib_dns_summary report=si_dns_member_qps_trend | lookup dns_viewkey_displayname_lookup VIEW output display_name | rename orig_host as host | msservers MS_SERVER | eval source_host=if(MS_SERVER !="", coalesce(ms_resolved_names,ms_resolved_ips),host) | stats sum(QCOUNT) as QCOUNT by _time source_host | timechart bins=1000 eval(avg(QCOUNT)/600) by source_host where max in top500 useother=f | interpolate 1200</query>
<earliest>-7d@d</earliest>
<sampleRatio>1</sampleRatio>
</search>
<option name="charting.legend.placement">none</option>
<option name="charting.chart">area</option>
<option name="charting.chart.stackMode">stacked</option>
</chart>
</panel>
</row>
<row>
<panel>
<table>
<title>DNS Query Count - Last 30 Days</title>
<search>
<query>index=ib_dns sourcetype=ib:dns:query:by_member | bucket _time |stats sum(QCOUNT) as QCOUNT | rename QCOUNT as "Query Total"</query>
<earliest>-30d@d</earliest>
<latest>now</latest>
</search>
<option name="drilldown">none</option>
</table>
</panel>
</row>
<row>
<panel>
<table>
<title>Reporting Disk Utilization</title>
<search>
<query>| rest /services/server/status/partitions-space | eval free = if(isnotnull(available), available, free) | eval usage = capacity - free | eval pct_usage = floor(usage / capacity * 100) | stats first(fs_type) as fs_type first(capacity) as capacity first(usage) as usage first(pct_usage) as pct_usage by mount_point | eval usage=round(usage / 1024, 2) | eval capacity=round(capacity / 1024, 2) | rename mount_point as "Mount Point", fs_type as "File System Type", usage as "Usage (GB)", capacity as "Capacity (GB)", pct_usage as "Usage (%)"</query>
<earliest>-24h@h</earliest>
<latest>now</latest>
</search>
<option name="drilldown">none</option>
</table>
</panel>
</row>
<row>
<panel>
<title>DNS kQPS Usage - Last 365 Days (requires 8.5+)</title>
<chart>
<search>
<query>index=ib_usage_count report=si_usage_count_member_qps_trend_per_5days
| stats max(QCOUNT) as stats_COUNT by _time |eval stats_COUNT = stats_COUNT/1000
| sort _time
| streamstats window=5 avg(stats_COUNT) as Peak_QPM
| eval Date=strftime(_time, "%a %b %e"),"5-Day Average Peak kQPS"=round((Peak_QPM/60),3)
| table Date, "5-Day Average Peak kQPS"</query>
<earliest>-365d@d</earliest>
<latest>now</latest>
<sampleRatio>1</sampleRatio>
</search>
<option name="charting.axisLabelsX.majorLabelStyle.overflowMode">ellipsisNone</option>
<option name="charting.axisLabelsX.majorLabelStyle.rotation">0</option>
<option name="charting.axisTitleX.visibility">visible</option>
<option name="charting.axisTitleY.visibility">visible</option>
<option name="charting.axisTitleY2.visibility">visible</option>
<option name="charting.axisX.abbreviation">none</option>
<option name="charting.axisX.scale">linear</option>
<option name="charting.axisY.abbreviation">none</option>
<option name="charting.axisY.scale">linear</option>
<option name="charting.axisY2.abbreviation">none</option>
<option name="charting.axisY2.enabled">0</option>
<option name="charting.axisY2.scale">inherit</option>
<option name="charting.chart">line</option>
<option name="charting.chart.bubbleMaximumSize">50</option>
<option name="charting.chart.bubbleMinimumSize">10</option>
<option name="charting.chart.bubbleSizeBy">area</option>
<option name="charting.chart.nullValueMode">gaps</option>
<option name="charting.chart.showDataLabels">none</option>
<option name="charting.chart.sliceCollapsingThreshold">0.01</option>
<option name="charting.chart.stackMode">default</option>
<option name="charting.chart.style">shiny</option>
<option name="charting.drilldown">none</option>
<option name="charting.layout.splitSeries">0</option>
<option name="charting.layout.splitSeries.allowIndependentYRanges">0</option>
<option name="charting.legend.labelStyle.overflowMode">ellipsisMiddle</option>
<option name="charting.legend.mode">standard</option>
<option name="charting.legend.placement">right</option>
<option name="charting.lineWidth">2</option>
<option name="trellis.enabled">0</option>
<option name="trellis.scales.shared">1</option>
<option name="trellis.size">medium</option>
</chart>
</panel>
</row>
</dashboard>
```
- **傳統儀表板**


- **Studio 儀表板**


:::warning
**注意**
儀表板的時間屬性若以**時間變數**表示。
<img width=400 src='https://hackmd.io/_uploads/rJ5At4b0a.png'>
則**無法使用排程傳送 PDF (Schedule PDF Delivery)** 功能。

:::
## 報告排程
我們大致上已經可以初步地根據原廠提供的範本,產生出警報、報表和儀表板,接著就是看看這些產生出來的結果,是否可以自動化排程地傳送給管理者。一般最常使用的觸發動作,就是
- [**傳送檔案 (File Transfer Action)**](#傳送檔案設定):傳送至指定的檔案伺服器位置。
- [**郵件通知 (Send email)**](#郵件通知設定):利用電子郵件寄送。
| 類型 | 電子郵件 | 檔案傳送 | 啟用方式 |
| --- | :-: | :-: | --- |
| 警報 (Alert) | V | V | 點選編輯,在觸發動作 (**Trigger action**) 中新增行為及設定。 |
| 報表 (Report) | V | V | 點選編輯,選擇 **Edit Schedule**,並與警報類型使用相同方式設定。
| 儀表板 (Dashboard) | V | | 點選編輯,選擇 **Schedule PDF Delivery** 進行設定。 |
### 傳送檔案設定
還記得首次進入 Reporting 服務組態,系統就會要求完成外部檔案伺服器的設定。

若是測試不需要或之後不會用到檔案傳輸功能,可以直接跳過。若是後續的警報、報表需要匯出至檔案伺服器時,就要重新配置此選項。
<img width=640 src='https://hackmd.io/_uploads/HJL2-isF6.png'><br>
- **方法1**
點選 **Reporting** 功能,確認 Apps 選單為 **Infoblox Reporting & Analytics**,再點選上方 **Administration** > **Set up** 後,便可調整檔案服務器選項。

- **方法2**
在 Reporting 功能頁,點選右上方 **Settings** > **Alert actions**,可以設定警報和報表觸發時的作動行為。
<img width=360 src='https://hackmd.io/_uploads/rkePgftA6.png'><br>
其中 **File Transfer Action** 功能就需要設定正確的檔案伺服器,點選右側 **Setup Infoblox Reporting & Analytics** 進行組態。

### 郵件通知設定
有關警報和報表的郵件通知設定,需要另外配置。點選右上方 **Settings** > **System - Server settings**。
<img width=360 src='https://hackmd.io/_uploads/ryMf9aA6a.png'><br>
進入主機設定中,選擇 **Email settings** 進行設定。
<img width=540 src='https://hackmd.io/_uploads/SkeT9TCa6.png'><br>
根據郵件伺服器組態給予對應的設定值。其他 **Email Format** 和 **PDF Report Settings** 都先使用預設配置,點擊 **Save** 儲存上述設定。

:::info
使用 Office365 寄送郵件組態,可參考附錄 [[**配置 Office365 郵件服務**]](#配置-Office365-郵件服務)。
:::
### 警報排程設定
要將警報進行排程執行,選擇該警報進行編輯內容 (**Edit Alert**)。

:::info
在警報列表頁面,點選指定警報左側 **`>`** 箭頭,可顯示警報設置狀態。可根據需求點擊 **Edit** 跳轉編輯頁面。
<img width=400 src='https://hackmd.io/_uploads/BkLE-KcAp.png'>
:::
請根據警報需求配置所需排程。警報類型 (Alert Type) 可選擇排程 (Scheduled) 和即時 (Real-time),只有設定為排程類型,才會有時間範圍可供設定,一般建議採用**排程警報**即可,即時警報可能需要較多的系統資源。
設定時間表時,若是採用 **`Run every {hour|day|week|month}`** 的方式。
<img width=580 src='https://hackmd.io/_uploads/SJ8ezucAp.png'><br>
在下方的時間範圍的選擇,**時間設定只有整點可以選擇**。
<img width=580 src='https://hackmd.io/_uploads/rkjrfuc06.png'><br>
若是需要特別**指定時間**,則會需要使用 **`Run on Cron Schedule`**,時間設定請參考 **crontab** 設定語法。此範例設定每 15 分鐘執行排程警報。
<img width=540 src='https://hackmd.io/_uploads/Bkl_Bd9Aa.png'><br>
:::info
**參考** [splunk - **Use cron expressions for alert scheduling**](https://docs.splunk.com/Documentation/Splunk/8.2.10/Alert/CronExpressions)
:::
另外提供排程警報執行的時間範圍設定。此範例設定執行排程警報時檢視啟動前 15 分鐘內的資料。
<img width=400 src='https://hackmd.io/_uploads/SyCGrO5Ap.png'><br>
接著啟動先前的 BASH 腳本觸發警報。選擇 **Activity** > **Triggered Alerts** 檢視警報觸發狀態。

另外檢視我的電子郵箱,也有正確收到排程警報根據觸發動作(Trigger Action)寄送的通知信。:100:

另一個觸發動作是傳送檔案。登入至檔案服務器進行確認,也可看到設定路徑下正確地接收到檔案。:100:

### 報表排程設定
報表排程的方式,也與警報排程類似。也是透過開啟對應的報表,選擇右上方 **Edit** > **Edit Schedule**,可以將報表依照計畫時間進行排程,透過電子郵件寄送報表或傳送報表至檔案伺服器指定資料夾。
<img width=420 src='https://hackmd.io/_uploads/HJsBnC0pa.png'>
根據需求制定報表排程,輸入**時間表(Schedule)** 和**時間範圍(Time Range)**。新增動作部份,採用**檔案傳送 (File Transfer Action)** 和 **傳送電子郵件 (Send email)**,設定方式就跟設置警報排程的流程相同,這裡就省略不提囉。
跟檢視警報設置內容一樣,點選報表左側 **`>`** 箭頭可快速檢視配置。
<img width=400 src='https://hackmd.io/_uploads/Skx4fYcAT.png'><br>
點擊 **Edit** 檢視詳細設定。範例報表設定每天 11:55 執行排程,產生過去 24 小時統計資料,並透過檔案及郵件方式傳送報表。
<img width=560 src='https://hackmd.io/_uploads/S1icfKcCp.png'><br>
同樣地回到個人郵箱確認,報表排程是否正確寄送報表。:100:

連線檔案伺服器確認傳送檔案狀態。:100:

我們可以透過 **Reporting** > **Activity** > **Jobs** 來檢視任務執行狀態。看來警報跟報表都有按照設定排程執行。:100:

:::info
- 傳送電子郵件,附加選項有以下選擇
- **Inline Table**
- **Attach CSV**
- **Attach PDF**
- 以下選項原廠建議**不選擇**
- **Link to Report**
- **Link to Results**
- **Search String**
:::
### 儀表板排程設定
要進行儀表板排程也是類似的方式,儀表板排程僅支援傳送郵件的方式。
選擇 **Reporting** > **Dashboards**,開啟對應的儀表板,選擇 **Edit** > **Schedule PDF Delivery** 功能設定排程。

根據先前的經驗應該可以很快地配置完成,在**儲存 (Save)** 之前,可以點擊下方 **Send Test Email** 和 **Preview PDF** 功能,確認郵件設定及儀表板內容沒有問題。
<img width=600 src='https://hackmd.io/_uploads/BkKz855Ca.png'>
同樣地回到個人郵箱確認,儀表板排程是否正確完成工作!:100:

還是透過 **Activity** > **Jobs** 來檢視相關排程任務執行的狀態。:100:

以上就是對於 Infoblox Reporting & Analytics 服務提供的警報、報表和儀表板基本的設定及功能測試。有興趣的可以參考 Splunk 文件深度學習。
# 初探 Dashboard Studio
Splunk Dashboard Studio 是一種使用各種工具建立 Splunk 儀表板的新方法,以實現更好的自定義儀表板。雖然許多功能和視覺化與傳統的 Splunk 儀表板框架相似,但新框架中可用的功能和視覺化的外觀都存在著也許差異。
目前 Infoblox Reporting 並沒有直接提供屬於 Studio 類型的儀表板範本,但可以透過既有傳統儀表板進行轉換 (Clone in Dashboard Studio)。

不過並不保證所有的面板可以完全移轉!
<img width=400 src='https://hackmd.io/_uploads/Bk1poQZ0T.png'><br>
以下是將傳統儀表板 **Home Dashboard** 轉換為 Studio 儀表板的顯示結果,轉換後還需要調整一下。

Studio 儀表板似乎在呈現上較為生動!

儀表板編輯模式下,點擊面板後,右側會出現組態編輯功能面板,可直接針對點選面板的屬性進行調整。

也可以直接透過滑鼠拖拉面板,調整整體儀表板面板的位置及大小。

從 XML 語法改為 **JSON 語法**?奇怪,Dashboard Studio 怎麼有點 Visual Studio Code 的味道?

單一面板的原始碼,可以在右側組態編輯面板 Code 功能取得。

有專家要嘗試幫大家轉換成 Studio 儀表板?!
# 附錄
## 配置 Office365 郵件服務
公司郵件服務**使用 MS Office365**,個人帳戶登入還增加 **MFA** 驗證機制,所以一般要提供給應用程式或 API 使用,必須要使用**應用程式密碼**,GMail 郵件服務應該也是類似的配置。
### MS O365 部份
- 正常登入 O365 服務,點選右上方個人頭像,點選 **檢視帳戶**。
<img width=200 src='https://hackmd.io/_uploads/SJfFCMt0a.png'><br>
- 進入個人帳戶設定,點選左側面板的 **安全性資訊**。
<img width=180 src='https://hackmd.io/_uploads/B1sFRMtAp.png'><br>
- 在 **安全性資訊** 頁面,點選 **新增登入方法**。
<img width=560 src='https://hackmd.io/_uploads/Byeq0MKCT.png'>
- 下拉選單,選擇**應用程式密碼**,確認後點擊**加入**。
<img width=360 src='https://hackmd.io/_uploads/HyE90GtA6.png'>
- 輸入可識別該應用程式的名稱 (最短 8 字元,最長 16 字元),確認後點選**下一步**繼續。
<img width=360 src='https://hackmd.io/_uploads/HyTzJ7tA6.png'>
- 成功建立應用程式密碼,點選**複製圖示**,待後續使用,點選**完成**結束。
<img width=360 src='https://hackmd.io/_uploads/ryQ1xmY0T.png'>
- 設定後可正確顯示該設定名稱。

:::danger
**應用程式密碼無法重置**,若是遺失請刪除原有設定,並按照先前流程重新設定即可。
:::
### Infoblox 設定
有關警報和報表的郵件通知設定,需要另外配置。點選右上方 **Settings** > **System - Server settings**。
<img width=480 src='https://hackmd.io/_uploads/ryMf9aA6a.png'><br>
進入主機設定中,選擇 **Email settings** 進行設定。
<img width=540 src='https://hackmd.io/_uploads/SkeT9TCa6.png'><br>
- **Mail Server Settings**
| 設定名稱 | 組態值 |
| --- | --- |
| Mail Host | smtp.office365.com:587 |
| Email Security | Enable TLS |
| Username | 有效郵件用戶帳號<br> |
| Password<br>Confirm password | 有效郵件用戶密碼 |

- **Email Domains**
輸入可被允許的電子郵件網域,若有多組請用逗點區隔。**若沒有限制請留空白**。

- **Email Format**
**Send emails as** 選項預設為 **`Splunk`**。請修正此設定為有效用戶帳號,否則在 O365 寄件時會發生寄件者不同而產生錯誤。
:::info
使用預設參數,寄送郵件帳號會採用 **`splunk@<reporting_vm_fqdn>`**,郵件服務器會回傳錯誤碼 **`554, b'5.2.252 SendAsDenied`**。
:::

- **PDF Report Settings**
這部份就依照個人或客戶需求進行調整,暫時先用預設值即可。

## 配置系統郵件通知
有關**系統的郵件通知**,則是在以下設定進行組態。
**Grid** > **Grid Manager**,點擊右側功能面板 **Grid Properties** 編輯屬性。點擊 **Toggle Advanced Mode**,再選擇 **Email** 項目,勾選 **Enable Email Notification**。根據郵件伺服器組態給予對應的設定值。
- **使用 O365 郵件服務**
- [X] Enable Email Notification
- [X] Use SMTP over TLS
- From Email Address: 輸入有效郵件用戶帳號
- [X] Use Authentication
- Password: 輸入有效郵件用戶密碼
- To Email Address: 輸入收件者 (收件者僅能一位,若要多人接收請使用群組郵件帳號)
- [X] Use SMTP Relay
- SMTP Relay Name or Address: smtp.office365.com
- Port NUmber: 587
- **使用 Infoblox 內建郵件服務**
- [X] Enable Email Notification
- [ ] Use SMTP over TLS
- From Email Address: 可留空白或是輸入指定帳號,例如:<no-reply@infoblox.localdomain>
- [ ] Use Authentication
- Password: (空白)
- To Email Address: 輸入收件者 (收件者僅能一位,若要多人接收請使用群組郵件帳號)
- [ ] Use SMTP Relay
- SMTP Relay Name or Address: (空白)
- Port NUmber: 25

設定完成後,點擊 **Test email settings** 進行郵件測試,若成功的話,上方會顯示 **Email settings are correct** 訊息。
<img width=400 src='https://hackmd.io/_uploads/Skp2y7BCa.png'>
點選 **Notification**,可以選擇 SNMP 和 Email 通知項目。請根據管理需求選取。
<img width=400 src='https://hackmd.io/_uploads/ryHFlmrC6.png'>
以下是 Grid Member-Reporting 設備重啟時,系統會發現設備連線不正常而發送系統郵件通知告知管理人員。
<img width=320 src='https://hackmd.io/_uploads/HJ_7H7SRT.png'>
# 參考
- [Infoblox Reporting and Analytics](https://docs.infoblox.com/space/nios90/280659447/Infoblox+Reporting+and+Analytics)
- [Reporting User Interface Overview](https://docs.infoblox.com/space/nios90/280857174/Reporting+User+Interface+Overview)
- [About Dashboards](https://docs.infoblox.com/space/nios90/280400911/About+Dashboards)
- [Predefined Dashboards](https://docs.infoblox.com/space/nios90/280400911/About+Dashboards)
- [Datasheet - Infoblox reporting
and analytics Sample Reports (PDF)](https://insights.infoblox.com/resources-datasheets/infoblox-datasheet-infoblox-reporting-and-analytics-sample-report)