ELK日志管理平台

ELK

ELK是日志收集、索引与检索三件套,包含了三个组件

  • ElasticSearch
  • Logstash
  • Kibana

机器要求

三台机器,机器的配置视线上日志量而定

ES集群:三台机器

Logstash:一台机器

Kibana:一台机器

其中一台机器不存储ES数据,这台机器同时安装了ES、Logstash和Kibana

1、elasticsearch 安装配置

配置文件 elasticsearch.yml

cluster.name: es-cluster
node.name: node0
path.data: /tmp/elasticsearch/data 
path.logs:  /tmp/elasticsearch/logs
network.host: ***
http.port: 9200
discovery.zen.ping.unicast.hosts: ["***"]

该配置说明如下:

cluster.name,集群名,同一个集群下配置同一个名字
node.name,节点名,同一个集群下不同节点配置不同的名称
path.data,数据存储目录,生产环境中需要指定一个容量比较大的磁盘
path.logs,日志存储目录
network.host,本机ip
http.port,默认为9200
discovery.zen.ping.unicast.hosts,集群中其他机器的ip地址

查看集群master状态
http://ip:port/_cat/master?pretty

ElasticSearch删除索引
使用命令

curl -XDELETE 'http://ip:port/logstash-2016.12.12?pretty'
其中logstash-2016.12.12为索引名

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

ES后台运行
一般来说我们不希望关闭终端时,ES进程中止,这时需要以后台运行的方式运行ES

./elasticsearch -d 

安装logstash

logstash要求java版本为1.8及以上

安装过程为下载tar.gz文件后上传至服务器

3.1 配置文件

在logstash的config同级目录下新建etc文件夹用于存放配置文件,新建配置文件es-test.conf,内容如下:

input
{
 file
{
  path =>"/home/contentdev/elk/test.log"
}
}
 
output
{
  elasticsearch{
    hosts => ["ip:port"]
    index => "logstash-%{type}-%{+YYYY.MM.dd}"
}

实战:从filebeat接收 日志数据。

input{
#       file{
#         path => "/zccdata/data/test.log"
#         start_position => "beginning"
#         type => "zcclog"
#       }
        beats{
          port => "5044"
        }
}
filter{
        grok{
          match => {"message" => "%{COMBINEDAPACHELOG}"}
        }
        mutate{
          remove_field => "host"
        }
}
#output{
#       if[level] == "debug"{
#       if "zcclog" in [tags]{
#         stdout{codec => rubydebug}
#       }
#}
output{
        if "zcclog" in [tags]{
          elasticsearch{
            hosts => "192.168.88.139:9200"
            index => "zcclog_%{level}_%{+YYYY.MM.dd}"
            document_type => "test"
          }
        }
}

filebeat 配置

filebeat.inputs:
 - type: log
   paths:
     - /zccdata/data/logs/*.log
   tags: ["zcclog"]
#   include_lines: ['ERROR', 'WARN']
   fields:
     level: debug
     review: 1
   fields_under_root: true
   multiline:
     pattern: '^[0-9]{4}-[0-9]{2}-[0-9]{2}'
     negate: true
     match: after
output.logstash:
  hosts: ["192.168.88.139:5044"]

安装kibana
安装流程详见:https://www.elastic.co/guide/en/kibana/current/targz.html

安装完毕后需要配置config下的kibana.yml配置文件,配置一下几项即可:

server.port:5601,打开注释即可
server.host,配置本机ip,启动后可以通过ip+端口访问
elasticsearch.url,配置es的域名(ip)+端口
kibana.index,打开注释即可

启动kibana

cd到bin目录,执行下面的命令

nohup ./kibana &

ES数据定期删除
如果不删除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

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

猜你喜欢

转载自blog.csdn.net/xuehentian/article/details/89211189
今日推荐