zabbix.sh 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. #!/bin/sh
  2. echo -e '
  3. _ _ _
  4. _____ _| |__| |__(_)__
  5. |_ / _` | `_ \ `_ \ / _|
  6. /__\__,_|_.__/_.__/_\__|
  7. '
  8. . bin/checkroot.sh
  9. # get the current position
  10. _cwd="$(pwd)"
  11. # check for assets forlder
  12. _assets="$_cwd/assets"
  13. if [ ! -d "$_assets" ]; then
  14. _assets="$_cwd/../assets"
  15. if [ ! -d "$_assets" ]; then
  16. echo "!! can't find assets directory !!"
  17. exit
  18. fi
  19. fi
  20. echo -n "do you want to limit zabbix-agent to 3.4? [y|n] "
  21. read yn
  22. if [ "$yn" = "Y" ] || [ "$yn" = "y" ]; then
  23. echo -e "Stick with zabbix-agent 3.4"
  24. echo "http://dl-cdn.alpinelinux.org/alpine/v3.8/main" >> /etc/apk/repositories
  25. echo "http://dl-cdn.alpinelinux.org/alpine/v3.8/community" >> /etc/apk/repositories
  26. # echo -e "zabbix-agent<3.4.99" >> /etc/apk/world
  27. apk update
  28. # apk upgrade
  29. apk add 'zabbix-agent=~3.4'
  30. else
  31. apk add zabbix-agent
  32. fi
  33. # configure
  34. echo -n "Please provide the current server's public ip : "
  35. read _cur_ip
  36. echo -n "Please provide the zabbix-server's ip : "
  37. read _ip
  38. echo -n "Please provide the hostname of this agent : "
  39. read _host_name
  40. echo -n "Please provide the mysql root password : "
  41. read _root_mysql_passwd
  42. # configure zabbix agent
  43. sed -i "s#Server=127.0.0.1#Server=$_ip#g" /etc/zabbix/zabbix_agentd.conf
  44. sed -i "s#ServerActive=127.0.0.1#ServerActive=$_ip#g" /etc/zabbix/zabbix_agentd.conf
  45. sed -i "s#Hostname=Zabbix server#Hostname=$_host_name#g" /etc/zabbix/zabbix_agentd.conf
  46. _agent_conf_d="/etc/zabbix/zabbix_agentd.d"
  47. mkdir $_agent_conf_d
  48. sed -i "s|#\ Include=$|Include= $_agent_conf_d|g" /etc/zabbix/zabbix_agentd.conf
  49. # apk
  50. # check for alpine security updates
  51. # MYSQL
  52. # https://serverfault.com/questions/737018/zabbix-user-parameter-mysql-status-setting-home
  53. # create zabbix user home
  54. mkdir /var/lib/zabbix
  55. # generate random password for zabbix mysql user
  56. _passwd="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c16)"
  57. # add mysql credentials to zabbix home
  58. printf "[client]\n
  59. user=zabbix\n
  60. password=$_passwd" > /var/lib/zabbix/.my.cnf
  61. # create zabbix mysql user
  62. mysql -uroot -p"$_root_mysql_passwd" -e "CREATE USER 'zabbix' IDENTIFIED BY '$_passwd';"
  63. mysql -uroot -p"$_root_mysql_passwd" -e "GRANT USAGE ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY '$_passwd';"
  64. # add zabbix-agent parameter
  65. cp "$_assets"/zabbix/userparameter_mysql.conf "$_agent_conf_d"/
  66. # NGINX
  67. # https://github.com/sfuerte/zbx-nginx
  68. # nginxconf already included in default.nginxconf asset
  69. sed -i "s/# allow CURRENT-SERVER-IP/allow $_cur_ip/g" /etc/nginx/conf.d/default.conf
  70. cp "$_assets"/zabbix/userparameter_nginx.conf "$_agent_conf_d"/
  71. mkdir /etc/zabbix/zabbix_agentd.scripts
  72. cp "$_assets"/zabbix/scripts/nginx-stat.py /etc/zabbix/zabbix_agentd.scripts/
  73. chmod +x /etc/zabbix/zabbix_agentd.scripts/nginx-stat.py
  74. echo -n "This is box is a proxmox CT? [Y|n] "
  75. read yn
  76. yn=${yn:-y}
  77. if [ "$yn" = "Y" ] || [ "$yn" = "y" ]; then
  78. cp "$_assets"/zabbix/proxmox-ct.conf "$_agent_conf_d"/
  79. fi
  80. # allow comm. port with zabbix-server
  81. ufw allow from "$_ip" to any port 22
  82. ufw allow from "$_ip" to any port 10050
  83. # ufw allow from "$_ip" to any port 10051
  84. rc-update add zabbix-agentd
  85. service zabbix-agentd restart
  86. echo -e "Zabbix-agent installed and configured, please add the host $_host_name in your zabbix-server"
  87. echo -e "And import requested templates in assets/zabbix/templates/"
  88. # echo -e "zabbix user mysql password is $_passwd"