欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ELK日志管理平台

程序员文章站 2022-07-06 20:21:51
...

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

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

 

相关标签: ELK