Sfoglia il codice sorgente

datadog

Datadog integration.
Cristhian Martínez Ochoa 5 anni fa
parent
commit
86f3ec45b7
6 ha cambiato i file con 561 aggiunte e 10 eliminazioni
  1. 22 1
      lib/general
  2. 9 9
      lib/install
  3. 460 0
      lib/webin
  4. 1 0
      plugins/stack
  5. 52 0
      plugins/webinoly
  6. 17 0
      templates/general/tools-site-localhost

+ 22 - 1
lib/general

@@ -1,9 +1,10 @@
 #!/bin/bash
 
-readonly app_version="1.10.3"
+readonly app_version="1.11.0"
 readonly svr_version="1.4"
 readonly os_ubuntu_supported=(xenial bionic)
 readonly php_supported=(7.2 7.3 7.4)
+readonly datadog_agent_ver="7"
 
 # echo colors
 readonly red=`tput setaf 1`
@@ -466,3 +467,23 @@ is_proxy() {
 is_parked() {
 	[[ -f /etc/nginx/sites-available/$1 && ! -d /var/www/$1 && $(is_proxy $1) == "false" ]] && echo "true" || echo "false"
 }
+
+
+is_dd_log() {
+	if [[ $1 == "nginx" ]]; then
+		local ddpath="/etc/datadog-agent/conf.d/nginx.d/conf.yaml"
+	elif [[ $1 == "fpm" ]]; then
+		local ddpath="/etc/datadog-agent/conf.d/php_fpm.d/conf.yaml"
+	elif [[ $1 == "mysql" ]]; then
+		local ddpath="/etc/datadog-agent/conf.d/mysql.d/conf.yaml"
+	elif [[ $1 == "redis" ]]; then
+		local ddpath="/etc/datadog-agent/conf.d/redisdb.d/conf.yaml"
+	elif [[ $1 == "global" ]]; then
+		[[ -f /etc/datadog-agent/datadog.yaml && -n $(grep -F "WebinolyLogsStart" /etc/datadog-agent/datadog.yaml) ]] && local global="true"
+	else
+		local ddpath=""
+	fi
+	
+	[[ -n $global || ( -n $ddpath && -f $ddpath && -n $(grep -F "WebinolyDatadogLogsStart" $ddpath)) ]] && echo "true" || echo "false"
+}
+

+ 9 - 9
lib/install

@@ -195,6 +195,7 @@ php_install() {
 	if [[ $(conf_read php-v${def}) != "true" ]]; then
 		sudo cp -p /etc/php/$ver/fpm/php.ini /opt/webinoly/templates/source/
 		sudo cp -p /etc/php/$ver/fpm/pool.d/www.conf /opt/webinoly/templates/source/
+		sudo cp -p /etc/php/$ver/fpm/php-fpm.conf /opt/webinoly/templates/source/
 	fi
 	
 	conf_write php true
@@ -232,6 +233,11 @@ mysql_install() {
 	echo "mariadb-server-10.4 mysql-server/root_password_again password $AUTOGENPASS_ROOT" | debconf-set-selections
 	sudo apt -y install mariadb-server
 
+	# Binaly logs disabled by default and Error logging not in syslog (syslog is default).
+	sudo sed -i "/Logging and Replication/a \log_error = \/var\/log\/mysql\/error.log" /etc/mysql/my.cnf
+	sudo rm -rf /etc/mysql/conf.d/mysqld_safe_syslog.cnf
+	sudo log -mysql=binary -disable > /dev/null 2>&1
+
 	#Instead of mysql_secure_installation we do this: (same but manually, because not acept unattended)
 	sudo mysql --user=root -p$AUTOGENPASS_ROOT <<_EOF_
 ALTER USER 'root'@'localhost' IDENTIFIED BY '${AUTOGENPASS_ROOT}';
@@ -243,9 +249,8 @@ CREATE USER IF NOT EXISTS 'admin'@'localhost' IDENTIFIED BY '${AUTOGENPASS_ADMIN
 GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
 FLUSH PRIVILEGES;
 _EOF_
-
+	
 	conf_write mysql true
-	sudo log -mysql=binary -disable > /dev/null 2>&1
 	echo "${gre}MySQL has been installed successfully! ${end}"
 	api-events_update im4
 }
@@ -323,11 +328,6 @@ php_optim() {
 	
 	set_timezone &
 
-	sudo mkdir -p /var/log/php/$ver
-	sudo touch /var/log/php/$ver/fpm.log
-	sudo sed -i "/error_log =/c\error_log = /var/log/php/$ver/fpm.log" /etc/php/$ver/fpm/php-fpm.conf
-	sudo sed -i '/log_level =/c\log_level = notice' /etc/php/$ver/fpm/php-fpm.conf
-
 	sudo sed -i '/pm =/c\pm = ondemand' /etc/php/$ver/fpm/pool.d/www.conf
 	sudo sed -i '/request_terminate_timeout =/c\request_terminate_timeout = 300' /etc/php/$ver/fpm/pool.d/www.conf
 	sudo sed -i '/pm.max_spare_servers =/c\pm.max_spare_servers = 35' /etc/php/$ver/fpm/pool.d/www.conf
@@ -346,11 +346,11 @@ php_optim() {
 		sudo sed -i '/listen = /c\listen = 127.0.0.1:9000' /etc/php/$ver/fpm/pool.d/www.conf
 	fi
 	
-	sudo touch /var/log/php/$ver/slow.log
+	sudo touch /var/log/php$ver-slog.log
 	sudo cp /etc/php/$ver/fpm/pool.d/www.conf /etc/php/$ver/fpm/pool.d/debug.conf
 	sudo sed -i '/\[www\]/c\[debug]' /etc/php/$ver/fpm/pool.d/debug.conf
 	sudo sed -i '/rlimit_core =/c\rlimit_core = unlimited' /etc/php/$ver/fpm/pool.d/debug.conf
-	sudo sed -i "/slowlog =/c\slowlog = /var/log/php/$ver/slow.log" /etc/php/$ver/fpm/pool.d/debug.conf
+	sudo sed -i "/slowlog =/c\slowlog = /var/log/php$ver-slog.log" /etc/php/$ver/fpm/pool.d/debug.conf
 	sudo sed -i '/request_slowlog_timeout =/c\request_slowlog_timeout = 10s' /etc/php/$ver/fpm/pool.d/debug.conf
 
 	if [[ $(conf_read multi-php) == "true" ]]; then

+ 460 - 0
lib/webin

@@ -728,6 +728,8 @@ server_reset() {
 		if [[ -f /opt/webinoly/templates/source/php.ini && -f /opt/webinoly/templates/source/www.conf ]]; then
 			sudo cat /opt/webinoly/templates/source/php.ini > /etc/php/$(conf_read php-ver)/fpm/php.ini
 			sudo cat /opt/webinoly/templates/source/www.conf > /etc/php/$(conf_read php-ver)/fpm/pool.d/www.conf
+			# Added in v1.11.0, will fail if stack was built before:
+			[[ -f /opt/webinoly/templates/source/php-fpm.conf ]] && sudo cat /opt/webinoly/templates/source/php-fpm.conf > /etc/php/$(conf_read php-ver)/fpm/php-fpm.conf
 			sudo rm -rf /etc/php/$(conf_read php-ver)/fpm/pool.d/debug.conf
 			php_optim
 			echo "${gre}PHP settings has been updated successfully!${end}"
@@ -1213,3 +1215,461 @@ aws_secret_access_key = $pass" >> /root/.aws/credentials
 	echo "${gre}AWS S3 Credentials successfully added!${end}"
 }
 
+
+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/$(conf_read tools-port)
+		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/$(conf_read tools-port)
+		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 integration has been successfully removed!${end}"
+	else
+		echo "${gre}Datadog MySQL 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
+		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 ]]; 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 Log is already enabled!${end}"
+	elif [[ -f /etc/datadog-agent/conf.d/mysql.d/conf.yaml ]]; then
+		
+		# REMOVE: Check for stacks built before v1.11.0
+		if [[ -f /etc/mysql/conf.d/mysqld_safe_syslog.cnf ]]; then
+			sudo sed -i "/Logging and Replication/a \log_error = \/var\/log\/mysql\/error.log" /etc/mysql/my.cnf
+			sudo rm -rf /etc/mysql/conf.d/mysqld_safe_syslog.cnf
+			sudo service mysql restart
+		fi
+		
+		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 Logs has been successfully enabled!${end}"
+	
+	else
+		echo "${red}[ERROR] Datadog MySQL 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/$(conf_read tools-port)) ]]; then
+			sudo sed -i '/Webinoly Admin-Tools NGINX CONFIGURATION/r /opt/webinoly/templates/general/tools-site-localhost' /etc/nginx/sites-available/$(conf_read tools-port)
+		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/$(conf_read tools-port)) ]]; then
+			sudo sed -i '/Webinoly Admin-Tools NGINX CONFIGURATION/r /opt/webinoly/templates/general/tools-site-localhost' /etc/nginx/sites-available/$(conf_read tools-port)
+		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
+		local ADMIN_PASS=$( echo $(conf_read mysql-admin) | openssl enc -d -a -salt )
+		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: '$ADMIN_PASS'
+  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 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 Logs has been successfully disabled!${end}"
+		else
+			echo "${gre}Datadog MySQL Log is already disabled!${end}"
+		fi
+	else
+		echo "${gre}Datadog MySQL 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 sed -i '/WebinolyLocalhostStart/,/WebinolyLocalhostEnd/{/.*/d}' /etc/nginx/sites-available/$(conf_read tools-port)
+		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://raw.githubusercontent.com/DataDog/datadog-agent/master/cmd/agent/install_script.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) == "true" ]] && dd_redis
+			fi
+			
+			sudo service datadog-agent start
+			echo "${gre}Datadog Agent has been successfully installed in your server!${end}"
+		fi
+	fi
+}
+
+
+
+

