设为首页 收藏本站
查看: 1754|回复: 2

[经验分享] Docker监控及日志采集神器

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2017-1-25 08:37:30 | 显示全部楼层 |阅读模式
由Rancher社区维护的应用商店最近迎来了两个明星项目——SPM 和 Logsene,来自Sematext的监控与日志工具。如果你已经熟悉Logstash,Kibana,Prometheus,Grafana这些监控或日志解决方案,那么朋友请认真阅读本文,它将向你展示SPM和Logsene为Rancher用户带来了什么样的功能,和其它解决方案有着什么样的差异。

接触Sematext Docker Agent

Sematext Docker Agent 是一个时下Docker原生的监控及日志采集代理(Agent)程序。它在每一个Docker宿主机运行一个非常小的容器,用以为所有集群节点以及这些节点上的容器采集日志、系统指标与事件。Agent代理程序监听所有Rancher管理的节点,在部署Sematext Docker Agent后,所有的日志、Docker事件、各项指标都能被外部所访问。

这将变得很有价值,为什么呢?因为它意味着你不再需要耗费几个小时甚至好几天时间去弄明白究竟需要采集哪些数据或如何将它们图表化。还有,你不需要花资源来维护你自己的日志监控体系,你的Docker系统指标及事件都会输出给SPM 而日志将输出给Logsene(SPM是一个应用程序性能监控服务,它支持与诸多平台进行集成,这当然也包括Docker,而Logsene 是一个日志管理服务,一个托管于Rancher的ELK应用栈,它能很好的和Kibana和Grafana一并工作)

wKioL1iGri6yxLdJAAEIRyuQv-I630.jpg

DevOps工具对比

有一些Docker日志与指标处理的开源工具供我们选择,比如cAdvisor以及Logspout。遗憾的是,这些工具都不具备足够的综合能力。一种解决办法是集成一系列工具来达成目标,可是这样的后果是把体系带向“Franken-monitoring(指技术大杂烩,各个组件并不能按承诺的功能正常运行)”的方向,用户将因此而背负沉重的技术债,也没有人会愿意解决这种复杂的故障。因此,另一种解决办法像Sematext Docker Agent这样的工具,则只是将cAdvisor和Logspout进行了结合,其功能尤其关注日志管理,比如格式检查,日志语法分析,数据改进(Geo-IP地址地理位置信息,元数据标签等)以及日志路由。

通过Rancher Catalog配置Sematext Docker Agent

在Rancher平台设置Sematext Docker Agent,你只需要选择合适的catalog模板即可(在Rancher的社区Catalog条目下查找“Sematext” )。我们来快速的浏览一下Sematex提供了哪些功能?如何在Rancher平台对其进行设置?

Docker Compose及Kubernetes自动日志标签

所有的日志均被加上了元数据标签,这包含了对Docker/Rancher Compose项目及Kubernetes的支持:

针对Docker Container
  • 容器ID
  • 容器名
  • 镜像名


针对Docker/Rancher Compose
  • 服务名
  • 项目名
  • 容器数(如果你设置了Scale=N)


针对Kubernetes
请注意Kubernetes容器的日志和其它Docker容器的日志并没有什么很大的不同,然而Kubernetes用户需要访问已部署的pods的日志,因此,为日志搜索而抓取Kubernetes特有的信息变得非常有用,例如:
  • 命名空间
  • Pod名称
  • 容器名称
  • Kubernetes UID


诀窍:如需启用Kubernetes标签,请设置Kubernetes=1

日志路由

对于较为庞大的部署,你也许需要针对不同租户或应用对日志进行索引,将其输出到不同的路径或Logsene应用处理(这样你也可以区分不同的用户对不同日志的访问权)。我们使这个变得非常简单:为你的容器简单地添加一个Docker标签,或设置LOGSENE_TOKEN环境变量(LOGSENE_TOKEN=your app token),于是Sematext Docker Agent会将日志发送至正确的索引项!用这种方式你完全不需要一个中心配置文件来映射容器和索引项/令牌,于是日志路由变得非常灵活,动态与弹性化。

集成的日志语法分析器

