1. 程式人生 > >關於Mirantis OpenStack開源元件LMA工具鏈相關問題整理

關於Mirantis OpenStack開源元件LMA工具鏈相關問題整理

簡單介紹:

LMA元件全稱為Logging, Monitoring, and Alerting toolchain of Mirantis OpenStack,是服務於Mirantis OpenStack的一套監控運維元件。其通過collectd實現採集,通過elasticsearch-kibana實現日誌分析,通過influxdb-grafana實現叢集狀態視覺化,通過nagios實現告警資訊生成及訊息推送。架構如下圖所示:

 

因為作者採用的是基於Fuel 9.2 部署的 LMA 1.0.0.x 版本,而非最新的基於MCP(用不起)的最新版本LMA。因此在使用過程中發現了一些問題,特此記錄,以方便大家過坑。(主要是方便自己^^)

 

已知問題:

1. Kibana頁面相容性問題:

經測試,火狐瀏覽器的相容性好於谷歌瀏覽器。

 

2. LMA元件移除後,Fuel介面連線不消失的問題:

問題描述:

當任意LMA角色(包括 influxdb-grafana, elasticsearch-kibana、nagios)節點部署,且節點數量僅有1個時。若移除該節點,此時應當認為叢集下已無任何LMA角色節點,但是Fuel的叢集主介面關於LMA的連結圖示依舊存在。此時若再次部署,則會生成新的連結圖示。

 

問題原因:

經檢視資料庫發現數據的記錄確實是重複的,應該是移除實現程式碼的問題。

 

解決辦法:

既然是重複的資料,刪除即可,具體方法如下:

1. 登入fuel的後臺;

2. 使用預設的使用者連線postgres資料庫:

sudo -u postgres psql

3. 在postgresql命令列下,切換至nailgun資料庫:

\c nailgun

4. 在postgresql命令列下,檢視外掛的連結資訊:

select * from cluster_plugin_links;

    此查詢語句執行後,就能看到重複的資料資訊。

5. 刪除重複的外掛連結資訊:

delete from cluster_plugin_links where id = xxx;

   注:曾嘗試將'hidden'欄位設定為true,但是事實證明並不管用。。。因此還是刪吧。各位再執行刪除的時候千萬小心,另外刪之前備份下資料絕對是好習慣。

6. 這時候再看Fuel介面,就無問題了。

 

3. 如何訪問InfluxDB:

預設 influxdb 是繫結管理網ip的,因此想要從公網訪問資料庫的話,需要先做下ip轉發:

iptables -t nat -A PREROUTING -d {公網ip} -p tcp --dport 8086 -j DNAT --to-destination {管理網ip}:8086

 

資料庫連線資訊在 Fuel 的設定選單中:

 

建議使用influxdb studio工具(有錢的大佬可以使用dbeaver企業版):

下載地址:https://github.com/CymaticLabs/InfluxDBStudio/releases

 

4. 如何完整移除節點:

collectd:

按照官方文件實施即可。

 

influxdb-grafana:

節點被移除之後,部分節點的監控資訊無法被移除,這裡以比較典型的cinder舉例。

首先,通過如下命令,能獲得cinder下已經down掉的服務:

cinder service-list

其次,使用如下命令,能停用已經down掉的服務:

cinder service-disable <hostname> <binary> 

OK到這裡,問題來了。此時被disable的節點服務的資訊依舊會被LMA採集併發送到influxdb。而grafana預設的查詢語句,只要對應節點的服務不是up狀態,就會被計算到非健康情況下。那麼這時候能採用的方法就是完全移除掉disabled和down掉的節點服務資訊。

使用如下命令,移除節點服務資訊:

cinder-manage service remove <binary> <host>

上述命令僅在節點還存在的時候生效。假如此時節點已經被完全移除,且資訊依舊存在,上述命令執行會丟擲以下異常:

Service cinder-backup could not be found on host xxxxx

到這裡,博主目前已知的解決方法只有2種,但是個人感覺都不太好:

方法一:

直接操作資料庫,刪除資料。例如:

mysql -e "update services set deleted = 1 where host like 'node-2%' and disabled = 1 " cinder

此方法操作過於暴力,萬一操作不慎,對於叢集會是毀滅性打擊,沒有強悍的OpenStack技術人員不建議這麼搞。

 

方法二:

官方文件的方式,即自行修改Grafana的查詢語句。

例如:

但本人表示那麼多圖表,一個一個改太麻煩了。

所以希望如果有有經驗的高人,能指導一下。