+ 1 - 0
plugins/stack

@@ -441,6 +441,7 @@ elif [[ -n $purge_server_all ]]; then
 		clear_force_flag
 		
 		# Remove remanent packages and things!
+		[[ -d /etc/datadog-agent ]] && webinoly -datadog -purge
 		[[ -f /etc/ssl/certs/webinoly-blackhole.crt.pem ]] && sudo rm -rf /etc/ssl/certs/webinoly-blackhole.crt.pem
 		[[ -f /etc/ssl/private/webinoly-blackhole.key.pem ]] && sudo rm -rf /etc/ssl/private/webinoly-blackhole.key.pem
 		[[ -f /etc/ssl/dhparam.pem ]] && sudo rm -rf /etc/ssl/dhparam.pem

+ 52 - 0
plugins/webinoly

@@ -212,6 +212,58 @@ elif [[ -n $aws_s3_credentials ]]; then
 	aws_s3_credentials
 
 
+elif [[ -n $datadog ]]; then
+	if [[ -n $purge ]]; then
+		if [[ $integrations == "nginx" ]]; then
+			dd_nginx_purge
+		elif [[ $integrations == "fpm" ]]; then
+			dd_fpm_purge
+		elif [[ $integrations == "mysql" ]]; then
+			dd_mysql_purge
+		elif [[ $integrations == "redis" ]]; then
+			dd_redis_purge
+		elif [[ -n $integrations ]]; then
+			echo "${red}[ERROR] Invalid Datadog integration!${end}"
+			exit 1
+		else
+			dd_purge
+		fi
+		
+		
+		if [[ -n $integrations ]]; then
+			dd_logs_disable
+			sudo service datadog-agent restart
+		fi
+		
+	elif [[ -n $integrations && $integrations != "off" ]]; then
+		if [[ ! -d /etc/datadog-agent ]]; then
+			echo "${red}[ERROR] Datadog Agent is not installed in your server!${end}"
+			exit 1
+		fi
+		
+		if [[ $integrations == "nginx" ]]; then
+			check_for_nginx
+			dd_nginx
+		elif [[ $integrations == "fpm" ]]; then
+			check_for_php
+			dd_fpm
+		elif [[ $integrations == "mysql" ]]; then
+			check_for_mysql
+			dd_mysql
+		elif [[ $integrations == "redis" ]]; then
+			check_for_php_tool
+			dd_redis
+		else
+			echo "${red}[ERROR] Invalid Datadog integration!${end}"
+			exit 1
+		fi
+		
+		sudo service datadog-agent restart
+	else
+		dd_install
+	fi
+
+
 else
 	echo "${red}[ERROR] Please enter a valid option!${end}"
 	exit 1

+ 17 - 0
templates/general/tools-site-localhost

@@ -0,0 +1,17 @@
+
+# WebinolyLocalhostStart
+server {
+	listen 127.0.0.1;
+	server_name localhost;
+
+	location = /nginx_status {
+		access_log off;
+		stub_status on;
+	}
+	location ~ ^/(status|ping)$ {
+		access_log off;
+		include fastcgi_params;
+		fastcgi_pass php;
+	}
+}
+# WebinolyLocalhostEnd