2016-08-14 6 views
1

Я пытаюсь получить filebeat (для пересылки журнала) в среде CentOS 7 для запуска под моей созданной учетной записью пользователя: filebeat вместо root. Я пробовал редактировать файл /etc/rc.d/init.d/filebeat следующим образом, но безрезультатно. Возможно, я что-то делаю неправильно, но все же немного новичок в BASH-скриптах, что я могу помещать его в неправильное место? Я пытался следовать предложенным им инструкции по осуществлению, расположенные herelogstash filebeat учетная запись службы для centos 7

Для краткости я только показывая первую часть указанного файла, как последние части неизменны:

#!/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 используя аналогичным к следующему:

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 вы будете по крайней мере, один поток работает как root для сборщика мусора Go. Для других потоков привилегии должны быть удалены. Вы можете проверить все потоки, используя 'ps -eLf' – alexK

+0

@alexK, я выделил вас для ссылки на документацию, но после тестирования параметра runoptions он просто не работал. – user3614014

ответ

2

В RHEL/CentOS 7 система управляет службой, поэтому файлы init.d не используются. Вы должны изменить файл устройства для Filebeat, чтобы запустить службу как другой пользователь. Файл устройства устанавливается на /lib/systemd/system/filebeat.service.

Вам необходимо добавить опцию User в раздел Service.

[Service] 
User=<username> 

пользователь должен иметь права на чтение файлов журналов и должны иметь права поиска (Выполнить бит) на каталог, содержащий файлы журнала. Filebeat использует stat для сбора inode файла, а stat требует разрешения на выполнение в каталоге в соответствии с его man page.

+0

Это частично правильный ответ, поэтому я поддерживал вас, но не совсем там ... filebeat работает, но не активно врывается в файлы журнала, как указано настройками поисковика. Не могли бы вы дать рекомендации относительно правильных разрешений, которые мне нужно добавить к новому пользователю, который был создан? – user3614014

+0

Я обновил ответ с запиской о необходимых разрешениях. –

+0

Закрыть, я вроде как понял, что часть себя. Но также нужно добавить разрешения для каталога реестра, каталога файлов-файлов (если указано) и, возможно, в каталоге конфигурации filebeat? Почти готово... – user3614014