feat(introspection): add lines and version to info
This commit is contained in:
1 parent
8757d4b0c8
commit
ca34ee8744
1 file changed
+97
@@ -161,3 +161,100 @@ defmodule Excache.Command.Introspection.Info do
|
|||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defp lines(:persistence, _context) do
|
||||||
|
snapshotPath = Persistence.snapshot_path()
|
||||||
|
|
||||||
|
[
|
||||||
|
{"loading", 0},
|
||||||
|
{"rdb_last_save_time", fileMtime(snapshotPath)},
|
||||||
|
{"rdb_snapshot_size", fileSize(snapshotPath)},
|
||||||
|
{"aof_enabled", 1},
|
||||||
|
{"aof_rewrite_in_progress", 0},
|
||||||
|
{"aof_fsync_policy", Aof.fsync_policy()},
|
||||||
|
{"aof_current_size", fileSize(Aof.path())}
|
||||||
|
]
|
||||||
|
end
|
||||||
|
|
||||||
|
defp lines(:stats, context) do
|
||||||
|
snapshot = context.clients
|
||||||
|
runner = Runner.stats()
|
||||||
|
|
||||||
|
[
|
||||||
|
{"total_connections_received", snapshot.connectionsReceived},
|
||||||
|
{"total_net_input_bytes", snapshot.netIn},
|
||||||
|
{"total_net_output_bytes", snapshot.netOut},
|
||||||
|
{"evicted_keys", runner.evictedKeys},
|
||||||
|
{"oom_rejections", runner.oomRejections},
|
||||||
|
{"pubsub_channels", Clients.subscribedChannels()},
|
||||||
|
{"pubsub_patterns", 0}
|
||||||
|
]
|
||||||
|
end
|
||||||
|
|
||||||
|
defp lines(:replication, _context) do
|
||||||
|
[
|
||||||
|
{"role", "master"},
|
||||||
|
{"connected_slaves", 0},
|
||||||
|
{"master_failover_state", "no-failover"},
|
||||||
|
{"master_repl_offset", 0},
|
||||||
|
{"second_repl_offset", -1},
|
||||||
|
{"repl_backlog_active", 0},
|
||||||
|
{"repl_backlog_size", 0},
|
||||||
|
{"repl_backlog_first_byte_offset", 0},
|
||||||
|
{"repl_backlog_histlen", 0}
|
||||||
|
]
|
||||||
|
end
|
||||||
|
|
||||||
|
defp lines(:keyspace, context) do
|
||||||
|
case Store.dbsize() do
|
||||||
|
0 ->
|
||||||
|
[]
|
||||||
|
|
||||||
|
keys ->
|
||||||
|
[{"db0", "keys=#{keys},expires=#{context.volatile},avg_ttl=#{context.avgTtl}"}]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp lines(:cpu, _context) do
|
||||||
|
{runtimeMillis, _sinceLast} = :erlang.statistics(:runtime)
|
||||||
|
{wallMillis, _sinceLast} = :erlang.statistics(:wall_clock)
|
||||||
|
|
||||||
|
[
|
||||||
|
{"used_cpu_total", seconds(runtimeMillis)},
|
||||||
|
{"wall_clock_seconds", seconds(wallMillis)},
|
||||||
|
{"schedulers", :erlang.system_info(:schedulers)},
|
||||||
|
{"schedulers_online", :erlang.system_info(:schedulers_online)},
|
||||||
|
{"run_queue", :erlang.statistics(:total_run_queue_lengths)}
|
||||||
|
]
|
||||||
|
end
|
||||||
|
|
||||||
|
defp version, do: :excache |> Application.spec(:vsn) |> List.to_string()
|
||||||
|
|
||||||
|
defp tcpPort do
|
||||||
|
{:ok, port} = Config.get("port")
|
||||||
|
port || 0
|
||||||
|
end
|
||||||
|
|
||||||
|
defp seconds(millis), do: :erlang.float_to_binary(millis / 1000, decimals: 2)
|
||||||
|
|
||||||
|
defp fileSize(path) do
|
||||||
|
case File.stat(path) do
|
||||||
|
{:ok, stat} -> stat.size
|
||||||
|
{:error, _reason} -> 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp fileMtime(path) do
|
||||||
|
case File.stat(path, time: :posix) do
|
||||||
|
{:ok, stat} -> stat.mtime
|
||||||
|
{:error, _reason} -> 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
defp humanBytes(bytes) when bytes < 1024, do: "#{bytes}B"
|
||||||
|
defp humanBytes(bytes) when bytes < 1_048_576, do: scaled(bytes, 1024, "K")
|
||||||
|
defp humanBytes(bytes) when bytes < 1_073_741_824, do: scaled(bytes, 1_048_576, "M")
|
||||||
|
defp humanBytes(bytes), do: scaled(bytes, 1_073_741_824, "G")
|
||||||
|
|
||||||
|
defp scaled(bytes, divisor, suffix),
|
||||||
|
do: :erlang.float_to_binary(bytes / divisor, decimals: 2) <> suffix
|
||||||
|
end
|
||||||
Reference in new issue
Block a user