我們的 iTop 資產來源大部分都是透過 Data Collector 外掛來同步外部系統的資訊,那麼對於 Data Synchronization 資料同步流程的運作原理以及如何進行調配就顯得十分重要了。
iTop 的資料同步流程有兩種可能的方式進行
資料直接寫入資料庫
使用 ETL 將資料直接寫入 MySQL,請按照以下步驟進行。
資訊流如下圖所示
透過 CSV 檔案提供數據
建立 CSV 檔案並執行 synchro/synchro_import.php 匯入到 MySQL,請按照以下步驟進行。
資訊流如下圖所示
Data Collector 外掛大部分都是透過 CSV 檔案提供數據,例如我們可以在OCS Inventory 的 data 資料夾找到每次同步產生的 CSV 檔案。
Synchro Data Source
在了解大概的同步流程與步驟之後,接下來談談跟我們在維運上比較有關的資料來源定義與常規參數。
點選 Configuration 選單的 Synchronization Data Sources
就可以看到 Data Collector 自動幫我們建立 Synchro Data Source 物件。
我們使用 Synchro LDAP Person 來講解 Synchro Data Source 的參數
Description
Search & Reconciliation
Deletion Rules
刪除規則比較難以理解,我們用下圖說明。
例如您將 Full Load Interval 設為 7 天,Retention Duration 設為 14 天,則過時的物件將在 3 週後被刪除。
我們在 iTop 建立人員之後,還會根據其所擁有的軟硬體資產或是負責的系統進行組態項目的關聯。如果人員離職後其帳戶立即被同步機制給刪除,那可能會造成維運人員在組態關聯的更新不完全或增加其困難度。
實務上建議設定 Retention Duration 來增加緩衝的時間,來避免組態項目太早被同步機制給清除。
編輯 XML 組態文件,針對 Synchro Data Source 進行複寫。
sudo nano /etc/itop/params.ldap.your_company.xml
添加下列配置
<json_placeholders>
<!-- For compatibility with the version 1.1.x of the collector, define the data table names as following:
<prefix></prefix>
<persons_data_table>synchro_data_PersonAD</persons_data_table>
<users_data_table></users_data_table>
-->
<prefix>$prefix$</prefix>
<persons_data_table>synchro_data_$prefix$ldap_persons</persons_data_table>
<users_target_class>UserLDAP</users_target_class>
<users_data_table>synchro_data_$prefix$ldap_users</users_data_table>
<full_load_interval>604800</full_load_interval><!-- 7 days (in seconds): 7*24*60*60 -->
<synchro_status>production</synchro_status>
<delete_policy>update_then_delete</delete_policy>
<delete_policy_update>status:obsolete;description:no longer synchronized.</delete_policy_update>
<delete_policy_retention>1209600</delete_policy_retention><!-- 14 days (in seconds): 2*7*24*60*60 -->
<!-- How to import the profiles in iTop. Possible values: write_if_empty | master_locked
Use write_if_empty if you want the collector to initialize the profiles for each account but let you edit them in iTop after the initial creation of the user
Use master_locked if you manage the profiles directly in LDAP and let the collector synchronize them in iTop
-->
<profile_list_update_policy>write_if_empty</profile_list_update_policy>
</json_placeholders>
可以到 Administration 的 Data Model 查找變數的名稱與可接受的值
選擇 Synchro Data Source 類別,變數名稱及值請參考 Attribute Code 與 Allowed Values 欄位。
例如 Deletion Rules 的 Delete Policy 選項
我們還需要到 Collectors 路徑底下,修改 Synchro Data Source 的屬性表。
sudo nano /var/www/html/itop/extensions/ldap-data-collector/collectors/iTopPersonLDAPCollector.json
sudo nano /var/www/html/itop/extensions/ldap-data-collector/collectors/iTopUserLDAPCollector.json
預設的 Attribute 有些欄位寫死的,例如 delete_policy。
{
...
"scope_class": "$users_target_class$",
"database_table_name": "$users_data_table$",
"scope_restriction": "",
"full_load_periodicity": "$full_load_interval$",
"reconciliation_policy": "use_attributes",
"action_on_zero": "create",
"action_on_one": "update",
"action_on_multiple": "error",
"delete_policy": "delete",
"delete_policy_update": "",
"delete_policy_retention": "0",
...
}
將其改為我們在 XML 所配置的變數名稱
{
...
"scope_class": "$users_target_class$",
"database_table_name": "$users_data_table$",
"scope_restriction": "",
"full_load_periodicity": "$full_load_interval$",
"reconciliation_policy": "use_attributes",
"action_on_zero": "create",
"action_on_one": "update",
"action_on_multiple": "error",
"delete_policy": "$delete_policy$",
"delete_policy_update": "$update_then_delete$",
"delete_policy_retention": "$delete_policy_retention$",
...
}
手動執行同步作業來更新物件
sudo -u www-data /usr/bin/php \
/var/www/html/itop/extensions/ldap-data-collector/exec.php \
--config_file=/etc/itop/params.ldap.your_company.xml
成功更新 Deletion Rules 的配置
Synchro Attribute
我們使用 Data Collector for OCS Inventory 同步的 PC 設備進行說明,例如發現的 Serial Number 資料錯誤,但編輯模式又不能修改。
其實在 OCS Inventory 資料來源就有問題,但又是寫死在 BIOS 無法變更。
我們可以在 Synchro Data Source 查看 Attribute 的設定
可以到 Synchro Data Source 的 Related Classes 點選的 SynchrAttribute 查找變數的名稱與可接受的值。
變數名稱及值請參考 Attribute Code 與 Allowed Values 欄位。
我們還需要到 Collectors 路徑底下,修改 Synchro Data Source 的屬性表。
sudo nano /var/www/html/itop/extensions/ocsng-data-collector/collectors/OCSPCCollector.json
找到 serialnumber 屬性,並將 update_policy 修改為 master_unlocked。
{
"name": "$prefix$:PC",
"description": "$prefix$ Data Collector (v. $version$): PCs",
...
"attribute_list": [
...
{
"attcode": "serialnumber",
"update": "1",
"reconcile": "1",
"update_policy": "master_unlocked",
"finalclass": "SynchroAttribute"
},
]
...
}
手動執行同步作業來更新物件
sudo -u www-data /usr/bin/php /var/www/html/itop/extensions/ocsng-data-collector/exec.php --config_file=/etc/itop/params.ocsng.xml
我們就可以維護 Serial Number 欄位了
Data Synchronization Overview
我們可以在 Synchro Data Source 的 Status 查看該物件的同步是否正常以及異動的狀況。
目前我們 Synchro Data Source 有共 59 個,不可能每個都點進去檢查狀態,所以 iTop 有提供免費的 Data Synchronization Overview。
https://store.itophub.io/en_US/products/combodo-data-synchronization-dashboard
點選 iTop Store 找到 Data Synchronization Overview 外掛,選擇最新的 1.2.2 Version,點選 Free。
iTop Hub 會自動轉跳到以下畫面,點選 Install。
勾選 Instance Backup,點選 Deploy。
Data Synchronization Overview 安裝成功
點選 Configuration 選單的 Synchronization Dashboard
我們就可以看到 Synchro Data Source 的統計數據
今天的分享就到這邊,感謝收看。
參考文件