ELK系统----kibana插件之logtrail(7.2.0)

一、安装logtrail(基于docker)

1、方式一

sudo wget https://github.com/sivasamyk/logtrail/releases/download/v0.1.31/logtrail-7.2.0-0.1.31.zip

sudo docker cp logtrail-7.2.0-0.1.31.zip kibana:/

docker exec -it kibana bash

 ./bin/kibana-plugin install file:///logtrail-7.2.0-0.1.31.zip

获取配置文件:

sudo docker cp kibana:/usr/share/kibana/plugins/logtrail .
docker stop kibana
docker rm kibana

重新run kibana(将插件的目录映射出来)

docker run -d --name kibana1 -p 5602:5601 -v /docker/elk/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml:ro docker.elastic.co/kibana/kibana:7.2.0

2、方式二
编写Dockerfile如下

FROM docker.elastic.co/kibana/kibana:7.2.0
COPY logtrail-7.2.0-0.1.31.zip /tmp/
RUN ./bin/kibana-plugin install file:///logtrail-7.2.0-0.1.31.zip \
 && rm -rf /tmp/logtrail-7.2.0-0.1.31.zip

创建新的镜像

docker build -t kibana:7.2.0 .

二、配置logtrail.json

收集docker日志,显示容器名称更优雅一些。。。
配置hostname对应的是容器名称,填写docker.container.name字段,对于k8s填写kubernetes.container.name字段
注意:keyword_suffix配置,有的版本需要设置为空才能显示,All Systems包含的容器名

{
  "version" : 2,
  "index_patterns" : [
    { 

      "es": {
        "default_index": "docker-localhost*"
      },
      "tail_interval_in_seconds": 1,
      "es_index_time_offset_in_seconds": 0,
      "display_timezone": "local",
      "display_timestamp_format": "MMM DD HH:mm:ss",
      "max_buckets": 500,
      "default_time_range_in_days" : 0,
      "max_hosts": 100,
      "max_events_to_keep_in_viewer": 5000,
      "default_search": "",
      "fields" : {
        "mapping" : {
            "timestamp" : "@timestamp",
            "hostname" : "container.name",
            "program": "",
            "message": "message"
        },
        "message_format": "{{{message}}}",
        "keyword_suffix" : "keyword"
      },
      "color_mapping" : {
        "field": "loglevel",
           "mapping": {
               "ERROR": "#FF0000",
               "WARN": "#FFEF96",
               "DEBUG": "#B5E7A0",
               "TRACE": "#CFE0E8",
               "INFO": "#339999"
           }
      } 
    }
  ]
}

三、日志级别颜色匹配

提供一个日志级别的loglevel字段,logstash中配置grok匹配

xqkang@xqkang:/docker/elk/logstash/pipeline$ cat docker.conf 
input {
    redis {
        host => "192.168.10.46"
        port => 6380
        db => 0
        key => "kxq"
        password => "123456"
        data_type => "list"
        threads => 4
        tags => "localhost"
    }
}
filter {
    grok {
        match => {
            "message" => "%{LOGLEVEL:loglevel}"
        }
    } 
}

output {
    if "localhost" in [tags] {
        if [fields][function] == "docker" {
            elasticsearch {
                hosts => ["192.168.10.46:9201","192.168.10.46:9202","192.168.10.46:9203"]
                index => "docker-localhost-%{+YYYY.MM.dd}"
            }
        }
    }
}

四、logtrail优化

tail_interval_in_seconds:主页刷新时间,填写过大比较耗CPU(为了实时性,我选择了1)
default_time_range_in_days:默认为0,将搜索所有索引的日志,当日志越来越多将影响查询,配置显示一天即可,也可以用default_time_range_in_minutes设置分钟

链接:https://blog.csdn.net/cyfblog/article/details/103011855

五、es数据定期删除

ElasticSearch删除索引

curl -XDELETE 'http://ip:port/logstash-2016.12.12?pretty'

其中logstash-2016.12.12为索引名

查看ElasticSearch所有索引
http://ip:port/_cat/indices

如果不删除ES数据,将会导致ES存储的数据越来越多,磁盘满了之后将无法写入新的数据。这时可以使用脚本定时删除过期数据。

#/bin/bash
#es-index-clear
#只保留15天内的日志索引
LAST_DATA=`date -d "-15 days" "+%Y.%m.%d"`
#删除上个月份所有的索引
curl -XDELETE 'http://ip:port/*-'${LAST_DATA}'*'

可以视个人情况调整保留的天数,这里的ip和port同样设置为不存储数据的那台机器。该脚本只需要在ES中一台机器定时运行即可。

crontab -e添加定时任务:

0 1 * * * /search/odin/elasticsearch/scripts/es-index-clear.sh

每天的凌晨一点清除索引。

其他

存储到ES的数据会有一个字段名为@timestamp,该时间戳和北京时间差了8小时,不需要进行调整,Kibana在展示的时候会自动加上8小时

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值