2016-02-26 113 views
0

我一直在使用我們的Ambari安裝中創建自定義應用程序。經過一段時間的指點之後,我已經成功地配置了這個配置,以執行適當的日誌創建\輸出和PID創建的安裝和啓動操作。我現在正在努力的一件事是讓Ambari保持這個新安裝的應用程序的狀態。按照下面的一些說明:http://mozartanalytics.com/how-to-create-a-software-stack-for-ambari/(特別是組件狀態部分),我已經能夠取得一些進展 - 但它不完全是我想要的。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內部創建這個自定義應用程序?任何幫助或指向正確的方向將不勝感激。

僅供參考。這是Ambari 2.1在Centos上運行6.7

回答

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'}。希望它會有所幫助。

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)