better logs for discovery and polling
This commit is contained in:
parent
492dc74c9a
commit
0b72b47ae6
1 changed files with 29 additions and 9 deletions
|
|
@ -32,8 +32,6 @@ defmodule Towerops.Workers.DiscoveryWorker do
|
|||
|
||||
@impl Oban.Worker
|
||||
def perform(%Oban.Job{args: %{"device_id" => device_id}}) do
|
||||
Logger.info("Starting SNMP discovery for device #{device_id}")
|
||||
|
||||
case Devices.get_device_with_details(device_id) do
|
||||
nil ->
|
||||
Logger.error("Device #{device_id} not found")
|
||||
|
|
@ -42,10 +40,15 @@ defmodule Towerops.Workers.DiscoveryWorker do
|
|||
device ->
|
||||
case get_assigned_agent(device) do
|
||||
{agent_token_id, source} when not is_nil(agent_token_id) ->
|
||||
agent = Agents.get_agent_token!(agent_token_id)
|
||||
poller_type = if agent.cloud_poller, do: "cloud poller", else: "user's poller"
|
||||
|
||||
Logger.info(
|
||||
"Device has assigned agent, delegating discovery",
|
||||
"Starting SNMP discovery for device #{device_id} using #{poller_type} '#{agent.name}' (#{source} assignment)",
|
||||
device_id: device_id,
|
||||
agent_token_id: agent_token_id,
|
||||
agent_name: agent.name,
|
||||
cloud_poller: agent.cloud_poller,
|
||||
source: source
|
||||
)
|
||||
|
||||
|
|
@ -53,7 +56,7 @@ defmodule Towerops.Workers.DiscoveryWorker do
|
|||
|
||||
{nil, :none} ->
|
||||
Logger.info(
|
||||
"No agent assigned, attempting cloud poller fallback",
|
||||
"Starting SNMP discovery for device #{device_id} with no assigned agent, will try cloud pollers then cluster fallback",
|
||||
device_id: device_id
|
||||
)
|
||||
|
||||
|
|
@ -124,17 +127,20 @@ defmodule Towerops.Workers.DiscoveryWorker do
|
|||
case get_next_cloud_poller(tried_agents) do
|
||||
nil ->
|
||||
Logger.info(
|
||||
"No more cloud pollers available, falling back to direct SNMP from cluster",
|
||||
"No more cloud pollers available, falling back to direct SNMP from Phoenix cluster",
|
||||
device_id: device.id
|
||||
)
|
||||
|
||||
perform_direct_discovery(device)
|
||||
|
||||
next_agent_id ->
|
||||
agent = Agents.get_agent_token!(next_agent_id)
|
||||
|
||||
Logger.info(
|
||||
"Trying next cloud poller",
|
||||
"Trying cloud poller '#{agent.name}' for device #{device.id}",
|
||||
device_id: device.id,
|
||||
cloud_poller_id: next_agent_id
|
||||
cloud_poller_id: next_agent_id,
|
||||
agent_name: agent.name
|
||||
)
|
||||
|
||||
attempt_agent_discovery(device, next_agent_id, [next_agent_id | tried_agents])
|
||||
|
|
@ -228,13 +234,27 @@ defmodule Towerops.Workers.DiscoveryWorker do
|
|||
end
|
||||
|
||||
defp perform_direct_discovery(device) do
|
||||
Logger.info(
|
||||
"Performing SNMP discovery from Phoenix cluster for device #{device.id}",
|
||||
device_id: device.id
|
||||
)
|
||||
|
||||
case Snmp.discover_device(device) do
|
||||
{:ok, _snmp_device} ->
|
||||
Logger.info("SNMP discovery completed successfully for device #{device.id}")
|
||||
Logger.info(
|
||||
"SNMP discovery completed successfully from Phoenix cluster for device #{device.id}",
|
||||
device_id: device.id
|
||||
)
|
||||
|
||||
:ok
|
||||
|
||||
{:error, reason} ->
|
||||
Logger.error("SNMP discovery failed for device #{device.id}: #{inspect(reason)}")
|
||||
Logger.error(
|
||||
"SNMP discovery failed from Phoenix cluster for device #{device.id}: #{inspect(reason)}",
|
||||
device_id: device.id,
|
||||
reason: reason
|
||||
)
|
||||
|
||||
{:error, reason}
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue