-
Notifications
You must be signed in to change notification settings - Fork 8
Easysoa integration architecture monitoring platform
mdutoo edited this page Nov 15, 2012
·
5 revisions
TODO translate
NB. à propos d'indicateurs monitoring etc. : voir WSLA ex. http://clip.dia.fi.upm.es/Projects/S-CUBE/.../keller03:wsla_framework.pdf
sauvé dans model :
- que les indicateurs haut niveau BS et IS ("indicateurs de santé de service")
- plus l'URL Jasmine Portal sur la plateforme d'exploitation operation_platform de l'endpoint / du projet
un indicateur est :
- service level health (ex. vert si gold, orange si silver, rouge si bronze),
- service level violation (rouge si violation),
- période sur laquelle est défini l'indicateur
- NB. rattachés sur SLA ou OLA
Service Level Indicators dashboard UI : (for a Project + Environment) lists InformationServices (per BusinessService...) and their
- service name,
- SLA ou OLA name,
- noms client et fournisseur,
- indicateur : TODO Q aboulze le dernier, les 10 derniers, de la journée, UI navigation... ?
Spécifications :
- updateSlaOlaIndicators(slaOrOlaId, environment, [versionedProjectId, ] indicators { timestamp, serviceLevelHealth=green/orange/red, serviceLevelViolation=true/false})
- slaOrOlaId est à récupérer manuellement du modèle EasySOA des Specifications et mettre dans la configuration de la plateforme de monitoring
- TODO Q aboulze : serviceLevelHealth = rather gold/silver/bronze, serviceLevelViolation = rather their count ??
- OPT slaOrOlaId peut aussi être un id métier extrait du fichier de configuration du SLA (ex. SLA/service et SLA/provider dans l'exemple d'Alain)
- get[Last/Paginated/InPeriod]Indicator(s)(slaOrOlaId, [paramètres selon besoin UI])
- TODO Q aboulze paramètres = le dernier, les 10 derniers, de la journée, UI navigation... ?
Réalisation côté serveur Nuxeo :
- réalisation : dans Nuxeo, par AuditLog
- TODO Q tdelprat, aboulze accroché à endpointDocId, ou à slaOrOlaDocId avec environnement et id projet déployant (voire versionné) dans d'autres champs (lesquels ??) ? A fournir par Jasmine tel quel (plus simple), ou à (vérifier) résoudre depuis leur nom métier (soaname), côté serveur ou (OPT caché) côté client Jasmine ?
- TODO Q tdelprat sauver : NXAuditEventService newLogEntry(), newExtendedInfo(), addLogEntries() ; principalName, eventId (none ? required ??), date, docUUID (slaOrOlaId, env voire (if not live) versioned endpointId), docPath docType docLifeCycle repositoryId (auto ?), category (string ex. easysoa.endpointState), extendedInfos (timestamp, slh, slv), comment
- TODO Q tdelprat OU BIEN créé par Event, quoi renseigné alors ?? comme dans https://github.com/nuxeo/nuxeo-platform-audit-web-access/blob/master/src/main/java/org/nuxeo/ecm/platform/audit/web/access/WebAccessLogActionListener.java
- lister : tous, HQL query on what was logged (extendedInfos)... voir http://community.nuxeo.com/5.3/books/nuxeo-book/html/audit-service.html NXAuditEventService audit = Framework.getService(NXAuditEventService.class); List entries = audit.getLogEntriesFor(document.getDocUUID()); entries = audit.nativeQueryLogs("log.docPath like '/somefolder/%' and log.extendedInfos['slaOrOlaId']='anUid'", 1, 10)
- TODO Q tdelprat lister : performances ? plutôt event=easysoa.endpointState and category=(versioned)deplProject+slaOrOla+env(ids) ??
- TODO Q tdelprat purge : quelle purge pour les AuditLogs ? le rendre tournant / borné ?
- UI : dashboard décrit plus haut, utilisant EndpointStateService.getIndicators()
- OPT dashboard UI graphe de l'évolution des indicateurs
Réalisation côté client Jasmine :
- EndpointStateService.updateSlaOlaIndicators() est appelé dans les règles EasiFab
- TODO Q jlegrand, aboulze : par quel client, protocole et authentification ?
- protocole : REST privilégié
- authentification (en tant qu'utilisateur système / "monitoring") : 2-legged OAuth privilégié voir http://developer.yahoo.com/blogs/ydn/posts/2010/04/a_twolegged_oauth_serverclient_example/ , sinon Basic éventuellement encrypté par TLS/SSL, au pire une liste d'hôtes de confiance).
- Pour cela, quel client est disponible ou embarquable côté Jasmine ?
- client HTTP - Apache HTTPClient : supporte BasicAuth, TLS/SSL, 2-legged OAuth (avec signpost http://code.google.com/p/oauth-signpost , voir http://forum.springsource.org/showthread.php?103067-How-to-configure-2-Legged-OAuth ), 3-legged OAuth (voir http://www.ibm.com/developerworks/web/library/wa-oauthsupport/index.html )
- client HTTP OAuth - Scribe : supporte 2-legged OAuth ex. http://devlog.bafford.us/two-legged-oauth-in-java-using-scribe-to-acce , sinon voir https://github.com/fernandezpablo85/scribe-java/wiki/getting-started )
- utilisé par FraSCAti Studio pour appeler Facebook etc. voir http://websvn.ow2.org/filedetails.php?repname=frascati&path=%2Ftrunk%2Ffrascati%2Ffrascati-studio%2Fsrc%2Fmain%2Fjava%2Forg%2Feasysoa%2Fcatalog%2FFacebookCatalogServices.java
- client JAXRS - CXF : supporte BasicAuth, OAuth (voir http://cxf.apache.org/docs/jax-rs-oauth.html#JAX-RSOAuth-2legOAuthFlow ), TLS/SSL
- client JAXRS - FraSCAti : supporte (au-dessus de CXF) BasicAuth, TLS/SSL (voir https://github.com/easysoa/EasySOA/issues/27 ), pas OAuth mais TODO
- client JAXRS - Jersey :
- utilisé par les proxy OW de découverte pour appeler le DiscoveryService en BasicAuth
- helper : ClientBuilder https://github.com/easysoa/EasySOA-Incubation/blob/master/easysoa-registry-v1/easysoa-registry-rest-client/src/main/java/org/easysoa/registry/rest/client/ClientBuilder.java
- exemple d'utilisation : chercher registryApi.post dans https://github.com/easysoa/EasySOA/blob/master/easysoa-proxy/easysoa-proxy-core/easysoa-proxy-locator-mock-server/src/main/java/org/easysoa/proxy/cxflocator/DiscoveryProxyLocatorServiceImpl.java
- supporte BasicAuth, OAuth voir Jersey OAuthClientFilter :
- doc https://wikis.oracle.com/display/Jersey/OAuth
- exemple http://blog.alutam.com/2009/08/10/using-jersey-client-oauth-support-with-smugmug/
- source https://svn.java.net/svn/jersey~svn/trunk/jersey/contribs/jersey-oauth/oauth-client/src/main/java/com/sun/jersey/oauth/client/OAuthClientFilter.java
- javadoc http://jersey.java.net/nonav/apidocs/latest/jersey/contribs/jersey-oauth/oauth-client/com/sun/jersey/oauth/client/OAuthClientFilter.html
NB. comment rajouter le support OAuth à un client HTTP : l'enrichir en utilisant signpost comme fait pour HTTPClient, voir http://code.google.com/p/oauth-signpost/source/browse/trunk/signpost-commonshttp4/src/main/java/oauth/signpost/commonshttp/CommonsHttpOAuthConsumer.java?r=64