Architettura per applicazioni Web per monitorare server remoti

5

Quindi sono un programmatore relativamente nuovo, che sta tentando di creare un'applicazione web (ASP.net) per visualizzare le informazioni di sistema (EG Stato dei servizi di Windows, del disco e dell'uso delle risorse e degli errori in registri eventi) di un certo numero di server remoti per scopi di monitoraggio (inizialmente - vorrei anche mantenere il progetto aperto all'aggiunta, in futuro, di alcuni controlli di base su questi server) .

Ho iniziato iniziando a creare un piccolo prototipo ma sono diventato un po 'confuso riguardo al design della soluzione.

La mia soluzione attuale prevede la creazione di un servizio Windows che viene eseguito su ciascuno dei client server (quelli monitorati), che raccoglie periodicamente i dati necessari dal locale macchina e quindi lo invia come JSON tramite una richiesta POST a una API Web ospitata in IIS sul server di monitoraggio , che riceve i dati e li archivia in un database SQL. Ora intendo creare un progetto ASPC MV.net separato da ospitare come applicazione separata in IIS sul server Monitoring e utilizzarlo come front-end - per leggere dal DB e visualizza le statistiche delle macchine.

C'è qualcosa di accecantemente sbagliato nella progettazione sopra specificata?

Inoltre, non sono sicuro se questo progetto limiti il limite di questa app, ad esempio come aggiungere funzionalità per consentire agli utenti di eseguire azioni sui server client tramite l'interfaccia web ( Per esempio, richiedere manualmente le informazioni di sistema in tempo reale, controllare a distanza i servizi Windows, cancellare i registri eventi, ecc.). Sarebbe un cattivo progetto ospitare anche un'API Web all'interno dei servizi Windows client in modo che il server possa parlare / effettuare richieste anche a tutti i client?

Scusa in anticipo se questo post è troppo lungo / ambiguo - Qualsiasi consiglio e / o suggerimenti di progettazione sarebbero notevolmente apprezzati!

    
posta BananaSandwich 17.01.2016 - 16:15
fonte

1 risposta

4

Non c'è nulla di "sbagliato" con un approccio alla progettazione / distribuzione di un agente per PC che raschia i registri e li inserisce in una fonte centrale. Ma quando mi è stato chiesto di recente di sviluppare una soluzione che includesse PC di polling per determinati bit di configurazione / salute, ho scelto di utilizzare un server che esegue il polling via WMI per ottenere le statistiche desiderate. Se i bit che è necessario raccogliere sono disponibili tramite WMI (e probabilmente lo sono), consiglierei i registri di scraping.

Attualmente sto interrogando circa 60.000 desktop e server Windows a livello globale per un'azienda. Dispongo di un account di servizio fornito con i diritti necessari e di quattro processi in esecuzione su una casella di Windows 2008 (uno per ciascuna regione) e di riversare i risultati in MSSQL e quindi di utilizzare SSRS come livello di presentazione.

Una volta che sono stato in grado di raccogliere i dati e fornire viste del problema tra regioni / divisioni e conteggi di server e desktop vulnerabili, il problema si è rapidamente trasformato in come cambiare le configurazioni su un numero enorme di host per chiudere il vulnerabilità, e per farlo ho solo bisogno di cambiare la mia chiamata WMI da un "get" a un "set".

Facendo leva su WMI e mettendo "l'agente" su un server ho evitato il tempo necessario per sviluppare e testare un pacchetto client, e averlo eliminato, ecc. E quando il requisito è cambiato, come spesso accade, non ho Deve passare di nuovo da quella versione di sviluppo / distribuzione. E WMI è qui per rimanere, quindi il mio codice funzionerà mentre i desktop si trasformeranno in Windows 10 e server nel 2012. Se le posizioni dei log cambiano, ecc. Non sono interessato. E dal momento che non ho distribuito nulla agli host non posso essere incolpato di problemi di prestazioni ecc. Chiamare WMI per ottenere informazioni ha un impatto minimo.

I log di scraping dovrebbero essere l'ultima risorsa. Se la piattaforma che stai raccogliendo i dati fornisce un'API, facendo leva su tale API semplificherai sempre il tuo lavoro e la tua soluzione scalerà, sopravviverà agli aggiornamenti della versione, ecc.

    
risposta data 25.02.2016 - 00:51
fonte

Leggi altre domande sui tag