ELK 日志系统环境搭建

背景

近期由于项目需求,需要建立一套日志聚合系统,采用经典的 ELK(logstash =》elasticsearch =》kibana) 日志系统架构,本文则是记录相关 elasticsearch\logstash\kibana\filebeat 等环境的安装过程

说明:

  • 数据流走向:filebeat => logstash => elasticsearch => kibana
  • 组件启动顺序:elasticsearch => logstash => kibana (ELK 名称的来源?) => filebeat

下载

elk 官网下载安装包 logstash\elasticsearch\kibana 以及 filebeats,其中 elasticsearch 的下载以及安装过程可参见ElasticSearch 环境搭建

cd /usr/local #root用户

wget https://artifacts.elastic.co/downloads/logstash/logstash-6.6.2.tar.gz
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.6.2-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.6.2-linux-x86_64.tar.gz

tar -zxvf logstash-6.6.2.tar.gz
chown es:es /usr/local/logstash-6.6.2/ -R

tar -zxvf kibana-6.6.2-linux-x86_64.tar.gz
chown es:es /usr/local/kibana-6.6.2-linux-x86_64/ -R

tar -zxvf filebeat-6.6.2-linux-x86_64.tar.gz
chown es:es /usr/local/filebeat-6.6.2-linux-x86_64/ -R

配置

elasticserach

可参见ElasticSearch 环境搭建

logstash
cd /usr/local/logstash-6.6.2 #es用户
vim default.conf #创建default.conf文件并添加内容:

# 监听 5044 端口作为输入
input {
    beats {
        port => "5044"
    }
}
# 数据过滤 filter {
    grok {
        match => { "message" => "%{COMBINEDAPACHELOG}" }
    }
    geoip { source => "clientip" }
}
# 输出配置为本机的 9200 端口,这是 ElasticSerach 服务的监听端口
output {
    elasticsearch {
        hosts => ["127.0.0.1:9200"]
    }
}

kibana
cd /usr/local/kibana-6.6.2-linux-x86_64 #es 用户
vim config/kibana.yml # 将 server.host 配置项取消注释并修改 (若修改为局域网 ip 地址则内网访问,此处设为 0 位可外网访问) 为 server.host:"0.0.0.0"

filebeat {#toc_h5_6}
cd /usr/local/filebeat-6.6.2-linux-x86_64 #es 用户

vim filebeat.yml  #配置日志以及日志文件路径(配置如截图,且需要保证 es 用户具有访问该 log 目录的权限),如 nginx 日志为例

vim filebeat.yml #配置 elasticsearch 日志输出地址或者 logstash 输出地址,在这里我们将采用 filebeat 先收集日志到 logstash 中,然后由 logstash 再到 elasticsearch 中,因此注释掉默认的 elasticsearch 地址并取消默认注释的 logstash 地址(配置如截图)

启动

elasticserach

可参见ElasticSearch 环境搭建

logstash
cd /usr/local/logstash-6.6.2 #es用户
nohup bin/logstash -f default.conf --config.reload.automatic & #以后台进程形式启动logstash服务
tail -f nohup.out  #查看启动日志(或者先以bin/logstash -f default.conf -config.reload.automatic命令启动在控台打印启动日志确定可以成功关闭后再以后台形式启动)

kibana
cd /usr/local/kibana-6.6.2-linux-x86_64 #es 用户
nohup bin/kibana &     #以后台进程形式启动 kibana 服务
tail -f nohup.out  #查看启动日志(或者先以 bin/kibana 命令启动在控台打印启动日志确定可以成功关闭后再以后台形式启动)
浏览器中访问   http://ip:5601  #可以访问页面成功,则 kibana 启动成功

kibana 关闭

filebeat
cd /usr/local/filebeat-6.6.2-linux-x86_64 #es用户
nohup ./filebeat -e -c filebeat.yml -d "publish" &    #以后台进程形式启动filebeat服务
tail -f nohup.out  #查看启动日志(或者先以./filebeat -e -c filebeat.yml -d "publish"命令启动在控台打印启动日志确定可以成功关闭后再以后台形式启动)

确认 kibana 中是否存在 ngixn 的日志

浏览器中访问 http://ip:5601 #查看 kibana 中是否有 nginx 日

TODO:

  • Kibana 界面汉化