ELK日志分析平台——ELK海量日志分析平台搭建-1

目录

1、整体架构

2、filebeat安装配置

3、Redis安装配置

4、配置filebeat-redis集成

5、elasticsearch和kibana安装配置

6、logstash安装配置

7、开始整个ELK项目流程打通


1、整体架构

系统日志数据app.log-->filebeat(6.6)-->redis-->logstash(parse)-->es-->kibana 
filebeat   -----轻量级的日志收集工具 ,192.168.198.136/137/138
redis       -----防止filebeat和logstash耦合性太高,队列存储数据,136主从
Logstash-----接收所有日志,监控,过滤,收集日志 ,读取,解析,136
es          -----三台服务器集群,136/137/138,之前已配置 ,存储日志,提供搜索功能 
Kibana   -----提供web界面,支持查询,统计,图表展现,136

2、filebeat安装配置

#filebeat安装
[root@master app]# tar zxvf filebeat-6.6.1-linux-x86_64.tar.gz 
[root@master app]# ln -s filebeat-6.6.1-linux-x86_64/ filebeat

#创建日志收集文件
[root@master data]# touch /data/filebeat/app.log

#配置log输入console输出
#配置输入
可以配置filebeat从哪里接收读取日志等数据,例如log,redis,tcp等
#配置输出
可以配置filebeat输出位置,例如elasticsearch Logstash Kafka redis等
可以通过设置配置文件output部分中的选项将Filebeat配置为写入特定输出filebeat.yml。只能定义一个输出。
#官方filebeat配置api
https://www.elastic.co/guide/en/beats/filebeat/current/configuring-howto-filebeat.html 
[root@master data]# cp filebeat.yml filebeat_console.yml
[root@master data]# vi filebeat_console.yml
# Change to true to enable this input configuration.
#设置输入类型为log,接收读取目录
 enabled: true
 paths:
   - /data/filebeat/app.log
#设置console格式化输出结果,其他out注释掉
output.console:
  pretty: true
#启动filebeat,-c指定要加载的配置文件
[root@master filebeat]./filebeat -c filebeat_console.yml
#测试数据输入到指定目录,filebeat已收集并json显示
[root@master data]# echo "123" >> /data/filebeat/app.log
[root@master filebeat]# ./filebeat -c filebeat_console.yml 
{
  "@timestamp": "2019-08-21T04:00:47.714Z",
  "@metadata": {
    "beat": "filebeat",
    "type": "doc",
    "version": "6.6.1"
  "message": "123",
  "source": "/data/filebeat/app.log",
  "prospector": {
    "type": "log"
  }

#nohup后台启动
[root@master filebeat]nohup ./filebeat -c filebeat_console.yml >/dev/null 2>&1 &


3、Redis安装配置

#源码编译安装redis
[root@master app]# yum install -y open-ssl-devel gcc glibc gcc-c*
[root@master app]# wget http://download.redis.io/releases/redis-2.8.12.tar.gz
[root@master app]# ln -s redis-2.8.12/ redis
[root@master redis]# make MALLOC=libc 
[root@master src]# cd src/
[root@master src]# make install PREFIX=/usr/local/redis

#配置
为了方便管理,将Redis文件中的conf配置文件和常用命令移动到统一文件夹中
[root@master redis]# mkdir -p /usr/local/redis/etc 
[root@master redis]# cp redis.conf /usr/local/redis/etc/ 
[root@master redis]# cp mkreleasehdr.sh redis-benchmark redischeck-aof  redis-cli redis-sentinel redis-server /usr/local/redis/bin/ 

#启动redis
[root@master src]# cd /usr/local/redis/
[root@master bin]# ./redis-server 

#创建一个索引,查询测试redis是否正常可用
[root@master redis]# bin/redis-cli
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set man "haha"
OK
127.0.0.1:6379> keys *
1) "man"
127.0.0.1:6379> get man
"haha"

4、配置filebeat-redis集成

#之前已配置console输出方式,改为redis输出,输入目录之前已配置好
[root@master filebeat]# cp filebeat_console.yml filebeat_redis.yml
[root@master filebeat]# vi filebeat_redis.yml

#================================ Outputs-redis ==============================
output.redis:
  hosts: ["192.168.198.136"]
  key: "filebeat"
  db: 0
  timeout: 5


#启动filebeat和redis
[root@master filebeat]# nohup ./filebeat -c filebeat_redis.yml >/dev/null 2>&1 & 
[root@master redis]# bin/redis-server 

#测试两条数据写入app.log,该日志文件被filebeat采集后输出到redis,所有我们要看redis
#是否会同步这两条测试数据,如果同步,说明日志->filebear->redis是通的
[root@master redis]# echo "456" >> /data/filebeat/app.log 
[root@master redis]# echo "789" >> /data/filebeat/app.log    
[root@master redis]# bin/redis-cli                                           
127.0.0.1:6379> keys *
1) "filebeat"
127.0.0.1:6379> llen filebeat
(integer) 2
127.0.0.1:6379> rpop filebeat
"{\"@timestamp\":\"2019-08-21T06:38:13.015Z\",\"@metadata\":{\"beat\":\"filebeat\",\"type\":\"doc\",\"version\":\"6.6.1\"},\"source\":\"/data/filebeat/app.log\",\"offset\":8,\"log\":{\"file\":{\"path\":\"/data/filebeat/app.log\"}},\"message\":\"789\",\"input\":{\"type\":\"log\"},\"prospector\":{\"type\":\"log\"},\"beat\":{\"hostname\":\"master\",\"version\":\"6.6.1\",\"name\":\"master\"},\"host\":{\"name\":\"master\",\"containerized\":true,\"architecture\":\"x86_64\",\"os\":{\"platform\":\"centos\",\"version\":\"6.8 (Final)\",\"family\":\"redhat\",\"name\":\"CentOS\",\"codename\":\"Final\"}}}"
#数据流通正常,ok!

