2016-07-21 2 views
0

내 서버가 Openstack Swift 컨테이너에 연결할 수 있는지 여부를 NAGIOS와 확인하고 싶습니다. 나는Nagios 커스텀 플러그인 python Openstack Swift 클라이언트

스크립트를 잘 작성 권한을 가지고 있으며, Nagios를 제대로 실행할 수 있는지

#!/bin/bash 

set -e 

STATE_OK=0 
STATE_WARNING=1 
STATE_CRITICAL=2 
STATE_UNKNOWN=3 
STATE_DEPENDENT=4 


if ! which /usr/bin/swift >/dev/null 2>&1 
then 
    echo "Swift command not found" 
    exit $STATE_UNKNOWN 
fi 
my_swift="/usr/bin/swift -V 2.0 -A http://my-swift-domain.com:5000/v2.0/ --insecure --os-username my-user-name --os-password my-password --os-tenant-name tenant-name stat container" 


output=`$my_swift | grep Objects | sed 's/Objects:\s*\([0-9]*\).*/\1/'` 

if [ "$output" -eq "$output" ] 2>/dev/null 
then 
    echo "successfully connected to swift. Number of objects in container $output"; 
    exit $STATE_OK 
else 
    echo "Number of container objects is not correct"; 
    exit $STATE_CRITICAL 
fi 

스크립트처럼 보이는 용기의 stat을 얻기 위해 내가 스위프트 파이썬 클라이언트를 사용하여 간단한 스크립트를 썼다. 스크립트 자체가 bash는 작품에서 호출과 같은 반환

successfully connected to swift. Number of objects in container   4973123 

을하지만 NRPE를 통해 그것을 실행하면 그렇지 않습니다. 난 그냥 내가 명령

output=`$my_swift | grep Objects | sed 's/Objects:\s*\([0-9]*\).*/\1/'` 

심지어 호출되지 확신 디버깅 후 Number of container objects is not correct

를 얻을 수 /usr/lib64/nagios/plugins/check_nrpe -H 127.0.0.1 -c check_swift 를 실행하여 확인.

나는 거기에 swift --version을 넣으려고했는데, 출력물을 줄 수 있는지 알아 보았습니다. 그래서 매개 변수에 문제가 있다고 생각하게되었지만 명령 자체가 쉘에서 호출 되었기 때문에 완벽하게 정상적으로 작동했기 때문에 실제로 무엇을 알지 못합니다.

는 어떤 도움을 주시면 감사 :

답변

0

이 때문에 잘못된 컨텍스트의 명령의 실행을 차단 (CentOS는에) SELinux는 것을 밝혀 파일의 홈 디렉토리의 파일을 Nagios의 플러그인 디렉토리에 복사했습니다. restorecon check_swift_container -v 돕기

0

보십시오이 먼저 라인 드 변경 :

#!/usr/bin/env bash 
관련 문제