iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0
IT 管理

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

iTop 組態管理 PC, Mobile Phone & Printer - End User Devices

  • 分享至 

  • xImage
  •  

前幾篇文章介紹的組態項 CIs 都是透過手動方式建立,所幸這類型的組態項的數量往往不會很多。然而在企業中 Server 與 PC 的數量可能達到數百甚至上千台,因此我們不太可能再透過這種方式來維護組態。

今天就來教大家如何使用 iTop 提供的 Data Collector for OCS Inventory NG,透過自動化的方式來同步 IT 資產,有效減少人工配置錯誤並提高工作效率。

Data Collector for OCS Inventory NG
此外掛程式負責從 OCS Inventory 伺服器收集有關 PC、Server 和虛擬機器的訊息,並將這些資訊與 iTop 進行同步。

主要執行步驟如下

  • 在 iTop 上安裝 OCS Inventory 的 Data Model
  • 在 OCS Inventory 中配置 Asset 與 Software 的類別
  • 配置 Data Collector for OCS Inventory NG 連線設定
  • 在 iTop 中設定每個相應 OCS Inventory 的類別

安裝 Data Model for OCS Inventory
您必須在 iTop 上安裝 OCS Inventory 的資料模型,以獲得相容的資料模型。
https://store.itophub.io/en_US/products/itop-ocsng

點選 iTop Hub 選單的 Get Extensions from iTop Hub

點選 GO TO ITOP HUB

請申請一個 iTop Hub 帳號,進行登入。

點選 iTop Store 的 CMDB,找到 Data Model for OCS Inventory 外掛,選擇最新的 2.0.0 Version。

iTop Hub 會自動轉跳到以下畫面,選擇最新的 2.0.0 Version,點選 Install。

請使用管理員權限的帳號登入

勾選 Instance Backup,點選 Deploy。

Data Model 安裝成功

點選 iTop Hub 選單的 Deployed Extensions

可以知道安裝了哪些外掛

如果您使用資產類別同步,則必須在 OCS Inventory 和 iTop 中配置相同的資產類別。一種資產類型可以有多個類別。

在 OCS Inventory 中配置 Asset 類別
首先透過 Inventory 選擇下方的搜尋選單

PC 資產使用條件如下

點選 Asset Categorization

設定資產類別名稱 PC,點選 YES。

Mobile Phone 資產使用條件如下,點選 Asset Categorization。

設定資產類別名稱 MobilePhone,點選 YES。

配置 Data Collector for OCS Inventory NG 連線設定
此外掛程式無法由 iTop Hub 自動安裝,您必須將其手動部署在運行 PHP 的伺服器上。
https://store.itophub.io/en_US/products/ocsng-data-collector

選擇最新的 2.0.0 Version,點選 Download。

下載完後解壓縮到適當位置

sudo unzip ocsng-data-collector-2_0_0.zip -d /var/www/html/itop/extensions
sudo chown -R www-data:www-data /var/www/html/itop/extensions/ocsng-data-collector

請不要修改 Data Collector 預設的配置檔 params.distrib.xml

如果需要調整配置,請建立名為 params.local.xml 的文件,並將所需的定義複製,使兩個 XML 檔案的結構相同。

不要將 params.local.xml 存放在您的網頁伺服器目錄中,否則您的設定檔中的連線帳密可能外洩。

sudo mkdir /etc/itop
sudo cp /var/www/html/itop/extensions/ocsng-data-collector/conf/params.distrib.xml /etc/itop/params.ocsng.xml
sudo chown www-data:www-data /etc/itop/params.ocsng.xml

我們需要 OCS Inventory 資料庫的存取權限

sudo mysql
CREATE USER 'datacollector'@'%' IDENTIFIED BY 'your_datacollector_password';
GRANT ALL PRIVILEGES ON ocsweb.* TO 'datacollector'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

也需要 iTop 伺服器的 Web 存取權限,建議新增一組同步使用的帳號,授予 Administrator 與 REST Service User 權限。

編輯新增的組態文件

sudo nano /etc/itop/params.ocsng.xml

應包含用於連接到 iTop 伺服器和 OCS Inventory 資料庫的參數

