서버 운영 필요한 지식 - 트러블 슈팅[1] - (텔레그램 봇 메시지 보내기)
📌[1] 기본 네트워크 구조 및 정보
서버의 확장 종류
스케일업 : 서버의 스팩을 업그레이드
스케일 아웃 : 서버의 숫자를 늘림
테스트할 서버 정보
#서버 운용중 트러블 관련 중요 포인트
1.트러블 슈팅
2.트러블 방지
3.복구(백업)
#웹서버 구축 검증 및 확인 쉘 스크립트
✅사용 중인 포트 확인
netstat -nltpu
✅시스템에 할당된 포트 확인
cat /etc/services
✅nginx(웹서버)의 로그가 쌓이는 경로
cd /var/log/nginx/
파일생성하지 않고 명령어에서 실행
✅서버 로드 높은지 체크 : load average 가 코어수보다 높으면 높다
uptime
✅코어수 스팩 체크
cat /proc/cpuinfo
✅메모리 사용량 확인
free -m
✅디스크 사용량 확인
df -h
✅ 디스크 많이 사용하는 파일 찾기
- 현재위치 확인 : pwd
- / 로 이동 : cd /
- 이동한 것을 확인 : pwd
- 각 디리렉토리 별로 용량을 계산 :
- du -h —max-depth=1
- du -h —max-depth=1 | grep G (기가 바이트 단위의 파일 찾기)
- du -sh * | grep G (파일까지 봐야할 경우)
- 그 중에서 큰용량 차지 하는 디렉토리 찾기 :
- ls -alh | grep G
- 삭제 : rm -f 0000.log
✅일정시간 동안 모니터링 (임시방편)
- 3초마다 파일 용량 확인 - 모니터링(싱글 코테이션 주의)
watch -n 3 'ls -al /var/log/nginx | grep error'
- 3초마다 디스크 용량 감시 : (싱글 코테이션 주의)
watch -n 3 'df'
✅감시 스크립트 만들기
1.로그 디렉토리 용량 감시 스크립트
2.디스크 파티션 감시 스크립트
df -h
du -sh
crontab : 스케쥴러 툴
분 시간 일 월 요일 실행할 프로그램
* * * * * text.sh
00 * * * * * text.sh : 매시 정각에 실시
00 12 * * * : 매 12시에 실시
0 1 2 3 4 5 6. (일 ~ 토)
awk 응용
-F: (: 이 구분자)
df -h 의
결과 값을 awk 의 입력으로 처리
df -h | awk '{print $1}'
| column -t 명령어로 칼럼 구분 처리
df -h | awk '{print $1, $2}' | column -t
📌[2] 각 문제별 처리 스크립트
[단계 2-1] 텔레그램 봇 이용해서 메시지 전송하기
[필요한 준비물은 텔레그램 토큰과 텔레그램 id]
✅텔레그램 토큰 - bot 바로뒤에 5270211873:d0cL6zaSNVuXrY5YX4N-H4JnzoypRra8 가 토큰이다
https://api.telegram.org/bot5270211873:d0cL6zaSNVuXrY5YX4N-H4JnzoypRra8/getUpdates
✅텔레그램 id
52455236
✅텔레그램으로 메시지 전송하기 - good 메시지 전송
[단계 2-2] 텔레그램으로 메시지 전송 쉘 작성
vi telegram_push.sh
chmod 700 telegram_push.sh
✅ telegram_push.sh 내용
#! /bin/bash
## 텔레그램 봇으로 메시지를 보내는 쉘 스크립트
## 2개의 파라미터가 필요함
## 파라미터가 두개가 안될경우 사용방법을 출력하고 스크립트를 종료
## 1. 서버 호스트 이름
## 2.메시지
## 실행 결과는 현재 날짜/시각 , 서버이름, 저장한 메시지를 텔레그램으로 보냄
#파라미터 확인
if [ $# -ne 2 ]
then
echo "Usage "
echo "$0 {HOSTNAME} {MESSAGES}"
echo
echo "example)"
echo "$0 \"flago_dev\" \"/var/log/nginx 파티션을 확인하세요 \""
echo
exit 0
fi
#텔레그램 봇 관련 정보
ID="52455453463"
API_TOKEN="524370211873:A0cL6zaSNVuXrY5YX4N-H4JnzoypRra8"
URL="https://api.telegram.org/bot${API_TOKEN}/sendmessage"
# 날짜
DATE="$(date "+%Y-%m-%d %H:%M")"
#보낼 메세지 작성
TEXT="${DATE} [$1] $2"
# 메시지 보내기
curl -s -d "chat_id=${ID}&text=${TEXT}" ${URL} > /dev/null
[단계 2-3]로그 디렉토리 용량 감시해서 위에서 만든 텔레그램 쉘 실행
mkdir monitor
cd monitor
vi log_mon.sh
chmod 700 log_mon.sh
✅cat log_mon.sh 내용
#! /bin/bash
# 하는일 : 로그 디렉토리의 용량을 감시
# 1.로그 디렉토리의 크기를 확인
# 2.크기가 1기가 이상일 경우 관리자에게 알림
# 3. 1기가 미만일 경우 아무것도 안함
DIR="/var/log/nginx"
SIZE="$(du -m ${DIR} | awk '{print $1}')"
HOST="${HOSTNAME}"
#1024 : 1기가
if [ ${SIZE} -ge 1 ]
then
TEXT="${DIR} 사용량이 00 넘었습니다!"
# 텔레그램으로 메시지 보내는 명령어 실행
/root/monitor/telegram_push.sh "${HOST}" "${TEXT}"
fi
특정 폴더의 용량이 초과했을 경우 shell 스크립트로 텔레그램에 메시지를 자동으로 보낸다.
* 시스템엔지니어가 알려주는 리눅스 실전편 Bash Shell Script 정리
'리눅스&서버 > 우분투' 카테고리의 다른 글
웹서버 및 mysql DB 백업 쉘스크립트 [3] (0) | 2022.03.23 |
---|---|
디스크 파티션 사용량 모니터링 스크립트[2] (0) | 2022.03.23 |
ubuntu 에 pm2 와 ssl 인증서로 https 설정 (0) | 2021.10.20 |
ubuntu에 Nginx 설치 정리 + Node js (1) | 2021.10.19 |
Apache Tomcat 연동&mod_jk 설정 (0) | 2021.02.15 |