일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- crud
- python
- 자바
- spring
- 객체지향
- 자바문제
- 단축키
- JDBC
- 컬렉션프레임워크
- Error
- Oracle
- 대덕인재개발원
- servlet
- ddit
- Homebrew
- 생활코딩
- 맥
- html
- 이클립스
- jsp
- pyqt
- API
- nodejs
- FastAPI
- 배열
- ibatis
- Java
- 반복문
- Android
- Mac
Archives
- Today
- Total
romworld
OSM의 연결상태 모니터링 기능 (리눅스 크론탭) 본문
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. 커넥션 오류
정도를 살펴봐야할 것이다.
'etc' 카테고리의 다른 글
[Linux] 사용자, 그룹 및 권한 (0) | 2023.11.08 |
---|---|
[Linux] 기본 명령어 (0) | 2023.11.08 |
MQTT란? / mosquitto 설치 및 테스트 (0) | 2023.06.26 |
[Linux] 다른 서버로 파일 이동 (0) | 2023.06.16 |
[Ubuntu] root 비밀번호 재설정 (0) | 2023.06.13 |
Comments