www.tobuku.com
MANAJEMEN ASET IT - BAGIAN 4 MENYIAPKAN DATABASE Tingkat:
Mei 2006 Oleh : Feri Djuandi
√ Pemula
Menengah
Mahir
4.1. Membuat Database Sebuah aplikasi manajemen aset IT tentunya tidak akan berguna apabila program agent yang diinstal pada setiap komputer klien tidak mampu menyimpan informasi yang diperolehnya ke dalam sebuah database. Kemampuan itu dibutuhkan agar semua informasi dari setiap komputer klien dapat dikumpulkan dan kemudian digunakan untuk keperluan pemantauan dan pelaporan. Dengan demikian, selain menampilkan informasi komputer klien pada layar, aplikasi ini juga harus dapat mengirimkannya ke server database berdasarkan waktu-waktu tertentu. Untuk dapat melakukan itu, hal pertama yang harus dilakukan adalah menyiapkan sebuah database. Desain database dan objek-objek yang akan diuraikan berikut ini disesuaikan dengan struktur dokumen XML dan diperoleh dari komponen ssci_com, juga tampilan-tampilan pada program SysPie. Anda mempunyai kebebasan dalam memodifikasi struktur objek-objek database tersebut sesuai dengan kebutuhan dan rancangan aplikasi manajemen aset IT Anda sendiri. Dalam artikel ini digunakan istilah “SysPie Repository” sebagai database yang dipakai oleh aplikasi SysPie, yaitu database yang berisi informasi-informasi komputer klien. Platform database yang dipilih untuk aplikasi SysPie adalah Ms SQL Server 2000. Sekali lagi, pilihan ini dibuat untuk alasan kemudahan – penulis yakin para pembaca sudah akrab dengan database ini dan mampu mengoperasikannya dengan baik. Pada prakteknya Anda bebas memilih sendiri platform database yang akan digunakan. Perintah pembuatan database bisa dilihat pada skrip SQL di bawah ini. Skrip 4.1. Perintah pembuatan database SSREPO. USE master GO CREATE DATABASE [SSREPO] ON (NAME = N'SSREPO_Data', FILENAME = N' C:\program files\Microsoft SSREPO_Data.MDF' , SIZE = 10, FILEGROWTH = 10) LOG ON (NAME = N'SSREPO_Log', FILENAME = N' C:\program files\Microsoft SSREPO_Log.LDF' , SIZE = 5, FILEGROWTH = 5)
SQL
Server\MSSQL\Data\
SQL
Server\MSSQL\Data\
GO Perintah di atas akan membuat sebuah database bernama SSREPO. Perhatikan parameter FILENAME untuk file data dan log merujuk ke direktori “C:\program files\Microsoft SQL Server\MSSQL\Data\”. Silakan sesuaikan lokasi file-file ini dengan instalasi SQL Server pada server database yang bersangkutan. Hal lainnya adalah parameter “SIZE = 10, FILEGROWTH = 10” untuk file data menunjukkan bahwa ukuran mula-mulanya ditetapkan sebesai 10 Mega byte dan pertumbuhan file-nya sebesai 10 Mega Byte. Demikian pula untuk file log, ditetapkan sebesai 5 Mega byte dan pertumbuhan file-nya sebesai 5 Mega Byte. WMI-FD-06014–MENYIAPKAN DATABASE
1
www.tobuku.com Langkah selanjutnya adalah membuat sebuah login dan user untuk dapat masuk ke SQL Server dan database. Lakukan itu dengan menjalankan skrip SQL di bawah ini. Skrip 4.2. Membuat login dan user untuk database SSREPO. USE master GO EXEC sp_addlogin @loginame = 'user_ssrepo', @passwd = 'password' GO USE SSREPO GO EXEC sp_grantdbaccess 'user_ssrepo', 'user_ssrepo' GO exec sp_addrolemember 'db_datareader', 'user_ssrepo' GO exec sp_addrolemember 'db_datawriter', 'user_ssrepo' GO Perintah di atas membuat sebuah login bernama user_ssrepo dengan password adalah password. Berikutnya adalah memberikan akses kepada login tersebut untuk dapat masuk ke database SSREPO melalui user bernama user_ssrepo. Kepadanya diberikan pula role db_datareader dan db_datawriter agar bisa membaca dan menulis data. Dengan langkah-langkah di atas, parameter koneksi ke database SSREPO diperoleh seperti berikut ini. Database
SSREPO
SQL Login
user_ssrepo
Password
password
Parameter koneksi di atas akan digunakan untuk program demo yang ditunjukkan dalam artikel ini. Pada prakteknya, Anda bebas mengganti nilai-nilai parameter itu sesuai dengan desain aplikasi Anda. Skrip pembuatan database dan login SQL bisa di-copy dari media pada direktori ..\SQL\db.sql.
4.2. Membuat Table Membuat database, membuat login dan memberikan hak akses yang sesuai adalah hal-hal dasar dalam tahap mempersiapkan sebuah database aplikasi. Langkah berikutnya adalah membuat objek-objek di dalam database tersebut. Pada tabel di bawah ini diperlihatkan asosiasi antara method-method class cSSCI dengan table-table yang telah disesuaikan strukturnya dengan dokumen XML yang dikembalikan oleh method yang bersangkutan. Tabel 4.1. Asosiasi method dan table. Method
Table
f_GetBIOSInformation
bios_info
f_GetCacheMemoryInformation
cachememory_info
WMI-FD-06014–MENYIAPKAN DATABASE
2
www.tobuku.com f_GetCDROMDriveInformation
cdromdrive_info
f_GetComputerSysInformation
computer_info
f_GetDesktopMonitorInformation
desktopmonitor_info
f_GetDiskDriveInformation
diskdrive_info
f_GetDisplayConfigurationInformation
displayconfiguration_info
f_GetFloppyDriveInformation
floppydrive_info
f_GetIDEControllerInformation
idecontroller_info
f_GetKeyboardInformation
keyboard_info
f_GetLogicalDiskInformation
logicaldisk_info
f_GetNetAdapterConfigInformation
netadapterconfig_info
f_GetNetworkAdapterInformation
networkadapter_info
f_GetOSInformation
operatingsystem_info
f_GetParallelPortInformation
parallelport_info
f_GetPCMCIAControllerInformation
pcmciacontroller_info
f_GetPhysicalMemoryInformation
physicalmemory_info
f_GetPointingDevInformation
pointingdevice_info
f_GetPOTSModemInformation
potsmodem_info
f_GetPrinterInformation
printer_info
f_GetProcessorInformation
processor_info
f_GetSCSIControllerInformation
scsicontroller_info
f_GetSerialPortConfigInformation
serialport_info
f_GetSerialPortInformation
serialportconfig_info
f_GetSoftwareInformation
software_info
f_GetSoundDeviceInformation
sounddevice_info
f_GetTapeDriveInformation
tapedrive_info
f_GetUSBControllerInformation
usbcontroller_info
f_GetVideoControllerInformation
videocontroller_info
Perhatikan bahwa method-method di atas tidak bersentuhan langsung dengan table-table tersebut. Ingat dari penjelasan sebelumnya, pemanggilan method-method dari komponen ssci_com akan mengembalikan dokumen-dokumen XML. Selanjutnya aplikasi klien harus memproses dokumen XML tersebut dengan logika dan rutin yang dibuat programer, dan akhirnya meneruskan informasi tersebut ke table-table dalam database. Selain table-table yang disebutkan di atas, masih ada beberapa table tambahan di dalam database SSREPO yang digunakan untuk konfigurasi sistem dan table penampung sementara (untuk pembuatan laporan). Skrip pembuatan table selengkapnya diperlihatkan pada Lampiran C.
WMI-FD-06014–MENYIAPKAN DATABASE
3
www.tobuku.com
Catatan: Selain pada Lampiran C, skrip pembuatan table-table juga telah disiapkan pada media di dalam file ..\SQL\tables.sql. Setelah skrip tersebut dijalankan pada database SSREPO, maka table-table yang digunakan oleh aplikasi SysPie telah terbentuk. Dari sekian banyak table yang ada di dalam database SSREPO, table-table utama yang digunakan untuk menampung informasi komputer adalah mereka yang diakhiri dengan sufik “_info”, contoh bios_info, cachememory_info dan cdromdrive_info. Table-table lainnya yaitu population_history, system_config, tmp_computer_list, tmp_hardware_list dan tmp_software_list digunakan secara internal unttuk konfigurasi sistem atau temporary table. Hal ini akan dijelaskan kemudian. Struktur table-table XXX_info mencerminkan struktur dokumen XML yang dikembalikan oleh fungsi-fungsi f_GetXXX dari komponen ssci_com seperti yang ditunjukkan oleh tabel 4.1 sebelum ini. Tapi kolom-kolom dari table XXX_info tidak sama persis dengan node-node dari dokumen XML yang bersangkutan karena ada beberapa tambahan kolom di dalam table-table tersebut. Berikut ini diperlihatkan sebuah ilustrasi pemetaan node-node dokumen XML dari fungsi f_GetBIOSInformation ke kolom-kolom di dalam table bios_info. Node XML
Tipe
Kolom Table
Data
Tipe Data
bi_row_id
numeric
bi_population_id
numeric
bi_domainname
varchar
bi_computername
varchar
name
string
bi_biosname
varchar
description
string
bi_description
varchar
... smbiospresent
... boolean
bi_smbiospresent
varchar
Seperti yang tampak pada contoh di atas, nama-nama node XML dibuat semirip mungkin dengan nama kolom table-nya juga urutannya. Dengan demikian, Anda tidak akan menemui banyak kesulitan dengan pemetaannya. Pusat dari table-table XXX_info adalah table computer_info. Pada tabel di bawah ini diperlihatkan struktur table tersebut dan asosiasi kolom-kolomnya dengan node dokumen XML. Node XML
Tipe
Kolom Table
Data
WMI-FD-06014–MENYIAPKAN DATABASE
Tipe Data
ci_population_id
numeric
ci_domainname
varchar
ci_computername
varchar
ci_imported
int
ci_status
int
ci_err_msg
varchar
4
www.tobuku.com description
string
ci_description
varchar
manufacturer
string
ci_manufacturer
varchar
model
string
ci_model
varchar
systemtype
string
ci_systemtype
varchar
primaryownername
string
ci_primaryownername
varchar
roles
array string
ci_roles
varchar
domain
string
ci_domain
varchar
workgroup
string
ci_workgroup
varchar
username
string
ci_username
varchar
domainrole
uint16
ci_domainrole
numeric
numberofprocessors
uint32
ci_numberofprocessors
numeric
totalphysicalmemory
uint64
ci_totalphysicalmemory
numeric
ci_create_date
datetime
ci_modify_date
datetime
ci_ad_computer_type
char
ci_ad_support_name
varchar
ci_ad_support_addr1
varchar
ci_ad_support_addr2
varchar
ci_ad_contact_name
varchar
ci_ad_contact_ph1
varchar
ci_ad_contact_ph2
varchar
ci_ad_contact_email
varchar
ci_ad_hw_location1
varchar
ci_ad_hw_location2
varchar
ci_ad_hw_id
varchar
Kolom ci_population_id adalah sebuah kolom yang berasosiasi dengan kolom ph_population_id dari table population_history. Istilah “population” pada SysPie merujuk pada pengertian “data snapshot” atau potret data. Jika SysPie telah berjalan dengan baik, maka repository-nya akan mengandung data-data komputer klien hasil kerja SysPie Agent yang diinstal pada komputer bersangkutan. Dari waktu ke waktu, informasi ini berubah secara dinamis tergantung dari seberapa sering pengumpulan data itu dilakukan dan juga seberapa sering konfigurasi komputer itu berubah, misalnya instalasi hardware atau instalasi software baru. Jika seorang administrator ingin memiliki laporan-laporan aset yang bisa diperbandingkan antara satu periode dengan periode yang lain, misalnya bulan lalu dengan bulan berjalan – maka ia harus memiliki kedua data dari periode yang berbeda itu. Sementara itu, seperti yang telah dijelaskan SysPie repository senantiasa berubah. Lalu bagaimana seorang administrator bisa memiliki data periode sebelumnya? Di sinilah sebuah population bisa memecahkan masalah. Population akan memotret data secara statis pada saat population itu dibuat. Waktunya bisa dipilih secara fleksibel, apakah seminggu sekali, sebulan sekali atau setahun sekali – tergantung seberapa sering administrator ingin menganalisanya.
WMI-FD-06014–MENYIAPKAN DATABASE
5
www.tobuku.com Population pada SysPie diimplementasikan dengan table population_history dan kolom XXX_population_id dari setiap table XXX_info. Kolom ph_population_id bertipe numeric(18,0) dan beratribut IDENTITY(0,1), artinya kolom ini bernilai 0, 1, 2 dan seterusnya. Nilai 0 mewakili data yang aktual dan bersifat dinamis, sementara itu nilai 1, 2 dan seterusnya mewakili data population yang statis. Kombinasi kolom ci_population_id, ci_domainname dan ci_computername membentuk sebuah primary key untuk table computer_info. Kolom ci_domainname dan ci_computername masing-masing mewakili nama domain/workgroup dan nama komputer yang bersangkutan. Kedua kolom ini diperoleh dari hasil pemangilan fungsi ssci_com.f_GetLoginInformation. Silakan perhatikan potongan skrip fungsi ini seperti yang telah dijelaskan sebelumnya pada bab 3. ... sDomainName = f_GetDomainName() If IsEmpty(sDomainName) Then sDomainName = f_GetWorkgroupName() sComputerName = f_GetComputerName() sUserName = f_GetUserName() ... Pertama-tama program berusaha mendapatkan nama domain komputer. Jika nama domain tidak bisa diperoleh, ia akan berusaha mendapatkan nama workgroup komputer. Dengan alur program seperti ini, maka kolom computer_info.ci_domainname sesungguhnya bisa berisi nama domain atau nama workgroup. Hal ini tidak menjadi masalah karena tujuan perolehan nilai-nilai ini adalah untuk tujuan pembentukan key yang unik. Untuk membedakan apakah komputer ini bergabung dalam sebuah domain atau sebuah workgroup, kolom ci_domain dan ci_workgroup menunjukkan keadaan yang sesungguhnya. Kolom ci_domain akan berisi nilai dan ci_workgroup akan kosong jika komputer tersebut bergabung dalam sebuah domain, demikian pula sebaliknya. Kolom computer_info.ci_imported mengindikasikan apakah baris data di dalam table computer_info adalah hasil pengumpulan data oleh SysPie Agent yang dikirimkannya langsung ke SysPie Repository atau hasil export yang di-import secara manual ke dalam SysPie Repository. Mekanisme export/import lazim dilakukan jika sebuah komputer terpisah dari LAN sehingga tidak memungkinkan SysPie Agent mengirim data secara langsung ke SysPie Repository. Kolom computer_info.ci_status dan ci_err_msg belum digunakan untuk saat ini. Kolom computer_info.ci_create_date dan computer_info.ci_modify_date mewakili tanggal dan waktu baris data ini dibuat dan diedit. Sedangkan sisa kolom lainnya seperti ci_ad_computer_type, ci_ad_support_name, dan ci_ad_support_addr1 adalah kolom-kolom yang ditambahkan untuk melengkapi informasi komputer ini. Kolom-kolom bisa diabaikan jika tidak ingin digunakan.
WMI-FD-06014–MENYIAPKAN DATABASE
6
www.tobuku.com
4.3. Parameter Koneksi Database Informasi yang ditampilkan SysPie Agent pada p window-nya nya saat ini belum disimpan ke dalam SysPie Repository karena koneksi database database-nya nya belum diseting dengan benar sekalipun tidak ada pesan-pesan pesan kesalahan berkaitan dengan keadaan ini. Parameter database pada aplikasi SysPie tidak di di-hard-coded di dalam kode programnya, tapi disimpan dalam sebuah file eksternal yang disebut APPLCONF.INI.. File konfigurasi ini ada di dalam direktori yang sama dengan file EXE SysPie Agent. APPLCONF.INI adalah sebuah file berformat teks ASCII yang bisa dibuka menggunakan Notepad.EXE. Contoh isi file ini diperlihatkan pada gambar di bawah.
Gambar 4.1. Isi file APPLCONF.INI. Parameter database ada di dalam section yang bernama “database”. Section itu sendiri mengandung beberapa key seperti eperti DBMS, Database dan UserId dengan masing masing-masing masing nilainya. Untuk alasan keamanan, nilai setiap nilai key diwakili dengan karakter yang dienkrip. SysPie akan mendekrip karakterkarakter karakter menggunakan kunci enkripsi yang sesuaii untuk mendapatkan string aslinya. Dengan string inilah SysPie akan menggunakannya sebagai parameter parameter-parameter parameter koneksi database. Dari sekian banyak key yang ada di dalam section database, sebetulnya hanya empat buah key yang perlu diperhatikan seperti disebutkan ebutkan pada tabel di bawah dan biarkan key yang lain dengan nilai default default-nya. Tabel 4.2. Parameter pada APPLCONF.INI yang harus di-enkrip. di Nama Key
Keterangan
ServerName
Nama server. Silakan ssesuaikan dengan nama komputer yang digunakan. gunakan.
LogId
SQL login. Dalam hal ini adalah ““user_ssrepo”” (kecuali sengaja diganti).
LogPassword
Password.. Dalam hal ini adalah “password” (kecuali sengaja diganti).
DbParm
Parameter koneksi berisi nama server dan database. Formatnya adalah sebagai berikut: PROVIDER='SQLOLEDB', DATASOURCE='NAMA_SERVER', PROVIDERSTRING='DATABASE=NAMA_DATABASE', CommitOnDisconnect='No'
Pertanyaan yang menarik sekarang, bagaimana caranya men-enkrip men enkrip semua parameter itu ke dalam file APPLCONF.INI? Untuk melakukan itu, silakan silakan menggunakan program enkripsi yang ada di dalam media WMI-FD-06014–MENYIAPKAN MENYIAPKAN DATABASE
7
www.tobuku.com yang disertakan dengan artikel ini. ini Program kecil ini akan mengubah string-string string parameter database menjadi karakter-karakter ter-enkrip. enkrip. 1. Buka file APPLCONF.INI yang ada di dalam direktori instalasi si SysPie Agent menggunakan Notepad.EXE. 2. Jalankan program ..\ENCRYPTER ENCRYPTER\encryptr.exe. 3. Pertama-tama tama lakukan enkrip nama server. Ke dalam kolom Original String pada program tersebut, ketikkan nama server database. 4. Klik tombol Encrypt. Hasil sil enkripsi akan muncul pada kolom Encrypted String. String
Gambar 4.2. Program Encrypter. 5. Klik tombol Copy to Clipboard untuk meng-copy copy hasil enkipsi ke clipboard. 6. Pada file APPLCONF.INI, APPLCONF.INI cari key yang bermama ServerName dan letakkan kursor setelah tanda sama-dengan dengan (=) diikuti penekanan tombol Ctrl+V ((paste)) untuk menyalin string enkipsi dari clipboard ke posisi kursor. 7. Ulangi langkah-langkah langkah di atas untuk key LogId dan LogPassword. 8. Ulangi langkah-langkah langkah yang sama untuk key DbParm.. Pastikan memasukkan nama n SQL Server dan database yang sesuai ke dalam string ini. Contoh: PROVIDER='SQLOLEDB',DATASOURCE='MY_SERVER',PROVIDERSTRING= 'DATABASE=SSREPO' 'DATABASE=SSREPO',CommitOnDisconnect='No' 9. Simpan dan tutup file APPLCONF.INI. APPLCONF.INI Setelah parameter-parameter parameter dienkrip, silakan jalankan kembali aplikasi SysPie Agent. Jika parameter database dimasukkan dengan benar, maka informasi komputer akan tersimpan di dalam database setelah aplikasi tersebut menginspeksi system komputer. Silakan jalankan query terhadap beberapa table di dalamnya mnya untuk memastikan data telah tersimpan. Catatan: Idealnya aplikasi SysPie Agent dijalankan secara otomatis diaktifkan saat pengguna menyalakan komputernya agar pengguna tidak perlu mengeksekusi aplikasi ini secara manual. Cara ini setidaknya bisa memastikan tikan SysPie Agent senantiasa mengirimkan informasi yang aktual ke SysPie Repository. Hal ini bisa dilakukan misalnya dengan membuat sebuah shortcut SysPie Agent pada Start All Programs Start Up.
WMI-FD-06014–MENYIAPKAN MENYIAPKAN DATABASE
8
www.tobuku.com Cara lain untuk mengirim informasi ke SysPie Repository adalah dengan menekan tombol Refresh pada window aplikasi tersebut. Seperti biasa, SysPie Agent akan menginspeksi sistem kemudian mengirimkan hasilnya ke database. SysPie Agent juga mempunyai opsi untuk refresh otomatis pada berdasarkan waktu tertentu. Jeda waktu untuk refresh otomatis ini dapat di-set menggunakan aplikasi SysPie Xagent yang akan dijelaskan pada bab berikutnya. Dengan terhubungnya SysPie Agent dengan SysPie Repository, maka aplikasi ini dapat beroperasi dengan penuh. Diagram alir pada gambar di bawah ini memperlihatkan cara kerja SysPie Agent secara umum.
Start
Kumpulkan informasi komputer lokal
Tampilkan informasi pada layar
PING repository
Server memberi respon? Ya
Tidak
Buat koneksi ke SysPie Repository
Kirim informasi sistem komputer ke repository
End
Gambar 4.3. Diagram alir SysPie Agent. Langkah pertama, SysPie akan mengumpulkan informasi komputer lokal. Berikutnya SysPie akan melakukan PING kepada repository (komputer server database) sebelum koneksi dilakukan. Hal ini perlu WMI-FD-06014–MENYIAPKAN DATABASE
9
www.tobuku.com dilakukan untuk memeriksa apakah komputer server ada di dalam jaringan komputer atau tidak. PING dilakukan sebagai awalan untuk menghindari munculnya pesan kesalahan sea seandainya ndainya repository tidak dapat ditemukan oleh SysPie (yang normalnya sebuah pesan kesalahan akan muncul jika koneksi database tetap dipaksakan). Hal ini bisa terjadi karena beberapa penyebab:
Program SysPie Agent sengaja digunakan secara lokal (stand ( alone atau tidak terhubung ke repository).
Komputer klien tidak terhubung ke jaringan komputer, misalnya sebuah notebook yang pada saat itu kabel datanya sedang tidak tersambung ke jaringan lokal.
Kesalahan mengisi parameter koneksi database.
WMI-FD-06014–MENYIAPKAN MENYIAPKAN DATABASE
10