Попытка установить модуль Python gRPC на Splunk
Я пытаюсь запустить внешний скрипт Python "PyClient.py" на Splunk, и для этого требуется внешний модуль gRPC. Я установил модуль gRPC локально, следуя краткому руководству по питону с http://www.grpc.io/docs/quickstart/python.html. Журналы, сгенерированные в файле splunkd:
06-16-2017 18:20:49.728 +0530 WARN IntrospectionGenerator:resource_usage - RU - Failure executing PDH query, skipping getting iostats data this collection cycle. Status code is -2147481643
06-16-2017 18:20:56.501 +0530 ERROR ExecProcessor - message from "python "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py"" Traceback (most recent call last):
06-16-2017 18:20:56.501 +0530 ERROR ExecProcessor - message from "python "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py"" File "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py", line 2, in <module>
06-16-2017 18:20:56.501 +0530 ERROR ExecProcessor - message from "python "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py"" import grpc
06-16-2017 18:20:56.501 +0530 ERROR ExecProcessor - message from "python "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py"" File "C:\Program Files\Splunk\etc\apps\Test\bin\grpc\__init__.py", line 37, in <module>
06-16-2017 18:20:56.501 +0530 ERROR ExecProcessor - message from "python "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py"" from grpc._cython import cygrpc as _cygrpc
06-16-2017 18:20:56.501 +0530 ERROR ExecProcessor - message from "python "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py"" ImportError: DLL load failed: A dynamic link library (DLL) initialization routine failed.
06-16-2017 18:21:06.502 +0530 ERROR ExecProcessor - message from "python "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py"" Traceback (most recent call last):
06-16-2017 18:21:06.502 +0530 ERROR ExecProcessor - message from "python "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py"" File "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py", line 2, in <module>
06-16-2017 18:21:06.502 +0530 ERROR ExecProcessor - message from "python "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py"" import grpc
06-16-2017 18:21:06.502 +0530 ERROR ExecProcessor - message from "python "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py"" File "C:\Program Files\Splunk\etc\apps\Test\bin\grpc\__init__.py", line 37, in <module>
06-16-2017 18:21:06.502 +0530 ERROR ExecProcessor - message from "python "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py"" from grpc._cython import cygrpc as _cygrpc
06-16-2017 18:21:06.502 +0530 ERROR ExecProcessor - message from "python "C:\Program Files\Splunk\etc\apps\Test\bin\pyClient.py"" ImportError: DLL load failed: A dynamic link library (DLL) initialization routine failed.
У кого-нибудь есть предложения по устранению этой ошибки? Или как установить внешний модуль gRPC на Splunk?
Заранее спасибо.
2 ответа
Я уже нашел решение. Мне пришлось написать скрипт-обертку для моего скрипта python, который сбрасывает или удаляет (del) "LD_LIBRARY_PATH" и "PYTHONPATH". Для систем на базе Linux мне также пришлось сбрасывать или удалять (исключать) переменную среды "PATH". Выполнив вышеуказанные шаги, Splunk использовал мою локальную версию Python и установленные модули. И это сработало. Надеюсь, что это поможет любому, кто пытается использовать внешние модули в Splunk, но не может понять, почему он не работает.:)
Это выглядит как 32/64 битная несовместимость Windows.
При установке gRPC убедитесь, что вы явно используете Splunk дистрибутива Python для pip install grpcio
,
C:\Program Files\Splunk\<Python2.7 binary> -m pip install --upgrade pip
C:\Program Files\Splunk\<Python2.7 binary> -m pip install grpcio