欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Centos7搭建Elasticsearch + Logstash + filebeat + Kibana

程序员文章站 2022-04-15 20:06:30
一、什么是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.****.net/maquealone/article/details/93200288

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

 

     
 

 

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

相关标签: ELK