Nginx Amplify не смог сообщить статистику PHP-FPM через несколько минут

VPS:DigitalOcean Amplify:v0.43 Nginx:v1.13.0 PHP-FPM:v7.0.19 ОПЕРАЦИОННЫЕ СИСТЕМЫ: CentOS7

Я пытаюсь включить PHP-FPM-метрика в Nginx-Amplify инструмент отчетности. Это работает для несколько минут, затем получить ошибки в /var/log/amplify-agent/agent.log после перезапуска службы

agent.conf (соответствующие части):

[credentials]
api_key = ******************
hostname =
uuid = *******************
imagename =

[nginx]
user = nginx
stub_status = /nginx_status

[extensions]
phpfpm = True

agent.log (ОШИБКА):

2017-05-30 21:30:48,374 [21034] supervisor running /usr/sbin/nginx -t -c /etc/nginx/nginx.conf
2017-05-30 21:31:18,079 [21034] supervisor failed to find php-fpm bin path, last attempt: "ls -la /proc/24400/exe" failed due to AmplifySubprocessError
2017-05-30 20:37:18,394 [9929] supervisor run failed
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/amplify/agent/managers/abstract.py", line 135, in _run
self._start_objects()
File "/usr/lib/python2.7/site-packages/amplify/agent/managers/abstract.py", line 123, in _start_objects
child_obj.start()
File "/usr/lib/python2.7/site-packages/amplify/agent/objects/abstract.py", line 149, in start
context.log.debug('starting object "%s" %s' % (self.type, self.definition_hash))
File "/usr/lib/python2.7/site-packages/amplify/agent/objects/abstract.py", line 84, in definition_hash
definition_string = str(map(lambda x: u'%s:%s' % (x, self.definition[x]), sorted(self.definition.keys())))
File "/usr/lib/python2.7/site-packages/amplify/ext/abstract/object.py", line 47, in definition
return {'type': self.type, 'local_id': self.local_id, 'root_uuid': self.root_uuid}
File "/usr/lib/python2.7/site-packages/amplify/agent/objects/abstract.py", line 115, in local_id
self._local_id = hashlib.sha256('_'.join(self.local_id_args)).hexdigest()
TypeError: sequence item 0: expected string, list found

PHP-FPM /etc/php-fpm.d/www.conf (соответствующие части):

[www]
user = nginx
group = nginx

listen = /var/run/php-fpm/php-fpm.sock
listen.backlog = 16383
listen.allowed_clients = 127.0.0.1

pm = dynamic
pm.max_children = 25
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 10
pm.max_requests = 500

pm.status_path = /php_status

Nginx.conf (соответствующие части):

user nginx nginx;

Как отмечено в документации, это работает:

$ SCRIPT_NAME=/php_status SCRIPT_FILENAME=/php_status QUERY_STRING= REQUEST_METHOD=GET cgi-fcgi -bind -connect /var/run/php-fpm/php-fpm.sock

Результат:

X-Powered-By: PHP/7.0.19
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control: no-cache, no-store, must-revalidate, max-age=0
Content-type: text/plain;charset=UTF-8

pool:                 www
process manager:      dynamic
start time:           29/May/2017:15:40:29 +0200
start since:          107193
accepted conn:        806252
listen queue:         0
max listen queue:     0
listen queue len:     0
idle processes:       10
active processes:     14
total processes:      24
max active processes: 25
max children reached: 1840
slow requests:        330

Я думаю, проблема в том, что процесс перезапуска и «меняющийся» pid через некоторое время:

supervisor failed to find php-fpm bin path, last attempt: "ls -la /proc/24400/exe" failed due to AmplifySubprocessError

Не уверен но возможно pm.max_requests = 500 отвечает за это.

0

Решение

Спасибо за отчет!

Здесь есть две проблемы, которые влияют на вашу систему. Во-первых, мы не можем найти bin_path для тебя phpfpm с помощью ls:

supervisor failed to find php-fpm bin path, last attempt: "ls -la /proc/24400/exe" failed due to AmplifySubprocessError

