zabbix.sh 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. #!/bin/sh
  2. echo -e '\033[35m
  3. _____ __ __ _
  4. /__ / ____ _/ /_ / /_ (_) __
  5. / / / __ `/ __ \/ __ \/ / |/_/
  6. / /__/ /_/ / /_/ / /_/ / /> <
  7. /____/\__,_/_.___/_.___/_/_/|_|
  8. \033[0m'
  9. if [ "$EUID" -ne 0 ]; then
  10. echo "Please run as root"
  11. exit
  12. fi
  13. # get the current position
  14. _cwd="$(pwd)"
  15. # check for assets forlder
  16. _assets="$_cwd/assets"
  17. if [ ! -d "$_assets" ]; then
  18. _assets="$_cwd/../assets"
  19. if [ ! -d "$_assets" ]; then
  20. echo "!! can't find assets directory !!"
  21. exit
  22. fi
  23. fi
  24. # not necessary anymore zabbix-agent 4 is in apt
  25. # https://packages.debian.org/fr/buster/zabbix-agent
  26. # TODO downgrade zabbix-agent to 3.4
  27. wget -P /tmp/ http://repo.zabbix.com/zabbix/3.4/debian/pool/main/z/zabbix-release/zabbix-release_3.4-1+stretch_all.deb
  28. dpkg -i /tmp/zabbix-release_3.4-1+stretch_all.deb
  29. apt-get update -y
  30. apt-get install zabbix-agent -y
  31. # configure
  32. echo -n "Please provide the current server's public ip : "
  33. read _cur_ip
  34. echo -n "Please provide the zabbix-server's ip : "
  35. read _ip
  36. echo -n "Please provide the hostname of this agent : "
  37. read _host_name
  38. echo -n "Please provide the mysql root password : "
  39. read _root_mysql_passwd
  40. _agent_conf_d="/etc/zabbix/zabbix_agentd.d" # for debian 8
  41. if [ ! -d "$_agent_conf_d" ]; then
  42. _agent_conf_d="/etc/zabbix/zabbix_agentd.conf.d" # for debian 9
  43. fi
  44. # configure zabbix agent
  45. sed -i "s#Server=127.0.0.1#Server=$_ip#g" /etc/zabbix/zabbix_agentd.conf
  46. sed -i "s#ServerActive=127.0.0.1#ServerActive=$_ip#g" /etc/zabbix/zabbix_agentd.conf
  47. sed -i "s#Hostname=Zabbix server#Hostname=$_host_name#g" /etc/zabbix/zabbix_agentd.conf
  48. # APT
  49. # check for debian security updates
  50. # not working : https://www.osso.nl/blog/zabbix-counting-security-updates
  51. # https://github.com/theranger/zabbix-apt
  52. # enable automatic update of apt
  53. cp "$_assets"/zabbix/misc/02periodic /etc/apt/apt.conf.d/
  54. cp "$_assets"/zabbix/apt.conf "$_agent_conf_d"/
  55. # MYSQL
  56. # https://serverfault.com/questions/737018/zabbix-user-parameter-mysql-status-setting-home
  57. # create zabbix user home
  58. mkdir /var/lib/zabbix
  59. # generate random password for zabbix mysql user
  60. _passwd="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12)"
  61. # add mysql credentials to zabbix home
  62. printf "[client]\n
  63. user=zabbix\n
  64. password=$_passwd" > /var/lib/zabbix/.my.cnf
  65. # create zabbix mysql user
  66. mysql -uroot -p"$_root_mysql_passwd" -e "CREATE USER 'zabbix' IDENTIFIED BY '$_passwd';"
  67. mysql -uroot -p"$_root_mysql_passwd" -e "GRANT USAGE ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY '$_passwd';"
  68. # add zabbix-agent parameter
  69. cp "$_assets"/zabbix/userparameter_mysql.conf "$_agent_conf_d"/
  70. # NGINX
  71. # https://github.com/sfuerte/zbx-nginx
  72. # nginxconf already included in default.nginxconf asset
  73. sed -i "s/# allow CURRENT-SERVER-IP/allow $_cur_ip/g" /etc/nginx/sites-available/default
  74. cp "$_assets"/zabbix/userparameter_nginx.conf "$_agent_conf_d"/
  75. mkdir /etc/zabbix/zabbix_agentd.scripts
  76. cp "$_assets"/zabbix/scripts/nginx-stat.py /etc/zabbix/zabbix_agentd.scripts/
  77. chmod +x /etc/zabbix/zabbix_agentd.scripts/nginx-stat.py
  78. echo -n "This is box is a proxmox CT? [Y|n] "
  79. read yn
  80. yn=${yn:-y}
  81. if [ "$yn" = "Y" ] || [ "$yn" = "y" ]; then
  82. cp "$_assets"/zabbix/proxmox-ct.conf "$_agent_conf_d"/
  83. fi
  84. # SYSTEMD
  85. # https://github.com/MogiePete/zabbix-systemd-service-monitoring
  86. cp "$_assets"/zabbix/userparameter_systemd_services.conf "$_agent_conf_d"/
  87. # disble unused system units
  88. systemctl disable rsync
  89. systemctl disable systemd-timesyncd
  90. # TODO add modules path to agent ??
  91. # allow comm. port with zabbix-server
  92. ufw allow from "$_ip" to any port 10050
  93. ufw allow from "$_ip" to any port 22
  94. # ufw allow from "$_ip" to any port 10051
  95. # iptables -A INPUT -p tcp -m tcp --dport 10050 -j ACCEPT
  96. systemctl restart zabbix-agent
  97. systemctl enable zabbix-agent
  98. echo -e "\033[92;1mZabbix-agent installed and configured, please add the host $_host_name in your zabbix-server \033[Om"
  99. echo -e "\033[92;1mAnd import requested templates in assets/zabbix/templates/ \033[Om"
  100. echo -e "\033[92;1mzabbix user mysql password is $_passwd \033[Om"