watch.sh(生產環境日誌異常監控shell腳本)
#!/bin/bash
#--------------------------------------------
# 監聽程序異常日誌, 如果出現異常則發送通知
# author:RUNTU
# weixin: classmisschen
#--------------------------------------------
# 切換到腳本執行的目錄
cd `dirname $0`
# 監聽的日誌文件
logfile='error.log'
# 當前機器標識
environment="〓〓〓 PMS異常監控:XXX.XXX.XXX.XXX 〓〓〓\n"
# 獲取日誌當前的行號
beforelinenum=`sed -n '$=' $logfile`
# 監聽間隔時間時間
secondspan=15
while true
do
afterlinenum=`sed -n '$=' $logfile`
line=$(( $afterlinenum - $beforelinenum ))
#echo "line:"$line
beforelinenum=$afterlinenum
content=`tail -n $line $logfile`
if [ -n "$content" ]; then
curl 'https://oapi.dingtalk.com/robot/send?access_token=1626fcbcddddddddddwd' \
-H 'Content-Type: application/json' -d "{\"msgtype\": \"text\",\"text\": { \"content\": \"$environment$content\" }}"
fi
sleep $secondspan
done
echo "====exit====="
exit
build.sh(jenkins持續集成腳本)
#!/bin/bash
PROFILE=/home/opt/code/taskcenter-V2.0
CODEFILE=/home/opt/code
if [ -d $PROFILE ]; then
rm -rf $PROFILE
echo "清除上一次構建文件"
fi
cd $CODEFILE
svn export --username 用戶名 --password '密碼' https://111.22.3.444/svn/xxx/dsp-v2.0/code/tags/taskcenter-V2.0
echo "svn拉取代碼"
cd $PROFILE
mvn clean
mvn package -P common -U
pid=`netstat -nptl| grep 8088 | awk '{print $7}'|awk -F '/' '{print $1}'`
if [ -n "$pid" ]
then
echo "kill掉上一次運行的工程-pid:" $pid
kill -9 $pid
fi
echo "複製最新的jar到指定目錄"
cp /home/opt/code/taskcenter-V2.0/web/target/taskcenter-web-2.0.0.jar /home/opt/tomcat/taskcenter/taskcenter-web-2.0.0.jar
# 如果沒有配置全局不中斷請使用BUILD_ID=dontKillMe,例如:nohup /home/deploy-mq/startup.sh &
java -jar /home/opt/tomcat/taskcenter/taskcenter-web-2.0.0.jar &
echo "項目啓動"
手機號、身份證號脫敏
//JAVA
public static void main(String[] args) {
String phone = "18888888888";
String phoneNumber = phone.substring(0, 3) + "****" + phone.substring(7, phone.length());
System.out.println("phone總長度:" + phone.length());
System.out.println("phone前3位:" + phone.substring(0, 3));
System.out.println("phone中4位:" + phone.substring(3, 7));
System.out.println("phone後4位:" + phone.substring(7, phone.length()));
System.out.println("phone中4*:" + phoneNumber);
}
//SQL
SELECT
INSERT ( 18888888888, 4, 4, '****' ) AS phone ,
INSERT ( '37292219960101555X', 5, 10, '****' ) AS ID
FROM
DUAL;
mysql事務未釋放導致的鎖數據解鎖
SELECT * FROM information_schema.innodb_trx;
SELECT * FROM information_schema.innodb_locks;
show PROCESSLIST;
SELECT * FROM information_schema.PROCESSLIST WHERE command NOT IN ( 'Sleep' ) AND USER NOT IN ( 'mydba', 'event_scheduler', 'repl', 'binlogbak', 'system user' )
KILL 41501
logstash推送釘釘機器人配置
input {
file {
path => ["/home/opt/logs/taskcenter/error.log"]
type => "taskcenter"
stat_interval => 45
codec=> multiline {
pattern => "^[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{3} \[ERROR\]"
negate => true
what => "previous"
auto_flush_interval => 10
# max_lines => 20
# max_bytes => "2KiB"
}
}
}
filter {
grok{
match => {
"message" => "(?<temMsg>([\s\S]{1200}))"
}
}
mutate {
rename => {"temMsg" => "message"}
}
}
output {
if [type] == "taskcenter" {
stdout {}
http {
url => "鉤子地址"
http_method => "post"
content_type => "application/json; charset=utf-8"
format => "message"
pool_max => 3
pool_max_per_route => 10
request_timeout => 10
retry_failed => false
socket_timeout => 6
message => '{"msgtype":"text","text":{"content":"%{[message]}"}}'
}
}
}