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。因此在使用过程中发现了一些问题,特此记录,以方便大家过坑。(主要是方便自己^^)
附上自动化部署,有需要的可以直接使用:MOS的离线自动化准备脚本。
经测试,火狐浏览器的兼容性好于谷歌浏览器。
当任意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界面,就无问题了。
默认 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
按照官方文档实施即可。
节点被移除之后,部分节点的监控信息无法被移除,这里以比较典型的cinder举例。
首先,通过如下命令,能获得cinder下已经down掉的服务:
cinder service-list
其次,使用如下命令,能停用已经down掉的服务:
cinder service-disable
OK到这里,问题来了。此时被disable的节点服务的信息依旧会被LMA采集并发送到influxdb。而grafana默认的查询语句,只要对应节点的服务不是up状态,就会被计算到非健康情况下。那么这时候能采用的方法就是完全移除掉disabled和down掉的节点服务信息。
使用如下命令,移除节点服务信息:
cinder-manage service remove
上述命令仅在节点还存在的时候生效。假如此时节点已经被完全移除,且信息依旧存在,上述命令执行会抛出以下异常:
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的查询语句。
例如:
但本人表示那么多图表,一个一个改太麻烦了。
所以希望如果有有经验的高人,能指导一下。