사례 2. Nginx 서버 상태 코드 에 502 가 있 는 지 모니터링
요 구 는 다음 과 같 습 니 다.
1) 1 분 에 한 번 스 크 립 트 실행
2) 502 상 태 를 모니터링 하면 사이트 의 방문 로 그 를 분석 할 수 있 고 curl 도구 로 http 요청 을 하여 상태 코드 를 얻 을 수 있 습 니 다. 방문 로 그 를 분석 하 는 것 을 권장 합 니 다. 방문 로그 경로 가/data/logs/access. log 라면 로그 세 션 은 다음 과 같 습 니 다.
54.36.149.38 - [16/Sep/2018:18:21:10 +0800] www.lishiming.net "thread-5360-1-1.html" 301 "GET /thread-5360-1-1.html HTTP/1.1"-" "Mozilla/5.0(compatible;AhrefsBot/5.2; +http://ahrefs.com/robot/)"
3) 1 분 에 502 번, 50 번 넘 으 면 경고
4) 경고 메 일 알림, 메 일 은[email protected]
지식 포인트 1: 퀘 스 트 계획 cron
이 사례 는 1 분 에 한 번 스 크 립 트 를 실행 해 야 하기 때문에 cron 을 사용 해 야 합 니 다.명령 실행:
crontab -e
* * * * * /bin/bash /usr/local/sbin/mon_502.sh
예시 1:
매주 1, 3, 5 새벽 4 시 20 분 에 스 크 립 트 를 실행 합 니 다.
/usr/local/sbin/123.sh
20 4 * * 1,3,5 /bin/bash /usr/local/sbin/123.sh
예시 2:
3 일 간격 으로 파일 비우 기
/data/log/tmp.log
* * */3 * * true>/data/log/tmp.log
예시 3:
매일 9 시 부터 12 시 까지 14 시 부터 16 시 까지 스 크 립 트 를 실행 합 니 다.
/usr/local/sbin/xxx.sh
0 9-12,14-16 * * * /bin/bash /usr/local/sbin/xxx.sh
지식 포인트 2: 필터 키워드
셸 스 크 립 트 에서 어떤 키 워드 를 걸 러 내 려 면 grep 명령 을 사용 합 니 다. 예 를 들 어 로그 에 502 가 포 함 된 로 그 를 걸 러 내야 합 니 다. 명령 은:
grep '502' /data/log/access.log
1) 영문 으로 시작 하 는 줄 을 걸 러 냅 니 다.
grep '^[a-zA-Z]' 1.txt
2) 모든 빈 줄 제거:
grep -v '^$' 1.txt
3) 최소 두 개의 연속 숫자 가 있 는 줄 을 걸 러 냅 니 다.
grep -E '[0-9][0-9]+' 1.txt
grep -E '[0-9]{2,$}' 1.txt
4) aming 이나 Liux 가 함 유 된 몇 줄 을 걸 러 냅 니 다.
grep -Ec 'aming|linux' 1.txt
다시 본 사례 의 수 요 를 보면 1 분 에 한 번 검 측 하기 때문에 필터 의 키 워드 는 지난 1 분 의 시간 입 니 다. 로 그 를 분석 하면 지난 1 분 에 사용 할 수 있 는 것 을 발견 할 수 있 습 니 다.
date -d "-1 min" +%d/%m/%Y:%H:%M:[0-5][0-9]
이 키 워드 는 표시 한다.[0 - 5] [0 - 9] 는 59 초 에 대한 매 칭 이다.
지식 포인트 3: 셸 의 변수
비교 대상 이 숫자 가 아니 라 문자열 일 때 이렇게 사용 할 수 있 습 니 다.
if [$str == "aminglinux"]
변수 str 의 값 이 aminglinux 일 때.
지식 포인트 4: 명령 행 아래 메 일 보 내기
Python 에서 메 일 을 보 내 는 스 크 립 트 로 제3자 메 일 을 호출 합 니 다. 163 메 일 을 사용 합 니 다.휴대 전 화 는 클 라 이언 트 를 설치 할 수 있 기 때문에 알림 문 제 는 걱정 하지 않 아 도 된다.메 일 을 받 는 사람 은 자신 일 수도 있 고, 자신 에 게 메 일 을 보 내 는 것 도 스 팸 메 일의 고민 이 없 을 것 이다.
메 일 을 보 낸 Python 스 크 립 트:
mail.py
#!/bin/bash
#coding:utf-8
import smtplib
from email.mime.text import MIMEText
import sys
mail_host = 'smtp.163.com'
mail_user = '[email protected]'
mail_pass = 'your_mail_password'
mail_postfix = '163.com'
def send_mail(to_list,subject,content):
me = "zabbix "+""
msg = MIMEText(content, 'plain', 'utf-8')
msg['subject'] = subject
msg[from] = me
msg['to'] = to_list
try:
s = smtplib.SMTP()
s.connect(mail_host)
s.login(mail_user,mail_pass)
s.sendmail(me,to_list,msg.as_string())
s.close()
return True
expect Exception,e:
print str(e)
return False
if _name_ == "_main_":
send_mail(sys.argv[1],sys.argv[2],sys.argv[3])
설명:
이 스 크 립 트 는 제3자 메 일 계 정 에 사 용 됩 니 다. 정확 한 mail 을 작성 해 야 합 니 다.host,mail_user 와 mailpass.스 크 립 트 이름 은 mail. py 이 고 메 일 을 보 내 는 명령 은:
python mail.py [email protected] " " " "
이 사례 는 스 크 립 트 를 참고 합 니 다.
vim/usr/local/sbin/mon_502.sh
#!/bin/bash
## 502
## :
## :
## :v0.1
#[0-5][0-9] 59 , 。
t=`date -d "-1 min" +%d/%m/%Y:%H:%M:[0-5][0-9]`
log="/data/logs/access.log"
# mail.py , /usr/local/sbin/
mail_script="/usr/local/sbin/mail.py"
[email protected]
n=`grep $t $log|grep -c "502"`
if [ $n -gt 50 ]
then
python $mail_script $mail_user " 502" " $n "
fi
퀘 스 트 증가 계획:
* * * * * /bin/bash /usr/local/sbin/mon_502.sh 2>/tmp/mon_502.err
설명:
이 cron 맨 뒤에 오류 로그 출력 을 정의 해 야 합 니 다. 스 크 립 트 실행 중 오류 가 발생 하면/tmp/mon 에 도착 할 수 있 습 니 다.502. err 파일 에서 오류 정 보 를 봅 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
cwRsync 를 사용 하여 windows 아래 서버 파일 의 정시 동기 화 백업 실현(오류 처리 방법 첨부)그 후에 우 리 는 클 라 이언 트 f 디스크 의 해당 현재 에서 동기 화 된 파일 을 볼 수 있 습 니 다.하하.물론 cwRsync 는 증분 과 수정 동기 화 방식 을 사용 합 니 다.서버 쪽 에 있 는 해당 파일...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.