当前位置: 移动技术网 > IT编程>数据库>Mysql > Centos7搭建Elasticsearch + Logstash + filebeat + Kibana

Centos7搭建Elasticsearch + Logstash + filebeat + Kibana

2020年08月01日  | 移动技术网IT编程  | 我要评论
一、什么是ELKELK是Elasticsearch + Logstash + Kibana 这种架构的简写。这是一种日志分平台析的架构。二、ELK常见的几种架构1 Elasticsearch + Logstash + Kibana这是一种最简单的架构。这种架构,通过logstash收集日志,Elasticsearch分析日志,然后在Kibana(web界面)中展示。2Elasticsearch + Logstash + filebeat + Kibana与上一种架构相比,这种架构增.

一、什么是ELK

ELK是Elasticsearch + Logstash + Kibana 这种架构的简写。这是一种日志分平台析的架构。

二、ELK常见的几种架构

1 Elasticsearch + Logstash + Kibana

这是一种最简单的架构。这种架构,通过logstash收集日志,Elasticsearch分析日志,然后在Kibana(web界面)中展示。

2 Elasticsearch + Logstash + filebeat + Kibana

与上一种架构相比,这种架构增加了一个filebeat模块。filebeat是一个轻量的日志收集代理,用来部署在客户端,优势是消耗非常少的资源(较logstash), 所以生产中,往往会采取这种架构方式。当logstash出现故障, 会造成日志的丢失。

3 Elasticsearch + Logstash + filebeat + redis(也可以是其他中间件,比如kafka) + Kibana

这种架构是上面那个架构的完善版,通过增加中间件,来避免数据的丢失。当Logstash出现故障,日志还是存在中间件中,当Logstash再次启动,则会读取中间件中积压的日志。比较推荐这种方式。

说明: logstash节点和elasticsearch节点可以根据日志量伸缩数量, filebeat部署在每台需要收集日志的服务器上。

 

下面介绍一下第二种方式Elasticsearch + Logstash + filebeat + Kibana

1、搭建ELK-ElasticSearch7.5

      JDK1.8!!!

      新建用户 useradd es

      修改用户可创建文件数目

      vi /etc/security/limits.conf

      # 然后添加如下内容

      es soft nproc 50000
      es hard nproc 50000
      es soft nofile 65535
      es hard nofile 65535

      修改最大内存限制

      vi /etc/sysctl.conf

      # 添加下面的配置
      vm.max_map_count=655360

     # 保存好后执行命令
      sysctl -p

下载安装包并解压

# 进入安装目录
cd /opt

# 下载该文件
wget 'https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.5.1-linux-x86_64.tar.gz'

# 解压该文件
tar -zxf elasticsearch-7.5.1-linux-x86_64.tar.gz

# 给文件夹改变权限
chown -R es:es elasticsearch-7.5.1

# 进入es用户
su es


修改配置文件(config目录下的elasticsearch.yml)

#配置es的集群名称,默认是elasticsearch,es会自动发现在同一网段下的es,如果在同一网段下有多个集群,就可以用这个属性来区分不同的集群。
cluster.name: cluster
#节点名称
node.name: node-1
#设置索引数据的存储路径
path.data: /opt/elasticsearch-7.5.1/node/data
#设置日志的存储路径
path.logs: /opt/elasticsearch-7.5.1/node/logs
#设置当前的ip地址,通过指定相同网段的其他节点会加入该集群中
network.host: 0.0.0.0
#设置对外服务的http端口
http.port: 9200
#设置节点之间交互的端口号
transport.tcp.port: 9300
#设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
discovery.seed_hosts: ["127.0.0.1:9300"]
#设置集群节点达到什么数量再启动本地恢复
gateway.recover_after_nodes: 1


启动

#执行启动,并后台运行
./bin/elasticsearch &

检查是否安装成功

  1. 浏览器登录刚才服务器ip加端口9200,能访问成功,既是启动成功。
  2. 看看是否节点显示正常 浏览器输入 ip:9200/_cat/nodes?v

 

2、搭建ELK-logstash7

  •      wget https://artifacts.elastic.co/downloads/logstash/logstash-7.0.0.tar.gz
  •      tar -xzvf logstash-7.0.0.tar.gz
  •      mv logstash-7.0.0.tar.gz /usr/local/logstash 

读取文件直接发送到es

  • 修改/usr/local/logstash/config/logstash-sample.conf
  • input {
      #beats {
       # port => 5044
      #}
      file {
        path => "/var/log/httpd/access_log"
        start_position => beginning
      }
    }

    output {
      elasticsearch {
        hosts => ["http://localhost:9200"]
        index => "%{[@metadata][logstash]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
        #user => "elastic"
        #password => "changeme"
      }
    }

  • 检查配置文件是否正确:(假设当前目录为/usr/local/logstash/config/)
  • ../bin/logstash -t -f logstash-sample.conf
    启动:
    ../bin/logstash -f logstash-sample.conf
    加载本文件夹所有配置文件启动:
    ../bin/logstash -f ./
    或后台启动:
    nohup ../bin/logstash -f config/ &
  • 常用命令参数
    -f:通过这个命令可以指定Logstash的配置文件,根据配置文件配置logstash
    -e:后面跟着字符串,该字符串可以被当做logstash的配置(如果是“” 则默认使用stdin作为输入,stdout作为输出)
    -l:日志输出的地址(默认就是stdout直接在控制台中输出)
    -t:测试配置文件是否正确,然后退出。

