Reading Map Metrics
By default, you can read metrics for a given map, such as the primary and backup entry count, last update time, and locked entry count on each member of your cluster. You can access these statistics for the entire map, for the map entries on a specific cluster member, or specific map entries.
Getting Statistics about All Map Entries
To get statistics for all map entries that are owned by a member, use the getLocalMapStats()
method of the Java member API (embedded mode). This method returns data only if the statistics-enabled
element is set to true
, which is the default.
If you disable map statistics, statistics will not be available via the API, or in Hazelcast Management Center. |
<hazelcast>
...
<map name="myMap">
<statistics-enabled>true</statistics-enabled>
</map>
...
</hazelcast>
hazelcast:
map:
myMap:
statistics-enabled: true
LocalMapStats mapStatistics = myMap.getLocalMapStats();
System.out.println( "Number of entries owned by this member = "
+ mapStatistics.getOwnedEntryCount() );
If you need cluster-wide map statistics, you can get the local map statistics from all members of the cluster and combine them. Alternatively, you can see all map statistics in Hazelcast Management Center. |
Getting Statistics about a Specific Map Entry
To get statistics for a specific map entry, you can use the getEntryView(key)
method of one of the following available client libraries.
To use this method, the map must have its per-entry-stats-enabled
element set to true
.
This method returns the following statistics:
Statistic | Description |
---|---|
|
Cost (in bytes) of the entry. |
|
Creation time of the entry. |
|
Expiration time of the entry. |
|
Number of hits of the entry. |
|
Key of the entry. |
|
Last access time for the entry. |
|
Last time the value was saved to a MapStore. |
|
Last time the value was updated. |
|
Last set max idle time in milliseconds. |
|
Last set time-to-live in milliseconds. |
|
Value of the entry. |
|
Version of the entry. |
<hazelcast>
...
<map name="myMap">
<per-entry-stats-enabled>true</per-entry-stats-enabled>
</map>
...
</hazelcast>
hazelcast:
map:
myMap:
per-entry-stats-enabled: true
HazelcastInstance hz = Hazelcast.newHazelcastInstance();
EntryView entry = hz.getMap( "quotes" ).getEntryView( "key" );
System.out.println ( "size in memory : " + entry.getCost() );
System.out.println ( "creationTime : " + entry.getCreationTime() );
System.out.println ( "expirationTime : " + entry.getExpirationTime() );
System.out.println ( "number of hits : " + entry.getHits() );
System.out.println ( "lastAccessedTime: " + entry.getLastAccessTime() );
System.out.println ( "lastUpdateTime : " + entry.getLastUpdateTime() );
System.out.println ( "version : " + entry.getVersion() );
System.out.println ( "key : " + entry.getKey() );
System.out.println ( "value : " + entry.getValue() );
HazelcastInstance hz = HazelcastClient.newHazelcastClient();
EntryView entry = hz.getMap( "map" ).getEntryView( "key" );
System.out.println ( "size in memory : " + entry.getCost() );
System.out.println ( "creationTime : " + entry.getCreationTime() );
System.out.println ( "expirationTime : " + entry.getExpirationTime() );
System.out.println ( "number of hits : " + entry.getHits() );
System.out.println ( "lastAccessedTime: " + entry.getLastAccessTime() );
System.out.println ( "lastUpdateTime : " + entry.getLastUpdateTime() );
System.out.println ( "version : " + entry.getVersion() );
System.out.println ( "key : " + entry.getKey() );
System.out.println ( "value : " + entry.getValue() );
auto hz = hazelcast::new_client().get();
auto map = hz.get_map( "map" ).get();
auto entry = map->get_entry_view<std::string, std::string>("key").get();
std::cout << "size in memory : " << entry->cost << std::endl;
std::cout << "creationTime : " << entry->creation_time << std::endl;
std::cout << "expirationTime : " << entry->expiration_time << std::endl;
std::cout << "number of hits : " << entry->hits << std::endl;
std::cout << "lastAccessedTime: " << entry->last_access_time << std::endl;
std::cout << "lastUpdateTime : " << entry->last_update_time << std::endl;
std::cout << "version : " << entry->version << std::endl;
std::cout << "key : " << entry->key << std::endl;
std::cout << "value : " << entry->value << std::endl;
await using var client = await HazelcastClientFactory.StartNewClientAsync();
await using var map = await client.GetMapAsync<string, string>("map");
var entry = await map.GetEntryViewAsync("key");
Console.WriteLine($"Size in memory : {entry.Cost}");
Console.WriteLine($"Creation time : {entry.CreationTime}");
Console.WriteLine($"Expiration time : {entry.ExpirationTime}");
Console.WriteLine($"Number of hits : {entry.Hits}");
Console.WriteLine($"Last access time: {entry.LastAccessTime}");
Console.WriteLine($"Last update time: {entry.LastUpdateTime}");
Console.WriteLine($"Last update time: {entry.LastUpdateTime}");
Console.WriteLine($"Version : {entry.Version}");
Console.WriteLine($"Key : {entry.Key}");
Console.WriteLine($"Value : {entry.Value}");
const client = await Client.newHazelcastClient();
const map = await client.getMap('map');
const entryView = await map.getEntryView('key');
console.log(`size in memory : ${entry.cost}`);
console.log(`creationTime : ${entry.creationTime}`);
console.log(`expirationTime : ${entry.expirationTime}`);
console.log(`number of hits : ${entry.hits}`);
console.log(`lastAccessedTime: ${entry.lastAccessTime}`);
console.log(`lastUpdateTime : ${entry.lastUpdateTime}`);
console.log(`version : ${entry.version}`);
console.log(`key : ${entry.key}`);
console.log(`value : ${entry.value}`);
client = hazelcast.HazelcastClient()
entry = client.get_map("map").get_entry_view("key").result()
print("size in memory :", entry.cost)
print("creationTime :", entry.creation_time)
print("expirationTime :", entry.expiration_time)
print("number of hits :", entry.hits)
print("lastAccessedTime:", entry.last_access_time)
print("lastUpdateTime :", entry.last_update_time)
print("version :", entry.version)
print("key :", entry.key)
print("value :", entry.value)
// error handling is omitted for brevity
hzclient, _ := hazelcast.StartNewClient()
ctx := context.TODO()
myMap, _ := hz.GetMap(ctx, "my-map")
entry, _ := myMap.GetEntryView(ctx, "key")
fmt.Println("Size in memory :", entry.Cost)
fmt.Println("Creation time :", entry.CreationTime)
fmt.Println("Expiration time :", entry.ExpirationTime)
fmt.Println("Number of hits :", entry.Hits)
fmt.Println("Last accessed time :", entry.LastAccessTime)
fmt.Println("Last updated time :", entry.LastUpdateTime)
fmt.Println("Version :", entry.Version)
fmt.Println("Key :", entry.Key)
fmt.Println("Value :", entry.Value)