node exporter 중에 아쉬운 게 서비스 가동여부 모니터링이 안되는 게 아쉬워서 찾아보니 변수로 값을 가져올 수가 있었다.
/etc/systemd/system/node_exporter.service 파일에 보면
ExecStart= 부분에 옵션을 추가할 수 있는데 여기에
--collector.textfile.directory=/var/lib/node_exporter/textfile_collector
라고 경로명을 추가해놓고 여기에 파일을 추가하면 grafana에서 가져온다.
해당 경로에
service_status.prom 과 같은 파일을 만들고
별도 스크립트로 서비스 가동 상황을 text로 남기게 해놓으면 그 값으로 가동여부를 확인할 수 있다.
샘플은 다음과 같다.
1이 가동, 0이 중지 이건 조회해서 표시하기 나름이라 알아서 정하면 된다.
service_status{hostname="A", service="tomcat"} 1
서비스 정지가동여부 체크하는것도 /etc/systemd/system에 파일을 추가해 자동으로 만들자
[unit]
Description=Service Checker
Wants=network-online.target
After=network-online.target
[Service]
User=root
Group=root
Type=simple
Restart=always
ExecStart=/sysadmin/dragon/bin/service_checker.sh
[Install]
WantedBy=default.target
실제 /sysadmin/dragon/bin/service_checker.sh는 그냥 대충 만들었다.
#!/bin/bash
SERVICE_LIST="/sysadmin/dragon/conf/service_list"
CURRENT=HOSTNAME=$(hostname)
OUTPUT_FILE="var/lib/node_exporter/textfile_collector/service_status.prom"
while true; do
> "$OUTPUT_FILE"
grep -i "^$CURRENT_HOSTNAME:" "$SERVICE_LIST" | while IFS=: read -r host_name service_name check_command;
do
service_status=$(eval "$check_command")
if [ "$service_status" -ge 1 ]; then
echo "service_status{hostname=\"$CURRENT_HOSTNAME\", service=\"$service_name\"} 1" >> "$OUTPUT_FILE"
else
echo "service_status{hostname=\"$CURRENT_HOSTNAME\", service=\"$service_name\"} 0" >> "$OUTPUT_FILE"
fi
done
sleep 30
done
'Linux' 카테고리의 다른 글
ipv6 enable 방법 및 위치 (0) | 2024.12.04 |
---|---|
서버 이관 시 최소 고려사항 및 계정 그룹 생성 스크립트 (0) | 2024.11.04 |
linux sftp umask 변경 (0) | 2024.05.27 |
Windows Linux Unix(AIX) 파일 공유 (0) | 2024.04.25 |
타 계정 명령어 실행 권한 부여(sudoers) (1) | 2024.01.26 |
댓글