2016-08-14 10 views
1

CentOS 7 환경에서 작성한 사용자 계정으로 filebeat (logstash 전달 용)를 얻으려고합니다. root 대신 filebeat. 나는 /etc/rc.d/init.d/filebeat 파일을 다음과 같이 편집하려고 시도했지만 아무 소용이 없습니다. 내가 잘못된 일을하고있을 수도 있지만 BASH 스크립팅에 대해 조금 새로운 점을 들었을 것입니다.logstash filebeat centos 용 서비스 계정

#!/bin/bash 
# 
# filebeat   filebeat shipper 
# 
# chkconfig: 2345 98 02 
# 

### BEGIN INIT INFO 
# Provides:   filebeat 
# Required-Start: $local_fs $network $syslog 
# Required-Stop:  $local_fs $network $syslog 
# Default-Start:  2 3 4 5 
# Default-Stop:  0 1 6 
# Short-Description: Sends log files to Logstash or directly to Elasticsearch. 
# Description:  filebeat is a shipper part of the Elastic Beats 
#          family. Please see: https://www.elastic.co/products/beats 
### END INIT INFO 



PATH=/usr/bin:/sbin:/bin:/usr/sbin 
export PATH 

[ -f /etc/sysconfig/filebeat ] && . /etc/sysconfig/filebeat 
pidfile=${PIDFILE-/var/run/filebeat.pid} 
agent=${PB_AGENT-/usr/bin/filebeat} 
args="-c /etc/filebeat/filebeat.yml" 
test_args="-e -configtest" 
wrapper="filebeat-god" 
wrapperopts="-r/-n -p $pidfile" 
RETVAL=0 
service_user="filebeat" 
# Source function library. 
. /etc/rc.d/init.d/functions 

# Determine if we can use the -p option to daemon, killproc, and status. 
# RHEL < 5 can't. 
if status | grep -q -- '-p' 2>/dev/null; then 
    daemonopts="--user $service_user --group $service_group --pidfile $pidfile" 
    **chown -R $service_user /etc/filebeat || return 1 
    chown $service_user $pidfile || return 1 
    chmod g+w $pidfile || return 1** 
    pidopts="-p $pidfile" 
    touch 
fi 

은 이전에 내가 유사한 사용 filebeat 사용자 계정을 만든 : 나는 후자의 부분이 변경되지 않습니다, 나는 만 언급 한 파일의 첫 부분을 표시하고 간결하게 들어

here에 위치해 제안 구현 지침에 따라 시도 다음에 :

012 : 나는 시도하고 아직 시작 후 과정을 살펴 그러나

useradd filebeat -u 5044 -c "Filebeat Service Account" -d /dev/null -s /sbin/nologin 

, 루트가 소유 한 것으로 보여

[[email protected] ~]# ps -aef | grep filebeat 
root  26030  1 0 13:16 ?  00:00:00 /usr/bin/filebeat -c /etc/filebeat/filebeat.yml 
+1

잘 모르겠지만 여기에있는 문서에서 볼 수 있습니다 : https://www.elastic.co/guide/en/beats/filebeat/current/configuration-run-options.html - Linux에서 Go 가비지 컬렉터의 루트로 실행중인 스레드가 하나 이상 있어야합니다. 다른 스레드의 경우 권한을 삭제해야합니다. 'ps -eLf' – alexK

+0

@alexK를 사용하여 모든 스레드를 검사 할 수 있습니다. 문서 링크를 위해 당신을 upvoted했지만 runoptions 매개 변수를 테스트했을 때 제대로 작동하지 않았습니다. – user3614014

답변

2

RHEL/CentOS 7에서 systemd는 init.d 파일이 사용되지 않도록 서비스를 관리합니다. 서비스를 다른 사용자로 실행하려면 Filebeat의 단위 파일을 수정해야합니다. 단위 파일은 /lib/systemd/system/filebeat.service에 설치됩니다.

User 옵션을 Service 섹션에 추가해야합니다.

[Service] 
User=<username> 

사용자는 로그 파일에 대한 읽기 권한이 있어야하며 로그 파일이있는 디렉터리에서 검색 권한 (실행 비트)이 있어야합니다. Filebeat은 stat을 사용하여 파일의 inode를 수집하고 statman page에 따라 디렉토리에 대한 실행 권한이 필요합니다.

+0

이것은 부분적으로 정확한 응답이므로 나는 아직 당신을 업 그레 이드했으나 아직 ... filebeat는 실행 중이지만 광부 설정에 지정된대로 로그 파일을 적극적으로 파고 있지 않습니다. 생성 된 새 사용자에게 추가해야하는 올바른 사용 권한에 대한 지침을 제공 할 수 있습니까? – user3614014

+0

필자는 필요한 권한에 대한 메모로 답변을 업데이트했습니다. –

+0

닫기, 나는 일종의 나 자신을 생각했다. 또한 레지스트리 디렉토리, filebeat-log 디렉토리 (표시된 경우) 및 가능하면 filebeat의 config 디렉토리에 대한 권한을 추가해야합니까? 거의 다 왔어... – user3614014