5、elasticsearch和kibana安装配置

见之前文章《ES集群安装配置》

6、logstash安装配置

#logstash安装
[root@master app]# ll | grep logstash
lrwxrwxrwx  1 root root   15 8月  21 11:33 logstash -> logstash-6.6.1/

#测试输入输出是否正常
[root@master logstash]# bin/logstash -e 'input { stdin { } } output { stdout {} }'
123
#稍等启动中。。。
[2019-08-22T06:29:08,003][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}
"@timestamp" => 2019-08-21T22:29:07.103Z,
          "host" => "master",
       "message" => "123",
      "@version" => "1"

#配置logstash,输入源配置redis,输出到es
https://www.elastic.co/guide/en/logstash/6.6/pluginsoutputs-elasticsearch.html 
[root@master config]# vi redis_logstash_es.conf
input{
  redis{
    host => "192.168.198.136"
    port => 6379
    data_type => "list"
    key => "filebeat"
}
}
output{
  elasticsearch {
    hosts => "192.168.198.136:9200"
    user => "elastic"
    password => "123456"
}
}

#启动运行加载redis-logstash配置文件
[root@master logstash]# bin/logstash -f config/redis_logstash_es.conf
此时,redis队列的数据会自动消费到logstash中去。

7、开始整个ELK项目流程打通

*******************************************************
把所有服务都搞起来!
*******************************************************

#同步时间

ntpdate ntp1.aliyun.com
#启动filebeat

[root@master filebeat]# nohup ./filebeat -c filebeat_redis.yml 2&>1 &
#启动redis
[root@master src]# sh /usr/local/redis/bin/redis-server
#启动logstash
[root@master logstash]# bin/logstash -f config/redis_logstash_es.conf
#启动es
常遇问题:es用户启动,配置文件lock,es日志等数据存放目录所有者权限
[es@smaster bin]$ ./elasticsearch -d
#启动kinaba
[root@master kinaba]$ sh /app/kibana/bin/kibana

*******************************************************
怎么判断app.log-->filebeat-->redis是通的
*******************************************************
#插入日志,发现redis已生成索引
[root@master filebeat]# echo '110.52.250.126 - - [24/Apr/2019:17:38:20 +0800] "GET /data/cache/style_1_widthauto.css?y7a HTTP/1.1" 200 1292' >app.log

[root@master bin]# ./redis-cli 
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> keys *
1) "filebeat"

*******************************************************
最终怎么判断呢?搞两条日志,看看最后能不能kibana显示出来就好了
*******************************************************
http://192.168.198.136:9200/_cluster/health?pretty
http://192.168.198.138:9200/
http://192.168.198.136:5601
Monitoring:监控ElasticSearch集群 
Discovery:数据检索 
 

 

发布了64 篇原创文章 · 获赞 9 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/weixin_39855998/article/details/100030278