• syslog+rsyslog+logstash+elasticsearch+kibana搭建日志收集


    最近rancher平台上docker日志收集捣腾挺久的,尤其在配置上,特写下记录

    Unix/Linux系统中的大部分日志都是通过一种叫做syslog的机制产生和维护的。syslog是一种标准的协议,分为客户端和服务器端,客户端是产生日志消息的一方,而服务器端负责接收客户端发送来的日志消息,并做出保存到特定的日志文件中或者其他方式的处理。

    ryslog 是一个快速处理收集系统日志的程序,提供了高性能、安全功能和模块化设计。rsyslog 是syslog 的升级版,它将多种来源输入输出转换结果到目的地,据官网介绍,现在可以处理100万条信息。

    ELK由ElasticSearch、Logstash和Kiabana三个开源工具组成:

    • ElasticSearch是一个基于Lucene的开源分布式搜索服务器。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是第二流行的企业搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 在elasticsearch中,所有节点的数据是均等的。
    • Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤、分析,并将其存储供以后使用(如,搜索),您可以使用它。说到搜索,logstash带有一个web界面,搜索和展示所有日志。
    • Kibana 是一个基于浏览器页面的Elasticsearch前端展示工具,也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

    本文是在rancher管理的docker平台上配置启用,具体的流程图为

    一、配置启用elasticsearch

    优先配置elasticsearch原因是其作为中间枢纽作用,不需要依赖其他服务

    其添加服务页面

    启用简单,拉取elasticsearch镜像即可

    二、配置启用Kibana

    Kibana需要依赖elasticsearch的restAPI接口

    其添加服务页面如下

    注意图中红圈地方,其添加的环境变量名称可以参考拉取的docker镜像kibana的说明。具体功能是添加elasticsearch的依赖。

    可以浏览http://ip:5601查看是否链接成功,成功显示图下

    二、配置启用Logstash

     logstash 采用的的是rancher商店的版本

    其中配置主要是红圈中,具体为

    • input定义输入,可以为udp,tcp(其中包括暴露的端口号,格式)等等(我把图中的udp改成了tcp)
    • filter定义自己的过滤器
    • output定义输出,一般已经写好,输出到elasticsearch和标准输出窗口
    • 最后一个选择服务:选择刚才启用的elasticsearch

    具体的详细大家可以百度

    四、Rsyslog启用配置

    拉取panoptix/rsyslog

    通过执行命令行,添加配置文件

    在 etc/rsyslog.d/ 目录下添加文件 01-json-template.conf 和  60-logstash.conf

     01-json-template.conf 内容:

    template(name="json_lines" type="list" option.json="on") { constant(value="{") constant(value=""@timestamp":"") property(name="timereported" dateFormat="rfc3339") constant(value="", "@version":"1") constant(value="","tag":"") property(name="syslogtag") constant(value="","message":"") property(name="msg") constant(value="","severity":"") property(name="syslogseverity-text") constant(value="","facility":"") property(name="syslogfacility-text")   constant(value="","hostname":"") property(name="hostname") constant(value="", "procid":"") property(name="procid")   constant(value="", "programname":"") property(name="programname")   constant(value=""} ") }
    60-logstash.conf 内容
    
    # :programname, contains, "docker"
    
    *.* @@(Logstash服务IP):5000;json_lines

    template 为转发的格式设定,logstash文件为转发的地址,如上,为所有转发到 (Logstash服务IP):5000,以json_lines的模板

     然后重启服务

    五、docker日志驱动配置

    具体配置如图

    syslog-address: 为刚才的rsyslog地址。

    tag:为区分不同的服务的日志,定义一个标记{{.Name}}.{{.ID}}

  • 相关阅读:
    Java Singleton 单例模式
    android 让真机显示 DeBug Log调试信息
    android 图片处理经验分享
    android GridView 的使用 实现多项选择
    Spark/Storm/Flink
    Https
    Netty
    Netty
    java 线程状态相关测试
    Socket buffer 调优相关
  • 原文地址:https://www.cnblogs.com/yanyouqiang/p/6847683.html
Copyright © 2020-2023  润新知