Klient (et administrasjonsverktøy med et kommandolinje brukergrensesnitt)

Like dokumenter
INF3190 Obligatorisk oppgave: Eksternt administrasjonsverktøy med datastreaming

Slope-Intercept Formula

HONSEL process monitoring

INF Hjemmeeksamen 2

Information search for the research protocol in IIC/IID

Norsk (English below): Guide til anbefalt måte å printe gjennom plotter (Akropolis)

Trådløsnett med. Wireless network. MacOSX 10.5 Leopard. with MacOSX 10.5 Leopard

SQL Server guide til e-lector

UNIVERSITETET I OSLO

of color printers at university); helps in learning GIS.

INF Hjemmeeksamen 1 - Vår 2014 Bridging på linklaget

Om Samba/fildeling. Hans Nordhaug Institutt for informatikk Høgskolen i Molde

Prosjektet Digital kontaktinformasjon og fullmakter for virksomheter Digital contact information and mandates for entities

Unit Relational Algebra 1 1. Relational Algebra 1. Unit 3.3

Trigonometric Substitution

Elektronisk innlevering/electronic solution for submission:

Om Samba/fildeling. Hans Nordhaug Institutt for informatikk Høgskolen i Molde

Trådløsnett med Windows Vista. Wireless network with Windows Vista

Han Ola of Han Per: A Norwegian-American Comic Strip/En Norsk-amerikansk tegneserie (Skrifter. Serie B, LXIX)

1 User guide for the uioletter package

Trådløsnett med Windows XP. Wireless network with Windows XP

UNIVERSITY OF OSLO DEPARTMENT OF ECONOMICS

Den som gjør godt, er av Gud (Multilingual Edition)

Enkel og effektiv brukertesting. Ida Aalen LOAD september 2017

PATIENCE TÅLMODIGHET. Is the ability to wait for something. Det trenger vi når vi må vente på noe

Elektronisk termostat med spareprogram. Lysende LCD display øverst på ovnen for enkel betjening.

UNIVERSITETET I OSLO

Administrasjon av postnummersystemet i Norge Post code administration in Norway. Frode Wold, Norway Post Nordic Address Forum, Iceland 5-6.

Vedlegg 2 Dokumentasjon fra TVM leverandør

Neural Network. Sensors Sorter

Hvordan føre reiseregninger i Unit4 Business World Forfatter:

Hangman. Level. Introduksjon

INF3190 Obligatorisk oppgave: Linklagets flytkontroll

Orders Ethernet connect

GLOBALCOMSERVER HP 9100C DIGITAL SENDER GATEWAY ADMINISTRATOR S GUIDE 1998 AVM INFORMATIQUE (UPDATED: AUGUST 22, 2006)

Endelig ikke-røyker for Kvinner! (Norwegian Edition)

GEO231 Teorier om migrasjon og utvikling

The regulation requires that everyone at NTNU shall have fire drills and fire prevention courses.

Kartleggingsskjema / Survey

// Translation // KLART SVAR «Free-Range Employees»

Gol Statlige Mottak. Modul 7. Ekteskapsloven

Lynkurs i shellprogrammering under Linux

Call function of two parameters

PSi Apollo. Technical Presentation

Guide for bruk av virtuelle møterom

INF Logikk og analysemetoder Forslag til løsning på oppgave fra læreboken

Slutteksamen in115 Nettverksdrift (bokmål)

Kapittel 7, Minne RAM DIMM, SIMM ROM, PROM, EPROM, EEPROM FLASH DIM SUM. Cache Virtuelt minne

Trådløst nett UiT. Feilsøking. Wireless network UiT Problem solving

Brukerkrav og use case diagrammer og -tekst 19. januar Agenda. Brukerkrav og use case. Diagrammer Tekst.

The Norwegian Citizen Panel, Accepted Proposals

UNIVERSITETET I OSLO

Tilpasning av Windows 2000 server til Skolelinux tynnklienttjener

Mathematics 114Q Integration Practice Problems SOLUTIONS. = 1 8 (x2 +5x) 8 + C. [u = x 2 +5x] = 1 11 (3 x)11 + C. [u =3 x] = 2 (7x + 9)3/2

6105 Windows Server og datanett

6105 Windows Server og datanett

Perpetuum (im)mobile

API: Application programming interface, eller programmeringsgrensesnitt

Du må håndtere disse hendelsene ved å implementere funksjonene init(), changeh(), changev() og escape(), som beskrevet nedenfor.

KROPPEN LEDER STRØM. Sett en finger på hvert av kontaktpunktene på modellen. Da får du et lydsignal.

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Oversikt. Beskrivelse Bash. 1 UNIX shell. 2 Kommandolinje som brukergrensesnitt. 3 Input og output. 4 Bash builtins. 5 Linux utilities.

