ELK5.5+Filebeat分布式日志系统

殷临风 · · 5204 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

最近在用k8s管理项目, 每个容器都会打印自己的日志, 目前的解决方案是用ntfs4在线文件系统统一存储, 考虑到性能问题, 还是将日志打印到宿主机, 然后通过elk分布式日志收集. 但如果在每台服务器部署logstash是比较耗资源的, 毕竟是java项目. 好在作者重新用golang写了一套新的采集工具filebeat, 性能更高, 暂用资源也更少, 所以这里在每台服务器部署filebeat采集日志, 然后统一缓存到redis, 而elk所在的服务器通过logstashredis里面取数据, 然后发送给elasticsearch分析, 通过kibana显示


此图是盗用别人的, 但能够很好的展示流程, 所以自己就不画了

一. 日志服务器配置

下载二进制文件到/mnt挂在目录

# 进入挂载目录  
cd /mnt
# 创建elk文件夹
mkdir elk

# 下载elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.5.1.tar.gz
# 下载kibana
wget https://artifacts.elastic.co/downloads/kibana/kibana-5.5.1-linux-x86_64.tar.gz
# 下载logstash
wget https://artifacts.elastic.co/downloads/logstash/logstash-5.5.1.tar.gz

# 分别解压
tar -zxvf elasticsearch-5.5.1.tar.gz
tar -zxvf kibana-5.5.1.tar.gz
tar -zxvf logstash-5.5.1.tar.gz

# 移动到elk目录
mv elasticsearch-5.5.1 elk/elasticsearch
mv kibana-5.5.1 elk/kibana
mv logstash-5.5.1 elk/logstash
1.配置Elasticsearch
# 进入目录(`ES_HOME`所在的目录)
cd /mnt/elk/elasticsearch
# 安装X-Pack
bin/elasticsearch-plugin install x-pack

# 编辑配置文件
vi config/elasticsearch.yml
# 头部添加
#################################################
cluster.name: yinnote-elastic
network.host: 127.0.0.1
#################################################

cluster.name 集群的名称
network.host 服务监听地址, 最好设置成本机, 没有必要对外开放
http.port 默认9200
path.logs 默认ES_HOME/logs
path.data 默认ES_HOME/data

# 启动(daemon方式)
bin/elasticsearch -d

配置登录认证, 从5.5版本开始, Shield已经集成到X-Pack, 不需要额外安装

# 配置elastic账号的密码
curl -XPUT -u elastic 'localhost:9200/_xpack/security/user/elastic/_password'
-H "Content-Type: application/json" -d '{
   "password" : "123456"
}'

# 配置kibana账号的密码
curl -XPUT -u elastic 'localhost:9200/_xpack/security/user/kibana/_password'
-H "Content-Type: application/json" -d '{
   "password" : "123456"
}'

# 配置elastic账号的密码
curl -XPUT -u elastic 'localhost:9200/_xpack/security/user/logstash_system/_password'
-H "Content-Type: application/json" -d '{
   "password" : "123456"
}'

# 生成密钥
bin/x-pack/syskeygen

# 修改配置文件, 重启
vi config/elasticsearch.yml
# 添加密钥支持
#################################################
xpack.security.audit.enabled: true
#################################################
# 重启Elasticsearch
kill -9 [pid]
bin/elasticsearch -d
2.配置Kibana
# 进入目录(KIBABA_HOME所在的目录)
cd /mnt/elk/kibana
# 安装X-Pack
bin/kibana-plugin install x-pack

# 配置文件
vi config
# 头部添加
#################################################
server.host: "0.0.0.0."
elasticsearch.username: "elastic"
elasticsearch.password: "123456"
#################################################

server.port 对外端口, 默认5601
server.host 对外监听ip, 如果有nginx代理, 可以设置成127.0.0.1
elasticsearch.url es地址, 默认http://127.0.0.1:9200
elasticsearch.username elastic账号
elasticsearch.password elastic密码

# 启动(daemon方式)
bin/kibana -d
3.配置Logstash

模式一: 从filebeat获取采集数据

# 进入目录(LOGSTASH_HOME所在的目录)
cd /mnt/elk/logstash
# 创建配置文件
vi client-http.conf
# 添加
#################################################
input {
    beats {
        port => 5044
        codec => "json"
    }
}
output {
    elasticsearch {
        hosts => ["127.0.0.1:9200"]
        index => "logstash-nginx-error-%{+YYYY.MM.dd}"
        user => "elastic"
        password => "123456"
    }
    stdout {codec => rubydebug}
}
#################################################

# 启动服务(监听模式, 便于查看数据)
bin/logstash -e -f client-http.conf

模式二: 从redis获取采集数据

# 创建配置文件
vi client-redis.conf
# 添加
#################################################
input {
    redis {
        host => "127.0.0.1"
        port => "6379"
        key => "filebeat"
        data_type => "list"
        password => "redis的密码"
        threads => 50
    }
}
output {
    elasticsearch {
        hosts => ["127.0.0.1:9200"]
        index => "logstash-nginx-error-%{+YYYY.MM.dd}"
        user => "elastic"
        password => "123456"
    }
    stdout {codec => rubydebug}
}
#################################################

# 启动服务(监听模式, 便于查看数据)
bin/logstash -e -f client-http.conf

二. 客户端数据采集配置

# 下载安装
cd /mnt
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.5.1-linux-x86_64.tar.gz
tar -zxvf filebeat-5.5.1-linux-x86_64.tar.gz
mv filebeat-5.5.1-linux-x86_64 filebeat
# 进入目录
cd filebeat

模式一: 通过RESTful接口发送数据 (同Logstash模式一对应)

# 创建配置文件
vi client-http.yml
# 添加
#################################################
filebeat.prospectors:

- input_type: log
  paths:
    - /mnt/logs/nginx/error.log
  fields:
    feature: nginx-err

output.logstash:
  hosts: ["yinnote.com:5044"]
#################################################
# 启动服务(监听模式, 便于查看数据)
./filebeat -c client-http.yml

模式二: 通过Redis接口发送数据 (同Logstash模式二对应)

# 创建配置文件
vi client-redis.yml
# 添加
#################################################
filebeat.prospectors:

- input_type: log
  paths:
    - /mnt/logs/nginx/error.log
  fields:
    feature: nginx-err

output.redis:
  hosts: ["yinnote.com"]
  port: 6379
  password: "redis的密码"
#################################################
# 启动服务(监听模式, 便于查看数据)
./filebeat -c client-redis.yml

访问后台

1. 浏览器访问  http://yinnote.com:5601

2. 输入elastic用户和密码即可登录

3. 点击左侧的 discover 菜单, 即可查看日志采集情况

时间比较匆忙, 写得比较简洁, 这里主要是介绍最精简的配置方式部署, 所以很多配置参数没有介绍, 另外关于Elasticsearch集群的部署没有介绍, 后续会专门写一篇.


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:殷临风

查看原文:ELK5.5+Filebeat分布式日志系统

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

5204 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传