Kolla 默认的日志收集工具是 Fluentd,当我们部署完 OpenStack 后,每个节点上都有一个 Fluentd容器运行,进行各个服务的日志收集。Fluentd 是一个开源的数据收集器,它目前有超过 500 种的plugin,可以连接各种数据源和数据输出组件。
我们可以通过进入到 Fluentd 日志收集容器里,查看指定服务的日志。
docker exec -it fluentd bash
然后,cd 到 /var/log/kolla/SERVICE_NAME
目录下查看。
或者直接 cd 到主机的 /var/lib/docker/volumes/kolla_logs/_data/
目录下,查看指定服务的日志信息。
分别登陆到各个节点去看日志显然很不方便,那有没有把日志集中并展示的方案呢?
当然是有的,Kolla 的集中日志方案为 Fluentd + Elasticsearch + Kibana。
Elasticsearch 是一个开源的近乎实时查询的全文搜索引擎。Elasticsearch 的设计目标就是要能够处理和搜索巨量的日志数据。
Kibana 是一个基于 JavaScript 的 Web 图形界面程序,专门用于可视化 Elasticsearch 的数据。Kibana 能够查询 Elasticsearch 并通过丰富的图表展示结果。用户可以创建 Dashboard 来监控系统的日志。
Fluentd 负责收集容器日志,然后发送给 Elasticsearch。日志处理流程如下:
我们之前已经基于kolla部署了多节点OpenStack(Ocata版)(http://blog.csdn.net/dylloveyou/article/details/78699235) 并且也验证了部署的正确性 (http://blog.csdn.net/dylloveyou/article/details/78735832),下面就基于此环境启动集中日志。
修改配置文件 /etc/kolla/globals.yml
改动下面一行:
enable_central_logging: "yes"
执行部署
[root@control01 ~]# cd /root/kolla-ansible-4.0.3.dev36/tools/
[root@control01 tools]# . kolla-ansible deploy -i /home/mymultinode
成功部署后, 通过 http://192.168.128.85:5601访问 Kibana
当前 Kibana 没有可显示的数据,因为当前 Elasticsearch 还没有任何日志数据。
访问一下 Elasticsearch 的 JSON 接口 http://192.168.128.85:9200/_search?pretty
确实,目前 Elasticsearch 没有与日志相关的 index。
因为重新执行 kolla-ansible deploy 后,fluentd 的配置发生了变化,需要重启。
重启各个节点的 fluentd 容器:
docker restart fluentd
fluentd重启后,正常情况下会将监控的日志发送给 Elasticsearch。刷新 Elasticsearch 的 JSON 接口 http://192.168.128.85:9200/_search?pretty 进行确认:
这次我们能够看到 flog-* 的 index。Elasticsearch 已经创建了日志的索引并保存起来,接下来是在 Kibana 中展示日志。首先需要配置一个 index pattern,即告诉 Kibana 查询和分析 Elasticsearch 中的哪些日志。
指定 index pattern 为 flog-*,这与 Elasticsearch 中的 index一致。
点击 Create 创建 index pattern。
点击 Kibana 左侧 Discover 菜单,便可看到日志信息。
在 Discover 页面左侧,添加如下 Fields:
Hostname
Payload
severity_label
programname
参考文档:
https://docs.fluentd.org/v1.0/articles/free-alternative-to-splunk-by-fluentd
http://www.cnblogs.com/CloudMan6/p/7770916.html
http://www.cnblogs.com/CloudMan6/p/7787870.html