UserParameter로 소프트웨어 버전을 수집하고 테스트하기

목차

Zabbix 기본 키에 없는 실행 결과를 UserParameter로 수집하는 방법입니다. 원노트의 버전 수집과 디스커버리 메모를 합쳤습니다. 먼저 인자 없는 고정 명령으로 정상 수집을 확인한 뒤 필요한 경우에만 LLD로 확장합니다.

고정 키와 절대 경로

/etc/zabbix/zabbix_agentd.d/software_versions.conf 예시입니다. 실제 바이너리 위치를 확인하고 agent 실행 계정이 읽고 실행할 수 있는 명령만 등록합니다. 고정 명령에는 UnsafeUserParameters를 활성화할 필요가 없습니다.

TERMINAL / CONFIG
UserParameter=lieper.apache.version,/usr/sbin/httpd -v
UserParameter=lieper.mysql.version,/usr/bin/mysql --version
UserParameter=lieper.php.version,/usr/bin/php --version
UserParameter=lieper.java.version,/usr/bin/java -version 2>&1

Java 버전처럼 표준 오류로 출력되는 명령은 2>&1로 합칩니다. 실제 명령의 종료 코드와 출력 형식을 확인하고 필요한 경우 전처리 정규식으로 버전 부분만 추출합니다.

로컬 테스트와 서비스 반영

TERMINAL / CONFIG
sudo -u zabbix /usr/bin/php --version
zabbix_agentd -t lieper.php.version
sudo systemctl restart zabbix-agent
sudo journalctl -u zabbix-agent -n 30 --no-pager

서비스 계정에서 실패하면 PATH·권한·SELinux·필요한 라이브러리를 확인합니다. 원인 확인 없이 sudo 전체 권한을 부여하지 않습니다. 문자열 결과는 문자·텍스트 형식의 아이템으로 등록합니다.

디스커버리로 확장할 때

여러 소프트웨어를 자동 발견하려면 스크립트가 유효한 JSON과 안정적인 LLD 매크로를 출력해야 합니다. 원본에는 완성된 스크립트가 없어 존재하지 않는 파일을 그대로 등록하는 단계는 포함하지 않았습니다.
명령 실행 시간이 길면 수집 주기를 조절하고 느린 원인을 먼저 해결합니다. Timeout만 크게 늘리면 agent 작업 슬롯이 오래 점유될 수 있습니다. 생성된 아이템의 키 중복, 출력 길이, 재기동 뒤 수집 유지까지 확인합니다.

서비스구축 › zabbix
zabbix 목록