<commit_before>Rigth now it's a starting project so it's nothing!

#PointerDog

pointerDog is a collection of tool and a website to collect information about your servers to help you find what is wrong, hping to find it before clients call. The project is made in python Pyramid and has  parts to be installed on servers and a part to be installed as a service.

I tried centreon and Nagios and I found it to complex for what it is, I look at Cabot and it's missing some key elements. I've looked at Logstash and tought it would be nice to combine it with something like Nagios and combine log analysing with event happening. So I told my self, le make something that you'll use and maybe others will come.

On top of that I'm a DevOp, I like it when everything is running smoothly, so I can code more! I do like neat UX and think that there's not enough neat interfaces for sysadmins.

#Requirements

- Python3
- Python3-dev
- Mongodb-server
- Install the modules from requirements.txt (It may be splitted one for the website and one for the server side apps)

#TODO

- Write tests for all what follows.
- ICMP : Make a ICMP library to watch if servers ar up.
- ICMP relay : Make a offsite ICMP watcher to make sure that it's not only your network that is down.. [Think about this more Belug!]
- HTTP and HTTPS watcher : To check if webservers are still up.
- Website watcher : Check if websites are still responding, may be by watching the OPTION request?
- Database watcher : Check if the database is still up.... [Maybe on client side!]
- Mail{relay, box, filter, ...} watcher : Look at all te part of mail service to determine if everything is working good.
- System updates watchers : Check for updates for the OS, if possible get the changelog to help sysadmin have the knowledge of what the are doing. [This will need to be multiple packages to support all the platforms redhat based, debian based, arch based, BSD based... , Windows?, Mac? Solaris?]
- System watcher : Disk space, load, memory, installed softwares, IP adresses, network load and uptime.
- Virtualenv | rvm watcher : Valide the state of those environements to check if there's update to do.
- Log catcher : Client side script in a cron job to collect logs and send it to pointerDog.<commit_msg>Defining the Application design as MVCA<commit_after>Rigth now it's a starting project so it's nothing!

#PointerDog

pointerDog is a collection of tool and a website to collect information about your servers to help you find what is wrong, hping to find it before clients call. The project is made in python Pyramid and has  parts to be installed on servers and a part to be installed as a service.

I tried centreon and Nagios and I found it to complex for what it is, I look at Cabot and it's missing some key elements. I've looked at Logstash and tought it would be nice to combine it with something like Nagios and combine log analysing with event happening. So I told my self, le make something that you'll use and maybe others will come.

On top of that I'm a DevOp, I like it when everything is running smoothly, so I can code more! I do like neat UX and think that there's not enough neat interfaces for sysadmins.

#Requirements

- Python3
- Python3-dev
- Mongodb-server
- Install the modules from requirements.txt (It may be splitted one for the website and one for the server side apps)


# The application design is MVCA

Ok, MVCA is made up, since it's not yet a standard, but it's Model View Controller Abstarction. So you take a standard MVC and put all your bussiness logic in an abstraction, a set of class and function outside of MVC. So all your logic is independent of what your app is and when migrating from html pages to javascript REST api, you don't need to rewrite your logic, just the way you handle the http request. Plus it's easier for the tests monster and to debug.

Exemple :

    Action : Add a new Computer.
    Controller : Get the resquest, grab the needed information [POST, current user] and create a new Computer Object.
    Computer Object (Abstraction) : Take all the data he recived, validate it, interact with the model and return result (Positive or negative)
    Controller : get the result, make the response and render if needed.

It's simple, and it answer most of the questions that looks like "Do I put that in the controller or in the model?"

So thanks to <NAME> for this talk : http://youtu.be/yvjmAYmYOj0 that came right a the good moment for this project.

#TODO

- Write tests for all what follows.
- ICMP : Make a ICMP library to watch if servers ar up.
- ICMP relay : Make a offsite ICMP watcher to make sure that it's not only your network that is down.. [Think about this more Belug!]
- HTTP and HTTPS watcher : To check if webservers are still up.
- Website watcher : Check if websites are still responding, may be by watching the OPTION request?
- Database watcher : Check if the database is still up.... [Maybe on client side!]
- Mail{relay, box, filter, ...} watcher : Look at all te part of mail service to determine if everything is working good.
- System updates watchers : Check for updates for the OS, if possible get the changelog to help sysadmin have the knowledge of what the are doing. [This will need to be multiple packages to support all the platforms redhat based, debian based, arch based, BSD based... , Windows?, Mac? Solaris?]
- System watcher : Disk space, load, memory, installed softwares, IP adresses, network load and uptime.
- Virtualenv | rvm watcher : Valide the state of those environements to check if there's update to do.
- Log catcher : Client side script in a cron job to collect logs and send it to pointerDog.
{'fraction_non_alphanumeric': 0.04649524480450863, 'fraction_numerical': 0.0008805917576611482, 'mean_word_length': 3.8956896551724136, 'pattern_counts': {'":': 0, '<': 4, '<?xml version=': 0, '>': 4, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3560556', 'n_tokens_mistral': 1501, 'n_tokens_neox': 1442, 'n_words': 956}