<?xml version="1.0" encoding="UTF-8"?>
<!-- Default values for parameters. Do NOT alter this file, use params.local.xml instead -->
<parameters>
  <itop_url>http://your_itop_ip/itop</itop_url>
  <itop_login>datacollector</itop_login>
  <itop_password>your_datacollector_password</itop_password>

  <!-- OCS Inventory Database -->
  <sql_host>your_ocs_inventory_ip</sql_host>
  <sql_database>ocsweb;charset=UTF8</sql_database>
  <sql_login>datacollector</sql_login>
  <sql_password>your_datacollector_password</sql_password>

  <!-- default values -->
  <default_org_id>My Demo</default_org_id>
  <default_status>production</default_status>
  <default_active_status>active</default_active_status>

  <!--Filter type for synchronization ( categories or default filters ) -->
  <use_asset_categories>yes</use_asset_categories>
  <use_software_categories>yes</use_software_categories>

  <!-- Class to collect -->
  <CategoryCollection>yes</CategoryCollection>
  <PCCollection>yes</PCCollection>
  <ServerCollection>yes</ServerCollection>
  <VMCollection>yes</VMCollection>
  <MobilePhoneCollection>yes</MobilePhoneCollection>
  <PrinterCollection>yes</PrinterCollection>
  <SoftwareCollection>yes</SoftwareCollection>

  <!-- console_log_level: level of logging to console (std output)
  -1 : none, nothing will be logged to the console
   0 : System wide emergency errors only (LOG_EMERG)
   1 : Alert errors (LOG_ALERT)
   2 : Critical errors (LOG_CRIT)
   3 : Application level errors (LOG_ERR)
   4 : Warnings
   5 : Notice
   6 : Information
   7 : Debug traces
   -->
  <console_log_level>6</console_log_level>

  <!-- eventissue_log_level: level of creating event issue object on remote itop
  -1 : none, nothing will be logged to the console
   0 : System wide emergency errors only (LOG_EMERG)
   1 : Alert errors (LOG_ALERT)
   2 : Critical errors (LOG_CRIT)
   3 : Application level errors (LOG_ERR)
   4 : Warnings
   5 : Notice
   6 : Information
   7 : Debug traces
   -->
  <eventissue_log_level>-1</eventissue_log_level>

  <!--
    dateformat: logging date format
    Example: [Y-m-d H:i:s] => will produce a log like "[2020-04-29 14:36:16]    [Info]  ......"
  -->
  <console_log_dateformat>[Y-m-d H:i:s]</console_log_dateformat>

  <!-- syslog_log_level: level of logging to Syslog
  -1 : none, nothing will be logged to syslog
   0 : System wide emergency errors (LOG_EMERG)
   1 : Alert errors (LOG_ALERT)
   2 : Critical errors (LOG_CRIT)
   3 : Application level errors (LOG_ERR)
   4 : Warnings
   5 : Notice
   6 : Information
   7 : Debug traces
   -->
  <syslog_log_level>-1</syslog_log_level>

  <!-- data_path: location where to store the temporary data (.raw and .csv files).
  Make sure that you change this value if you run several instances of the collector
  from the same location (with different configuration files).
  You can use the placeholder %APPROOT% to build a path relative to the location of the collector itself
   -->
  <data_path>%APPROOT%/data</data_path>

  <!-- Maximum number of elements to process in one iteration (for upload and synchro in iTop) -->
  <max_chunk_size>1000</max_chunk_size>
  <!-- Timeout for waiting for the execution of one data synchro task (in seconds) -->
  <itop_synchro_timeout>600</itop_synchro_timeout>
  <!-- Whether or not to stop when an error occurs during a synchronization -->
  <stop_on_synchro_error>no</stop_on_synchro_error>
  <!-- When using cUrl to connect to the iTop Webservices the cUrl options can be specified below
  The syntax is:
  <NAME_OF_THE_OPTION1>VALUE_OF_THE_OPTION1</NAME_OF_THE_OPTION1>
  <NAME_OF_THE_OPTION2>VALUE_OF_THE_OPTION2</NAME_OF_THE_OPTION2>
  etc...

  Where NAME_OF_THE_OPTIONx and VALUE_OF_THE_OPTIONx are either:
  - The numeric value of the option
  - or the string representation of the corresponding PHP "define" (case sensitive)

  The four examples below are equivalent:
   <CURLOPT_SSLVERSION>CURL_SSLVERSION_TLSv1_2</CURLOPT_SSLVERSION>
  or
   <CURLOPT_SSLVERSION>6</CURLOPT_SSLVERSION>
  or
   <32>CURL_SSLVERSION_TLSv1_2</32>
  or
   <32>6</32>

  Since in PHP we have:
  define ('CURLOPT_SSLVERSION', 32);
  define ('CURL_SSLVERSION_TLSv1_2', 6);

  Note: because the recommandation about which is the best SSL/TLS version
        to use varies over time (as security bugs are found in the procotols)
        it is BETTER NOT TO force any SSL/TLS version at all and let the
        system decide which version to use.

        However if the web server running iTop requires a specific TLS/SSL
        version you can use the configuration to force it anyway...
        but be prepared to revisit this setting regularly.
  -->
  <curl_options>
    <CURLOPT_SSL_VERIFYHOST>0</CURLOPT_SSL_VERIFYHOST>
    <CURLOPT_SSL_VERIFYPEER>1</CURLOPT_SSL_VERIFYPEER>
  </curl_options>
