24.11.09

Manage IBM Tivoli Directory Log

การจัดการ log ของ Tivoli Directory ปกติแ้ล้วสามารถจัดการได้โดยปกติผ่านเครื่องมือของ Tivoli แต่ถ้าเรานำ Tivoli ไปลงบน OS ที่ไม่รองรับมันจะไม่ทำงาน
อย่างในกรณีของผมเองตอนนี้ใช้ Tivoli Directory v.6.2 แต่มีความจำเป็นต้องนำไปติดตั้งบน windows server 2008 แน่นอนว่ามันไม่รองรับกับ OS ดังกล่าว จึงต้องเขียนโปรแกรมขึ้นมาเพื่อจัดการเอง
ความต้องการขั้นต่ำคือ
  • เก็บ log ทั้งหมดลงใน zip ไฟล์เพื่อลดเนื้อที่ โดยชื่อไฟล์จะมีวันที่ต่อท้ายด้วย
  • ตัวโปรแกรมต้องบอกได้ว่าทำงานสำเร็จหรือไม่สำเร็จ และเพราะคำสั่งไหน เพราะอะไร เก็บลง log file แยกตะหาก
  • จัดการ log ที่เก็บได้ว่าต้องการให้อยู่กี่วัน (ตามนโยบายคือเก็บ log ไว้ 90 วัน)
ผมเขียน batch ครับแล้วตั้งเป็น job เอาไว้ให้ทำงานทุกเสาร์ตอนตีสาม (เพราะมี job อีกหลายตัวทำงานก่อน และถ้ามีปัญหาเรายังมีเวลาเข้าไปแก้ก่อนถึงเช้าวันจันทร์) ผมไม่ได้จะมา demo ทั้งหมดให้ดูหรอกครับ แต่จะหยิบคำสั่ง ldap บางอย่างที่จำเป็นต้องใช้ เพื่อนำไปพัฒนาต่อได้มาแปะไว้ (ส่วนโปรแกรมจริงไม่ขอเอามาแสดงครับเพราะจะยาวไป)

ดึงวันที่และเวลาปัจจุบันออกมา
@echo off
:: set datetime variable
SETLOCAL
For /f "tokens=1-3 delims=1234567890 " %%a in ("%time%") Do set "delims=%%a%%b%%c"
For /f "tokens=1-4 delims=%delims%" %%G in ("%time%") Do (
Set _hh=%%G
Set _min=%%H
Set _ss=%%I
Set _ms=%%J
)
:: Strip any leading spaces
Set _hh=%_hh: =%

:: Ensure the hours have a leading zero
if 1%_hh% LSS 20 Set _hh=0%_hh%

ENDLOCAL&Set _time=%_hh%%_min%%_ss%

@echo off&SETLOCAL
:: This will return date into environment vars
:: Works on any NT/2K/XP machine independent of regional date settings
:: 20 March 2002
FOR /f "tokens=1-4 delims=/-. " %%G IN ('date /t') DO (call :s_fixdate %%G %%H %%I %%J)
goto :s_print_the_date

:s_fixdate
if "%1:~0,1%" GTR "9" shift
FOR /f "skip=1 tokens=2-4 delims=(-)" %%G IN ('echo.^|date') DO (
set %%G=%1&set %%H=%2&set %%I=%3)
goto :eof

:s_print_the_date
ENDLOCAL&SET _date=%yy%%mm%%dd%

เปลี่ยนชื่อ ldap log ผมเขียนเป็น function ไว้เพื่อเรียกง่ายๆ
call :changefileconfigldap ibmslapd ibmslapd
call :changefileconfigldap ibmdiradm Admin
call :changefileconfigldap adminaudit Admin Audit
call :changefileconfigldap audit Audit
call :changefileconfigldap bulkload Bulkload
call :changefileconfigldap idstools Tools
call :changefileconfigldap db2cli db2cli
call :changefileconfigldap lostandfound Replication
:changefileconfigldap (
cd "%_path_tivoli%"
echo dn: cn=%2 %3,cn=Log Management,cn=Configuration > %_filename_ldapConfig%
echo changetype: modify >> %_filename_ldapConfig%
echo replace: ibm-slapdlog >> %_filename_ldapConfig%
echo ibm-slapdlog: %_path_logldap%\%1-%_date%%_time%%_extension% >> %_filename_ldapConfig%
call idsldapmodify -D cn=root -w %_password% -k -i "%_path_tivoli%\%_filename_ldapConfig%"
echo change cn: %2 %3 complete >> "%_path_logerr%\%_filename_logerr%"
goto :eof
)

แต่้ถ้าเราไม่รู้ว่าตอนนี้มี log file ชื่ออะไรบ้างที่ใช้อยู่ให้ใช้ ldapsearch ตัวอย่างเช่น
ldapsearch -D %username% -w %password% -p %port%
-b cn=Configuration -s sub cn=ibmslapd ibm-slapdLog

No comments:

Post a Comment