精华内容
下载资源
问答
  • elk 日志收集系统

    2020-12-27 08:14:04
    elk日志收集系统同步时间安装java-1.8修改打开文件最大数部署es部署kibana部署filebeat 同步时间 [root@localhost ~]# yum -y install ntpdate [root@localhost ~]# ntpdate ntp1.aliyun.com 安装java-1.8 [root@...

    同步时间

    [root@localhost ~]# yum -y install ntpdate
    [root@localhost ~]# ntpdate ntp1.aliyun.com
    

    安装java-1.8

    [root@localhost ~]# yum install java-1.8.0-openjdk -y
    

    修改打开文件最大数

    [root@localhost ~]# cat /etc/sysctl.conf
    					vm.max_map_count = 655360
    [root@localhost ~]# sysctl -p					
    

    部署es

    [root@localhost ~]# rpm -ivh elasticsearch-6.4.1.rpm 
    [root@localhost ~]# grep '^[a-Z]' /etc/elasticsearch/elasticsearch.yml
    
    cluster.name: elk          #集群名称
    node.name: elk-01                   #节点名称
    node.master: true                   #当前节点为集群master
    node.data: true                 #当前为数据节点
    path.data: /var/lib/elasticsearch    #数据存放位置
    path.logs: /var/log/elasticsearch   #日志存放位置
    network.host:  192.168.220.172         #监听的IP地址
    http.port: 9200                 #监听的端口
    discovery.zen.ping.unicast.hosts: ["elk-01"]  #集群节点的主机名或IP地址
    
    [root@localhost ~]# systemctl start elasticsearch.service
    [root@localhost ~]# systemctl enable elasticsearch.service
    [root@localhost ~]# curl '192.168.220.172:9200/_cluster/health?pretty'
    

    部署kibana

    [root@localhost ~]# rpm -ivh kibana-6.4.1-x86_64.rpm 
    [root@localhost ~]# vim /etc/kibana/kibana.yml 
    
    server.port: 5601                               #kibana监听的端口
    server.host: "192.168.220.172"                      #kibana监听的IP地址
    elasticsearch.url: "http://192.168.220.172:9200"        #kibana连接ES集群master节点地址
    
    [root@localhost ~]# systemctl enable kibana
    [root@localhost ~]# systemctl start kibana.service 
    [root@localhost ~]# firefox 192.168.220.172:5601
    

    部署filebeat

    [root@localhost ~]# rpm -ivh filebeat-6.4.1-x86_64.rpm 
    [root@localhost ~]# vim /etc/filebeat/filebeat.yml 
    
    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /var/log/messages
    filebeat.config.modules:
      path: ${path.config}/modules.d/*.yml
      reload.enabled: false
    setup.template.settings:
      index.number_of_shards: 3
    setup.kibana:
    output.elasticsearch:
      hosts: ["192.168.220.172:9200"]
    
    [root@localhost ~]# systemctl start filebeat
    [root@localhost ~]# systemctl enable filebeat
    

    配置ka展示日志
    配置流程

    展开全文
  • ElK日志收集系统

    2020-10-28 16:29:51
    ElK日志收集系统 什么叫ELK Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制, restful 风格接口,多数据源,自动搜索负载等。 Logstash 是一个完全开源...

    ElK日志收集系统
    什么叫ELK
    Elasticsearch 是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制, restful 风格接口,多数据源,自动搜索负载等。
    Logstash 是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索)。
    kibana 也是一个开源和免费的工具,他 Kibana 可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

    工作原理
    在这里插入图片描述

    File:C:/Users/fan/AppData/Local/YNote/data/qqE64F7CF5CBE1C35803FB7DE819C59BA9/0a87484a39ee410e85c11e6f29095b70/elk.png
    在需要收集日志的所有服务上部署 logstash ,作为 logstash agent ( logstash shipper )用于监控并过滤收集日志,将过滤后的内容发送到 logstash indexer , logstash indexer 将日志收集在一起交给全文搜索服务 ElasticSearch ,可以用 ElasticSearch 进行自定义搜索通过 Kibana 来结合自定义搜索进行页面展示。

    elk的主要功能是什么
    简单说就是elk 对日志收集汇总以及检索 的一套程序组合。
    日志分很多种,包括系统日志,程序日志,安全日志,访问日志等,通常分布在不同的服务器上,这时候我们需要把日志汇总到一起进行分析。logstash的功能。
    日志汇总后,我们需要对日志进行分析统计等。例如nginx日志,今天的访问量多少啊,500错误多少,请求返回的平均时长 是多少等等。传统的我们会用grep awk wc cut等来实现。现在我们用Elasticsearch来实现
    分析完日志以后,我们需要做个汇总,比如给别人发邮件,为了形象地展示数据,我们需要excel来画个图。kibana的功能。

    部署文档见附件

    目前cbas 主要采集hadoop一些组件的程序日志,例如flume,kafka,storm等。用flume程序替换掉logstash。我们可以叫这个系统EFK。

    访问地址

    http://172.21.54.20:5601/

    elasticsearch集群增加节点
    1、按照附件中的文档部署jdk和es,其中es的elasticsearch.yml配置文件中cluster.name和172.21.54.20的保持一致,即cluster.name: es_hxmonitor
    vim jvm.options
    elasticsearch.yml

    2、打开elasticsearch.yml配置文件中的discovery.zen.ping.unicast.hosts配置项,配置成discovery.zen.ping.unicast.hosts: [“wcjf_cbas_elk_215_20”, “wcjf_cbas_elk_54_95”]

    /home/elk/elasticsearch-5.0.1/bin/elasticsearch-plugin install file:///home/elk/x-pack-5.0.1.zip

    3、启动95上的es
    /home/elk/elasticsearch-5.0.1/bin/elasticsearch -d

    4、访问http://172.21.54.95:9200/_nodes?pretty,查看并确认95节点是否已经添加到集群中
    {
    “_nodes” : {
    “total” : 2,
    “successful” : 2,
    “failed” : 0
    },
    “cluster_name” : “es_hxmonitor”,
    “nodes” : {
    “kwWYsewGQ8yRKbCxSMYo2w” : {
    “name” : “wcjf_cbas_elk_215_20”,
    “transport_address” : “172.21.54.20:9300”,
    “host” : “172.21.54.20”,
    “ip” : “172.21.54.20”,
    “version” : “5.0.1”,
    “build_hash” : “080bb47”,
    “total_indexing_buffer” : 3415913267,
    “roles” : [
    “master”,
    “data”,
    “ingest”
    ],

    管理插件:
    一、bigdesk

    cd /home/elk/bigdesk/_site && python -m SimpleHTTPServer

    bigdesk工具:http://172.21.54.91:8000 (在页面的es地址栏输入相应的ip和端口)

    二、head

    登陆cbas项目windows跳板机,打开chrome浏览器,右上角点击head插件即可

    展开全文
  • ELK日志收集系统讲析

    2018-10-25 14:39:20
    ELK日志收集系统讲析,ELK+filebeat+Kafka,多组件结合
  • ELK日志收集系统

    2019-07-29 08:33:34
    豆芽博客,实用主义 ELK是一种日志查看解决方案,自己去网上找总是找不到称心如意的博客能够让我启动一下入门,我耗费一天时间,跑了一下搭建流程,与君共勉。

    下载软件包

    ELK官网 请大家以官网为主,以博客为辅。
    官网下载所需软件包
    我这里以windows环境演示
    在这里插入图片描述

    解压logstash

    启动试试

    bin目录 .\logstash.bat -e "input { stdin { } } output { stdout { codec => rubydebug } }"
    -e 参数后面跟的是logstash输入输出形式,上面意思为:从控制台接收输入,输出到控制台。
    启动后随意输入然后回车,就可以看到输出了

    配置logstash

    参考:https://www.elastic.co/guide/en/logstash/current/config-examples.html
    config目录logstash-sample.conf复制一份改名为logstash.conf(名字随意)内容如下:

    input {
    	stdin {
    	}
    }
    output {
      stdout { 
    	codec => rubydebug
      }
    }
    

    大家看到了,上面的配置其实意义和第一步是一样的:从控制台接收输入,输出到控制台。
    怎么用呢?
    logstash.bat -f logstash.conf

    logstash输入和输出都可以有多个,比如下面

    # 从控制台和tcp连接(通常是咱们的应用)输入
    # 输出到控制台和elasticsearch
    input {
    	stdin {
    	}
    	tcp {
          port => "8888"   # 接收输入日志的端口
    	}
    }
    output {
      stdout { 
    	codec => rubydebug
      }
      elasticsearch { 
      	hosts => ["localhost:9200"]
       }
    }
    

    配置日志输出到logstash

    首先引入用于logback输出到logstash的依赖

    <dependency>
        <groupId>net.logstash.logback</groupId>
        <artifactId>logstash-logback-encoder</artifactId>
        <version>4.10</version>
    </dependency>
    

    spring项目的resource目录创建logback-spring.xml文件 用于设置日志输出地址

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <!-- 输出到控制台 -->
        <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
            <encoder>
                <pattern>===%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger Line:%-3L - %msg%n</pattern>
                <charset>utf-8</charset>
            </encoder>
        </appender>
        <!-- 输出到logstash -->
        <appender name="logstash" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
            <destination>localhost:8888</destination>
            <encoder class="net.logstash.logback.encoder.LogstashEncoder"/>
        </appender>
        <root level="info">
            <appender-ref ref="console"/>
            <appender-ref ref="logstash"/>
        </root>
    </configuration>
    

    这样,启动logstash然后启动项目就能看到logstash打出的信息了,类似下面这样

    {
    	"port" => 9773,
    	"type" => "tcplog",
    	"message" => "{\"@timestamp\":\"2019-07-28T22:18:32.539+08:00\",\"@version\":1,\"message\":\"Starting ProtocolHandler [\\\"http-nio-8081\\\"]\",\"logger_name\":\"org.apache.coyote.http11.Http11NioProtocol\",\"thread_name\":\"main\",\"level\":\"INFO\",\"level_value\":20000}\r",
    	"@version" => "1",
    	"@timestamp" => 2019-07-28T14:18:32.540Z,
    	"host" => "view-localhost"
    }
    

    启动elastic search

    解压后 bin目录 .\elasticsearch.bat

    启动 kibana

    解压后 bin目录 .\kibana.bat
    这样启动应用 就能在kibana看到日志了,快去试试吧!
    这有一篇不错的kibana教程 https://www.cnblogs.com/cjsblog/p/9476813.html

    logstash解耦

    https://blog.csdn.net/GY325416/article/details/97623264

    展开全文
  • ELK日志收集系统操作手册,详细讲解了elk组件使用方式
  • ELK日志收集系统架构图
  • ELK日志收集系统(一)

    千次阅读 2020-03-12 11:30:54
    ELK日志收集系统一:软件包下载地址二:环境准备三:kibana安装与配置四:安装nginx五:filebeat安装配置5.1 配置filebeat收集nginx日志5.2 kibana设置 一:软件包下载地址 本文所需要所有软件包下载地址: 链接:...

    一:软件包下载地址

    本文所需要所有软件包下载地址:

    链接:https://pan.baidu.com/s/1J2rbPZkWEfg_M8k3W8jQPQ 
    提取码:x3i9 
    

    二:环境准备

    Elasticsearch的安装见:Elasticsearch集群

    IP系统硬件配置软件部署
    172.17.2.239CentOS7.42 CPU, 4G MEMelasticsearch6.6.0,kibana6.6.0,nginx,filebeat
    172.17.2.240CentOS7.42 CPU, 4G MEMnginx,filebeat

    三:kibana安装与配置

    [root@node01 tools]# yum localinstall -y kibana-6.6.0-x86_64.rpm
    

    kibana配置文件:

    [root@node01 kibana]# grep '^[a-z]' /etc/kibana/kibana.yml
    server.port: 5601
    server.host: "172.17.2.239"
    server.name: "node01.adminba.com"				# 主机的hostname
    elasticsearch.hosts: ["http://localhost:9200"]
    kibana.index: ".kibana"
    

    启动kibana:

    [root@node01 kibana]# systemctl start kibana
    

    启动完成后浏览器输入http://IP:5601即可访问kibana:
    ELK日志收集系统

    四:安装nginx

    yum install nginx httpd-tools -y
    

    启动nginx并进行压力测试:

    [root@node01 ~]# systemctl start nginx
    [root@node01 ~]# ab -c 10 -n 100 http://172.17.2.239/	# 目的就是让nginx产生日志
    

    五:filebeat安装配置

    [root@node01 tools]# yum localinstall -y filebeat-6.6.0-x86_64.rpm
    

    5.1 配置filebeat收集nginx日志

    filebeat配置文件配置:

    [root@node01 ~]# cat /etc/filebeat/filebeat.yml
    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /var/log/nginx/access.log			# nginx日志路径
    
    output.elasticsearch:
      hosts: ["172.17.2.239:9200"]
    

    启动filebeat:

    [root@node01 ~]# systemctl start filebeat
    

    再次访问es-head:
    ELK日志收集系统

    5.2 kibana设置

    ELK日志收集系统
    ELK日志收集系统
    ELK日志收集系统
    ELK日志收集系统
    显示的nginx日志如下:
    ELK日志收集系统

    六:收集nginx json日志

    首先修改ningx.conf配置文件,让nginx可以输出json格式的日志:

    [root@node01 nginx]# cat nginx.conf
    http {
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    # 添加下面的json段配置
             log_format json '{ "time_local": "$time_local", '
                                '"remote_addr": "$remote_addr", '
                                                    '"referer": "$http_referer", '
                                                    '"request": "$request", '
                                                    '"status": $status, '
                                                    '"bytes": $body_bytes_sent, '
                                                    '"agent": "$http_user_agent", '
                                                    '"x_forwarded": "$http_x_forwarded_for", '
                                                    '"up_addr": "$upstream_addr",'
                                                    '"up_host": "$upstream_http_host",'
                                                    '"upstream_time": "$upstream_response_time",'
                                                    '"request_time": "$request_time"'
                                            ' }';
        access_log  /var/log/nginx/access.log  json;		# 这里修改为json
    

    清空nginx已有的日志:

    [root@node01 nginx]# > /var/log/nginx/access.log
    

    重启nginx,然后测试访问nginx,让其产生日志:

    [root@node02 ~]# for i in {0..100};do curl -I http://172.17.2.239; done
    

    查看nginx输出的日志:

    [root@node01 nginx]# tail -f /var/log/nginx/access.log
    { "time_local": "12/Mar/2020:13:17:27 +0800", "remote_addr": "172.17.2.240", "referer": "-", "request": "HEAD / HTTP/1.1", "status": 200, "bytes": 0, "agent": "curl/7.29.0", "x_forwarded": "-", "up_addr": "-","up_host": "-","upstream_time": "-","request_time": "0.000" }
    

    有es-head中删除filebeat索引:
    ELK日志收集系统
    删除kibana中的索引:
    ELK日志收集系统
    修改filebeat配置文件:

    [root@node01 filebeat]# cat filebeat.yml
    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /var/log/nginx/access.log
      json.keys_under_root: true
      json.overwrite_keys: true
      # 上面两行:让filebeat以json格式传给ES
    output.elasticsearch:
      hosts: ["172.17.2.239:9200"]
    

    重启filebeat:

    systemctl restart filebeat.service
    

    重新访问nginx,让其产生新的日志,在kibana中重建索引。再次查看收集到的日志格式如下:
    ELK日志收集系统

    七:收集多台服务器上的nginx日志

    这里再增加一台虚拟机,共三台

    IP系统硬件配置软件部署
    172.17.2.239CentOS7.42 CPU, 4G MEMelasticsearch6.6.0,kibana6.6.0,nginx,filebeat
    172.17.2.240CentOS7.42 CPU, 4G MEMnginx,filebeat
    172.17.2.241CentOS7.42 CPU, 4G MEMnginx,filebeat

    172.17.2.239上filebeat配置文件:

    [root@node01 ~]# cat /etc/filebeat/filebeat.yml
    filebeat.inputs:
    
    - type: log
      enabled: true
      paths:
        - /var/log/nginx/access.log
      json.keys_under_root: true
      json.overwrite_keys: true
    
    setup.kibana:
      host: "172.17.2.239:5601"
    
    output.elasticsearch:
      hosts: ["172.17.2.239:9200"]
      index: "nginx-access-%{[beat.version]}-%{+yyyy.MM}"
    
    setup.template.name: "nginx"
    setup.template.pattern: "nginx-*"
    setup.template.enabled: false
    setup.template.overwrite: true
    

    将/etc/filebeat/filebeat.yml,与/etc/nginx/nginx.conf两个配置文件远程拷贝到另外两台主机上:

    scp /etc/nginx/nginx.conf root@172.17.2.240:/etc/nginx/nginx.conf
    scp /etc/nginx/nginx.conf root@172.17.2.241:/etc/nginx/nginx.conf
    scp /etc/filebeat/filebeat.yml root@172.17.2.240:/etc/filebeat/filebeat.yml
    scp /etc/filebeat/filebeat.yml root@172.17.2.241:/etc/filebeat/filebeat.yml
    

    确保三台主机filebeat配置文件,nginx配置文件都是一样的。
    分别对另外两台主机进行压测,目的是让nginx产生日志:

    ab -n 20 -c 20 http://172.17.2.240/node02
    ab -n 20 -c 20 http://172.17.2.241/node03
    

    增加nginx错误日志的收集:需要将nginx的访问日志与错误日志拆分开
    修改filebeat配置文件,如下:(然后两步到其他两台机器上)

    [root@node01 filebeat]# cat filebeat.yml
    filebeat.inputs:
    
    - type: log
      enabled: true
      paths:
        - /var/log/nginx/access.log
      json.keys_under_root: true
      json.overwrite_keys: true
      tags: ["access"]
    
    - type: log
      enabled: true
      paths:
        - /var/log/nginx/error.log
      tags: ["error"]
    
    setup.kibana:
      host: "172.17.2.239:5601"
    
    output.elasticsearch:
      hosts: ["172.17.2.239:9200"]
      indices:
        - index: "nginx_access-%{[beat.version]}-%{+yyyy.MM.dd}"
          when.contains:
            tags: "access"
        - index: "nginx_error-%{[beat.version]}-%{+yyyy.MM.dd}"
          when.contains:
            tags: "error"
    
    setup.template.name: "nginx"
    setup.template.pattern: "nginx_*"
    setup.template.enabled: false
    setup.template.overwrite: true
    

    八:收集tomcat日志

    8.1 安装tomcat

    yum install tomcat tomcat-webapps tomcat-admin-webapps tomcat-docs-webapp tomcat-javadoc -y
    

    启动检查:

    [root@ ~]# systemctl start tomcat
    [root@ ~]# systemctl status tomcat
    [root@ ~]# lsof -i:8080
    COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
    java    18915 tomcat   49u  IPv6  61950      0t0  TCP *:webcache (LISTEN)
    

    8.2 修改tomcat为json日志

    # 第139行修改为以下配置
    [root@node01 ~]# cat -n /etc/tomcat/server.xml
       137          <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
       138                 prefix="localhost_access_log." suffix=".txt"
       139                             pattern="{&quot;clientip&quot;:&quot;%h&quot;,&quot;ClientUser&quot;:&quot;%l&quot;,&quot;authenticated&quot;:&quot;%u&quot;,&quot;AccessTime&quot;:&quot;%t&quot;,&quot;method&quot;:&quot;%r&quot;,&quot;status&quot;:&quot;%s&quot;,&quot;SendBytes&quot;:&quot;%b&quot;,&quot;Query?string&quot;:&quot;%q&quot;,&quot;partner&quot;:&quot;%{Referer}i&quot;,&quot;AgentVersion&quot;:&quot;%{User-Agent}i&quot;}"/>
    
    [root@node01 ~]# > /var/log/tomcat/localhost_access_log.2020-03-19.txt
    [root@node01 ~]# systemctl restart tomcat
    

    再次访问日志即为json格式日志
    ELK日志收集系统
    修改filebeat配置文件:

    [root@node01 ~]# cat /etc/filebeat/filebeat.yml
    filebeat.inputs:
    ######################### nginx #######################
    - type: log
      enabled: true
      paths:
        - /var/log/nginx/access.log
      json.keys_under_root: true
      json.overwrite_keys: true
      tags: ["access"]
    
    - type: log
      enabled: true
      paths:
        - /var/log/nginx/error.log
      tags: ["error"]
    ######################### tomcat #######################
    - type: log
      enabled: true
      paths:
        -  /var/log/tomcat/localhost_access_log.*.txt
      json.keys_under_root: true
      json.overwrite_keys: true
      tags: ["tomcat"]
    
    setup.kibana:
      host: "172.17.2.239:5601"
    
    output.elasticsearch:
      hosts: ["172.17.2.239:9200"]
      indices:
        - index: "nginx_access-%{[beat.version]}-%{+yyyy.MM.dd}"
          when.contains:
            tags: "access"
        - index: "nginx_error-%{[beat.version]}-%{+yyyy.MM.dd}"
          when.contains:
            tags: "error"
        - index: "tomcat-%{[beat.version]}-%{+yyyy.MM.dd}"
          when.contains:
            tags: "tomcat"
    
    setup.template.name: "nginx"
    setup.template.pattern: "nginx_*"
    setup.template.enabled: false
    setup.template.overwrite: true
    

    九:收集JAVA日志

    因为java日志的输出信息非常多,需要将多行拼成一个事件,所以需要多行匹配模式
    因为elasticsearch本身就是java开发的,所以我们可以直接收集ES的日志

    [root@node01 filebeat]# cat filebeat.yml 
    filebeat.inputs:
    ######################### nginx #######################
    - type: log
      enabled: true
      paths:
        - /var/log/nginx/access.log
      json.keys_under_root: true
      json.overwrite_keys: true
      tags: ["access"]
    
    - type: log
      enabled: true
      paths:
        - /var/log/nginx/error.log
      tags: ["error"]
    ######################### tomcat #######################
    - type: log
      enabled: true 
      paths:
        -  /var/log/tomcat/localhost_access_log.*.txt
      json.keys_under_root: true
      json.overwrite_keys: true
      tags: ["tomcat"]
    
    ######################### es #######################
    - type: log
      enabled: true 
      paths:
        -  /var/log/elasticsearch/elasticsearch.log
      tags: ["es"]
      multiline.pattern: '^\['
      multiline.negate: true
      multiline.match: after
    
    setup.kibana:
      host: "172.17.2.239:5601"
    
    output.elasticsearch:
      hosts: ["172.17.2.239:9200"]
      indices:
        - index: "nginx_access-%{[beat.version]}-%{+yyyy.MM.dd}"
          when.contains:
            tags: "access"
        - index: "nginx_error-%{[beat.version]}-%{+yyyy.MM.dd}"
          when.contains:
            tags: "error"
        - index: "tomcat-%{[beat.version]}-%{+yyyy.MM.dd}"
          when.contains:
            tags: "tomcat"
        - index: "es-%{[beat.version]}-%{+yyyy.MM.dd}"
          when.contains:
            tags: "es"
    
    setup.template.name: "nginx"
    setup.template.pattern: "nginx_*"
    setup.template.enabled: false
    setup.template.overwrite: true
    

    十:收集docker日志

    10.1 配置filebeat收集单个docker日志

    官方介绍:

    https://www.elastic.co/guide/en/beats/filebeat/6.7/filebeat-input-docker.html
    

    启动一个nginx容器:

    docker run --name nginx -p 80:80 -d nginx
    

    首先查看docker容器的ID

    docker inspect nginx|grep -w 'Id'
    

    配置文件

    filebeat.inputs:
    - type: docker
      containers.ids: 
        - '7a0e13848bd2ff028c8a1c0c299a3b606d177905e8b30b7a2a6603952953d939'	# 容器ID
      tags: ["docker-nginx"] 
    output.elasticsearch:
      hosts: ["localhost:9200"]
      index: "docker-nginx-%{[beat.version]}-%{+yyyy.MM.dd}"
    setup.template.name: "docker"
    setup.template.pattern: "docker-*"
    setup.template.enabled: false
    setup.template.overwrite: true
    

    10.2 配置filebeat通过标签收集多个容器日志

    新版本的filebeat增加了收集多个容器的日志的选项

    https://www.elastic.co/guide/en/beats/filebeat/7.2/filebeat-input-container.html
    

    假如我们有多个docker镜像或者重新提交了新镜像,那么直接指定ID的就不是太方便了。
    多容器日志收集处理:其实收集的日志本质来说还是文件,而这个日志是以容器-json.log命名存放在默认目录下的json格式的文件
    但是每个容器的ID都不一样,为了区分不同服务运行的不同容器,可以使用docker-compose通过给容器添加labels标签来作为区分,然后filbeat把容器日志当作普通的json格式来解析并传输到es

    安装docker-compose:

    yum install -y python2-pip
    pip install docker-compose
    docker-compose version
    

    pip加速操作命令

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U
    pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
    

    编写docker-compose.yml文件:

    cat docker-compose.yml 
    version: '3'
    services:
      nginx:
        image: nginx
        # 设置labels
        labels:
          service: nginx
        # logging设置增加labels.service
        logging:
          options:
            labels: "service"
        ports:
          - "8080:80"
      db:
        image: nginx:latest
        # 设置labels
        labels:
          service: db 
        # logging设置增加labels.service
        logging:
          options:
            labels: "service"
        ports:
          - "80:80"
    

    运行docker-compose.yml:

    docker-compose up -d
    

    检查日志是否增加了lable标签:

    tail -1 /var/lib/docker/containers/b2c1f4f7f5a2967fe7d12c1db124ae41f009ec663c71608575a4773beb6ca5f8/b2c1f4f7f5a2967fe7d12c1db124ae41f009ec663c71608575a4773beb6ca5f8-json.log 
    {"log":"192.168.47.1 - - [23/May/2019:13:22:32 +0000] \"GET / HTTP/1.1\" 304 0 \"-\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36\" \"-\"\n","stream":"stdout","attrs":{"service":"nginx"},"time":"2019-05-23T13:22:32.478708392Z"}
    

    配置filebeat:

    cat /etc/filebeat/filebeat.yml    
    filebeat.inputs:
    - type: log
      enabled: true 
      paths:
        - /var/lib/docker/containers/*/*-json.log
      json.keys_under_root: true
      json.overwrite_keys: true
    output.elasticsearch:
      hosts: ["172.17.2.239:9200"]
      indices:
        - index: "docker-nginx-%{[beat.version]}-%{+yyyy.MM.dd}"
          when.contains:
            attrs.service: "nginx"
        - index: "docker-db-%{[beat.version]}-%{+yyyy.MM.dd}"
          when.contains:
            attrs.service: "db"
    setup.template.name: "docker"
    setup.template.pattern: "docker-*"
    setup.template.enabled: false
    setup.template.overwrite: true
    

    10.3 通过服务类型和日志类型多条件创建不同索引

    目前为止,已经可以按服务来收集日志了,但是错误日志和正确日志混在了一起,不好区分,所以可以进一步进行条件判断,根据服务和日志类型创建不同的索引
    filebeat配置文件:

    [root@node01 ~]# cat /etc/filebeat/filebeat.yml        
    filebeat.inputs:
    - type: log
      enabled: true 
      paths:
        - /var/lib/docker/containers/*/*-json.log
      json.keys_under_root: true
      json.overwrite_keys: true
    output.elasticsearch:
      hosts: ["172.17.2.239:9200"]
      indices:
        - index: "docker-nginx-access-%{[beat.version]}-%{+yyyy.MM.dd}"
          when.contains:
              attrs.service: "nginx"
              stream: "stdout"
        - index: "docker-nginx-error-%{[beat.version]}-%{+yyyy.MM.dd}"
          when.contains:
              attrs.service: "nginx"
              stream: "stderr"
        - index: "docker-db-access-%{[beat.version]}-%{+yyyy.MM.dd}"
          when.contains:
              attrs.service: "db"
              stream: "stdout"
        - index: "docker-db-error-%{[beat.version]}-%{+yyyy.MM.dd}"
          when.contains:
              attrs.service: "db"
              stream: "stderr"
    setup.template.name: "docker"
    setup.template.pattern: "docker-*"
    setup.template.enabled: false
    setup.template.overwrite: true
    
    展开全文
  • ELK日志收集系统(二)十一:filebeat模块十二:filebeat画图 十一:filebeat模块 [root@node01 ~]# rpm -qc filebeat /etc/filebeat/filebeat.yml /etc/filebeat/modules.d/apache2.yml.disabled ....................
  • Linux搭建ELK日志收集系统:FIlebeat+Redis+Logstash+Elasticse 转载至[链接](https://blog.51cto.com/13859393/2156844) Centos7部署ELK日志收集系统 一、ELK概述: E...
  • 基于VMware实现 ElasticSearch集群+Logstash集群+Kibana+kafka集群+Filebeat 实现日志管理系统
  • Centos7部署ELK日志收集系统 一、ELK概述: ELK是一组开源软件的简称,其包括Elasticsearch、Logstash 和 Kibana。ELK最近几年发展迅速,已经成为目前最流行的集中式日志解决方案。 Elasticsearch: 能对大容量的数据...
  • ELK日志收集系统搭建(基于7.1.1)

    千次阅读 2019-06-14 18:00:52
    ELK日志收集系统搭建(基于7.1.1) 下载ElasticSearch、Kibana、Logstash的安装包,官方下载页面https://www.elastic.co/cn/downloads/,当前使用版本7.1 安装java运行环境 创建用户 默认不支持root用户运行elk,...
  • ELK日志收集系统.docx

    2020-01-16 13:42:10
    1、文档详细介绍了下面三种日志架构的优缺点 ...对于收集日志信息如果能提前在系统应用日志层面做优化处理(比如json格式化,日志分类)也可以大大提升ELK系统的吞吐能力。减少logstash日志过滤的压力。
  • ELK日志收集系统搭建

    2019-08-13 01:18:34
    NULL 博文链接:https://donald-draper.iteye.com/blog/2302224
  • ELK日志收集系统(三):docker-compose部署ELK单机与集群一:安装docker-compose二:docker-compose小型web案例三:单机环境ELK系统搭建四:多主机ELK部署4.1 开启docker swarm4.2 启动集群 一:安装docker-compose...
  • 简介 使用ELK做系统服务日志的收集,随着使用的时间和用户量的增长,ES的存储压力会越来越大,而...ELK日志系统的介绍 服务索引名命名规则 日志收集方式说明与示例 自动清理索引脚本 定时自动清理任务 原文:...
  • ELK 日志收集系统方案

    2021-03-30 19:14:54
    或者是分布式系统:当我们需要日志分析的时候你大概会这么做:直接在日志文件中 grep、awk就可以获得自己想要的信息。这就造成了日志查询极其繁琐;如果日志中有敏感数据,也要考虑是否开放给所有人 可能遇到的问题...
  • elasticsearch+kibana+logstash
  • ELK日志收集系统—ELK

    2019-08-30 08:35:02
    收集日志,转发到ES,过滤转换字段 Kibana java 过滤,分析,搜索,展示 Filebeat GO 收集日志,转发给ES 1.kibana安装 [root@elk01 /server/tools/EFLK软件包v6.6.0]# ls ...
  • ELK日志收集系统的部署

    千次阅读 2018-09-14 16:52:07
    ELK日志收集  ELK是Elasticsearch、Logstash、Kibana的简称,这三者是核心套件,但并非全部。  Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,141
精华内容 5,256
关键字:

elk日志收集系统