diff --git a/assets/monitrc b/assets/monitrc new file mode 100644 index 0000000..2bd8770 --- /dev/null +++ b/assets/monitrc @@ -0,0 +1,130 @@ +set daemon 60 +set logfile syslog facility log_daemon +set mailserver localhost +set mail-format { from: monit@server1.example.com } +set alert root@localhost +set httpd port 2812 and + allow admin:PASSWD_TO_REPLACE + # SSL ENABLE + # PEMFILE /var/certs/monit.pem + +check process sshd with pidfile /var/run/sshd.pid + start program "/usr/sbin/service ssh start" + stop program "/usr/sbin/service ssh stop" + if failed port 22 protocol ssh then restart + if 5 restarts within 5 cycles then timeout + +check process apache with pidfile /var/run/apache2/apache2.pid + group www + start program = "/usr/sbin/service apache2 start" + stop program = "/usr/sbin/service apache2 stop" + if failed host localhost port 80 protocol http + and request "/monit/token" then restart + if cpu is greater than 60% for 2 cycles then alert + if cpu > 80% for 5 cycles then restart + if totalmem > 500 MB for 5 cycles then restart + if children > 250 then restart + if loadavg(5min) greater than 10 for 8 cycles then stop + if 3 restarts within 5 cycles then timeout + +check process mysqld with pidfile /var/run/mysqld/mysqld.pid +group mysql +start program = "/usr/sbin/service mysqld start" +stop program = "/usr/sbin/service mysqld stop" +if failed host 127.0.0.1 port 3306 then restart +if 5 restarts within 5 cycles then timeout + + + +# --------------------------------------------------------------------------------------------- +# NOTE: Replace example.pid with the pid name of your server, the name depends on the hostname +# --------------------------------------------------------------------------------------------- + +#check process proftpd with pidfile /var/run/proftpd.pid +# start program = "/usr/sbin/service proftpd start" +# stop program = "/usr/sbin/service proftpd stop" +# if failed port 21 protocol ftp then restart +# if 5 restarts within 5 cycles then timeout +# +#check process postfix with pidfile /var/spool/postfix/pid/master.pid +# group mail +# start program = "/usr/sbin/service postfix start" +# stop program = "/usr/sbin/service postfix stop" +# if failed port 25 protocol smtp then restart +# if 5 restarts within 5 cycles then timeout +# +#check process nginx with pidfile /var/run/nginx.pid +# start program = "/usr/sbin/service nginx start" +# stop program = "/usr/sbin/service nginx stop" +# if failed host 127.0.0.1 port 80 then restart +# +#check process memcached with pidfile /var/run/memcached.pid +# start program = "/usr/sbin/service memcached start" +# stop program = "/usr/sbin/service memcached stop" +# if failed host 127.0.0.1 port 11211 then restart +# +#check process pureftpd with pidfile /var/run/pure-ftpd/pure-ftpd.pid +# start program = "/usr/sbin/service pure-ftpd-mysql start" +# stop program = "/usr/sbin/service pure-ftpd-mysql stop" +# if failed port 21 protocol ftp then restart +# if 5 restarts within 5 cycles then timeout +# +#check process named with pidfile /var/run/named/named.pid +# start program = "/usr/sbin/service bind9 start" +# stop program = "/usr/sbin/service bind9 stop" +# if failed host 127.0.0.1 port 53 type tcp protocol dns then restart +# if failed host 127.0.0.1 port 53 type udp protocol dns then restart +# if 5 restarts within 5 cycles then timeout +# +#check process ntpd with pidfile /var/run/ntpd.pid +# start program = "/usr/sbin/service ntp start" +# stop program = "/usr/sbin/service ntp stop" +# if failed host 127.0.0.1 port 123 type udp then restart +# if 5 restarts within 5 cycles then timeout +# +#check process mailman with pidfile /var/run/mailman/mailman.pid +# group mail +# start program = "/usr/sbin/service mailman start" +# stop program = "/usr/sbin/service mailman stop" +# +#check process amavisd with pidfile /var/run/amavis/amavisd.pid +# group mail +# start program = "/usr/sbin/service amavis start" +# stop program = "/usr/sbin/service amavis stop" +# if failed port 10024 protocol smtp then restart +# if 5 restarts within 5 cycles then timeout +# +#check process courier-imap with pidfile /var/run/courier/imapd.pid +# group mail +# start program = "/usr/sbin/service courier-imap start" +# stop program = "/usr/sbin/service courier-imap stop" +# if failed host localhost port 143 type tcp protocol imap then restart +# if 5 restarts within 5 cycles then timeout +# +#check process courier-imap-ssl with pidfile /var/run/courier/imapd-ssl.pid +# group mail +# start program = "/usr/sbin/service courier-imap-ssl start" +# stop program = "/usr/sbin/service courier-imap-ssl stop" +# if failed host localhost port 993 type tcpssl sslauto protocol imap then restart +# if 5 restarts within 5 cycles then timeout +# +#check process courier-pop3 with pidfile /var/run/courier/pop3d.pid +# group mail +# start program = "/usr/sbin/service courier-pop start" +# stop program = "/usr/sbin/service courier-pop stop" +# if failed host localhost port 110 type tcp protocol pop then restart +# if 5 restarts within 5 cycles then timeout +# +#check process courier-pop3-ssl with pidfile /var/run/courier/pop3d-ssl.pid +# group mail +# start program = "/usr/sbin/service courier-pop-ssl start" +# stop program = "/usr/sbin/service courier-pop-ssl stop" +# if failed host localhost port 995 type tcpssl sslauto protocol pop then restart +# if 5 restarts within 5 cycles then timeout +# +#check process dovecot with pidfile /var/run/dovecot/master.pid +# group mail +# start program = "/usr/sbin/service dovecot start" +# stop program = "/usr/sbin/service dovecot stop" +# if failed host localhost port 993 type tcpssl sslauto protocol imap then restart +# if 5 restarts within 5 cycles then timeout diff --git a/install-debian-server.sh b/install-debian-server.sh index cf5eb08..2dae39e 100755 --- a/install-debian-server.sh +++ b/install-debian-server.sh @@ -338,6 +338,85 @@ else echo "Vhost installation aborted" fi +echo '\033[35m + __ ___ _ __ __ __ ___ _ + / |/ /__ ___ (_) /_ _/_/ / |/ /_ _____ (_)__ + / /|_/ / _ \/ _ \/ / __/ _/_/ / /|_/ / // / _ \/ / _ \ +/_/ /_/\___/_//_/_/\__/ /_/ /_/ /_/\_,_/_//_/_/_//_/ +\033[0m' +echo "\033[35;1mInstalling Munin \033[0m" +sleep 3 +# https://www.howtoforge.com/tutorial/server-monitoring-with-munin-and-monit-on-debian/ +apt-get install munin munin-node munin-plugins-extra +# Configure Munin +# enable plugins +ln -s /usr/share/munin/plugins/mysql_ /etc/munin/plugins/mysql_ +ln -s /usr/share/munin/plugins/mysql_bytes /etc/munin/plugins/mysql_bytes +ln -s /usr/share/munin/plugins/mysql_innodb /etc/munin/plugins/mysql_innodb +ln -s /usr/share/munin/plugins/mysql_isam_space_ /etc/munin/plugins/mysql_isam_space_ +ln -s /usr/share/munin/plugins/mysql_queries /etc/munin/plugins/mysql_queries +ln -s /usr/share/munin/plugins/mysql_slowqueries /etc/munin/plugins/mysql_slowqueries +ln -s /usr/share/munin/plugins/mysql_threads /etc/munin/plugins/mysql_threads + +ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/ +ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/ +ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/ + +# ln -s /usr/share/munin/plugins/fail2ban /etc/munin/plugins/ + +# dbdir, htmldir, logdir, rundir, and tmpldir +sed -i 's/^#dbdir/dbdir/' /etc/munin/munin.conf +sed -i 's/^#htmldir/htmldir/' /etc/munin/munin.conf +sed -i 's/^#logdir/logdir/' /etc/munin/munin.conf +sed -i 's/^#rundir/rundir/' /etc/munin/munin.conf +sed -i 's/^#tmpldir/tmpldir/' /etc/munin/munin.conf + +sed -i "s/^\[localhost.localdomain\]/[${HOSTNAME}]/" /etc/munin/munin.conf + +# ln -s /etc/munin/apache24.conf /etc/apache2/conf-enabled/munin.conf +sed -i 's/Require local/Require all granted\nOptions FollowSymLinks SymLinksIfOwnerMatch/g' /etc/munin/apache24.conf +htpasswd -c /etc/munin/munin-htpasswd admin +sed -i 's/Require all granted/AuthUserFile \/etc\/munin\/munin-htpasswd\nAuthName "Munin"\nAuthType Basic\nRequire valid-user/g' /etc/munin/apache24.conf + + +service apache2 restart +service munin-node restart +echo "\033[92;1mMunin installed\033[Om" + +echo "\033[35;1mInstalling Monit \033[0m" +sleep 3 +# https://www.howtoforge.com/tutorial/server-monitoring-with-munin-and-monit-on-debian/2/ +apt-get install monit +# TODO setup monit rc +cat "$_cwd"/assets/monitrc > /etc/monit/monitrc + +# TODO setup webaccess +passok=0 +while [ "$passok" = "0" ] +do + echo -n "Write web access password to monit" + read passwda + echo -n "ReWrite web access password to monit" + read passwdb + if [ "$passwda" = "$passwdb" ]; then + sed -i 's/PASSWD_TO_REPLACE/$passwda/g' /etc/monit/monitrc + passok=1 + else + echo "pass words don't match, please try again" + fi +done + +# TODO setup mail settings +sed -i "s/server1\.example\.com/$HOSTNAME/g" /etc/monit/monitrc + +mkdir /var/www/html/monit +echo "hello" > /var/www/html/monit/token + +service monit start + +echo "\033[92;1mMonit installed\033[Om" + + echo '\033[35m ___ __ __ / |_ _______/ /_____ _/ /_