123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- #!/bin/sh
- echo -e '\033[35m
- _____ __ __ _
- /__ / ____ _/ /_ / /_ (_) __
- / / / __ `/ __ \/ __ \/ / |/_/
- / /__/ /_/ / /_/ / /_/ / /> <
- /____/\__,_/_.___/_.___/_/_/|_|
- \033[0m'
- if [ "$EUID" -ne 0 ]; then
- echo "Please run as root"
- exit
- fi
- # get the current position
- _cwd="$(pwd)"
- # check for assets forlder
- _assets="$_cwd/assets"
- if [ ! -d "$_assets" ]; then
- _assets="$_cwd/../assets"
- if [ ! -d "$_assets" ]; then
- echo "!! can't find assets directory !!"
- exit
- fi
- fi
- wget -P /tmp/ wget https://repo.zabbix.com/zabbix/6.4/debian/pool/main/z/zabbix-release/zabbix-release_6.4-1+debian12_all.deb
- dpkg -i /tmp/zabbix-release_6.4-1+debian12_all.deb
- apt-get update -y
- apt-get install zabbix-agent -y
- # configure
- echo -n "Please provide the current server's public ip : "
- read _cur_ip
- echo -n "Please provide the zabbix-server's ip : "
- read _ip
- echo -n "Please provide the hostname of this agent : "
- read _host_name
- _agent_conf_d="/etc/zabbix/zabbix_agentd.d" # for debian 8
- if [ ! -d "$_agent_conf_d" ]; then
- _agent_conf_d="/etc/zabbix/zabbix_agentd.conf.d" # for debian 9
- fi
- # configure zabbix agent
- sed -i "s#Server=127.0.0.1#Server=$_ip#g" /etc/zabbix/zabbix_agentd.conf
- sed -i "s#ServerActive=127.0.0.1#ServerActive=$_ip#g" /etc/zabbix/zabbix_agentd.conf
- sed -i "s#Hostname=Zabbix server#Hostname=$_host_name#g" /etc/zabbix/zabbix_agentd.conf
- # todo ask if LXC container, if yes install this script
- # https://github.com/kvaps/zabbix-linux-container-template
- # APT
- # check for debian security updates
- # not working : https://www.osso.nl/blog/zabbix-counting-security-updates
- # https://github.com/theranger/zabbix-apt
- # enable automatic update of apt
- cp "$_assets"/zabbix/misc/02periodic /etc/apt/apt.conf.d/
- cp "$_assets"/zabbix/apt.conf "$_agent_conf_d"/
- # MYSQL
- # https://serverfault.com/questions/737018/zabbix-user-parameter-mysql-status-setting-home
- # create zabbix user home
- echo -n "monitor mysql? [Y|n] "
- read yn
- yn=${yn:-y}
- if [ "$yn" = "Y" ] || [ "$yn" = "y" ]; then
- echo -n "Please provide the mysql root password : "
- read _root_mysql_passwd
- mkdir /var/lib/zabbix
- # generate random password for zabbix mysql user
- _passwd="$(< /dev/urandom tr -dc _A-Z-a-z-0-9 | head -c12)"
- # add mysql credentials to zabbix home
- printf "[client]\n
- user=zabbix\n
- password=$_passwd" > /var/lib/zabbix/.my.cnf
- # create zabbix mysql user
- mysql -uroot -p"$_root_mysql_passwd" -e "CREATE USER 'zabbix' IDENTIFIED BY '$_passwd';"
- mysql -uroot -p"$_root_mysql_passwd" -e "GRANT USAGE ON *.* TO 'zabbix'@'localhost' IDENTIFIED BY '$_passwd';"
- # add zabbix-agent parameter
- cp "$_assets"/zabbix/userparameter_mysql.conf "$_agent_conf_d"/
- fi
- # NGINX
- # https://github.com/sfuerte/zbx-nginx
- # nginxconf already included in default.nginxconf asset
- echo -n "Monitor nginx? [Y|n] "
- read yn
- yn=${yn:-y}
- if [ "$yn" = "Y" ] || [ "$yn" = "y" ]; then
- sed -i "s/# allow CURRENT-SERVER-IP/allow $_cur_ip/g" /etc/nginx/sites-available/default
- cp "$_assets"/zabbix/userparameter_nginx.conf "$_agent_conf_d"/
- mkdir /etc/zabbix/zabbix_agentd.scripts
- cp "$_assets"/zabbix/scripts/nginx-stat.py /etc/zabbix/zabbix_agentd.scripts/
- chmod +x /etc/zabbix/zabbix_agentd.scripts/nginx-stat.py
- fi
- echo -n "This is box is a proxmox CT? [Y|n] "
- read yn
- yn=${yn:-y}
- if [ "$yn" = "Y" ] || [ "$yn" = "y" ]; then
- cp "$_assets"/zabbix/proxmox-ct.conf "$_agent_conf_d"/
- fi
- # SYSTEMD
- # https://github.com/MogiePete/zabbix-systemd-service-monitoring
- cp "$_assets"/zabbix/userparameter_systemd_services.conf "$_agent_conf_d"/
- # disble unused system units
- systemctl disable rsync
- systemctl disable systemd-timesyncd
- # TODO add modules path to agent ??
- # allow comm. port with zabbix-server
- ufw allow from "$_ip" to any port 10050
- ufw allow from "$_ip" to any port 22
- # ufw allow from "$_ip" to any port 10051
- # iptables -A INPUT -p tcp -m tcp --dport 10050 -j ACCEPT
- systemctl restart zabbix-agent
- systemctl enable zabbix-agent
- echo -e "\033[92;1mZabbix-agent installed and configured, please add the host $_host_name in your zabbix-server \033[Om"
- echo -e "\033[92;1mAnd import requested templates in assets/zabbix/templates/ \033[Om"
- echo -e "\033[92;1mzabbix user mysql password is $_passwd \033[Om"
|