etc
OSM의 연결상태 모니터링 기능 (리눅스 크론탭)
inderrom
2023. 8. 3. 11:22
OSM API의 연결상태를 주기적으로 모니터링하기 위한 기능개발
1. 쉘 스크립트 작성 : PSQL 연결(데이터베이스) 및 LOG를 DB에 저장
- 리눅스 접속
- 쉘 스크립트 생성 : vi [파일명]
#!/bin/bash
url="https://tile.openstreetmap.org"
# 2>&1은 에러 로그 뿐만 아닌 정상 로그도 가져오는 것
response=$(curl -I "$url" 2>&1)
# 변수에서 "HTTP/"을 찾아 대소문자 구분 없이(-i) 찾은 뒤,
# 그 결과에서 두 번째 컬럼(공백으로 구분된 부분) 즉, HTTP 상태 코드를 http_status 변수에 저장
http_status=$(echo "$response" | grep -i "HTTP/" | awk '{print $2}')
# 데이터타입이 timestamp
current_time=$(date +"%Y-%m-%d %H:%M:%S")
echo "URL : $url"
echo "Response : $response"
echo "HTTP STATUS : $http_status"
echo "Current Time : $current_time"
if [ "$http_status" == "200" ]; then
log_message="$response"
success=1
else
log_message="$response"
success=0
fi
echo "Log Message : $log_message"
echo "Success : $success"
# 보안을 위해 비밀번호는 환경변수를 사용하여 입력한다.
export PGPASSWORD="password"
psql -h 호스트주소 -p 포트번호 -d 데이터모델 -U 유저명 <<EOF
INSERT INTO 테이블명 (컬럼1,컬럼2,컬럼3)
VALUES ('$current_time', '$log_message', '$success');
EOF
echo " PSQL 로그 저장 완료"
2. 실행 권한을 준다.
chmod -x scripts.sh
3. 크론탭 작성
# 크론탭 작성
crontab -e
# 크론탭 리스트
crontab -l
- 원하는 주기에 맞게 작성하면 된다.
ex) 매분마다 실행시 ( 꼭 *에 띄어쓰기)
* * * * * /path/scripts.sh
4. 크론탭 로그 위치
tail -f /var/log/syslog
*** 로그에서 No MTA installed, discarding output 에러가 발생하는 경우
- 메일전송 관리자가 없어서 발생하는 오류. 아래 명령어 입력
sudo apt-get install postfix
만약, 실행시 DB에 저장되지 않는 경우 여러가지가 존재하지만
1. ./scripts.sh 명령어를 통하여 스크립트가 실행되는지 확인.
-> 나의 경우에는 date 형식을 지키지 않아 insert가 제대로 안되었다. 형식을 고쳐주니 바로 해결됨.
2. 이외에도 방화벽이나 네트워크 문제
3. 데이터베이스 사용자 권한
4. 스크립트 실행권한
5. 커넥션 오류
정도를 살펴봐야할 것이다.