Это означает, что пользователь, с которым работает наш агент, не имеет прав доступа к proc файловая система для вашего phpfpm мастер-процесс или любой из его дочерних пулов. Эта информация чисто мета-связана и не должна влиять на работу агента или его сбор phpfpm метрики со страницы статуса. Информация, которую мы собираем, является вашей bin_path а потом мы бежим --version на нем, чтобы собрать информацию о версии вашего phpfpm для того, чтобы отобразить в вашем инвентаре.

Тем не менее, мы выпускаем нового агента 0.44 в конце этой недели (пятница, 16 июня 2017 г.) или в начале следующей недели (понедельник, 19 июня 2017 г.), который имеет ряд улучшений в этом рабочем процессе и может принести вам пользу.

Вторая проблема, которая затрагивает вашу систему, является более серьезной и может повлиять на время выполнения вашего агента:

17-05-30 21:31:18,079 [21034] supervisor failed to find php-fpm bin path, last attempt: "ls -la /proc/24400/exe" failed due to AmplifySubprocessError
2017-05-30 20:37:18,394 [9929] supervisor run failed
Traceback (most recent call last):
File "/usr/lib/python2.7/site-packages/amplify/agent/managers/abstract.py", line 135, in _run
self._start_objects()
File "/usr/lib/python2.7/site-packages/amplify/agent/managers/abstract.py", line 123, in _start_objects
child_obj.start()
File "/usr/lib/python2.7/site-packages/amplify/agent/objects/abstract.py", line 149, in start
context.log.debug('starting object "%s" %s' % (self.type, self.definition_hash))
File "/usr/lib/python2.7/site-packages/amplify/agent/objects/abstract.py", line 84, in definition_hash
definition_string = str(map(lambda x: u'%s:%s' % (x, self.definition[x]), sorted(self.definition.keys())))
File "/usr/lib/python2.7/site-packages/amplify/ext/abstract/object.py", line 47, in definition
return {'type': self.type, 'local_id': self.local_id, 'root_uuid': self.root_uuid}
File "/usr/lib/python2.7/site-packages/amplify/agent/objects/abstract.py", line 115, in local_id
self._local_id = hashlib.sha256('_'.join(self.local_id_args)).hexdigest()
TypeError: sequence item 0: expected string, list found

Я не могу сказать наверняка для вашей системы, но другие клиенты сообщили об этой ошибке, когда наш агент обнаружил сироту phpfpm pool работник. Например, вывод ps xao pid,ppid,command | grep 'php-fpm[:]' возможно:

[
'15923     1 php-fpm: master process (/etc/php-fpm.conf)',
'20704 15923 php-fpm: pool www',
'20925 15923 php-fpm: pool www',
'21350 15923 php-fpm: pool www',
'21385 15923 php-fpm: pool www',
'21386 15923 php-fpm: pool www',
'21575 15923 php-fpm: pool www',
'21699 15923 php-fpm: pool www',
'21734 15923 php-fpm: pool www',
'21735 15923 php-fpm: pool www',
'21781 15923 php-fpm: pool www',
'21782 15923 php-fpm: pool www',
'22287 15923 php-fpm: pool www',
'22330 15923 php-fpm: pool www',
'22331 15923 php-fpm: pool www',
'22495 15923 php-fpm: pool www',
'22654 21386 php-fpm: pool www',  # <---- Orphan?
''
]

Мы все еще исследуем, что может привести к этому, но сейчас мы сделали нашего агента более надежным, справившись с этой ситуацией в молчании. Это исправление можно найти в нашей версии агента 0.44 который должен быть выпущен в ближайшее время, как описано выше.

Если вы все еще заинтересованы, я очень рекомендую вам скачать и установить агент 0.44 когда это выпущено. Если вы все еще видите проблемы в вашей системе, пожалуйста, не стесняйтесь обращаться к нам через наши каналы поддержки клиентов.

Я также предложил бы вам рассмотреть возможность проверки вашей собственной системы, чтобы выяснить, есть ли у вас «работники-сироты», так как она может указывать на другие проблемы. Но опять же, наш новый агент соответствующим образом поймает и справится с этой ситуацией.

Надеюсь, это поможет!

Грант (участник программы NGINX Amplify agent)

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]