ELK体系部署文档(elk+filebeat+redis)

该教程只提供简单部署,如果需要深入了解,可以查看官方文档
https://www.elastic.co/guide/index.html

为了方便演示,此处采用单台服务器进行部署,服务器资源至少需要2核4G

系统架构:
在这里插入图片描述

1、传统部署

我们先部署一个nginx、用来模拟业务日志

1、部署、测试
yum -y install nginx
systemctl start nginx
curl 127.0.0.1
tail /var/log/nginx/access.log

2、修改nginx日志格式
nginx日志默认格式为log格式,传输到es中需要经过grok插件进行处理并转换成json格式,这一过程是很消耗logstash资源的,而且传入到es中的字段并不容易分析,所以在收集端先将日志转为json格式,再传入es中去,这样传入的字段也是利于分析的。
编辑nginx配置文件

vim /usr/local/nginx/conf/nginx.conf   #修改主配置文件,定义日志格式
---------------------------------------------------------
log_format json '{ "@timestamp": "$time_iso8601", '
                         '"time": "$time_iso8601", '
                         '"clientip": "$remote_addr", '
                         '"remote_user": "$remote_user", '
                         '"body_bytes_sent": "$body_bytes_sent", '
                         '"request_time": "$request_time", '
                         '"status": "$status", '
                         '"host": "$host", '
                         '"request": "$request", '
                         '"request_method": "$request_method", '
                         '"uri": "$uri", '
                         '"http_referrer": "$http_referer", '
                         '"body_bytes_sent":"$body_bytes_sent", '
                         '"http_x_forwarded_for": "$http_x_forwarded_for", '
                         '"http_user_agent": "$http_user_agent" '
                    '}';
access_log /var/log/nginx/io.log json ;
---------------------------------------------------------
systemctl restart nginx

1.1 filebeat部署

filebeat是一个轻量级的日志采集器。虽然logstash可以采集,但是由于logstash比较消耗资源,不适合在每台主机上部署logstash。

1.安装
curl -L -O https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.0.1-x86_64.rpm
rpm -vi filebeat-7.0.1-x86_64.rpm

2.修改配置文件
vim /etc/filebeat/filebeat.yml
--------------------------------------
# 日志输入
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/access.log
  fields:
    type: nginx_access
  fields_under_root: true
setup.template.settings:
  index.number_of_shards: 1
# 日志输出
output.redis:
   hosts: ["redis_ip:6379"]
   key: "nginx"
   keys:
     - key: "%{[type]}"
processors:
  - add_host_metadata: ~
  - add_cloud_metadata: ~
----------------------------------------
systemctl restart filebeat

1.2 redis部署

redis服务器是logstash官方推荐的broker(代理人)选择,broker角色也就意味着会同时存在输入和输出两个插件,产生数据的被称作生产者,而消费数据的被称作消费者。

redis消息队列作用说明:
1、防止Logstash和ES无法正常通信,从而丢失日志。
2、防止日志量过大导致ES无法承受大量写操作从而丢失日志。
3、应用程序(php,java)在输出日志时,可以直接输出到消息队列,从而完成日志收集。

补充:如果redis使用的消息队列出现扩展瓶颈,可以使用更加强大的kafka,flume来代替。

1、编译安装
wget http://download.redis.io/releases/redis-4.0.11.tar.gz  #下载Redis源码
tar -zxf redis-4.0.11.tar.gz      #解压Redis源码
cp -r redis-4.0.11 /usr/local/    
mv redis-4.0.11/ redis
cd /usr/local/redis/
cp redis.conf bin/
make PREFIX=/usr/local/redis install     #编译安装Redis
echo "export PATH=$PATH:/usr/local/redis/bin" >> /etc/profile   将Redis加入环境变量

2.后端模式启动
vim /usr/local/redis/bin/redis.conf
daemonize yes

redis-server redis.conf

3、访问nginx产生几条日志,然后查看redis数据
redis-cli
> llen nginx_access

1.3 logstash部署

1、安装jdk 1.8
yum -y install java

2.下载并安装公共签名密钥
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

3.添加logstash的yum仓库
vim /etc/yum.repos.d/logstash.repo
[logstash-6.x]
name=Elastic repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

4.使用yum安装logstash
yum install logstash

5.修改配置
vim /etc/logstash/conf.d/test.log
-----------------------
input {
    redis {
        host => "redis_ip"
        port => 6379
        type => "nginx_access"
        data_type => "list"
        key => "nginx_access"
        codec => "json"
    }
}

output {
    if [type] == "nginx_access" {
      elasticsearch {
        hosts => ["es_ip:9200"]
        index => "nginx_access-%{+YYYY.MM.dd}"
      }
      stdout {
                codec => rubydebug
      }
    }   
}
-----------------------
6、运行logstash
logstash -f /etc/logstash/conf.d/test.conf

观察redis里面得数量是否消费掉
在这里插入图片描述

1.4 elasticsearch

elasticsearch同样需要Java运行环境

1、下载
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.3.rpm
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.3.rpm.sha512
shasum -a 512 -c elasticsearch-6.4.3.rpm.sha512 
sudo rpm --install elasticsearch-6.4.3.rpm

2.修改配置文件
[root@elastic elasticsearch-6.4.0]# vim config/elasticsearch.yml
修改内容如下:
cluster.name: my-elk     #设置集群的名字
node.name: es1            #集群中的节点名称,同一集群中的节点名称不能重复
path.data: /elasticsearch/elasticsearch-6.4.0/data    #设置es集群的数据位置
path.logs: /elasticsearch/elasticsearch-6.4.0/logs/    #设置存放日志的路径
network.host: 192.168.100.101       #绑定本地ip地址
http.port: 9200       #设置开放的端口,默认就是9200端口

3、授权
chown elasticsearch.elasticsearch /usr/local/elasticsearch -R
chown elasticsearch.elasticsearch /elasticsearch -R

4、开启
systemctl start elasticsearch.service

1.5 kibana部署

1、安装
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.4.3-x86_64.rpm
shasum -a 512 kibana-6.4.3-x86_64.rpm 
sudo rpm --install kibana-6.4.3-x86_64.rpm

2、修改配置
vim /etc/kibana/kibana.yml
server.port: 5601                             #kibana默认端口是5601
server.host: "192.168.100.101"       #设置绑定的kibana服务的地址
elasticsearch.url: "http://192.168.100.101:9200"    #设置elasticsearch服务器的ip地址,不修改的话启动的时候会报[elasticsearch] Unable to revive connection: http://localhost:9200/连接不上elasticsearch的错误

3、启动
systemctl start kibana
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值