当前位置: 首页 > Linux

Docker监控和日志收集神器

时间:2023-04-06 21:14:53 Linux

Rancher社区维护的应用商店最近迎来了两个明星项目——SPM和Logsene,来自Sematext的监控和日志工具。如果您已经熟悉Logstash、Kibana、Prometheus、Grafana等监控或日志解决方案,请仔细阅读本文,它将向您展示SPM和Logsene为Rancher用户带来哪些功能,以及其他解决方案有哪些不同之处。联系SematextDockerAgentSematextDockerAgent是目前Docker原生的监控和日志收集代理(Agent)程序。它在每个Docker主机上运行一个非常小的容器,以收集所有集群节点和这些节点上的容器的日志、系统指标和事件。Agent代理监控Rancher管理的所有节点。部署SematextDockerAgent后,所有日志、Docker事件和各种指标都可以从外部访问。这会变得很有价值,为什么呢?因为这意味着您不再需要花费数小时甚至数天的时间来弄清楚要收集哪些数据或如何将其绘制成图表。另外,你不需要花费资源维护自己的日志监控系统,你的Docker系统指标和事件会输出到SPM,日志输出到Logsene(SPM是一个应用性能监控服务,支持很多平台)集成,当然也包括Docker,而Logsene是一个日志管理服务,一个托管在Rancher上的ELK应用栈,可以很好的配合Kibana和Grafana)相比DevOps工具,Docker日志和指标有一些开源处理工具供我们选择,比如cAdvisor和Logspout。不幸的是,这些工具都不够全面。一种解决方案是整合一系列工具来实现目标,但这样做的后果是使系统走向“Franken-monitoring(指技术大杂烩,每个组件都没有按承诺工作)”的方向,而用户也会因此背上沉重的技术债,没有人会想去解决这种复杂的故障。因此,另一种解决方案,像SematextDockerAgent这样的工具,只是结合了cAdvisor和Logspout,它的功能特别侧重于日志管理,例如格式检查,日志语法分析,数据改进(Geo-IP地址地理位置信息,元数据标签,等)和日志路由。通过RancherCatalog配置SematextDockerAgent要在Rancher平台上设置SematextDockerAgent,您只需选择合适的目录模板(在Rancher的社区目录条目下查找“Sematext”)。让我们快速了解一下Sematex提供了哪些功能?如何在Rancher平台上设置?DockerCompose和Kubernetes自动日志标签所有日志都带有元数据标签,其中包括对Docker/RancherCompose项目和Kubernetes的支持:对于DockerContainer容器ID容器名称镜像名称对于Docker/RancherCompose服务名称项目每个名称的容器数量(如果设置Scale=N)对于Kubernetes,请注意Kubernetes容器的日志与其他Docker容器的日志没有太大区别。然而,Kubernetes用户需要访问部署的Pod的日志,因此对于日志搜索和抓取Kubernetes特定的信息变得非常有用,例如:namespacePod名称容器名称KubernetesUID提示:要启用Kubernetes标签,请设置Kubernetes=1日志路由对于更大的部署,你可能需要针对不同的租户或应用程序索引日志并输出到不同的路径或Logsene应用程序处理(因此你也可以区分不同用户对不同日志的访问权限)。我们让这一切变得非常简单:只需将Docker标签添加到您的容器,或设置LOGSENE_TOKEN环境变量(LOGSENE_TOKEN=您的应用令牌),SematextDocker代理就会将日志发送到正确的索引条目!通过这种方式,您根本不需要中央配置文件来映射容器和索引条目/令牌,因此日志路由变得非常灵活、动态和有弹性。IntegratedLogParser日志处理基于DockerAPI和名为logagent-js的库,该库由Sematext开源。这个分析框架包括日志格式检测和分析标准,用于官方Docker容器使用的不同日志格式:Web服务器,如Nginx、Apachehttpd或其他常见的Web服务器日志格式搜索引擎,如Elasticsearch和Solr消息队列,如ApacheKafaka和nsq。io数据库类似于MongoDB、HBase、MySQL检测JSON日志格式,通常被Node.js程序使用,如bunyan、winston日志框架提示:如果要创建自定义模式,请在名为LOGAGENT_PATTERNS字段的RancherCatalog模板。自动容器日志Geo-IP增强通过从Docker容器外部获取收集、发送和分析的日志节省了大量时间,但一些应用程序日志需要从其他数据源获取额外的增强信息。一个常见的案例是增强WebServer日志信息(或任何包含IP地址信息的日志),为日志中的IP地址提供地理位置信息。SematextDockerAgent支持docker日志的Geo-IP丰富。它使用MaxmindGeo-IP轻量级数据库,为您提供定期更新,无需停止容器或安装包含Geo-IP数据库的新卷,或任何其他手动操作。提示:如果您需要启用Geo-IP增强功能,请设置环境变量GEOIP_ENABLED=true。过滤容器日志在某些场景下,我们只需要收集重要的应用程序日志,而忽略那些优先级较低或嘈杂的服务日志(例如那些频繁的清理作业)。这样,我们就可以使用白名单或黑名单(容器名称或镜像名称)来处理这些容器,其设置使用正则表达式来匹配相应的元数据字段。白名单容器MATCH_BY_NAME正则表达式将容器名称列入白名单MATCH_BY_IMAGE正则表达式将镜像名称列入白名单黑名单容器SKIP_BY_NAME正则表达式将容器名称列入黑名单并忽略容器SKIP_BY_IMAGE正则表达式用于镜像名称设置黑名单并忽略日志。如何使用SematextCatalog项目在Rancher的UI中,进入社区的Catalog项目列表并搜索关键字“sematext”、“monitoring”或“logs”。点击“查看详情”,在“配置选项”选项中输入SPM和LogseneApp的token。您可以通过从https://apps.sematext.com注册和创建您的SPM和Logsene应用程序来获取这些访问令牌(令牌)。如果您的Rancher集群运行在防火墙(代理)后面,您需要在HTTPS_PROXY或HTTP_PROXY环境变量中填写代理URL。如果您也在该集群中运行Kubernetes,请选择KUBERNETES=1。如果要收集所有日志,不要填写任何容器或图像名称过滤器值,只需单击“启动”即可。总结希望通过这篇Rancher平台SematextDockerAgent的介绍,能够帮助大家在开始对Docker进行监控和日志处理时,避免大杂烩的繁琐模式。本项目完整的配置参数可以从Github获取以供参考。我们相信新的目录模板已经可以涵盖最常用的选项。如果您发现缺少一些重要项目,请将它们提交到Rancher社区目录(提交问题或拉取请求)。试试SematextDockerAgentwithRancher,所有服务轻松接管,高枕无忧。RancherCommunityCatalog让日志监控系统瞬间搭建并运行,一切变得如此简单。