我一直在围绕在Ambari安装中创建自定义应用程序。经过一点点的玩弄,我已经成功地将其配置为使用适当的日志创建\输出和pid创建来执行安装和启动操作。我现在正在努力解决的问题是让Ambari保持这个新安装的应用程序的状态。按照此处的一些说明操作后:http://mozartanalytics.com/how-to-create-a-software-stack-for-ambari/(特别是“组件状态”部分),我已经取得了一些进展 - 但这并不完全符合我的要求。
在master.py中包含以下内容时,Ambari会在初始启动后看到该服务暂时处于活动状态,但随后该应用程序将显示为红色(离线)。它将其标记为脱机,即使我检查服务器时,我看到正在运行的相应进程。
def status(self, env):
import params
print 'Checking status of pid file'
check=format("{params.pid}/Application.pid")
check_process_status(check)
但是,当我将其修改为如下所示时,Ambari跟踪状态并正确监控它没有问题
def status(self, env):
import params
print 'Checking status of pid file'
dummy_master_pid_file = "/var/run/Application/Application.pid"
check_process_status(dummy_master_pid_file)
还有其他人遇到过这个问题吗?在Ambari中创建这个自定义应用程序有什么我不知道的吗?任何帮助或指向正确的方向将不胜感激。
FYI。这是在Centos 6.7上运行的Ambari 2.1
答案 0 :(得分:0)
最近,我解决了类似的问题。解决方案是放一个字符串" {" securityState":" UNKNOWN"}"进入文件 - /var/lib/ambari-agent/data/structured-out-status.json。 找到这个解决方案的方法是观察ambari-agent日志:PythonExecutor.py:149 - {' msg':'无法读取/ var / lib / ambari-agent / data的结构化输出/structured-out-status.json'}。希望它会有所帮助。
答案 1 :(得分:0)
也许这是你的参数问题。
def status(self, env): import params print 'Checking status of pid file' pid_path = params.pid check=format("{pid_path}/Application.pid") check_process_status(check)