mirror of https://github.com/fengyuhetao/shell.git
commit
732733f31f
|
@ -0,0 +1,164 @@
|
|||
#!/bin/bash
|
||||
#mail:xuel@anchnet.com
|
||||
#data:2017/9/7
|
||||
#AutoInstall ELK scripts
|
||||
#Software:elasticsearch-5.4.1/logstash-5.4.1/filebeat-5.4.1/kibana-5.4.1
|
||||
clear
|
||||
echo "##########################################"
|
||||
echo "# Auto Install ELK. ##"
|
||||
echo "# Press Ctrl + C to cancel ##"
|
||||
echo "# Any key to continue ##"
|
||||
echo "##########################################"
|
||||
read -p
|
||||
software_dir="/usr/local/software"
|
||||
elasticsearch_url="https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.4.1.tar.gz"
|
||||
kibana_url="https://artifacts.elastic.co/downloads/kibana/kibana-5.4.1-linux-x86_64.tar.gz"
|
||||
logstash_url="https://artifacts.elastic.co/downloads/logstash/logstash-5.4.1.tar.gz"
|
||||
filebeat_url="https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.4.1-linux-x86_64.tar.gz"
|
||||
sys_version=`cat /etc/redhat-release |awk '{print $4}'|cut -d. -f1`
|
||||
IP=`ip addr|grep "inet "|grep -v 127.0.0.1|awk '{print $2}'|cut -d/ -f1`
|
||||
jvm_conf="/usr/local/elasticsearch/config/jvm.options"
|
||||
sys_mem=`free -m|grep Mem:|awk '{print $2}'|awk '{sum+=$1} END {print sum/1024}'|cut -d. -f1`
|
||||
|
||||
#wget software
|
||||
wget_fun() {
|
||||
if [ ! -d ${software_dir} ];then
|
||||
mkdir -p ${software_dir} && cd ${software_dir}
|
||||
else
|
||||
cd ${software_dir}
|
||||
fi
|
||||
for software in $elasticsearch_url $kibana_url $logstash_url $filebeat_url
|
||||
do
|
||||
wget -c $software
|
||||
done
|
||||
clear
|
||||
}
|
||||
#initial system:install java wget;set hostname;disable firewalld
|
||||
init_sys() {
|
||||
[ -f /etc/init.d/functions ] && . /etc/init.d/functions
|
||||
[ "${sys_version}" != "7" ] && echo "Error:This Scripts Support Centos7.xx" && exit 1
|
||||
[ $(id -u) != "0" ] && echo "Error: You must be root to run this script" && exit 1
|
||||
sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config
|
||||
setenforce 0
|
||||
yum install -y java-1.8.0-openjdk wget net-tools
|
||||
hostnamectl set-hostname elk-server
|
||||
systemctl stop firewalld
|
||||
cat >>/etc/security/limits.conf<<EOF
|
||||
* soft nofile 65536
|
||||
* hard nofile 65536
|
||||
* soft nGproc 65536
|
||||
* hard nproc 65536
|
||||
EOF
|
||||
}
|
||||
|
||||
#install elasticsearch
|
||||
install_elasticsearch() {
|
||||
cd $software_dir
|
||||
tar zxf elasticsearch-5.4.1.tar.gz
|
||||
mv elasticsearch-5.4.1 /usr/local/elasticsearch
|
||||
mkdir -p /usr/local/elasticsearch/data /usr/local/elasticsearch/logs
|
||||
useradd elasticsearch
|
||||
chown -R elasticsearch:elasticsearch /usr/local/elasticsearch
|
||||
echo "vm.max_map_count = 655360" >>/etc/sysctl.conf && sysctl -p
|
||||
if [ ${sys_mem} -eq 0 ];then
|
||||
sed -i "s#`grep "^-Xmx" ${jvm_conf}`#"-Xmx512m"#g" ${jvm_conf}
|
||||
sed -i "s#`grep "^-Xms" ${jvm_conf}`#"-Xms512m"#g" ${jvm_conf}
|
||||
else
|
||||
sed -i "s#`grep "^-Xmx" ${jvm_conf}`#"-Xmx${sys_mem}g"#g" ${jvm_conf}
|
||||
sed -i "s#`grep "^-Xms" ${jvm_conf}`#"-Xms${sys_mem}g"#g" ${jvm_conf}
|
||||
fi
|
||||
cat >>/usr/local/elasticsearch/config/elasticsearch.yml<<EOF
|
||||
cluster.name: my-application
|
||||
node.name: elk-server
|
||||
path.data: /usr/local/elasticsearch/data
|
||||
path.logs: /usr/local/elasticsearch/logs
|
||||
network.host: 127.0.0.1
|
||||
http.port: 9200
|
||||
discovery.zen.ping.unicast.hosts: ["elk-server"]
|
||||
EOF
|
||||
su - elasticsearch -c "nohup /usr/local/elasticsearch/bin/elasticsearch &"
|
||||
}
|
||||
|
||||
#install logstash
|
||||
install_logstash() {
|
||||
cd $software_dir
|
||||
tar -zxf logstash-5.4.1.tar.gz
|
||||
mv logstash-5.4.1 /usr/local/logstash
|
||||
cat>/usr/local/logstash/config/01-syslog.conf<<EOF
|
||||
input {
|
||||
beats {
|
||||
port => "5044"
|
||||
}
|
||||
}
|
||||
output {
|
||||
elasticsearch {
|
||||
hosts => "127.0.0.1:9200"
|
||||
}
|
||||
stdout { codec => rubydebug }
|
||||
}
|
||||
EOF
|
||||
nohup /usr/local/logstash/bin/logstash -f /usr/local/logstash/config/01-syslog.conf & >/dev/null
|
||||
}
|
||||
|
||||
#install filebeat
|
||||
install_filebeat() {
|
||||
cd $software_dir
|
||||
tar -zxf filebeat-5.4.1-linux-x86_64.tar.gz
|
||||
mv filebeat-5.4.1-linux-x86_64 /usr/local/filebeat
|
||||
cat >/usr/local/filebeat/filebeat.yml<<EOF
|
||||
filebeat.prospectors:
|
||||
- input_type: log
|
||||
paths:
|
||||
- /var/log/*.log
|
||||
output.logstash:
|
||||
hosts: ["127.0.0.1:5044"]
|
||||
EOF
|
||||
cd /usr/local/filebeat/
|
||||
nohup /usr/local/filebeat/filebeat & >/dev/null
|
||||
}
|
||||
|
||||
#install kibana
|
||||
install_kibana() {
|
||||
cd $software_dir
|
||||
tar -zxf kibana-5.4.1-linux-x86_64.tar.gz
|
||||
mv kibana-5.4.1-linux-x86_64 /usr/local/kibana
|
||||
cat >> /usr/local/kibana/config/kibana.yml <<EOF
|
||||
server.port: 5601
|
||||
server.host: "0.0.0.0"
|
||||
elasticsearch.url: "http://127.0.0.1:9200"
|
||||
EOF
|
||||
nohup /usr/local/kibana/bin/kibana & >/dev/null
|
||||
}
|
||||
|
||||
check() {
|
||||
port=$1
|
||||
program=$2
|
||||
check_port=`netstat -lntup|grep ${port}|wc -l`
|
||||
check_program=`ps -ef|grep ${program}|grep -v grep|wc -l`
|
||||
if [ $check_port -gt 0 ] && [ $check_program -gt 0 ];then
|
||||
action "${program} run is ok!" /bin/true
|
||||
else
|
||||
action "${program} run is error!" /bin/false
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
init_sys
|
||||
wget_fun
|
||||
install_elasticsearch
|
||||
install_filebeat
|
||||
install_logstash
|
||||
install_kibana
|
||||
echo -e "\033[32m Checking Elasticsearch...\033[0m"
|
||||
sleep 20
|
||||
check :9200 "elasticsearch"
|
||||
echo -e "\033[32m Checking Logstash...\033[0m"
|
||||
sleep 2
|
||||
check ":9600" "logstash"
|
||||
echo -e "\033[32m Checking Kibana...\033[0m"
|
||||
sleep 2
|
||||
check ":5601" "kibana"
|
||||
action "ELK install is success!" /bin/true
|
||||
echo "url:http://$IP:5601"
|
||||
}
|
||||
main
|
|
@ -0,0 +1,53 @@
|
|||
#!/bin/bash
|
||||
# auth:kaliarch
|
||||
# func:sys info check
|
||||
# version:v1.0
|
||||
# sys:centos6.x/7.x
|
||||
|
||||
set -e
|
||||
[ $(id -u) -gt 0 ] && exit 1
|
||||
|
||||
# cpu使用超过百分之多少进行限制
|
||||
PEC_CPU=80
|
||||
|
||||
# 限制进程使用百分之多少,如果程序为多线程,单个cpu限制为85,如果为多核心,就需要按照比例写,例如cpu为2c,像限制多线程占比80%,就写170
|
||||
LIMIT_CPU=85
|
||||
# 日志
|
||||
LOG_DIR=/var/log/cpulimit/
|
||||
|
||||
# 超过阀值进程pid
|
||||
PIDARG=$(ps -aux |awk -v CPU=${PEC_CPU} '{if($3 > CPU) print $2}')
|
||||
CPULIMITCMD=$(which cpulimit)
|
||||
|
||||
install_cpulimit() {
|
||||
[ ! -d /tmp ] && mkdir /tmp || cd /tmp
|
||||
wget -c https://github.com/opsengine/cpulimit/archive/v0.2.tar.gz
|
||||
tar -zxf v0.2.tar.gz
|
||||
cd cpulimit-0.2 && make
|
||||
[ $? -eq 0 ] && cp src/cpulimit /usr/bin/
|
||||
}
|
||||
|
||||
|
||||
do_cpulimit() {
|
||||
[ ! -d ${LOG_DIR} ] && mkdir -p ${LOG_DIR}
|
||||
for i in ${PIDARG};
|
||||
do
|
||||
MSG=$(ps -aux |awk -v pid=$i '{if($2 == pid) print $0}')
|
||||
echo ${MSG}
|
||||
[ ! -d /tmp ] && mkdir /tmp || cd /tmp
|
||||
nohup ${CPULIMITCMD} -p $i -l ${LIMIT_CPU} &
|
||||
echo "$(date) -- ${MSG}" >> ${LOG_DIR}$(date +%F).log
|
||||
done
|
||||
}
|
||||
|
||||
main() {
|
||||
|
||||
hash cpulimit
|
||||
if [ $? -eq 0 ];then
|
||||
do_cpulimit
|
||||
else
|
||||
install_cpulimit && do_cpulimit
|
||||
fi
|
||||
}
|
||||
|
||||
main
|
|
@ -0,0 +1,26 @@
|
|||
#!/bin/bash
|
||||
# function:自定义rm命令,每天晚上定时清理
|
||||
|
||||
CMD_SCRIPTS=$HOME/.rm_scripts.sh
|
||||
TRASH_DIR=$HOME/.TRASH_DIR
|
||||
CRON_FILE=/var/spool/cron/root
|
||||
BASHRC=$HOME/.bashrc
|
||||
|
||||
[ ! -d ${TRASH_DIR} ] && mkdir -p ${TRASH_DIR}
|
||||
cat > $CMD_SCRIPTS <<EOF
|
||||
PARA_CNT=\$#
|
||||
TRASH_DIR=$TRASH_DIR
|
||||
for i in \$*; do
|
||||
DATE=\$(date +%F%T)
|
||||
fileName=\$(basename \$i)
|
||||
mv \$i \$TRASH_DIR/\$fileName.\$DATE
|
||||
done
|
||||
EOF
|
||||
|
||||
sed -i "s@$(grep 'alias rm=' $BASHRC)@alias rm='bash ${CMD_SCRIPTS}'@g" $BASHRC
|
||||
source $HOME/.bashrc
|
||||
|
||||
echo "0 0 * * * rm -rf $TRASH_DIR/*" >> $CRON_FILE
|
||||
echo "删除目录:$TRASH_DIR"
|
||||
echo "删除脚本:$CMD_SCRIPTS"
|
||||
echo "请执行:source $BASHRC 来加载文件或退出当前shell重新登录"
|
|
@ -0,0 +1,225 @@
|
|||
#!/bin/bash
|
||||
# auth:kaliarch
|
||||
# func:sys info check
|
||||
# version:v1.0
|
||||
|
||||
[ $(id -u) -gt 0 ] && echo "请用root用户执行此脚本!" && exit 1
|
||||
sysversion=$(rpm -q centos-release|cut -d- -f3)
|
||||
line="-------------------------------------------------"
|
||||
|
||||
|
||||
[ -d logs ] || mkdir logs
|
||||
|
||||
sys_check_file="logs/$(ip a show dev eth0|grep -w inet|awk '{print $2}'|awk -F '/' '{print $1}')-`date +%Y%m%d`.txt"
|
||||
|
||||
# 获取系统cpu信息
|
||||
function get_cpu_info() {
|
||||
Physical_CPUs=$(grep "physical id" /proc/cpuinfo| sort | uniq | wc -l)
|
||||
Virt_CPUs=$(grep "processor" /proc/cpuinfo | wc -l)
|
||||
CPU_Kernels=$(grep "cores" /proc/cpuinfo|uniq| awk -F ': ' '{print $2}')
|
||||
CPU_Type=$(grep "model name" /proc/cpuinfo | awk -F ': ' '{print $2}' | sort | uniq)
|
||||
CPU_Arch=$(uname -m)
|
||||
cat <<EOF
|
||||
CPU信息:
|
||||
|
||||
物理CPU个数:$Physical_CPUs
|
||||
逻辑CPU个数:$Virt_CPUs
|
||||
每CPU核心数:$CPU_Kernels
|
||||
CPU型号:$CPU_Type
|
||||
CPU架构:$CPU_Arch
|
||||
EOF
|
||||
}
|
||||
|
||||
# 获取系统内存信息
|
||||
function get_mem_info() {
|
||||
check_mem=$(free -m)
|
||||
MemTotal=$(grep MemTotal /proc/meminfo| awk '{print $2}') #KB
|
||||
MemFree=$(grep MemFree /proc/meminfo| awk '{print $2}') #KB
|
||||
let MemUsed=MemTotal-MemFree
|
||||
MemPercent=$(awk "BEGIN {if($MemTotal==0){printf 100}else{printf \"%.2f\",$MemUsed*100/$MemTotal}}")
|
||||
report_MemTotal="$((MemTotal/1024))""MB" #内存总容量(MB)
|
||||
report_MemFree="$((MemFree/1024))""MB" #内存剩余(MB)
|
||||
report_MemUsedPercent="$(awk "BEGIN {if($MemTotal==0){printf 100}else{printf \"%.2f\",$MemUsed*100/$MemTotal}}")""%" #内存使用率%
|
||||
|
||||
cat <<EOF
|
||||
内存信息:
|
||||
|
||||
${check_mem}
|
||||
EOF
|
||||
}
|
||||
|
||||
# 获取系统网络信息
|
||||
function get_net_info() {
|
||||
pri_ipadd=$(ip a show dev eth0|grep -w inet|awk '{print $2}'|awk -F '/' '{print $1}')
|
||||
pub_ipadd=$(curl ifconfig.me -s)
|
||||
gateway=$(ip route | grep default | awk '{print $3}')
|
||||
mac_info=$(ip link| egrep -v "lo"|grep link|awk '{print $2}')
|
||||
dns_config=$(egrep -v "^$|^#" /etc/resolv.conf)
|
||||
route_info=$(route -n)
|
||||
cat <<EOF
|
||||
IP信息:
|
||||
|
||||
系统公网地址:${pub_ipadd}
|
||||
系统私网地址:${pri_ipadd}
|
||||
网关地址:${gateway}
|
||||
MAC地址:${mac_info}
|
||||
|
||||
路由信息:
|
||||
${route_info}
|
||||
|
||||
DNS 信息:
|
||||
${dns_config}
|
||||
EOF
|
||||
}
|
||||
|
||||
# 获取系统磁盘信息
|
||||
function get_disk_info() {
|
||||
disk_info=$(fdisk -l|grep "Disk /dev"|cut -d, -f1)
|
||||
disk_use=$(df -hTP|awk '$2!="tmpfs"{print}')
|
||||
disk_inode=$(df -hiP|awk '$1!="tmpfs"{print}')
|
||||
|
||||
cat <<EOF
|
||||
磁盘信息:
|
||||
|
||||
${disk_info}
|
||||
磁盘使用:
|
||||
|
||||
${disk_use}
|
||||
inode信息:
|
||||
|
||||
${disk_inode}
|
||||
EOF
|
||||
|
||||
|
||||
}
|
||||
|
||||
# 获取系统信息
|
||||
function get_systatus_info() {
|
||||
sys_os=$(uname -o)
|
||||
sys_release=$(cat /etc/redhat-release)
|
||||
sys_kernel=$(uname -r)
|
||||
sys_hostname=$(hostname)
|
||||
sys_selinux=$(getenforce)
|
||||
sys_lang=$(echo $LANG)
|
||||
sys_lastreboot=$(who -b | awk '{print $3,$4}')
|
||||
sys_runtime=$(uptime |awk '{print $3,$4}'|cut -d, -f1)
|
||||
sys_time=$(date)
|
||||
sys_load=$(uptime |cut -d: -f5)
|
||||
|
||||
cat <<EOF
|
||||
系统信息:
|
||||
|
||||
系统: ${sys_os}
|
||||
发行版本: ${sys_release}
|
||||
系统内核: ${sys_kernel}
|
||||
主机名: ${sys_hostname}
|
||||
selinux状态: ${sys_selinux}
|
||||
系统语言: ${sys_lang}
|
||||
系统当前时间: ${sys_time}
|
||||
系统最后重启时间: ${sys_lastreboot}
|
||||
系统运行时间: ${sys_runtime}
|
||||
系统负载: ${sys_load}
|
||||
EOF
|
||||
}
|
||||
|
||||
# 获取服务信息
|
||||
function get_service_info() {
|
||||
port_listen=$(netstat -lntup|grep -v "Active Internet")
|
||||
kernel_config=$(sysctl -p 2>/dev/null)
|
||||
if [ ${sysversion} -gt 6 ];then
|
||||
service_config=$(systemctl list-unit-files --type=service --state=enabled|grep "enabled")
|
||||
run_service=$(systemctl list-units --type=service --state=running |grep ".service")
|
||||
else
|
||||
service_config=$(/sbin/chkconfig | grep -E ":on|:启用" |column -t)
|
||||
run_service=$(/sbin/service --status-all|grep -E "running")
|
||||
fi
|
||||
cat <<EOF
|
||||
服务启动配置:
|
||||
|
||||
${service_config}
|
||||
${line}
|
||||
运行的服务:
|
||||
|
||||
${run_service}
|
||||
${line}
|
||||
监听端口:
|
||||
|
||||
${port_listen}
|
||||
${line}
|
||||
内核参考配置:
|
||||
|
||||
${kernel_config}
|
||||
EOF
|
||||
}
|
||||
|
||||
|
||||
function get_sys_user() {
|
||||
login_user=$(awk -F: '{if ($NF=="/bin/bash") print $0}' /etc/passwd)
|
||||
ssh_config=$(egrep -v "^#|^$" /etc/ssh/sshd_config)
|
||||
sudo_config=$(egrep -v "^#|^$" /etc/sudoers |grep -v "^Defaults")
|
||||
host_config=$(egrep -v "^#|^$" /etc/hosts)
|
||||
crond_config=$(for cronuser in /var/spool/cron/* ;do ls ${cronuser} 2>/dev/null|cut -d/ -f5;egrep -v "^$|^#" ${cronuser} 2>/dev/null;echo "";done)
|
||||
cat <<EOF
|
||||
系统登录用户:
|
||||
|
||||
${login_user}
|
||||
${line}
|
||||
ssh 配置信息:
|
||||
|
||||
${ssh_config}
|
||||
${line}
|
||||
sudo 配置用户:
|
||||
|
||||
${sudo_config}
|
||||
${line}
|
||||
定时任务配置:
|
||||
|
||||
${crond_config}
|
||||
${line}
|
||||
hosts 信息:
|
||||
|
||||
${host_config}
|
||||
EOF
|
||||
}
|
||||
|
||||
|
||||
function process_top_info() {
|
||||
|
||||
top_title=$(top -b n1|head -7|tail -1)
|
||||
cpu_top10=$(top b -n1 | head -17 | tail -11)
|
||||
mem_top10=$(top -b n1|head -17|tail -10|sort -k10 -r)
|
||||
|
||||
cat <<EOF
|
||||
CPU占用top10:
|
||||
|
||||
${top_title}
|
||||
${cpu_top10}
|
||||
|
||||
内存占用top10:
|
||||
|
||||
${top_title}
|
||||
${mem_top10}
|
||||
EOF
|
||||
}
|
||||
|
||||
|
||||
function sys_check() {
|
||||
get_cpu_info
|
||||
echo ${line}
|
||||
get_mem_info
|
||||
echo ${line}
|
||||
get_net_info
|
||||
echo ${line}
|
||||
get_disk_info
|
||||
echo ${line}
|
||||
get_systatus_info
|
||||
echo ${line}
|
||||
get_service_info
|
||||
echo ${line}
|
||||
get_sys_user
|
||||
echo ${line}
|
||||
process_top_info
|
||||
}
|
||||
|
||||
|
||||
sys_check > ${sys_check_file}
|
Loading…
Reference in New Issue