</parameters>

我們先手動執行同步作業

sudo -u www-data /usr/bin/php \
/var/www/html/itop/extensions/ocsng-data-collector/exec.php \
--config_file=/etc/itop/params.ocsng.xml

提示在 iTop 中找不到資產類別

[2024-07-31 08:17:47]   [Info]  OCSPCSoftwareCollector beginning of data collection...
[2024-07-31 08:17:47]   [Notice]        No Asset category found in iTop with query:
        SELECT OCSAssetCategory
        WHERE target_class IN ('PC','Server','VirtualMachine','MobilePhone')

[2024-07-31 08:17:47]   [Info]  OCSPCSoftwareCollector end of data collection.
[2024-07-31 08:17:47]   [Info]  OCSDBServerCollector beginning of data collection...
[2024-07-31 08:17:48]   [Notice]        No Asset category found in iTop with query:
        SELECT OCSAssetCategory
        WHERE target_class IN ('PC','Server','VirtualMachine','MobilePhone')

[2024-07-31 08:17:48]   [Info]  OCSDBServerCollector end of data collection.
[2024-07-31 08:17:48]   [Info]  OCSMiddlewareCollector beginning of data collection...
[2024-07-31 08:17:48]   [Notice]        No Asset category found in iTop with query:
        SELECT OCSAssetCategory
        WHERE target_class IN ('PC','Server','VirtualMachine','MobilePhone')

[2024-07-31 08:17:48]   [Info]  OCSMiddlewareCollector end of data collection.

在 iTop 中配置相應的類別
點選 Data Administration 選單的 Typology Configuration

Data Collector 已將幫我們將 OCS Inventory 的類別同步過來了

點選 OCS: Asset Category 的 PC 資產

設定在 iTop 中相應的 PC 類別,點選 Apply。

MobilePhone 也是同樣的操作方式

接著我們再手動執行一次同步指令

sudo -u www-data /usr/bin/php \
/var/www/html/itop/extensions/ocsng-data-collector/exec.php \
--config_file=/etc/itop/params.ocsng.xml

回到 Configuration Management 的 Overview,可以發現 End User Devices 的 PC、Mobile Phone 與 Printer 都有同步進來了。

我們點選 PC 看看

Data Collector 會幫我們同步 OCS Inventory 的組態資訊

包含實體或虛擬的網路介面詳細資訊也有

記得到 Configuration 的 General Configuration

維護 ocsng_url 參數指向您的 OCS Inventory 伺服器

/**
 *
 * Modules specific settings
 *
 */
$MyModuleSettings = array(
  ...
  'itop-backup' => array (
    'mysql_bindir' => '',
    'week_days' => 'monday, tuesday, wednesday, thursday, friday',
    'time' => '23:30',
    'retention_count' => 5,
    'enabled' => true,
    'itop_backup_incident' => '',
  ),
  'itop-ocsng' => array (
    'ocsng_url' => 'http://your_ocs_inventory_ip/ocsreports/',
  ),
);

我們就可以在 Other Actions 點選 Open in OCS Inventory

自動引導到該資產位於 OCS Inventory 的組態,免去自行登入 OCS Inventory 搜尋該資產的寶貴時間。

Mobile Phone 畫面如下

Printer 則不用特別在 iTop 維護資產對應的類別,因為 Data Collector 會直接透過下列 SQL 找出 OCS Inventory 的 Printer。

SELECT p.id               AS primary_key,
       p.NAME             AS NAME,
       p.port             AS ip,
       p.driver           AS ocs_driver,
       '$default_status$' AS status,
       '$default_org_id$' AS org_id
FROM   printers p
WHERE  p.port LIKE '%.%.%.%'
       AND p.port NOT LIKE '%\_%' 

Printer 畫面如下

Data Collector 同步流程的具體步驟如下

確認同步沒有問題之後,記得將指令放入工作排程。

sudo crontab -u www-data -e

依照自己的環境調整頻率,例如每天上午七點執行。

00 07 * * * /usr/bin/php /var/www/html/itop/extensions/ocsng-data-collector/exec.php --config_file=/etc/itop/params.ocsng.xml > /tmp/dc-ocsng-cron.log 2>&1

下一篇我們再來談談 OCS Inventory 的 Software Category 同步,今天的分享就到這邊,感謝收看。

參考文件

  1. https://www.itophub.io/wiki/page?id=extensions%3Aocsng-data-collector-v2

上一篇
iTop 組態管理 Network Device - Infrastructure
下一篇
iTop 組態管理 Software & License - Software and Applications
系列文
iTop:開源 ITSM 與 CMDB 解決方案 32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言