ELK小结

因为某些原因需要使用到ELK,所以在这里总结下

准备工作

架构:filebeat->logstash->elasticsearch

filebeat-5.5.1、elasticsearch-2.4.1、logstash-2.4.0、kilbana-4.6.1

filebeat安装部署:

修改配置文件/etc/filebeat/filebeat.yml

加入以下内容:

- input_type: log

    paths:

        - /opt/logs/nginx.log

    fields:

        tag: nginx

########################################################

output.logstash:

  # The Logstash hosts,logstash机器ip加端口,配置到该机器上存储日志内容
  hosts: ["xx.xx.xx.xx:5044"]

2.elasticsearch安装部署

1.下载存放在/opt/下面
2.解压安装
tar -zxvf elasticsearch-2.4.1.tar.gz
cd elasticsearch-2.4.1
3.因为elasticsearch不能用root去启动,新建用户elk
groupadd -g 77 elkuseradd -u 77 -g elk -d /home/elk -s /bin/bash elk
mkdir -p /data/es-data
普通用户启动,报错权限不够
chown -R elk.elk /data/
chown -R elk.elk /opt/elasticsearch-2.4.1/
3.修改配置文件
vim /opt/elasticsearch-2.4.1/config/elasticsearch.yml

cluster.name: elk
node.name: elk-1
path.data: /data/es-data
path.logs: /var/log/elasticsearch/
network.host: 0.0.0.0
http.port: 9200

4.启动
cd /opt/elasticsearch-2.4.1/
./bin/elasticsearch
5.验证
打开浏览器,访问X.X.X.X:9200
检查是否真正开启
netstat -antlp |grep 9200 查看9200是否正被监听

elasticsearch就安装好了!
下面使用插件head来完善
1.安装插件
cd /opt/elasticsearch-2.4.1
使用命令 /bin/plugin install mobz/elasticsearch-head

2.使用浏览器看效果

x.x.x.x:9200/_plugin/head

未解决问题:一直到最后还是有一个log4j报错问题,搜索的解决方法是给权限,但是给过之后仍然无法解决,但是不影响使用

3.Logstash安装与部署

1.下载
2.解压
cd /opt/
tar -zxvf l ogstash-2.4.0.tar.gz
数据测试:
./bin/logstash -e 'input { stdin{} } output { stdout{} } '
启动成功

将logstash中的内容写到elasticsearch中去,然后通过logstash查看
./bin/logstash -e 'input { stdin{} } output { elasticsearch { hosts => ["localhost:9200"]} }'
通过Browser查看数据分析,添加的内容

l ogstash的配置
1.简单的文件配置
vim /opt/logstash-2.4.0/config/file.conf

input{srdin{}}

output{elasticsearch{hosts=>["localhost:9200"]}}

启动命令: ./bin/logstash -f config/file.conf

2.收集系统日志配置
vim system.conf
input {
file {
path => "/var/log/messages"
type => "system"
start_position => "beginning"
}
}

output {
elasticsearch {
hosts => ["localhost:9200"]
index => "system-% {+YYYY.MM.dd}"
}
}

4.kibana部署与使用

1.下载解压安装
tar -xzvf kibana-4.6.1-linux-x86_64.tar.gz
2.关联Elasticsearch配置
cd kibana-4.6.1-linux-x86_64
cd config/
vim kibana.yml
server.port: 5601
server.host: localhost
elasticsearch.url: http://localhost:9200
3.启动
cd /opt/kibana-4.6.1-linux-x86_64/bin
./kibana
可以看到服务启动状况




这里的安装部署流程是很简单的,难点在logstash的转发到elasticsearch的正则

本人使用的是创建自定义正则文件,然后匹配正则,所以,这里要和开发人员沟通日志格式,将所有日志以json形式存储

filebeat在转发的时候会把日志自动进行一次json格式转换,先解json,然后对日志内容进行解析,remove掉多余的内容

以上是粗版本,之后还会根据使用详细记录




因为所有日志文件会堆积在elasticsearch机器上,所以需要定时清理

看到别人的定时清理脚本,觉得自己还有很长的运维路走,这里放上自己的定时清理脚本

#!/bin/sh
CS_DATE1=`date +%s`
sec_10day=$((CS_DATE1 - 1728000))
sec_30day=$((CS_DATE1 - 2592000))
day_10before=`date -d @$sec_10day +%Y.%m.%d`
day_30before=`date -d @$sec_30day +%Y.%m.%d`
curl -XDELETE https://x.x.x.x/logstash-$day_30before
curl -XDELETE https://x.x.x.x/logstash-$day_10before

遇到的问题:1.当接收到的日志量太大时会导致,elastisearch上面日志是正常接收的,但是在kibana上展示内容显示不出来

2.logstash上转存的程序因为启动后会日志输出会占满屏幕,所以使用的后台运行的screen

3.关于时间戳UTC更改,

match => {"message" => "\[%{TIMESTAMP_ISO8601:datetime1}\]"}

date {

                match => ["datetimei1", "yyyy-MM-dd HH:mm:ss.SSS Z"]
                target => "@timestamp"
        }






正则匹配规则:

一般而言,logstash有自己的正则,可以到书里面去找找对应的字段规则,但是想要自由的匹配正则要怎么办呢?

1.建立一个自己的正则库,把文件命名为grok_runlog,放在patterns下面,方便调用

需要的字段,举个例子:

LINE1 \line\:\w*
FILENAME .*
EXECUTETIME \w*\:\w*

2.调用

 grok {
                patterns_dir => "/opt/logstash-2.4.0/patterns/grok_runlog"
                match => {
                        "message" => "\[%{TIMESTAMP_ISO8601:datetime1}\] \[%{LEVEL:level}\] \[%{CLASS:class}\] \[%{ACTION:action}\] \[%{LINE1:line}\] %{INFORMATION:information}"
                        }

        }

因为这里面的字段要一一对应,但是常常会导致information里面的字段匹配到前面的字段,所以,这里可以在包含更多内容的字段前面直接匹配字符,保证前后正常对应

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值