读取filebeat发送到es

filebeat端配置请参照本文开头的[安装filebeat]一文中的logstash相关部分

  • 创建 /usr/local/logstash/config/logstash-filebeats.conf

   

input {
  beats {
    port => 5044
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "%{[@metadata][logstash-filebeats]}-%{[@metadata][version]}-%{+YYYY.MM.dd}"
    #user => "elastic"
    #password => "changeme"
  }
}

 

3、搭建ELK-kibana7

官网下载:https://www.elastic.co/cn/downloads/kibana

安装

tar -zxvf kibana-7.3.2-linux-x86_64.tar.gz
cd kibana-7.3.2-linux-x86_64

修改kibana相关配置

vim kibana.yml

修改server.host: "0.0.0.0"

elasticsearch.hosts: ["http://xxxx:9200"]

重启elasticsearch,然后启动kibana

最开始我们通过root用户来启动kibana会发现提示不应该使用root用户来运行它的,如果想用root来运行,必须明确指明--allow-root来运行,这是kibana的安全保护机制,所以我们尽可能的不要使用root来启动kibana,当我们使用RPM方式安装kibana的时候,就默认给我们创建了名为kibana的用户,我们应当像管理Elasticsearch那样通过systemctl来管理kibana

sudo systemctl daemon-reload

sudo systemctl enable kibana.service

如果需要域名可以部署nginx做一下代理xxxx:5601

server {
    listen      80;
    server_name elk.ktyiqiao.com;
    rewrite ^(.*) https://$server_name$1 permanent;
}
server {
        listen 443 ssl;
        ssl_certificate /data/ssl/ktyiqiao.com.pem;
        ssl_certificate_key /data/ssl/ktyiqiao.com.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
        ssl_prefer_server_ciphers on;
        ssl_session_timeout 10m;
        ssl_session_cache builtin:1000 shared:SSL:10m;
        ssl_buffer_size 1400;
        add_header Strict-Transport-Security max-age=15768000;
        ssl_stapling on;
        ssl_stapling_verify on;

        location / {
        proxy_pass http://xxxx:5601$request_uri;
        auth_basic "登陆验证";
        auth_basic_user_file /etc/nginx/htpasswd;
        #/etc/nginx/htpasswd是密码文件,路径自定义
    }
}

https更安全还有登陆验证!

 

4、安装filebeat

1、安装filebeat

本次采用yum安装,需要配置yum源

cd /etc/yum.repos.d

vim 文件名.repo

然后将下述内容添加到文件中,保存退出

[filebeat]

name=Elasticsearch repository for 7.x packages

baseurl=https://artifacts.elastic.co/packages/7.x/yum

gpgcheck=0

gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch

enabled=1

autorefresh=1

type=rpm-md

yum安装filebeat

yum -y install filebeat

rpm -qa filebeat     

安装好之后可用whereis filebeat查看下安装情况,方便找配置文件

配置filebeat

filebeat配置文件: filebeat.yml

find / -name filebeat.yml

vim /etc/filebeat/filebeat.yml 需要修改的地方如下

filebeat.inputs:

- type: log
  enabled: true
  paths:
    - /xxxx/logs/*.log
  multiline.pattern: '^\['
  multiline.negate: true
  multiline.match: after

output.logstash:
  # The Logstash hosts
  hosts: ["xxxx:5044"]

配置好之后启动filebeat

cd /usr/share/filebeat/bin

后台启动filebeat

如果直接启动运行会报错:

loading config file: stat filebeat.yml: no such file or direct

是因为未找到配置文件所致,这里采取简单的方法:在运行时直接加上配置文件路径

./filebeat -e -c /etc/filebeat/filebeat.yml

注意:filebeat没有监听端口,主要看日志和进程

后台方式启动filebeat:

 ./filebeat -e -c filebeat.yml >/dev/null 2>&1 &  将所有标准输出及标准错误输出到/dev/null空设备,即没有任何输出

./filebeat -e -c filebeat.yml > filebeat.log &

停止filebeat:查找进程ID并kill掉:

ps -ef |grep filebeat<br>kill -9  进程号

另外filebeat用法可以参考https://blog.csdn.net/maquealone/article/details/93200288

就此Elasticsearch + Logstash + filebeat + Kibana搭建完毕!

 

     
 

 

本文地址:https://blog.csdn.net/GGGoodLuck/article/details/108197433

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网