Hjemmeeksamen 2 i INF3110/4110

Hvor mye praktisk kunnskap har du tilegnet deg på dette emnet? (1 = ingen, 5 = mye)

TUSEN TAKK! BUTIKKEN MIN! ...alt jeg ber om er.. Maren Finn dette og mer i. ... finn meg på nett! Grafiske lisenser.

Hvor mye teoretisk kunnskap har du tilegnet deg på dette emnet? (1 = ingen, 5 = mye)

Dagens tema: Eksempel Klisjéer (mønstre) Tommelfingerregler

Instructions for the base (B)-treatment and the elicitation (E)-treatment of the experiment

Syntax/semantics - I INF 3110/ /29/2005 1

EMPIC MEDICAL. Etterutdanningskurs flyleger 21. april Lars (Lasse) Holm Prosjektleder Telefon: E-post:

TUSEN TAKK! BUTIKKEN MIN! ...alt jeg ber om er.. Maren Finn dette og mer i. ... finn meg på nett! Grafiske lisenser.

EN Skriving for kommunikasjon og tenkning

MID-TERM EXAM TDT4258 MICROCONTROLLER SYSTEM DESIGN. Wednesday 3 th Mars Time:

Kurskategori 2: Læring og undervisning i et IKT-miljø. vår

TwidoSuite kommunikasjon

Trådløst nett UiT Feilsøking. Wireless network UiT Problem solving

TUSEN TAKK! BUTIKKEN MIN! ...alt jeg ber om er.. Maren Finn dette og mer i. ... finn meg på nett! Grafiske lisenser.

Microsoft Dynamics C5 Version 2008 Oversigt over Microsoft Reporting Services rapporter

Bestille trykk av doktoravhandling Ordering printing of PhD Thesis

TILLEGGSSPØRSMÅL BILLETT- OG ADMINISTRASJONSSYSTEM KINONOR AS COMPLEMENTARY QUESTIONS POINT OF SALE SOFTWARE PACKAGE KINONOR AS

6107 Operativsystemer og nettverk

Dynamic Programming Longest Common Subsequence. Class 27

UNIVERSITETET I OSLO ØKONOMISK INSTITUTT

Vedlegg til veiledning til læreplan i engelsk. Se skolenettet.no/veiledninger

Innholdsfortegnelse... 1 Endringslogg UD BETALINGSTERMINAL NETS NEW DRIVERS FULL SUPPORT WINDOWS

Tilkobling og Triggere

Exercise 1: Phase Splitter DC Operation

Moving Objects. We need to move our objects in 3D space.

SERVICE BULLETINE

Skjema for spørsmål og svar angående: Skuddbeskyttende skjold Saksnr TED: 2014/S

Start Here USB *CC * *CC * USB USB

Improving Customer Relationships

Emneevaluering GEOV272 V17

Geir Lieblein, IPV. På spor av fremragende utdanning NMBU, 7. oktober 2015 GL

UNIVERSITETET I OSLO

GYRO MED SYKKELHJUL. Forsøk å tippe og vri på hjulet. Hva kjenner du? Hvorfor oppfører hjulet seg slik, og hva er egentlig en gyro?

Hvor mye praktisk kunnskap har du tilegnet deg på dette emnet? (1 = ingen, 5 = mye)

Verifiable Secret-Sharing Schemes

Innhold. Introduksjon til parallelle datamaskiner. Ulike typer parallelle arkitekturer. Prinsipper for synkronisering av felles hukommelse

Transkript:

INF3190 - Hjemmeeksamen 1 - Vår 2011 Formelt Denne oppgaven er karaktergivende og skal løses individuelt. Karakteren som gis teller omlag 20 % på sluttkarakteren. Oppgaven blir vurdert etter hvor stor grad kravene i avsnittet "Oppgave" er oppfylt. Oppgave Hjemmeeksamen 1 Oppgave Målet med denne oppgaven er å utvikle et verktøy for overvåking/administrasjon som gjør at en administrator kan bruke en klient for fjernovervåkning av alle prosesser som kjører i et cluster av Linux maskiner. Hvis en prosess som kjører eksternt øker CPU belastningen til mer enn en bestemt terskel i en bestemt varighet blir klienten varslet og forespurt om denne prosessen skal avsluttes eller ikke. Merk: Løsningen skal utvikles i programmeringsspråket C. Dette oppgaven kan være en utvidelse av Obligatorisk oppgave. Server (i et cluster av Linux maskiner) Server applikasjonen kjører på alle servere som skal overvåkes og venter alltid på tilkobling fra klienter. Når en server mottar en «MONITOR START: THRESHOLD=Y DURATION=Z» forespørsel fra en tilkoblet klient, starter serveren overvåkning av CPU forbruket for alle kjørende prosesser på serveren i en løkke (f.eks. hvert 500 ms) og sjekker om CPU forbruket til noen av disse prosessene overstiger terskelen Y (f.eks. 80%). Hvis så er tilfelle, skal prosess ID en(pid) til prosessen som overskrider terskelen lagres og løkken med overvåkning fortsette. Hvis CPU forbruket er over terskelen for alle sjekker innfor varighet Z (f.eks. 30 sekunder), sendes et varsel til klienten inkludert PID og annen statistikk tilhørende prosessen. Deretter venter serveren på klientens svar for å avgjøre om prosessen skal avsluttes eller ikke. Så snart brukeren på klientsiden bestemmer seg for å avslutte prosessen som svar til serverens varsling, sendes en «KILL PID» kommando tilbake til serveren med TCP, og denne kommandoens suksess/feil skal rapporteres tilbake til klienten. Hvis en server mottar en "MONITOR STOP" kommando fra klienten, skal den stoppe overvåkningen av prosesser, frigjøre minnet og rive ned tilkoblingen til klienten. Serveren skal fremdeles lytte på en TCP socket for nye tilkoblinger fra en klient, og hvis andre klienter er tilkoblet skal serveren fortsette å overvåke prosesser for disse. Du kan la serveren forke ( fork() ) nye prosesser som i den obligatoriske oppgaven for å utrette dette. Merk: For å trekke ut statistikk på CPU forbruk for hver prosess kan du bruke Linux kommandoer som 'ps aux', 'top' eller lese fra '/proc' filsystemet, og få hjelp av 'grep', 'sed' or 'awk'. Du kan også skrive din egen kode som trekker ut de nyttige dataene. Klient (et administrasjonsverktøy med et kommandolinje brukergrensesnitt) Klienten har et kommandolinje brukergrensesnitt (CLI) som kan kommunisere med brukeren. Etter å ha startet klientapplikasjonen kan brukeren velge å overvåke en Linux maskin ved å bruke kommandoen MONITOR og spesifisere CPU forbruk terskel og tillatt varighet. Eksempel(1): [cmd]$ MONITOR 192.168.2.7 80% 30sek Eksempel(2): [cmd]$ MONITOR verjulaus.ifi.uio.no 90% 60sek Merk: Klienten skal kunne håndtere maskinadresser i form av en IP-adresse eller et domenenavn.

På dette tidspunktet skal klienten åpne en TCP socket mot server og sender MONITOR kommandoen sammen med tilhørende argumenter til serveren. Klienten skal kunne koble til flere servere samtidig. Når en eller flere servere blir overvåket, kan klienten bli varslet av en server om at en av dens prosesser har overskredet lovlig CPU bruk. Dette varselet skal sendes via TCP for å være sikker på at den kommer fram riktig. Samtidig skal serveren starte å stream e statistikk om prosessen til klienten over en UDP socket (for å sikre rask respons). Disse meldingene skal deles opp i pakker på 100 bytes, og du bør lage en enkel protokoll som sikrer at pakkene vises i riktig rekkefølge og varsle om eventuelle pakke tap. Statistikken bør oppdateres regelmessig (f.eks. hvert 500 ms) på skjermen til brukeren, uten å forstyrre kommando linjen. Om flere servere sender statistikk samtidig, bør de alle også vises samtidig. Tips: Se på biblioteker som ncurses. [cmd]$ Varsel#1! Prosessen '3968' på 'verjulaus.ifi.uio.no' overskrev 90% CPU bruk i 60 sek. Vil du terminere prosessen? (J/N) JA STATS: USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND naeem 3968 95.9 39.0 362516 195048? Sl 17:27 9:00 /usr/lib/firefox Når administratoren velger å terminere prosessen, skal en KILL kommando bli sendt til serveren med hvilken PID som skal drepes. Serveren skal da prøve å drepe prosessen, og klienten skal bli varslet om dette gikk bra eller feilet. [cmd]$ Prosessen '3968' på 'verjulaus.ifi.uio.no' ble avsluttet riktig! [cmd]$... Når flere servere prøver å sende varsler samtidig til klienten, skal klienten skrive dem ut en om gangen (rekkefølgen er ikke viktig). Om et varsel kommer fram midt under innskriving av en kommando eller mens man bestemmer seg for hva man skal svare på et annet varsel, skal varselet bli lagret i en buffer og skrevet ut når den forrige handlingen er utført. Mens et varsel er under behandling, skal ikke serveren sende flere (unødvendige) varsler. Brukeren skal kunne velge å stoppe overvåkingen av en spesifikk server eller alle servere. Da burde socket(ene) bli lukket ordentlig og allokert minne frigitt. Det samme skal skje om brukeren velger å avslutte programmet. [cmd]$ MONITOR 192.168.2.7 STOP [cmd]$ MONITOR ALL STOP [cmd]$ EXIT Når brukeren skriver inn kommandoen HELP, skal en beskrivelse av alle gyldige kommandoer vises på skjermen. Merk(1): For å teste programmet ditt, skriv et lite tilleggsprogram i C eller et annet programmeringsspråk som bruker mer CPU kraft en terskelen du har spesifisert. Merk(2): Alle kommandoer og varsler skal sendes over TCP sockets, mens sanntids prosess statistikken burde sendes via UDP sockets. Siden UDP pakker kan bli borte, burde dette indikeres med en utskrift (f.eks. 100 bytes tapt ). Du vil trenge to protokoller, en for å pakke dataen sendt via UDP og en for å sende kommandoer og svar. Disse to skal være utformet av deg alene, og være forklart i innleveringen. Format på forespørslene gitt i denne beskrivelsen er bare eksempler.

