본문 바로가기
리눅스&서버/우분투

서버 운영 필요한 지식 - 트러블 슈팅[1] - (텔레그램 봇 메시지 보내기)

by 인생여희 2022. 3. 23.

서버 운영 필요한 지식 - 트러블 슈팅[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] 텔레그램 봇 이용해서 메시지 전송하기

 

https://chicpro.dev/telegram%ED%85%94%EB%A0%88%EA%B7%B8%EB%9E%A8-%EB%B4%87%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%B4-%EB%A9%94%EC%84%B8%EC%A7%80-%EC%A0%84%EC%86%A1%ED%95%98%EA%B8%B0/ 

 

[필요한 준비물은 텔레그램 토큰과 텔레그램 id]

 

텔레그램 토큰 - bot 바로뒤에 5270211873:d0cL6zaSNVuXrY5YX4N-H4JnzoypRra8 가 토큰이다

https://api.telegram.org/bot5270211873:d0cL6zaSNVuXrY5YX4N-H4JnzoypRra8/getUpdates

텔레그램 id

52455236

텔레그램으로 메시지 전송하기 - good 메시지 전송

https://api.telegram.org/bot5270211873:A0cL6zaSNVuXrY5YX4N-H4JnzoypRra8/sendmessage?chat_id=52458463&text=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 정리