日志的处理基于Docker API以及一个叫做logagent-js的库,该项目被Sematext所开源。这个分析框架包含了日志格式检测和分析标准正式Docker容器所使用的不同日志格式的模式:

  • Web服务器例如Nginx、Apache httpd或其它使用常见Web服务器日志格式
  • 搜索引擎类似Elasticsearch和Solr
  • 消息队列类似Apache Kafaka及nsq.io
  • 数据库类似MongoDB, HBase, MySQL
  • 检测JSON日志格式,通常被Node.js程序所使用,例如bunyan和winston日志框架


提示: 如果要创建自定义模式,请在Rancher Catalog模板里把它们添加到叫做LOGAGENT_PATTERNS的字段里。

自动的容器日志Geo-IP增强项

从Docker容器之外获取到经过采集运送并分析后的日志已经节约了大量的时间,但是有一些应用日志需要从其它数据源获取额外的增强信息。一个常见的案例是增强Web Server的日志信息(或者说任意包含IP地址信息的日志),为日志中的IP地址提供其地理位置信息。

Sematext Docker Agent 支持Geo-IP enrichment of docker logs。它使用Maxmind Geo-IP轻量数据库,它能为你定期的提供更新信息,无需停止容器或为其挂载包含Geo-IP数据库的新卷,或任何其它手动操作。

诀窍: 如果需要开启Geo-IP增强功能,请设置环境变量GEOIP_ENABLED=true。

过滤容器日志

在某些场景,我们只需要收集重要应用的日志而忽略掉那些较低优先级的或较为嘈杂的服务日志(例如那些频繁的清理工作)。这样我们可以使用白名单或黑名单(针对容器名或镜像名)来处理这些容器即可,其设置采用正则表达式匹配相应的元数据字段。

Whitelist containers
MATCH_BY_NAME 正则表达式对容器名进行白名单设置
MATCH_BY_IMAGE 正则表达式对镜像名进行白名单设置
Blacklist containers
SKIP_BY_NAME正则表达式对容器名进行黑名单设置,将日志忽略该容器
SKIP_BY_IMAGE正则表达式对镜像名进行黑名单设置,将日志忽略该镜像

如何使用Sematext Catalog项目

在Rancher的UI里,进入社区的Catalog项目列表,搜索关键字“sematext”、“monitoring”或“logs”即可。

wKiom1iGr4-BngGiAAD_bKLunDM230.jpg

点击“View Details”,在“Configuration Options”选项里输入SPM和Logsene App的tokens。你可以从https://apps.sematext.com进行注册并创建你的SPM和Logsene应用,然后即可获取这些访问令牌(tokens)。如果你的Rancher集群运行在防火墙(代理)之后, 你需要在HTTPS_PROXY或 HTTP_PROXY环境变量处填写proxy URL。如果你在这个集群里同时也运行了Kubernetes,请选择KUBERNETES=1。
如果你想收集所有的日志,不要填写任何容器或镜像名的过滤值,直接点击“Launch”即可。

wKioL1iGr62yn8gsAAH3IL3VxU0260.jpg wKioL1iGr77RdnZ4AAEE0gORyhQ443.jpg wKiom1iGr86STJvQAACCSEULXrk865.jpg

总结

我们希望这篇对Rancher平台中Sematext Docker Agent的介绍,能帮助你在开始对Docker进行监控与日志处理时,不用采用大杂烩的繁琐模式。该项目完整的配置参数可从Github获得参考。 我们相信新的Catalog模板已经能覆盖最常用的选项,如果你发现一些重要项目缺失,请将其提交至Rancher community catalog (提交issue或是pull request)。结合Rancher试用一下Sematext Docker Agent 吧,所有服务将被轻松接管,你将就此高枕无忧。Rancher Community Catalog让日志监控系统能瞬间设置并运行起来,一切都变得如此容易。



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-333093-1-1.html 上篇帖子: docker容器备份、恢复和迁移volume方案 下篇帖子: docker-单机多容器的编排-compose 监控
累计签到:3 天
连续签到:1 天
发表于 2017-1-30 10:53:58 | 显示全部楼层
Docker监控及日志采集神器

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表