Innlevering Dere skal levere følgende: 1. Et designdokument som inneholder: - Hvordan programmet er designet (gjerne en tegning som viser i hvilken rekkefølge de forskjellige funksjonene blir kalt). - Dokumentasjon om hvordan programmet skal startes evt. avsluttes. - Hvilke filer programmet består av (C filer, headerfiler osv.), og en linje om hvilken del av programmet de inneholder 2. Programkoden, hvor koden er godt kommentert. Dokumentér alle variabler og definisjoner. For hver funksjon i programmet skal følgende dokumenteres: - Hva funksjonen gjør. - Hva inn- og ut-parametre betyr og brukes til. - Hvilke globale variable funksjonen endrer. - Hva funksjonen returnerer. - Andre særegenheter som er viktig å vite om (f.eks. feilsituasjoner). Krav til innleveringen Designdokumentet skal skrives vha. et egnet verktøy, f.eks. LaTeX, Word, etc. Dokumentet skal ha en forside hvor følgende opplysninger er angitt: kandidatnummeret, dato, kurs. Før levering skal dokumentet konverteres til pdf-format. Hverken et Word/OpenOffice/TeX -dokument eller en ren tekstfil godtas. Koden må være kompilerbare tekstfiler, og programmet skal kunne kjøre på IFIs Linux-maskiner. Omfanget av dokumentet trenger ikke nødvendigvis være så stort, men må inneholde tilstrekkelig informasjon til å oppfylle kravet som beskrevet under 'oppgave'. Det som er viktig er å dokumentere forståelse for de berørte emner, i tillegg til selve gjennomføringen. Elektronisk innlevering: Alt skal leveres elektronisk hvor alle filer (Makefile, *.c, *.h, DESIGN.pdf, README.txt, etc.) er samlet i en katalog med kandidatnummeret som navn. Av denne katalogen lager du en komprimert tar-ball -- Bruk kommandoen tar zcvf knr.tgz knr hvor knr er kandidatnummeret ditt! Den elektroniske innleveringen skal leveres via web. Linken Innlevering av oppgaven finnes på kursets hjemmeside. Innleveringsfrist: Mandag 11. april 2011 klokken 23:59 Merk at denne tidsfirsten er HARD, oppgaver levert etter fristen vurderes med karakteren "F", altså stryk. Sykemelding med legeerklæring fører til at hjemmeeksamen ikke teller i sluttresultatet. Husk at du ikke kan levere kopi av andres besvarelser, men skal levere en egenprodusert løsning. Les kravene til innleveringer på http://www.ifi.uio.no/studier/studentinfo.html#krav. Det forutsettes at studenten har lest forskrift om studier og eksamener ved Universitetet i Oslo for karaktergivende oppgaver. Forklaringskrav Faglærere vil gjennomføre stikkprøver blant de innleveringer som oppfyller kravene for godkjenning. Det innkalles til et uformelt møte. Forklaringen omfatter brukt oppgaven, innlevert kode og programflyt. Hvis forklaringen ikke er tilstrekkelig underkjennes innleveringen. Hvis innleveringen underkjennes på grunn av stikkprøven, kan man velge formell muntlig prøve med faglæreren som omfatter det samme materialet og som gjelder godkjenning av obligen.

