2012년 7월 22일 일요일

Nagios: Configuring passive check for Windows

Nagios' passive check has different way to active check. Active check starts from central nagios monitoring server, on the other hand, passive check begins at monitored server.

The above image(comes from http://www.nsclient.org) describes that how Nagios server and Windows computer communite each other. As you can see, this communication is triggered from monitored server.

Passive check is usually used for distributed monitoring. It can reduced the burden of Nagios server that preodically checked all of the monitored severs. In passive, Nagios sever has the role of simply getting monitoring data via NSCA (Nagios Server Check Acceptor).

On Monitored server (in this case, Windows server), in order to send data to Nagios server, I installed NSClient++ 0.4.x.(NSClient). NSClient support both check modes. Precisely speaking, however, it may have a bit different check commands. It usually use check_nt or check_nrpe in active and use check_nrpe in passive mode. While configuring NSClient, the most difficult thing was that config file had changed a lot between version 0.3.x and 0.4.x. First, config file name changed from nsc.ini to nsclient.ini. Secondly, changed expressions and propoperties in the config. When I was searched how to set properties in the config, most result was for 0.3.x.

About NSClient Configuration file :

1. Confugration general: http://www.nsclient.org/nscp/wiki/doc/configuration:
2. 0.4.x config file: http://www.nsclient.org/nscp/wiki/doc/configuration/0.4.x
3. Example for 0.4.x: http://nsclient.org/nscp/discussion/message/2575



Enabling Passive Check ( Nagios Server)
$ vi /etc/nagios/nagios.cfg
# PASSIVE SERVICE CHECK ACCEPTANCE OPTION
# This determines whether or not Nagios will accept passive
# service checks results when it initially (re)starts.
# Values: 1 = accept passive checks, 0 = reject passive checks

accept_passive_service_checks=1

$ nagios -v /etc/nagios/nagios.cfg
.....
Total Warnings: 0
Total Errors: 0

# Installing NSCA (Nagios Server Check Acceptor)
$ yum install nsca

# Start NSCA
$ service nsca start

# check if specified port (it left as default 5667) is open
$ netstat -na | grep 5667tcp 0 0 0.0.0.0:5667 0.0.0.0:* LISTEN


Configuring nsclient.ini ( Windows Server)
Here was my C:\Program Files\NSClient++sclient.ini.
===============================

; Undocumented section
[/modules]

; CheckDisk - CheckDisk can check various file and disk related things.


; The current version has commands to check Size of hard drives and directories.
CheckDisk = 1

; Event log Checker. - Check for errors and warnings in the event log.


; This is only supported through NRPE so if you plan to use only NSClient this wont help you at all.
CheckEventLog = 1

; Check External Scripts - A simple wrapper to run external scripts and batch files.
CheckExternalScripts = 1

; Helper function - Various helper function to extend other checks. This is also only supported through NRPE.
CheckHelpers = 1

; Check NSCP - Checkes the state of the agent
CheckNSCP = 1

; CheckSystem - Various system related checks, such as CPU load, process state, service state memory usage and PDH counters.
CheckSystem = 1

; CheckWMI - CheckWMI can check various file and disk related things.


; The current version has commands to check Size of hard drives and directories.
CheckWMI = 1

; NRPE server - A simple server that listens for incoming NRPE connection and handles them.


; NRPE is preferred over NSClient as it is more flexible. You can of cource use both NSClient and NRPE.
NRPEServer = 1

; NSCAClient - Passive check support (needs NSCA on nagios server).


; Avalible crypto are: {0=No Encryption (not safe), 1=XOR, 2=DES, 3=DES-EDE3, 4=CAST-128, 6=XTEA,

; 8=Blowfish, 9=Twofish, 11=RC2, 14=AES, 15=AES, 16=AES, 20=Serpent, 23=GOST}
NSCAClient = 1

; NSClient server - A simple server that listens for incoming NSClient (check_nt) connection and handles them.


; Although NRPE is the preferred method NSClient is fully supported and can be used for simplicity or for compatibility.
NSClientServer = 1

# Scheduler
# A scheduler which schedules checks at regular intervals
Scheduler=1

; Undocumented section
[/settings/default]

; ALLOWED HOSTS - A comaseparated list of allowed hosts. You can use netmasks (/ syntax) or * to create ranges.
allowed hosts = xxx.xxx.xxx.xxx

; PASSWORD - Password used to authenticate againast server
password = xxxxxxxx

; Section for NRPE (NRPEListener.dll) (check_nrpe) protocol options.
[/settings/NRPE/server]

; Section for NSCA passive check module.
[/settings/NSCA/client]

# NSCA CLIENT SECTION
# Section for NSCA passive check module.
[/settings/NSCA/client]
# DELAY
#
delay=0
# HOSTNAME
# The host name of this host if set to blank (default) the windows name of the computer will be used.
hostname=adserver
# CHANNEL
# The channel to listen to.
channel=NSCA

; Target definition for: default
[/settings/NSCA/client/targets/default]

;# ENCRYPTION METHOD
; This option determines the method by which the send_nsca client will encrypt the packets it sends
; to the nsca daemon. The encryption method you choose will be a balance between security and
; performance, as strong encryption methods consume more processor resources.
; You should evaluate your security needs when choosing an encryption method.
;
; Note: The encryption method you specify here must match the decryption method the nsca daemon uses
; (as specified in the nsca.cfg file)!!
; Values:
; 0 = None (Do NOT use this option)
; 1 = Simple XOR (No security, just obfuscation, but very fast)
; 2 = DES
; 3 = 3DES (Triple DES)
; 4 = CAST-128
; 6 = xTEA
; 8 = BLOWFISH
; 9 = TWOFISH
; 11 = RC2
; 14 = RIJNDAEL-128 (AES)
; 20 = SERPENT
encryption=1

;
;# ENCRYPTION PASSWORD
; This is the password/passphrase that should be used to encrypt the sent packets.
password=xxxxxxxxxx
;
;# NAGIOS SERVER ADDRESS
; The address to the nagios server to submit results to.
;host=

;# TARGET ADDRESS
;# Target host address
address=xxx.xxx.xxx.xxx

;# TARGET PORT
;# The target server port
port=5667

# TIMEOUT
# Timeout when reading/writing packets to/from sockets.
timeout=30

; A list of aliases available. An alias is an internal command that has been "wrapped" (to add arguments). Be careful so you don't create loops (ie check_loop=check_a, check_a=check_loop)
[/settings/external scripts/alias]
alias_cpu=checkCPU warn=80 crit=90 time=5m time=1m time=30s

; Configure log properties.
[/settings/log]
;# LOG DEBUG
; Set to 1 if you want debug message printed in the log file (debug messages are always printed to stdout when run with -test)
debug=1
;# LOG DATE MASK
; The format to for the date/time part of the log entry written to file.
;date_mask=%Y-%m-%d %H:%M:%S

; Configure log file properties.
[/settings/log/file]
file=C:\Program Files\NSClient++\NSC.log

; Section for configuring the shared session.
[/settings/shared session]

; A list of avalible remote target systems
[/settings/targets]

[/settings/scheduler/schedules/default]
channel=NSCA
interval=30s
report=all

[/settings/scheduler/schedules]
CPU Load=alias_cpu







Then, NClient service has to be started OR

can stat as test mode


C:\Users\Administrator\Downloads\NSCP>nscp test
d vice\logger_impl.cpp:371 Creating logger: console


d rvice\NSClient++.cpp:374 NSClient++ 0,4,0,172 2012-05-08 x64 Loading settings and logger...


d ngs_manager_impl.cpp:170 No entries found looking in (adding default): C:/Users/Administrator/Downloads/NSCP//boot.ini


d ngs_manager_impl.cpp:179 Boot order: old://${exe-path}/nsc.ini, ini://${shared-path}/nsclient.ini


d ngs_manager_impl.cpp:193 No valid settings found (tried): old://${exe-path}/nsc.ini, ini://${shared-path}/nsclient.ini


e ngs_manager_impl.cpp:201 Settings contexts exausted, will create a new ini://${shared-path}/nsclient.ini


d ngs_manager_impl.cpp:73 Creating instance for: ini://${shared-path}/nsclient.ini


d ngs/settings_ini.hpp:268 Reading INI settings from: C:/Users/Administrator/Downloads/NSCP//nsclient.ini


l rvice\NSClient++.cpp:385 NSClient++ 0,4,0,172 2012-05-08 x64 booting...


d rvice\NSClient++.cpp:386 Booted settings subsystem...


d rvice\NSClient++.cpp:453 On crash: restart: NSClientpp


d rvice\NSClient++.cpp:465 Archiving crash dumps in: C:/Users/Administrator/Downloads/NSCP//crash-dumps


d rvice\NSClient++.cpp:532 booting::loading plugins


d rvice\NSClient++.cpp:604 NSClient++ - 0,4,0,172 2012-05-08 Started!


l ce\simple_client.hpp:32 Enter command to inject or exit to terminate..




Defining service ( Nagios Server)
$ vi /etc/nagios/object/nagios.cfg

define host{
use windows-server ; Inherit default values from a template
host_name adserver ; The name we're giving to this host
alias Active Directory Server ; A longer name associated with the host
passive_checks_enabled 1
active_checks_enabled 0

address xxx.xxx.xxx.xxx ; IP address of the host
}


define service{
use generic-service
host_name adserver
passive_checks_enabled 1
active_checks_enabled 0
service_description CPU Load
check_command check_nrpe!alias_cpu
}

$ vi /etc/nagios/object/commands.cfg
# 'check_nrpe' command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}


$ nagios -v /etc/nagios/nagios.cfg
Total Warnings: 0Total Errors: 0

$ servicee nagios restart

$ tail /var/log/nagios/nagios.log
[1342862307] EXTERNAL COMMAND: PROCESS_SERVICE_CHECK_RESULT;adserver;cpu_check;0;OK CPU Load ok.|'5m'=0%;80;90 '1m'=1%;80;90 '30s'=2%;80;90
[1342862307] Warning: Passive check result was received for service 'cpu_check' on host 'adserver', but the service could not be found! ==> This warning casued not to defined cpu_check in commands.cfg
[1342862795] EXTERNAL COMMAND: PROCESS_SERVICE_CHECK_RESULT;adserver;CPU Load;0;OK CPU Load ok.|'5m'=0%;80;90 '1m'=1%;80;90 '30s'=3%;80;90
[1342862805] PASSIVE SERVICE CHECK: adserver;CPU Load;0;OK CPU Load ok.
[1342862825] EXTERNAL COMMAND: PROCESS_SERVICE_CHECK_RESULT;adserver;CPU Load;0;OK CPU Load ok.|'5m'=0%;80;90 '1m'=2%;80;90 '30s'=2%;80;90
[1342862835] PASSIVE SERVICE CHECK: adserver;CPU Load;0;OK CPU Load ok.
[1342862855] EXTERNAL COMMAND: PROCESS_SERVICE_CHECK_RESULT;adserver;CPU Load;0;OK CPU Load ok.|'5m'=0%;80;90 '1m'=2%;80;90 '30s'=2%;80;90
[1342862865] PASSIVE SERVICE CHECK: adserver;CPU Load;0;OK CPU Load ok.


I am being nervous and impatient when I coudn't find effient answers to my problem. Espeically, It could be deeper during a project. It is like a situcation where time can be very limited and another works are waiting for me. Writing articles in this blog mean to save my time when I encounted in a similar problem and hope these save serchers' time.


Reference sites:
1. http://www.nsclient.org/nscp/wiki/doc/usage/nagios/nsca
2. http://assets.nagios.com/downloads/nagiosxi/docs/Using_NSClient_For_Passive_Checks.pdf

2012년 7월 17일 화요일

vCenter can't be Installed on AD


vCenter can't be installed on Active Directory
I tried to install vCenter 5 server on the machine that installed Windows Active Directory. It failed the installation with the following error: 

"vCenter Server is not supported on this plaform. Refer to the installation guide for the supported list of platform. Make sure that Windows is not running as Domain Controller" 

According to web site http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2003790, vCenter is not allowed to install on AD.

Supported OS for vCenter
vmware supports host OSs for vCenter
  • Windows Server 2003 SP2 (x64): Datacetner, Enterprise, Standard
  • Windows Server 2008 SP1(x64): Datacenter, Enterprise, Standard

VMware website provides compatibility guide. you can search product and supported OS at http://partnerweb.vmware.com/comp_guide2/search.php?deviceCategory=software&testConfig=17




2012년 7월 12일 목요일

Monitoring: Setting up Nagois + ndoutils


Nagios is one of the great tool that monitoring servers. The benefit of this is that it has many plugins which supports various software and hardware. Here, ndoutils is a plugin which stores status data comes from nagios into databases like Mysql or PostgreSQL.

Ndoutils has two components. The one is ndomod. nodomod has role of exporting nagios runtime data from nagios daemon and then write it to a file or unix socket or  tcp. The other is ndo2db, which is sending nagios data from ndomod via unix socket or tcp to database.

For more detailed information about how ndoutils works, refer to http://www.nagios-wiki.de/nagios/ndo/start (Written in German, you can translate this on google translate)

How to install and setting
# Download and configure to install ndoutils
$ wget http://sourceforge.net/projects/nagios/files/ndoutils-1.x/ndoutils-1.5.2/ndoutils-1.5.2.tar.gz/download$ tar -xzvf ndoutils-1.5.2.tar.gz$ cd ndoutils-1.5.2$ ./configure --with-mysql-lib=/usr/lib64/mysql --prefix=/usr/local/ndoutils-1.5.2 --with-ndo2db-user=nagios --with-ndo2db-group=nagios
configure: WARNING: unrecognized options: --with-mysql-lib
....
hecking for mysql_config... /usr/bin/mysql_config
checking for mysql_init in -lmysqlclient... yes
MySQL library and include file(s) were found!
....
*** Configuration summary for ndoutils 1.5.2 06-08-2012 ***:
General Options:
-------------------------
NDO2DB user:    nagios
NDO2DB group:   nagios
Review the options above for accuracy.  If they look okay,
type 'make' to compile the NDO utilities.
$ make
$ make install
Hint: NDOUtils Installation against Nagios v3.x
  completed.
  If you want to install NDOUtils for Nagios v2.x
  please type  'make install-2x
  Next step should be the database initialization/upgrade
  cd into the db/ directory and either:
     ./installdb  (for a new installation) or:
     ./upgradedb  (for an existing one)
make[1]: Leaving directory `/downloads/ndoutils-1.5.2/src'
Main NDOUtils components installed


# Creating database and user
$ mysql -u root -p mysql
mysql> create database nagios_db;
Query OK, 1 row affected (0.00 sec)
mysql> create user nagios@'localhost' identified by 'nagios'; Query OK, 0 rows affected (0.00 sec)
mysql> create user nagios@'%' identified by 'nagios'; Query OK, 0 rows affected (0.00 sec)
mysql> grant all on nagios_db.* to nagios@'localhost';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all on nagios_db.* to nagios@'%';
Query OK, 0 rows affected (0.00 sec)
mysql> exit;


# Import ndo tables into mysql database 
$ cd db
./installdb -u nagios -p nagios -h localhost -d nagios_db
DBD::mysql::db do failed: Table 'nagios_db.nagios_dbversion' doesn't exist at ./installdb line 51.
** Creating tables for version 1.5.2
     Using mysql.sql for installation...
** Updating table nagios_dbversion
Done!


# var directory (lock file will be created here) 
$ cd /usr/local/ndoutils-1.5.2/
$ mkdir ./var
$ sudo chown -R nagios:nagios ./var


# Copy config files into Nagios directory and change setting values 
$ cp /downlaods/ndoutils-1.5.2/config/ndomod.cfg-sample /etc/nagios/ndomod.cfg
$ cp /downlaods/ndoutils-1.5.2config/ndo2db
.cfg-sample /etc/nagios/ndo2db.cfg
$ chown nagios:nagios /etc/nagios/ndo*.cfg
$ ls -al /etc/nagios/ndo*
-rw-rw-rw- 1 nagios nagios 4516 Jul 12 11:38 /etc/nagios/ndo2db.cfg
-rw-rw-rw- 1 nagios nagios 5154 Jul 12 11:39 /etc/nagios/ndomod.cfg


# This configuration directive will load the ndomod.o NEB module when Nagios is started. You will need to restart Nagios to make the module active
$ vi /etc/nagios/nagios.cfg
broker_module=/usr/local/ndoutils-1.5.2/bin/ndomod.o config_file=/etc/nagios/ndomod.cfg  


# Correct database name, user, password
$ vi /etc/nagios/ndo2db.cfg
ndo2db_user=nagios 

ndo2db_group=nagios
db_host=localhost
db_name=nagios_db
db_user=nagios 
db_pass=*****


# Register ndo2db as daemon
$ cp /downloads/ndoutils-1.5.2/daemon-init /etc/init.d/ndo2db
$ vi /etc/init.d/ndo2db
servicename=ndo2db 

prefix=/usr/local/ndoutils-1.5.2 
exec_prefix=/usr/local/ndoutils-1.5.2 
Ndo2dbBin=/usr/local/ndoutils-1.5.2/bin/ndo2db
Ndo2dbCfgFile=/etc/nagios/ndo2db.cfg 
Ndo2dbVarDir=/usr/local/ndoutils-1.5.2/var Ndo2dbRunFile=$Ndo2dbVarDir/ndo2db.lock 
Ndo2dbLockDir=/var/lock/subsys 
Ndo2dbLockFile=ndo2db 
Ndo2dbUser=nagios 
Ndo2dbGroup=nagios


# Start NDO first and Nagios
$ su nagios
$ sudo /etc/init.d/ndo2db start
$ sudo /etc/init.d/nagios start
$ sudo ps aux | grep ndo2db
nagios   20109  0.0  0.0  49780   616 ?        Ss   11:39   0:00 /usr/local/ndoutils-1.5.2/bin/ndo2db -c /etc/nagios/ndo2db.cfg
nagios   20123  0.0  0.0  49780  1372 ?        S    11:39   0:01 /usr/local/ndoutils-1.5.2/bin/ndo2db -c /etc/nagios/ndo2db.cfg
nagios   20124  0.0  0.0  49784  1540 ?        S    11:39   0:02 /usr/local/ndoutils-1.5.2/bin/ndo2db -c /etc/nagios/ndo2db.cfg


# check log file
$ sudo tail -f /var/log/messages
Jul 12 10:58:26 cloudmanager nagios: Successfully shutdown... (PID=16525)
Jul 12 10:58:26 cloudmanager nagios: ndomod: Shutdown complete.
Jul 12 10:58:26 cloudmanager nagios: Event broker module '/usr/local/ndoutils-1.5.2/bin/ndomod.o' deinitialized successfully.
Jul 12 11:39:24 cloudmanager nagios: Nagios 3.3.1 starting... (PID=20122)
Jul 12 11:39:24 cloudmanager nagios: Local time is Thu Jul 12 11:39:24 KST 2012
Jul 12 11:39:24 cloudmanager nagios: LOG VERSION: 2.0 

Jul 12 11:39:24 cloudmanager nagios: ndomod: NDOMOD 1.5.2 (06-08-2012) Copyright (c) 2009 Nagios Core Development Team and Community Contributors 
Jul 12 11:39:24 cloudmanager nagios: ndomod: Successfully connected to data sink.  0 queued items to flush.    => success log 
Jul 12 11:39:24 cloudmanager nagios: Event broker module '/usr/local/ndoutils-1.5.2/bin/ndomod.o' initialized successfully.
Jul 12 11:39:24 cloudmanager nagios: Finished daemonizing... (New PID=20127)


# check database 
$ mysql -u nagios -p nagios_db
mysql> select count(*) from nagios_conninfo;

+----------+
| count(*) |
+----------+
|        1 |
+----------+
1 row in set (0.01 sec)

mysql> select * from nagios_instances;
+-------------+---------------+----------------------+
| instance_id | instance_name | instance_description |
+-------------+---------------+----------------------+
|           1 | default       |                      |
+-------------+---------------+----------------------+
1 row in set (0.00 sec)
mysql> quit;

These are two tables that ndo2db put initial data into.


select * from nagios_conninfo;
select * from nagios_instances;

Troubleshooting
1. Error: Support for the specified database server is either not yet supported, or was not found on your system.


$ /usr/local/ndoutils-1.5.2/bin/ndo2db -c /etc/nagios/ndo2db.cfg
Support for the specified database server is either not yet supported, or was not found on your system.


$ vi /var/log/nagios/nagios.log
[1341910636] ndomod: Could not open data sink!  I'll keep trying, but some output may get lost... 
[1341910636] Event broker module '/usr/local/ndoutils-1.5.2/bin/ndomod.o' initialized successfully.........
[1341911548] ndomod: Still unable to connect to data sink.  456 items lost, 5000 queued items to flush.


Solution: you must install mysql-devel

$ yum install mysql-devel


# checking whether the following message during ./configure, If you find it, you have been installed mysql-devel on your server.
$ ./configure --enable-mysql --with-mysql-lib=/usr/lib64/mysql --prefix=/usr/local/ndoutils-1.5.2
......
checking for mysql_config... /usr/bin/mysql_config 
checking for mysql_init in -lmysqlclient... yes
MySQL library and include file(s) were found!
......

......


2. Error: max retries exceeded sending message to queue. Kernel queue parameters may neeed to be tuned. See README

$ tail -f /var/log/messages
Jul 11 19:45:01 ndo2db: Warning: Retrying message send. This can occur because you have too few messages allowed or too few total bytes allowed in message queues. You are currently using 128 of 15424 messaged and 131072 of 131072 bytes in the queue. See REAMDE for kernel tuning options
Jul 11 19:45:01 ndo2db: Warning: queue send error, retrying...
Jul 11 19:45:01 ndo2db: Error: max retries exceeded sending message to queue. Kernel queue parameters may neeed to be tuned. See README.

Solution: raise up number in msgmax and msgmnb
$ echo 131072000 > /proc/sys/kernel/msgmax 

$ echo 131072000 > /proc/sys/kernel/msgmnb
# Type the same number in sysctl.conf to apply permanently.
$ vi /etc/sysctl.conf



3. Error: Can't populate data into database. but it said that it worked fine in the log file

Solution: I recommend that you install NDOutil again. I installed ndoutils and configured well. my log said that it worked well. However, it failed inserting nagios data into database.

I spent two days for this setting up. I stuck up the above problems during the setting. Especially. The error NO. 3 was made me the most confused. If you fell in the problem like NO. 3, it would be the best solution to install again. I was googling about this and find some results which indicated it worked after they installed ndoutils agin. Hope this help.

-------
Added on 2012-12-28

4. Error: Could not bind socket: Address already in use

Solution: remove its lock file. (Got an idea from http://blog.connexeon.com/sysadmin/linux/nagios-ndo2db-could-not-bind-socket/

$ find / -name ndo.sock -print
/usr/local/ndoutils-1.5.2/var/ndo.sock
$ rm /usr/local/ndoutils-1.5.2/var/ndo.sock
rm: remove socket `/usr/local/ndoutils-1.5.2/var/ndo.sock'? y
$ service ndo2db start
Starting ndo2db: done.



Reference sites: 
1. http://onaxer.com/blog/blog/2010/03/05/imports-historical-nagios-log-files-into-the-mysql-database/
2. http://www.r71.nl/kb/technical/363-ndo2db-and-kernel-parameters

2012년 7월 7일 토요일

Java: Unsupported major.minor version x.x


I got an error when run the a program related to vmware 5 on eclipse.
This happened after I added vmware api into my project. 

java.lang.UnsupportedClassVersionError: com/vmware/vim25/ManagedObjectReference : Unsupported major.minor version 51.0
       at java.lang.ClassLoader.defineClass1( Native Method)
       at java.lang.ClassLoader.defineClassCond( ClassLoader.java:631)
       at java.lang.ClassLoader.defineClass( ClassLoader.java:615)
       at java.security.SecureClassLoader.defineClass( SecureClassLoader.java:141)
       at java.net.URLClassLoader.defineClass( URLClassLoader.java:283)
       at java.net.URLClassLoader.access$000( URLClassLoader.java:58)
       at java.net.URLClassLoader$1.run( URLClassLoader.java:197)
       at java.security.AccessController.doPrivileged( Native Method)
       at java.net.URLClassLoader.findClass( URLClassLoader.java:190)
       at java.lang.ClassLoader.loadClass( ClassLoader.java:306)
       at sun.misc.Launcher$AppClassLoader.loadClass( Launcher.java:301)
       at java.lang.ClassLoader.loadClass( ClassLoader.java:247)
       at GetCurrentTime.( GetCurrentTime.java:60)
Exception in thread "main" 


It was nothing to do with vmware api itself.


The reason was that I installed two kind of JDKs. The one was 1.7 and the other was 1.6.  I downloaded vmware web service API and build it with JDK 1.7 to make "vim25.jar" and I forgot this. But, on the other hand, my eclipse environment was set with JDK 1.6. 


It was lower version so didn't work with that API which was built with higher one. Again, I built the api with 1.6, it finally worked well.