iT邦幫忙

2024 iThome 鐵人賽

DAY 19
0
IT 管理

iTop:開源 ITSM 與 CMDB 解決方案 系列 第 19

iTop 組態管理 Data Synchronization 簡介

  • 分享至 

  • xImage
  •  

我們的 iTop 資產來源大部分都是透過 Data Collector 外掛來同步外部系統的資訊,那麼對於 Data Synchronization 資料同步流程的運作原理以及如何進行調配就顯得十分重要了。

iTop 的資料同步流程有兩種可能的方式進行

  • 資料直接寫入資料庫
  • 透過 CSV 檔案提供數據

資料直接寫入資料庫
使用 ETL 將資料直接寫入 MySQL,請按照以下步驟進行。

  • 為你要同步的物件類型定義一個 Synchro Data Source,這會在 iTop 資料庫中創建一個特定的複製表,名為 synchro_data_xxx。
  • 使用你喜愛的 ETL 工具或腳本,將來自外部來源的資料填入對應資料來源的 synchro_data_xxxx 表中。
  • 通過執行 synchro/synchro_exec.php 來觸發 iTop 物件與臨時表副本之間的資料同步。

資訊流如下圖所示

透過 CSV 檔案提供數據
建立 CSV 檔案並執行 synchro/synchro_import.php 匯入到 MySQL,請按照以下步驟進行。

  • 從外部來源或應用程式提取資料(不由 iTop 處理)
  • 將資料轉換為適合 iTop 的格式(不由 iTop 處理)
  • 將資料寫入中間 CSV 檔案(不由 iTop 處理)
  • 將資料匯入 iTop 中的副本表中(由iTop處理)
  • 在 iTop 中搜尋符合的物件(由 iTop 處理)
  • 建立、更新或刪除 iTop 中的同步物件(由iTop處理)

資訊流如下圖所示

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

  • Name:引用此資料來源的名稱
  • Status:Implementation、Production 或 Obsoleted
  • Target Class:要同步的物件的類別
  • User:使用者允許執行此同步
  • Contact to Notify:同步發生錯誤時,透過電子郵件通知聯絡人。
  • Data Table:儲存同步物件的 MySQL 資料表名稱

Search & Reconciliation

  • Reconciliation Policy:使用屬性或者主鍵在 iTop 中搜尋符合的對象
  • Action on Zero:Create 指示系統建立目標類別的新物件
  • Action on One:Update 指示系統更新此物件
  • Action on Many:Error 將導致系統將此情況報告為錯誤

Deletion Rules

  • Users Allowed:哪些使用者可以刪除 iTop 中的同步物件。
  • Full Load Interval:同步物件多久的時間內未被再次更新,則將被視為 Obsoleted,一般預設為 7 天。
  • Delete Policy:當同步物件過時要如何處置
    – Ignore:忽略不執行任何操作
    – Delete:刪除 iTop 中關聯的物件
    – Update:依照更新規則來更新同步物件
    – Update then Delete:依照更新規則來更新同步物件,然後在保留持續時間後刪除該物件。
  • Update Rules:用於指定要設定關聯物件的哪個屬性以及哪個值。
    範例:status:obsolete;description:no longer synchronized.
  • Retention Duration:僅當刪除策略設定為先更新後刪除時才使用。

刪除規則比較難以理解,我們用下圖說明。

例如您將 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 選項

  • 變數名稱:delete_policy
  • 可接受的值:ignore, delete, update, update_then_delete

我們還需要到 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 的設定

  • Update:指定 iTop 物件屬性是否應由 Data Synchro 更新
  • Update Policy:指定屬性是否可以在 iTop 中編輯
    – Locked:由來源資料同步驅動並顯示為鎖定
    – Unlocked:當來源資料變更時更新,但可以修改。

可以到 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 的統計數據

  • Data Source:資料來源的數量
  • Run Time:所有的同步執行時間加總
  • Replicas:所有同步產生的物件
  • Errors:錯誤的數量,錯誤可能會造成同步中斷。
  • Warnings:警告的數量,警告通常不會造成同步中斷。
  • Peak Memory:同步時使用的最大記憶體

今天的分享就到這邊,感謝收看。

參考文件

  1. https://www.itophub.io/wiki/page?id=3_1_0%3Aadvancedtopics%3Adata_synchro_overview
  2. https://store.itophub.io/en_US/products/combodo-data-synchronization-dashboard
  3. https://www.itophub.io/wiki/page?id=latest%3Aadvancedtopics%3Adata_synchronization
  4. https://www.itophub.io/wiki/page?id=extensions%3Aitop-data-collector-base

上一篇
iTop 組態管理 Datacenter View - Infrastructure
下一篇
iTop Hub 簡介
系列文
iTop:開源 ITSM 與 CMDB 解決方案 32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言