(Description in English) INF3190 Home Exam 1 Oppgave Home Exam 1 The goal is to develop a monitoring/administration tool which allows an administrator to use a client to monitor all processes running on a cluster of Linux machines remotely. If a process increases the CPU load to more than a certain threshold for a certain duration of time, the client is notified and requested whether that process should be terminated remotely or not. Note: The solution must be coded in the C programming language. This assignment can be an extension of "Mandatory Assignment". Server (on a cluster of Linux machines) The server application is running on all servers to be monitored, and is always waiting for clients to connect. Once a server receives a "MONITOR START: THRESHOLD=Y DURATION=Z" request from a connected client tool, it starts to monitor the CPU usage of all running processes on the server machine in a loop (e.g. with the delay of every 500ms) and checks if the CPU usage of any of these processes exceeds the threshold Y (e.g. 80%). In that case, the process ID (PID) of the process which is exceeding the threshold is stored and the monitoring loop continues. If the CPU usage of the stored process is above the threshold for all the checks within duration Z (e.g. 30 seconds), an alert is sent to the client including the PID and other statistics of that process. Then the server waits for the client's response on whether the process should be terminated or not. Once the user on the client side decides to terminate the process in response to the server's alert, a KILL PID command should be sent back to the server via TCP, and its success/failure should be reported back to the client. If the server receives a "MONITOR STOP" command from the client, it should stop monitoring the processes, free memory and tear down the connection to the given client. It should still listen on a TCP socket for new connections from any client, and if other clients are still connected it should still monitor the processes for them. You can let the server fork child processes like in the mandatory assignment to accomplish this. Note: To extract the CPU usage statistics of each process, you can use any Linux commands such as 'ps aux' or 'top' or read from '/proc' file system and get help from 'grep', 'sed' or 'awk' or even your own written code to extract the useful data. Client (an administration tool with command line user-interface) The client has a command line user-interface (CLI) to interact with the user. After starting the client application, the user can choose to monitor a Linux machine using a MONITOR command and specify the CPU usage threshold and permitted duration. Example(1): [cmd]$ MONITOR 192.168.2.7 80% 30sec Example(2): [cmd]$ MONITOR verjulaus.ifi.uio.no 90% 60sec Note: The client should be able to get the host addresses in form of an IP address or a domain name. At this point, the client opens a TCP socket to the host and passes the MONITOR command along with its arguments to the server. The client can connect to several servers at once. When one or more servers are being monitored, the client might be alerted by a server that one of its processes have exceeded the valid CPU usage. This alert should be sent via TCP, to make sure it arrives. At the same time, the server will start to stream statistics about the process to the client over a UDP socket (to be fast-responsive). These messages should be divided into packets of maximum 100 bytes, and you should create a small protocol to make sure the packets are displayed in correct order and to detect lost packets. The statistics should be updated

regularly (e.g. each 500 ms) on the screen of the user, without interfering with the command line. If several servers are sending statistics at the same time, they should all be displayed at the same time. Tip: Look into libraries like 'ncurses'. [cmd]$ Alert#1! The process '3968' on 'verjulaus.ifi.uio.no' exceeds 90% CPU usage for 60sec. Do you want to terminate the process? (Y/N) YES STATS: USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND naeem 3968 95.9 39.0 362516 195048? Sl 17:27 9:00 /usr/lib/firefox Once the administrator chooses to terminate the processes, a KILL command should be sent to the server with the PID to kill. The server will then try to kill the process, and the client will be notified about its success/failure. [cmd]$ Process '3968' on 'verjulaus.ifi.uio.no' terminated successfully! [cmd]$... When multiple servers simultaneously try to send alerts to the client, the client should print them one at a time (in any order). If an alert arrives while the user is writing a command or making a decision about another alert, it should be buffered and displayed when the previous alert was taken care of. While a decision is pending, the server should not send any more (redundant) alerts. The user may choose to stop the monitoring of a specific server or on all servers. Then sockets should be closed safely and allocated memory should be freed. The same happens when the user chooses to exit the program. [cmd]$ MONITOR 192.168.2.7 STOP [cmd]$ MONITOR ALL STOP [cmd]$ EXIT When the user issues the command HELP, a description of all the commands should be displayed. Note(1): To test your program write a small program in C or any other programming language to increase the CPU load artificially to more than your specified threshold. Note(2): All commands and alerts should be sent via TCP sockets, while all the real time process statistics should be sent via UDP sockets. Since UDP packets can get lost, this should be indicated in the output (e.g. 100 bytes lost in this sequence ). You will need two protocols, one for wrapping the data sent via UDP, and one to send the commands and responses. These two should be designed by yourself, and described in the delivery. The request formats given here are examples only.