226 lines
10 KiB
Java
226 lines
10 KiB
Java
/**
|
|
* Copyright (C) 2008 Happy Fish / YuQing
|
|
*
|
|
* FastDFS Java Client may be copied only under the terms of the GNU Lesser
|
|
* General Public License (LGPL).
|
|
* Please visit the FastDFS Home Page http://www.csource.org/ for more detail.
|
|
**/
|
|
|
|
package org.csource.fastdfs.test;
|
|
|
|
import java.text.SimpleDateFormat;
|
|
import org.csource.common.*;
|
|
import org.csource.fastdfs.*;
|
|
|
|
/**
|
|
* load test class
|
|
* @author Happy Fish / YuQing
|
|
* @version Version 1.20
|
|
*/
|
|
public class Monitor
|
|
{
|
|
private Monitor()
|
|
{
|
|
}
|
|
|
|
/**
|
|
* entry point
|
|
* @param args comand arguments
|
|
* <ul><li>args[0]: config filename</li></ul>
|
|
*/
|
|
public static void main(String args[])
|
|
{
|
|
if (args.length < 1)
|
|
{
|
|
System.out.println("Error: Must have 1 parameter: config filename");
|
|
return;
|
|
}
|
|
|
|
System.out.println("java.version=" + System.getProperty("java.version"));
|
|
|
|
try
|
|
{
|
|
ClientGlobal.init(args[0]);
|
|
System.out.println("network_timeout=" + ClientGlobal.g_network_timeout + "ms");
|
|
System.out.println("charset=" + ClientGlobal.g_charset);
|
|
|
|
TrackerClient tracker = new TrackerClient();
|
|
|
|
/*
|
|
System.out.println("delete storage return: " + tracker.deleteStorage("group1", "192.168.0.192"));
|
|
System.out.println("delete storage errno: " + tracker.getErrorCode());
|
|
*/
|
|
|
|
TrackerServer trackerServer = tracker.getConnection();
|
|
if (trackerServer == null)
|
|
{
|
|
return;
|
|
}
|
|
|
|
int count;
|
|
StructGroupStat[] groupStats = tracker.listGroups(trackerServer);
|
|
if (groupStats == null)
|
|
{
|
|
System.out.println("");
|
|
System.out.println("ERROR! list groups error, error no: " + tracker.getErrorCode());
|
|
System.out.println("");
|
|
return;
|
|
}
|
|
|
|
System.out.println("group count: " + groupStats.length);
|
|
|
|
count = 0;
|
|
for (StructGroupStat groupStat : groupStats)
|
|
{
|
|
count++;
|
|
System.out.println("Group " + count + ":");
|
|
System.out.println("group name = " + groupStat.getGroupName());
|
|
System.out.println("disk total space = " + groupStat.getTotalMB() + "MB");
|
|
System.out.println("disk free space = " + groupStat.getFreeMB() + " MB");
|
|
System.out.println("trunk free space = " + groupStat.getTrunkFreeMB() + " MB");
|
|
System.out.println("storage server count = " + groupStat.getStorageCount());
|
|
System.out.println("active server count = " + groupStat.getActiveCount());
|
|
System.out.println("storage server port = " + groupStat.getStoragePort());
|
|
System.out.println("storage HTTP port = " + groupStat.getStorageHttpPort());
|
|
System.out.println("store path count = " + groupStat.getStorePathCount());
|
|
System.out.println("subdir count per path = " + groupStat.getSubdirCountPerPath());
|
|
System.out.println("current write server index = " + groupStat.getCurrentWriteServer());
|
|
System.out.println("current trunk file id = " + groupStat.getCurrentTrunkFileId());
|
|
|
|
StructStorageStat[] storageStats = tracker.listStorages(trackerServer, groupStat.getGroupName());
|
|
if (storageStats == null)
|
|
{
|
|
System.out.println("");
|
|
System.out.println("ERROR! list storage error, error no: " + tracker.getErrorCode());
|
|
System.out.println("");
|
|
break;
|
|
}
|
|
|
|
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
int stroageCount = 0;
|
|
for (StructStorageStat storageStat : storageStats)
|
|
{
|
|
stroageCount++;
|
|
System.out.println("\tStorage " + stroageCount + ":");
|
|
System.out.println("\t\tstorage id = " + storageStat.getId());
|
|
System.out.println("\t\tip_addr = " + storageStat.getIpAddr() + " " + ProtoCommon.getStorageStatusCaption(storageStat.getStatus()));
|
|
System.out.println("\t\thttp domain = " + storageStat.getDomainName());
|
|
System.out.println("\t\tversion = " + storageStat.getVersion());
|
|
System.out.println("\t\tjoin time = " + df.format(storageStat.getJoinTime()));
|
|
System.out.println("\t\tup time = " + (storageStat.getUpTime().getTime() == 0 ? "" : df.format(storageStat.getUpTime())));
|
|
System.out.println("\t\ttotal storage = " + storageStat.getTotalMB() + "MB");
|
|
System.out.println("\t\tfree storage = " + storageStat.getFreeMB() + "MB");
|
|
System.out.println("\t\tupload priority = " + storageStat.getUploadPriority());
|
|
System.out.println("\t\tstore_path_count = " + storageStat.getStorePathCount());
|
|
System.out.println("\t\tsubdir_count_per_path = " + storageStat.getSubdirCountPerPath());
|
|
System.out.println("\t\tstorage_port = " + storageStat.getStoragePort());
|
|
System.out.println("\t\tstorage_http_port = " + storageStat.getStorageHttpPort());
|
|
System.out.println("\t\tcurrent_write_path = " + storageStat.getCurrentWritePath());
|
|
System.out.println("\t\tsource ip_addr = " + storageStat.getSrcIpAddr());
|
|
System.out.println("\t\tif_trunk_server = " + storageStat.isTrunkServer());
|
|
System.out.println("\t\tconntion.alloc_count = " + storageStat.getConnectionAllocCount());
|
|
System.out.println("\t\tconntion.current_count = " + storageStat.getConnectionCurrentCount());
|
|
System.out.println("\t\tconntion.max_count = " + storageStat.getConnectionMaxCount());
|
|
System.out.println("\t\ttotal_upload_count = " + storageStat.getTotalUploadCount());
|
|
System.out.println("\t\tsuccess_upload_count = " + storageStat.getSuccessUploadCount());
|
|
System.out.println("\t\ttotal_append_count = " + storageStat.getTotalAppendCount());
|
|
System.out.println("\t\tsuccess_append_count = " + storageStat.getSuccessAppendCount());
|
|
System.out.println("\t\ttotal_modify_count = " + storageStat.getTotalModifyCount());
|
|
System.out.println("\t\tsuccess_modify_count = " + storageStat.getSuccessModifyCount());
|
|
System.out.println("\t\ttotal_truncate_count = " + storageStat.getTotalTruncateCount());
|
|
System.out.println("\t\tsuccess_truncate_count = " + storageStat.getSuccessTruncateCount());
|
|
System.out.println("\t\ttotal_set_meta_count = " + storageStat.getTotalSetMetaCount());
|
|
System.out.println("\t\tsuccess_set_meta_count = " + storageStat.getSuccessSetMetaCount());
|
|
System.out.println("\t\ttotal_delete_count = " + storageStat.getTotalDeleteCount());
|
|
System.out.println("\t\tsuccess_delete_count = " + storageStat.getSuccessDeleteCount());
|
|
System.out.println("\t\ttotal_download_count = " + storageStat.getTotalDownloadCount());
|
|
System.out.println("\t\tsuccess_download_count = " + storageStat.getSuccessDownloadCount());
|
|
System.out.println("\t\ttotal_get_meta_count = " + storageStat.getTotalGetMetaCount());
|
|
System.out.println("\t\tsuccess_get_meta_count = " + storageStat.getSuccessGetMetaCount());
|
|
System.out.println("\t\ttotal_create_link_count = " + storageStat.getTotalCreateLinkCount());
|
|
System.out.println("\t\tsuccess_create_link_count = " + storageStat.getSuccessCreateLinkCount());
|
|
System.out.println("\t\ttotal_delete_link_count = " + storageStat.getTotalDeleteLinkCount());
|
|
System.out.println("\t\tsuccess_delete_link_count = " + storageStat.getSuccessDeleteLinkCount());
|
|
System.out.println("\t\ttotal_upload_bytes = " + storageStat.getTotalUploadBytes());
|
|
System.out.println("\t\tsuccess_upload_bytes = " + storageStat.getSuccessUploadBytes());
|
|
System.out.println("\t\ttotal_append_bytes = " + storageStat.getTotalAppendBytes());
|
|
System.out.println("\t\tsuccess_append_bytes = " + storageStat.getSuccessAppendBytes());
|
|
System.out.println("\t\ttotal_modify_bytes = " + storageStat.getTotalModifyBytes());
|
|
System.out.println("\t\tsuccess_modify_bytes = " + storageStat.getSuccessModifyBytes());
|
|
System.out.println("\t\ttotal_download_bytes = " + storageStat.getTotalDownloadloadBytes());
|
|
System.out.println("\t\tsuccess_download_bytes = " + storageStat.getSuccessDownloadloadBytes());
|
|
System.out.println("\t\ttotal_sync_in_bytes = " + storageStat.getTotalSyncInBytes());
|
|
System.out.println("\t\tsuccess_sync_in_bytes = " + storageStat.getSuccessSyncInBytes());
|
|
System.out.println("\t\ttotal_sync_out_bytes = " + storageStat.getTotalSyncOutBytes());
|
|
System.out.println("\t\tsuccess_sync_out_bytes = " + storageStat.getSuccessSyncOutBytes());
|
|
System.out.println("\t\ttotal_file_open_count = " + storageStat.getTotalFileOpenCount());
|
|
System.out.println("\t\tsuccess_file_open_count = " + storageStat.getSuccessFileOpenCount());
|
|
System.out.println("\t\ttotal_file_read_count = " + storageStat.getTotalFileReadCount());
|
|
System.out.println("\t\tsuccess_file_read_count = " + storageStat.getSuccessFileReadCount());
|
|
System.out.println("\t\ttotal_file_write_count = " + storageStat.getTotalFileWriteCount());
|
|
System.out.println("\t\tsuccess_file_write_count = " + storageStat.getSuccessFileWriteCount());
|
|
System.out.println("\t\tlast_heart_beat_time = " + df.format(storageStat.getLastHeartBeatTime()));
|
|
System.out.println("\t\tlast_source_update = " + df.format(storageStat.getLastSourceUpdate()));
|
|
System.out.println("\t\tlast_sync_update = " + df.format(storageStat.getLastSyncUpdate()));
|
|
System.out.println("\t\tlast_synced_timestamp = " + df.format(storageStat.getLastSyncedTimestamp()) + getSyncedDelayString(storageStats, storageStat));
|
|
}
|
|
}
|
|
|
|
trackerServer.close();
|
|
}
|
|
catch(Exception ex)
|
|
{
|
|
ex.printStackTrace();
|
|
}
|
|
}
|
|
|
|
protected static String getSyncedDelayString(StructStorageStat[] storageStats, StructStorageStat currentStorageStat)
|
|
{
|
|
long maxLastSourceUpdate = 0;
|
|
for (StructStorageStat storageStat : storageStats)
|
|
{
|
|
if (storageStat != currentStorageStat && storageStat.getLastSourceUpdate().getTime() > maxLastSourceUpdate)
|
|
{
|
|
maxLastSourceUpdate = storageStat.getLastSourceUpdate().getTime();
|
|
}
|
|
}
|
|
|
|
if (maxLastSourceUpdate == 0)
|
|
{
|
|
return "";
|
|
}
|
|
|
|
if (currentStorageStat.getLastSyncedTimestamp().getTime() == 0)
|
|
{
|
|
return " (never synced)";
|
|
}
|
|
|
|
int delaySeconds = (int)((maxLastSourceUpdate - currentStorageStat.getLastSyncedTimestamp().getTime()) / 1000);
|
|
int day = delaySeconds / (24 * 3600);
|
|
int remainSeconds = delaySeconds % (24 * 3600);
|
|
int hour = remainSeconds / 3600;
|
|
remainSeconds %= 3600;
|
|
int minute = remainSeconds / 60;
|
|
int second = remainSeconds % 60;
|
|
String delayTimeStr;
|
|
if (day != 0)
|
|
{
|
|
delayTimeStr = String.format("%1$d days %2$02dh:%3$02dm:%4$02ds", day, hour, minute, second);
|
|
}
|
|
else if (hour != 0)
|
|
{
|
|
delayTimeStr = String.format("%1$02dh:%2$02dm:%3$02ds", hour, minute, second);
|
|
}
|
|
else if (minute != 0)
|
|
{
|
|
delayTimeStr = String.format("%1$02dm:%2$02ds", minute, second);
|
|
}
|
|
else
|
|
{
|
|
delayTimeStr = String.format("%1$ds", second);
|
|
}
|
|
|
|
return " (" + delayTimeStr + " delay)";
|
|
}
|
|
}
|