453 lines
14 KiB
Bash
453 lines
14 KiB
Bash
#!/bin/bash
|
|
|
|
|
|
dd_nginx_purge() {
|
|
if [[ -f /etc/datadog-agent/conf.d/nginx.d/conf.yaml ]]; then
|
|
if [[ ! -f /etc/datadog-agent/conf.d/php_fpm.d/conf.yaml ]]; then
|
|
sudo sed -i '/WebinolyLocalhostStart/,/WebinolyLocalhostEnd/{/.*/d}' /etc/nginx/sites-available/$ADMIN_TOOLS_SITE
|
|
fi
|
|
|
|
sudo rm -rf /etc/datadog-agent/conf.d/nginx.d/conf.yaml
|
|
echo "${gre}Datadog Nginx integration has been successfully removed!${end}"
|
|
else
|
|
echo "${gre}Datadog Nginx integration is not installed, so not removed!${end}"
|
|
fi
|
|
}
|
|
|
|
|
|
dd_fpm_purge() {
|
|
if [[ -f /etc/datadog-agent/conf.d/php_fpm.d/conf.yaml ]]; then
|
|
if [[ ! -f /etc/datadog-agent/conf.d/nginx.d/conf.yaml ]]; then
|
|
sudo sed -i '/WebinolyLocalhostStart/,/WebinolyLocalhostEnd/{/.*/d}' /etc/nginx/sites-available/$ADMIN_TOOLS_SITE
|
|
fi
|
|
|
|
sudo rm -rf /etc/datadog-agent/conf.d/php_fpm.d/conf.yaml
|
|
echo "${gre}Datadog PHP-FPM integration has been successfully removed!${end}"
|
|
else
|
|
echo "${gre}Datadog PHP-FPM integration is not installed, so not removed!${end}"
|
|
fi
|
|
}
|
|
|
|
|
|
dd_mysql_purge() {
|
|
if [[ -f /etc/datadog-agent/conf.d/mysql.d/conf.yaml ]]; then
|
|
sudo rm -rf /etc/datadog-agent/conf.d/mysql.d/conf.yaml
|
|
echo "${gre}Datadog MySQL (MariaDB) integration has been successfully removed!${end}"
|
|
else
|
|
echo "${gre}Datadog MySQL (MariaDB) integration is not installed, so not removed!${end}"
|
|
fi
|
|
}
|
|
|
|
|
|
dd_redis_purge() {
|
|
if [[ -f /etc/datadog-agent/conf.d/redisdb.d/conf.yaml ]]; then
|
|
sudo rm -rf /etc/datadog-agent/conf.d/redisdb.d/conf.yaml
|
|
echo "${gre}Datadog Redis integration has been successfully removed!${end}"
|
|
else
|
|
echo "${gre}Datadog Redis integration is not installed, so not removed!${end}"
|
|
fi
|
|
}
|
|
|
|
|
|
dd_logs_enable() {
|
|
if [[ $(is_dd_log global) != "true" ]]; then
|
|
echo "# WebinolyLogsStart
|
|
logs_enabled: true
|
|
logs_config:
|
|
use_http: true
|
|
use_compression: true
|
|
# WebinolyLogsEnd" >> /etc/datadog-agent/datadog.yaml
|
|
fi
|
|
}
|
|
|
|
|
|
dd_logs_disable() {
|
|
if [[ $(is_dd_log nginx) != "true" && $(is_dd_log fpm) != "true" && $(is_dd_log mysql) != "true" && $(is_dd_log redis) != "true" ]]; then
|
|
sudo sed -i '/WebinolyLogsStart/,/WebinolyLogsEnd/{/.*/d}' /etc/datadog-agent/datadog.yaml
|
|
fi
|
|
}
|
|
|
|
|
|
logrotate_perm() {
|
|
if [[ $1 == "nginx" ]]; then
|
|
local path="/etc/logrotate.d/nginx"
|
|
local owner="www-data adm"
|
|
elif [[ $1 == "fpm" ]]; then
|
|
local path="/etc/logrotate.d/php$(conf_read php-ver)-fpm"
|
|
local owner="root root"
|
|
elif [[ $1 == "mysql" ]]; then
|
|
[[ -f /etc/logrotate.d/mariadb ]] && local path="/etc/logrotate.d/mariadb" || local path="/etc/logrotate.d/mysql-server"
|
|
local owner="mysql adm"
|
|
elif [[ $1 == "redis" ]]; then
|
|
local path="/etc/logrotate.d/redis-server"
|
|
local owner="redis adm"
|
|
else
|
|
local path=""
|
|
local owner=""
|
|
fi
|
|
|
|
if [[ -n $path && -n $owner && -f $path ]]; then
|
|
sudo sed -i "/create [0-9]/d" $path
|
|
sudo sed -i "/missingok/i \ create 0644 $owner" $path
|
|
fi
|
|
}
|
|
|
|
|
|
dd_nginx_logs_extended() {
|
|
for site in "/etc/nginx/sites-available"/*
|
|
do
|
|
domi=$(echo $site | cut -f 5 -d "/")
|
|
if [[ -n $domi && $domi != "default" ]]; then
|
|
if [[ -L /etc/nginx/sites-enabled/$domi && -z $( grep -F "access_log off;" /etc/nginx/sites-available/$domi) ]]; then
|
|
[[ -f /var/log/nginx/$domi.access.log ]] && sudo chmod 644 /var/log/nginx/$domi.access.log
|
|
[[ -f /var/log/nginx/$domi.error.log ]] && sudo chmod 644 /var/log/nginx/$domi.error.log
|
|
echo "#WebinolyDatadogLogsStart
|
|
- type: file
|
|
path: /var/log/nginx/$domi.access.log
|
|
service: nginx
|
|
source: $domi
|
|
|
|
- type: file
|
|
path: /var/log/nginx/$domi.error.log
|
|
service: nginx
|
|
source: $domi
|
|
#WebinolyDatadogLogsEnd" >> /etc/datadog-agent/conf.d/nginx.d/conf.yaml
|
|
echo "${gre}Datadog Nginx Logs for ${blu}${domi}${gre} has been successfully enabled!${end}"
|
|
elif [[ -L /etc/nginx/sites-enabled/$domi ]]; then
|
|
[[ -f /var/log/nginx/$domi.error.log ]] && sudo chmod 644 /var/log/nginx/$domi.error.log
|
|
echo "#WebinolyDatadogLogsStart
|
|
- type: file
|
|
path: /var/log/nginx/$domi.error.log
|
|
service: nginx
|
|
source: $domi
|
|
#WebinolyDatadogLogsEnd" >> /etc/datadog-agent/conf.d/nginx.d/conf.yaml
|
|
echo "${gre}Datadog Nginx (Only-Error) Logs for ${blu}${domi}${gre} has been successfully enabled!${end}"
|
|
else
|
|
echo "${gre}Datadog Nginx Logs for ${blu}${domi}${gre} can NOT be added because your site is disabled!${end}"
|
|
fi
|
|
fi
|
|
done
|
|
}
|
|
|
|
|
|
dd_nginx_logs() {
|
|
if [[ $(is_dd_log nginx) == "true" ]]; then
|
|
echo "${gre}Datadog Nginx Log is already enabled!${end}"
|
|
elif [[ -f /etc/datadog-agent/conf.d/nginx.d/conf.yaml ]]; then
|
|
logrotate_perm nginx
|
|
[[ -f /var/log/nginx/error.log ]] && sudo chmod 644 /var/log/nginx/error.log
|
|
[[ -d /var/log/nginx ]] && sudo chmod 755 /var/log/nginx
|
|
|
|
if [[ -z $( grep -F "access_log off;" /etc/nginx/nginx.conf ) ]]; then
|
|
[[ -f /var/log/nginx/access.log ]] && sudo chmod 644 /var/log/nginx/access.log
|
|
echo "#WebinolyDatadogLogsStart
|
|
logs:
|
|
- type: file
|
|
path: /var/log/nginx/access.log
|
|
service: nginx
|
|
source: nginx
|
|
|
|
- type: file
|
|
path: /var/log/nginx/error.log
|
|
service: nginx
|
|
source: nginx
|
|
#WebinolyDatadogLogsEnd" >> /etc/datadog-agent/conf.d/nginx.d/conf.yaml
|
|
else
|
|
echo "#WebinolyDatadogLogsStart
|
|
logs:
|
|
- type: file
|
|
path: /var/log/nginx/error.log
|
|
service: nginx
|
|
source: nginx
|
|
#WebinolyDatadogLogsEnd" >> /etc/datadog-agent/conf.d/nginx.d/conf.yaml
|
|
fi
|
|
|
|
dd_nginx_logs_extended
|
|
dd_logs_enable
|
|
echo "${gre}Datadog Nginx Logs (global) has been successfully enabled!${end}"
|
|
|
|
else
|
|
echo "${red}[ERROR] Datadog Nginx integration is not enabled!${end}"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
|
|
dd_fpm_logs() {
|
|
if [[ $(is_dd_log fpm) == "true" ]]; then
|
|
echo "${gre}Datadog PHP-FPM Log is already enabled!${end}"
|
|
elif [[ -f /etc/datadog-agent/conf.d/php_fpm.d/conf.yaml ]]; then
|
|
|
|
# REMOVE: Check for stacks built before v1.11.0
|
|
if [[ -f /var/log/php/$(conf_read php-ver)/fpm.log ]]; then
|
|
sudo sed -i "/error_log =/c\error_log = \/var\/log\/php$(conf_read php-ver)-fpm.log" /etc/php/$(conf_read php-ver)/fpm/php-fpm.conf
|
|
sudo systemctl restart php$(conf_read php-ver)-fpm
|
|
fi
|
|
|
|
logrotate_perm fpm
|
|
[[ -f /var/log/php$(conf_read php-ver)-fpm.log ]] && sudo chmod 644 /var/log/php$(conf_read php-ver)-fpm.log
|
|
|
|
echo "#WebinolyDatadogLogsStart
|
|
logs:
|
|
- type: file
|
|
path: /var/log/php$(conf_read php-ver)-fpm.log
|
|
service: php
|
|
source: php
|
|
#WebinolyDatadogLogsEnd" >> /etc/datadog-agent/conf.d/php_fpm.d/conf.yaml
|
|
|
|
dd_logs_enable
|
|
echo "${gre}Datadog PHP-FPM Logs has been successfully enabled!${end}"
|
|
|
|
else
|
|
echo "${red}[ERROR] Datadog PHP-FPM integration is not enabled!${end}"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
|
|
dd_mysql_logs() {
|
|
if [[ $(is_dd_log mysql) == "true" ]]; then
|
|
echo "${gre}Datadog MySQL (MariaDB) Log is already enabled!${end}"
|
|
elif [[ -f /etc/datadog-agent/conf.d/mysql.d/conf.yaml ]]; then
|
|
|
|
mysql_default_cnf # REMOVE: In case the stack was built with an old configuration
|
|
|
|
logrotate_perm mysql
|
|
[[ -f /var/log/mysql/error.log ]] && sudo chmod 644 /var/log/mysql/error.log
|
|
[[ -d /var/log/mysql ]] && sudo chmod 755 /var/log/mysql
|
|
|
|
echo "#WebinolyDatadogLogsStart
|
|
logs:
|
|
- type: file
|
|
path: /var/log/mysql/error.log
|
|
source: mysql
|
|
service: mysql
|
|
#WebinolyDatadogLogsEnd" >> /etc/datadog-agent/conf.d/mysql.d/conf.yaml
|
|
|
|
dd_logs_enable
|
|
echo "${gre}Datadog MySQL (MariaDB) Logs has been successfully enabled!${end}"
|
|
|
|
else
|
|
echo "${red}[ERROR] Datadog MySQL (MariaDB) integration is not enabled!${end}"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
|
|
dd_redis_logs() {
|
|
if [[ $(is_dd_log redis) == "true" ]]; then
|
|
echo "${gre}Datadog Redis Log is already enabled!${end}"
|
|
elif [[ -f /etc/datadog-agent/conf.d/redisdb.d/conf.yaml ]]; then
|
|
logrotate_perm redis
|
|
[[ -f /var/log/redis/redis-server.log ]] && sudo chmod 644 /var/log/redis/redis-server.log
|
|
[[ -d /var/log/redis ]] && sudo chmod 755 /var/log/redis
|
|
|
|
echo "#WebinolyDatadogLogsStart
|
|
logs:
|
|
- type: file
|
|
path: /var/log/redis/redis-server.log
|
|
source: redis
|
|
service: redis
|
|
#WebinolyDatadogLogsEnd" >> /etc/datadog-agent/conf.d/redisdb.d/conf.yaml
|
|
|
|
dd_logs_enable
|
|
echo "${gre}Datadog Redis Logs has been successfully enabled!${end}"
|
|
|
|
else
|
|
echo "${red}[ERROR] Datadog Redis integration is not enabled!${end}"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
|
|
dd_nginx() {
|
|
if [[ ! -f /etc/datadog-agent/conf.d/nginx.d/conf.yaml ]]; then
|
|
if [[ -z $(grep -F "WebinolyLocalhostStart" /etc/nginx/sites-available/$ADMIN_TOOLS_SITE) ]]; then
|
|
sudo sed -i '/Webinoly Admin-Tools NGINX CONFIGURATION/r /opt/webinoly/templates/general/tools-site-localhost' /etc/nginx/sites-available/$ADMIN_TOOLS_SITE
|
|
fi
|
|
|
|
sudo touch /etc/datadog-agent/conf.d/nginx.d/conf.yaml
|
|
sudo chmod 644 /etc/datadog-agent/conf.d/nginx.d/conf.yaml
|
|
sudo chown dd-agent:dd-agent /etc/datadog-agent/conf.d/nginx.d/conf.yaml
|
|
|
|
echo "init_config:
|
|
|
|
instances:
|
|
- nginx_status_url: http://localhost/nginx_status
|
|
" >> /etc/datadog-agent/conf.d/nginx.d/conf.yaml
|
|
|
|
[[ $logs != "off" ]] && dd_nginx_logs
|
|
echo "${gre}Datadog Nginx integration has been successfully configured!${end}"
|
|
|
|
elif [[ $logs == "on" ]]; then
|
|
dd_nginx_logs
|
|
elif [[ $logs == "off" ]]; then
|
|
if [[ $(is_dd_log nginx) == "true" ]]; then
|
|
sudo sed -i '/WebinolyDatadogLogsStart/,/WebinolyDatadogLogsEnd/{/.*/d}' /etc/datadog-agent/conf.d/nginx.d/conf.yaml
|
|
dd_logs_disable
|
|
echo "${gre}Datadog Nginx Logs has been successfully disabled!${end}"
|
|
else
|
|
echo "${gre}Datadog Nginx Log is already disabled!${end}"
|
|
fi
|
|
else
|
|
echo "${gre}Datadog Nginx integration is already enabled!${end}"
|
|
fi
|
|
}
|
|
|
|
|
|
dd_fpm() {
|
|
if [[ ! -f /etc/datadog-agent/conf.d/php_fpm.d/conf.yaml ]]; then
|
|
if [[ -z $(grep -F "WebinolyLocalhostStart" /etc/nginx/sites-available/$ADMIN_TOOLS_SITE) ]]; then
|
|
sudo sed -i '/Webinoly Admin-Tools NGINX CONFIGURATION/r /opt/webinoly/templates/general/tools-site-localhost' /etc/nginx/sites-available/$ADMIN_TOOLS_SITE
|
|
fi
|
|
|
|
sudo touch /etc/datadog-agent/conf.d/php_fpm.d/conf.yaml
|
|
sudo chmod 644 /etc/datadog-agent/conf.d/php_fpm.d/conf.yaml
|
|
sudo chown dd-agent:dd-agent /etc/datadog-agent/conf.d/php_fpm.d/conf.yaml
|
|
|
|
echo "init_config:
|
|
|
|
instances:
|
|
- status_url: http://localhost/status
|
|
ping_url: http://localhost/ping
|
|
use_fastcgi: false
|
|
ping_reply: pong
|
|
" >> /etc/datadog-agent/conf.d/php_fpm.d/conf.yaml
|
|
|
|
[[ $logs != "off" ]] && dd_fpm_logs
|
|
echo "${gre}Datadog PHP-FPM integration has been successfully configured!${end}"
|
|
|
|
elif [[ $logs == "on" ]]; then
|
|
dd_fpm_logs
|
|
elif [[ $logs == "off" ]]; then
|
|
if [[ $(is_dd_log fpm) == "true" ]]; then
|
|
sudo sed -i '/WebinolyDatadogLogsStart/,/WebinolyDatadogLogsEnd/{/.*/d}' /etc/datadog-agent/conf.d/php_fpm.d/conf.yaml
|
|
dd_logs_disable
|
|
echo "${gre}Datadog PHP-FPM Logs has been successfully disabled!${end}"
|
|
else
|
|
echo "${gre}Datadog PHP-FPM Log is already disabled!${end}"
|
|
fi
|
|
else
|
|
echo "${gre}Datadog PHP-FPM integration is already enabled!${end}"
|
|
fi
|
|
}
|
|
|
|
|
|
dd_mysql() {
|
|
if [[ ! -f /etc/datadog-agent/conf.d/mysql.d/conf.yaml ]]; then
|
|
sudo touch /etc/datadog-agent/conf.d/mysql.d/conf.yaml
|
|
sudo chmod 644 /etc/datadog-agent/conf.d/mysql.d/conf.yaml
|
|
sudo chown dd-agent:dd-agent /etc/datadog-agent/conf.d/mysql.d/conf.yaml
|
|
|
|
echo "init_config:
|
|
|
|
instances:
|
|
- server: 127.0.0.1
|
|
user: admin
|
|
pass: '$( echo $(conf_read mysql-admin) | openssl enc -d -a -salt )'
|
|
port: \"3306\"
|
|
options:
|
|
replication: false
|
|
galera_cluster: false
|
|
extra_status_metrics: true
|
|
extra_innodb_metrics: true
|
|
extra_performance_metrics: true
|
|
schema_size_metrics: false
|
|
disable_innodb_metrics: false
|
|
" >> /etc/datadog-agent/conf.d/mysql.d/conf.yaml
|
|
|
|
[[ $logs != "off" ]] && dd_mysql_logs
|
|
echo "${gre}Datadog MySQL (MariaDB) integration has been successfully configured!${end}"
|
|
|
|
elif [[ $logs == "on" ]]; then
|
|
dd_mysql_logs
|
|
elif [[ $logs == "off" ]]; then
|
|
if [[ $(is_dd_log mysql) == "true" ]]; then
|
|
sudo sed -i '/WebinolyDatadogLogsStart/,/WebinolyDatadogLogsEnd/{/.*/d}' /etc/datadog-agent/conf.d/mysql.d/conf.yaml
|
|
dd_logs_disable
|
|
echo "${gre}Datadog MySQL (MariaDB) Logs has been successfully disabled!${end}"
|
|
else
|
|
echo "${gre}Datadog MySQL (MariaDB) Log is already disabled!${end}"
|
|
fi
|
|
else
|
|
echo "${gre}Datadog MySQL (MariaDB) integration is already enabled!${end}"
|
|
fi
|
|
}
|
|
|
|
|
|
dd_redis() {
|
|
if [[ ! -f /etc/datadog-agent/conf.d/redisdb.d/conf.yaml ]]; then
|
|
sudo touch /etc/datadog-agent/conf.d/redisdb.d/conf.yaml
|
|
sudo chmod 644 /etc/datadog-agent/conf.d/redisdb.d/conf.yaml
|
|
sudo chown dd-agent:dd-agent /etc/datadog-agent/conf.d/redisdb.d/conf.yaml
|
|
|
|
echo "init_config:
|
|
|
|
instances:
|
|
- host: localhost
|
|
port: 6379
|
|
" >> /etc/datadog-agent/conf.d/redisdb.d/conf.yaml
|
|
|
|
[[ $logs != "off" ]] && dd_redis_logs
|
|
echo "${gre}Datadog Redis integration has been successfully configured!${end}"
|
|
|
|
elif [[ $logs == "on" ]]; then
|
|
dd_redis_logs
|
|
elif [[ $logs == "off" ]]; then
|
|
if [[ $(is_dd_log redis) == "true" ]]; then
|
|
sudo sed -i '/WebinolyDatadogLogsStart/,/WebinolyDatadogLogsEnd/{/.*/d}' /etc/datadog-agent/conf.d/redisdb.d/conf.yaml
|
|
dd_logs_disable
|
|
echo "${gre}Datadog Redis Logs has been successfully disabled!${end}"
|
|
else
|
|
echo "${gre}Datadog Redis Log is already disabled!${end}"
|
|
fi
|
|
else
|
|
echo "${gre}Datadog Redis integration is already enabled!${end}"
|
|
fi
|
|
}
|
|
|
|
|
|
dd_purge() {
|
|
if [[ -d /etc/datadog-agent ]]; then
|
|
sudo apt-get remove --purge datadog-agent -y
|
|
sudo rm -rf /usr/share/keyrings/datadog-archive-keyring.gpg*
|
|
sudo rm -rf /etc/apt/sources.list.d/datadog.list
|
|
|
|
[[ -f /etc/nginx/sites-available/$ADMIN_TOOLS_SITE ]] && sudo sed -i '/WebinolyLocalhostStart/,/WebinolyLocalhostEnd/{/.*/d}' /etc/nginx/sites-available/$ADMIN_TOOLS_SITE
|
|
echo "${gre}Datadog Agent has been removed successfully from your server!${end}"
|
|
else
|
|
echo "${red}[ERROR] Datadog Agent is not installed on your server!${end}"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
dd_install() {
|
|
if ! [[ $(command -v curl) ]]; then
|
|
echo "${red}[ERROR] Curl package is required for Datadog!${end}"
|
|
exit 1
|
|
elif [[ -d /etc/datadog-agent ]]; then
|
|
echo "${gre}Datadog Agent is already installed in your server!${end}"
|
|
else
|
|
[[ $datadog == true ]] && read -p "${blu}Datatdog API key: ${end}" datadog
|
|
|
|
if [[ $datadog == true ]]; then
|
|
echo "${red}[ERROR] Invalid Datadog API key!${end}"
|
|
exit 1
|
|
elif ! [[ $datadog =~ ^[0-9a-zA-Z]+$ ]]; then
|
|
echo "${red}[ERROR] Invalid Datadog API key!${end}"
|
|
exit 1
|
|
else
|
|
DD_INSTALL_ONLY=true DD_AGENT_MAJOR_VERSION=$datadog_agent_ver DD_API_KEY=$datadog bash -c "$(curl -L https://s3.amazonaws.com/dd-agent/scripts/install_script_agent7.sh)"
|
|
|
|
if [[ $integrations != "off" ]]; then
|
|
[[ $(conf_read nginx) == "true" ]] && dd_nginx
|
|
[[ $(conf_read php) == "true" ]] && dd_fpm
|
|
[[ $(conf_read mysql) == "true" ]] && dd_mysql
|
|
[[ $(conf_read php-tool-redis) == "true" ]] && dd_redis
|
|
fi
|
|
|
|
sudo systemctl start datadog-agent
|
|
echo "${gre}Datadog Agent has been successfully installed in your server!${end}"
|
|
fi
|
|
fi
|
|
}
|