本文是基于elasticsearch-7.9.2,logstash-7.9.2,kibana-7.9.2和filebeat-7.9.2搭建ELK的。

目录

1.Elasticsearch安装配置

2.kibana安装配置

3.Logstash安装配置

4.Filebeat安装配置


1.Elasticsearch安装配置

去官网下载elasticsearch的压缩包

# 新建es用户,elasticsearch不能用root用户启动
useradd es

# 修改es用户密码
passwd es

# 解压该文件
tar -zxf elasticsearch压缩包地址

# 在elasticsearch目录下创建path/data目录,用于elasticsearch数据的存放
mkdir path/data

# 修改该目录的拥有者为es
chown -R es:es path/data

# 在elasticsearch目录下创建path/log目录,用于elasticsearch日志的存放
mkdir path/log

# 修改该目录的拥有者为es
chown -R es:es path/log

# 修改配置文件elasticsearch.yml
vim /elasticsearch目录/config/elasticsearch.yml

修改内容如下

# 集群初始主节点
cluster.initial_master_nodes: ["node-1"]

# 节点名称
node.name: node-1

# 设置data存放的路径为
path.data: /elasticsearch目录/path/data

# 设置logs日志的路径
path.logs: /elasticsearch目录/path/log

# 设置允许所有ip可以连接该elasticsearch
network.host: 0.0.0.0

# 开启监听的端口为9200
http.port: 9200

# 增加新的参数,为了让elasticsearch-head插件可以访问es
http.cors.enabled: true
http.cors.allow-origin: "*"

# 启用密码
xpack.security.enabled: true

# 使用默认密码
xpack.security.authc.accept_default_password: true
xpack.security.transport.ssl.enabled: true

切换账号

su es

为内置账号添加密码

# interactive:给用户一一设置密码。
# auto:自动生成密码。
/elasticsearch目录/bin/elasticsearch-setup-passwords interactive

启动es

# 执行启动,并后台运行
cd /elasticsearch 安装目录/bin
./elasticsearch -d

测试是否启动成功,有返回值则表示成功

curl -XGET -u elastic 'localhost:9200/_xpack/security/user?pretty'

2.kibana安装配置

去官网下载kibana压缩包

# 解压该文件
tar -zxf kibana压缩包地址

# 修改修改kibana.yml
vim /kibana目录/config/kibana.yml

修改内容如下

# kibana端口
server.port: 5601

# 允许所有ip访问
server.host: "0.0.0.0"

# elasticsearch所在的ip及监听的地址
elasticsearch.hosts: ["http://localhost:9200"]

# kibana默认创建的索引
kibana.index: ".kibana"

# 字符编码
i18n.locale: "zh-CN"

# elasticsearch加密所需配置
xpack.reporting.encryptionKey: "a_random_string"
xpack.security.encryptionKey: "something_at_least_32_characters"

kibana密文配置es认证

/kibana目录/bin/kibana-keystore --allow-root create
/kibana目录/bin/kibana-keystore --allow-root add elasticsearch.username
/kibana目录/bin/kibana-keystore --allow-root add elasticsearch.password

启动kibana

cd /kibana目录/bin

./kibana --allow-root

3.Logstash安装配置

去官网下载logstash压缩包

# 解压该文件
tar -zxf logstash压缩包地址

# 在logstash目录下创建path/data目录,用于logstash数据的存放
mkdir path/data

# 修改该目录的拥有者为es
chown -R es:es path/data
 
# 在logstash目录下创建path/log目录,用于logstash日志的存放
mkdir path/log

# 修改该目录的拥有者为es
chown -R es:es path/log

# 在logstash目录下创建conf.d目录,用于logstash管道配置文件的存放
mkdir conf.d

# 修改该目录的拥有者为es
chown -R es:es conf.d

# 修改logstash.yml配置文件
vim /logstash目录/config/logstash.yml

修改内容如下

# 设置数据的存储路径为/path/data
path.data: /logstash目录/path/data

# 设置管道配置文件路径为/conf.d
path.config: /logstash目录/conf.d

# 设置日志文件的存储路径为/path/log
path.logs: /logstash目录/path/log

创建配置文件,日志内容输出到elasticsearch中,如下

vim /logstash目录/conf.d/logstash.conf

配置文件内容如下:

# 数据输入监听端口
input {
  beats {
    port => 5044
    codec => plain {
          charset => "UTF-8"
    }
  }
}

# 过滤器,把没用的信息过滤掉
filter{
    mutate{
        remove_field => ["host"]
        remove_field => ["agent"]
        remove_field => ["ecs"]
        remove_field => ["tags"]
        remove_field => ["@version"]
        remove_field => ["input"]
    }
}

# 输出到elasticsearch 
output {
	stdout { codec => rubydebug }
    elasticsearch {
        # elasticsearch地址
        hosts => ["localhost:9200"] 
        # elasticsearch用户名
		user => "****"
        # elasticsearch密码
		password => "****"
        # elasticsearch生成的索引,这里使用filebeat的[fields][type]参数值加年月日生成索引名
        index => "%{[fields][type]}-%{+YYYY.MM.dd}"
    }
}

注意:这边的elasticsearch的user和password需要在kibana里新建用户,不能用默认的用户,不然会连接不上elasticsearch

启动logstash

cd /logstash目录/bin

nohup ./logstash -f /logstash目录/conf.d/logstash.conf > /logstash目录/path/log/logstash.log 2>&1 &

4.Filebeat安装配置

去官网下载filebeat压缩包,并上传到需要收集日志的服务器上

# 解压该文件
tar -zxf filebeat压缩包地址

# 修改修改filebeat.yml
vim /filebeat目录/filebeat.yml

修改内容如下

filebeat.inputs:
# 日志传输列表
- type: log

  enabled: true

  paths:
    - 需要传输的日志文件全路径

  fields:
    type: elasticsearch索引名

  multiline:
    pattern: '^\s*\['
    negate:  true
    match: after

filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml

  reload.enabled: false

setup.template.settings:
  index.number_of_shards: 1

output.logstash:
  hosts: ["logstash的ip:logstash的端口"]

logging.level: info
logging.to_files: true
logging.files:
  path: /filebeat目录/log
  name: filebeat
  keepfiles: 7
  permissions: 0644

启动

cd /filebeat目录

nohup ./filebeat -e -c filebeat.yml > /filebeat目录/log/filebeat1.log 2>&1 &

注意:nohup命令启动filebeat进程运行一段时间后会出现filebeat进程宕掉的现象,解决办法如下:1、使用yum安装或RPM包安装。2、在当shell中执行nohup成功后,还需要按终端上键盘任意键退回到shell输入命令窗口,然后通过在shell中输入exit来退出终端。参考网站