相关文章推荐
被表白的书签  ·  ubuntu卸载gitkraken·  10 月前    · 
爱听歌的领带  ·  install python 2.7 ...·  1 年前    · 
淡定的炒饭  ·  javascript - Go back ...·  1 年前    · 
7.0.1

2、ELK环境准备

由于Elasticsearch、Logstash、Kibana均不能以root账号运行。 但是Linux对非root账号可并发操作的文件、线程都有限制。 所以,部署ELK相关的机器都要调整:

修改文件限制

# 修改系统文件
vi /etc/security/limits.conf

#增加的内容

* soft nofile 65536
* hard nofile 65536
* soft nproc 2048
* hard nproc 4096

调整进程数

#修改系统文件
vi /etc/security/limits.d/20-nproc.conf

#调整成以下配置
*         soft   nproc     4096
root       soft   nproc     unlimited

调整虚拟内存&最大并发连接

#修改系统文件
vi /etc/sysctl.conf

#增加的内容
vm.max_map_count=655360
fs.file-max=655360

创建ELK专用用户

useradd elk

创建ELK相关目录并赋权

#创建ELK 数据目录
mkdir /data/elk/
#创建ELK APP目录
将解压后的压缩包mv至data/elk

#更改目录Owner
chown -R elk:elk /data/elk

3、ELK组件包下载地址

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.1-linux-x86_64.tar.gz

二、Elasticsearch 部署

本次一共要部署两个Elasticsearch节点,所有文中没有指定机器的操作都表示每个Elasticsearch机器都要执行该操作

1、准备工作

移动Elasticsearch到统一目录

root@elasticsearch-01:/data/elk# ls elasticsearch-7.0.1 root@elasticsearch-01:/data/elk#

su - elk

数据&日志目录

创建Elasticsearch主目录
mkdir /data/elk/es
#创建Elasticsearch数据目录
mkdir /data/elk/es/data
#创建Elasticsearch日志目录
mkdir /data/elk/es/logs

2、Elasticsearch节点配置

#打开目录
cd /data/elk/elasticsearch-7.0.1/
#修改配置

vi config/elasticsearch.yml

主节点配置(192.168.227.93)

cluster.name: my-application
node.name: node-1
node.attr.rack: r1
path.data: /data/elk/es/data
path.logs: /data/elk/es/logs
bootstrap.memory_lock: true
network.host: 192.168.227.93
http.port: 9200
discovery.seed_hosts: ["192.168.227.93", "192.168.227.91"]
cluster.initial_master_nodes: ["node-1"]
action.destructive_requires_name: true

从节点配置(192.168.227.91)

cluster.name: my-application
node.name: node-2
node.attr.rack: r1
path.data: /data/elk/es/data
path.logs: /data/elk/es/logs
network.host: 192.168.227.91
http.port: 9200
discovery.seed_hosts: ["192.168.227.93", "192.168.227.91"]
action.destructive_requires_name: true

配置项说明

cluster.name node.name path.data 数据保存目录 path.logs 日志保存目录 network.host 节点host/ip http.port HTTP访问端口 transport.tcp.port TCP传输端口 node.master 是否允许作为主节点 node.data 是否保存数据 discovery.zen.ping.unicast.hosts 集群中的主节点的初始列表,当节点(主节点或者数据节点)启动时使用这个列表进行探测 discovery.zen.minimum_master_nodes 主节点个数

3、Elasticsearch启动&健康检查

#进入elasticsearch根目录
cd /data/elk/elasticsearch-7.0.1/
#启动
./bin/elasticsearch &
三、Kibana部署

下载地址: https://artifacts.elastic.co/downloads/kibana/kibana-7.0.1-linux-x86_64.tar.gz

1、机器准备

初始化环境,建立用户和安装路径

hostnamectl set-hotname kibana
useradd elk
mkdir /usr/elk
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.0.1-linux-x86_64.tar.gz
tar -xf kibana-7.0.1-linux-x86_64.tar.gz -C usr/elk/ ##解压包至elk目录
chown -R elk:elk /usr/elk

2、修改kibana配置文件

elk@kibana:/usr/elk$ cat /usr/elk/kibana-7.0.1/config/kibana.yml| grep -Ev '^$|#'

i18n.locale: "zh-CN" ###设置为中文
server.port: 5601     ##监听端口
server.host: "192.168.227.90"    
elasticsearch.hosts: "http://192.168.227.93:9200"   ##es主机

3、启动kibana

su elk

./usr/elk/kibana-7.0.1/bin/kibana & 启动kibana后台运行
四、Logstash对接es

1、机器准备

注意:这里是在需要对接日志的机器安装,此处不安装在192.168.227.88机器上,这台机器给第八步骤使用!

在需要对接日志的机器上安装logstash,然后对接elasticsearch主机。

logstash下载地址: https://artifacts.elastic.co/downloads/logstash/logstash-7.0.1.tar.gz

以下是脚本,快速创建修改目录以及安装logstash



appdeploy@CDT-SIT-APP-03:~$ cat logstash_install.sh
#!/bin/bash

#创建elk用户
useradd elk

#创建相关目录
mkdir /usr/elk
mkdir -p /data/elk/logstash/data
mkdir -p /data/elk/logstash/logs

#安装logstash
tar -xf logstash-7.0.1.tar.gz
mv logstash-7.0.1 /usr/elk/logstash-7.0.1

echo "path.data: /data/elk/logstash/data" >> /usr/elk/logstash-7.0.1/config/logstash.yml
echo "path.data: /data/elk/logstash/logs" >> /usr/elk/logstash-7.0.1/config/logstash.yml

chown -R elk:elk /data/elk
chown -R elk:elk /usr/elk

2、建立conf文件

首先,logstash agent按配置好的规则从每台服务器上收集log,收集好后发送给elasticsearch,elasticsearch再创建索引并存储,最后再通过kibana结合es从web界面进行查询和展示。

了解流程后,需要了解logstash是怎么从日志里收集数据的。这里,就需要建立conf文件了。如下:

root@CDT-SIT-APP-03:/usr/elk/logstash-7.0.1/config# cat input-output.conf

input {
file{
path => ["/data/logs/cec-evcs-data-service-9267.log"]

start_position => beginning

codec=>plain

discover_interval=>30

}

}

output {
    stdout { codec => plain }

    elasticsearch {
        hosts => "192.168.227.93:9200"

        index => "cec_evcs_data_service_9267-%{+YYYY.MM.dd}"
      ## 日志背后以年月日结尾作为日志切割,方便后期的日志清理。

}

}

3、执行启动Logstash

su elk

/usr/elk/logstash-7.0.1/bin/logstash -f /usr/elk/logstash-7.0.1/config/input-output.conf --config.reload.automatic >/dev/null &
五、kibana页面

1、查看节点信息

点击左侧列表:堆栈监测

选择节点:

2、创建索引

点击左侧列表:管理

创建索引模式即可,如下图

索引模式为:cec_evcs_data_service_9267*

创建索引,以时间筛选字段。

3、查看日志分析

六、ELK定时删除日志

以下这个地址是主es的日志存储展示,自行更换ip哈。因为是主从结构,所以删除主es的即会同步删除从es的日志。

http://192.168.227.91:9200/_cat/indices?v

1、执行脚本删除

将以下脚本放至主es的/data/elk/clear_log_script目录下,

脚本说明:前提是日志以日期切片保存,然后筛选多少天前的日志出来保存至指定文本,for循环执行删除日志。删除主es的即可。

cat /data/elk/clear_log_script/clear_log.sh

  #!/bin/bash
  #删除ELK10天前的日志,自己看情况改。
   
  DATE=`date -d "10 days ago" +%Y.%m.%d`
   
  curl -s -XGET http://127.0.0.1:9200/_cat/indices?v| grep $DATE | awk -F '[ ]+' '{print $3}' >/data/elk/clear_log_script/elk.log
   
  for elk in `cat /data/elk/clear_log_script/elk.log`
   
  do
   
  curl -XDELETE "http://192.168.227.93:9200/$elk"
   
  done

加入到定时任务

# crontab -e

#每天凌晨1点定时清理elk索引`

00 01 * * * bash /data/elk/clear_log_script/clear_log.sh &>/dev/null

注意:保证crond服务是启动的

2、kibana页面删除es存储索引

1、filebeat启动

后台启动生成日志文件

进入file-..*目录下 nohup ./filebeat -e -c filebeat.yml -d "Publish" & > nohup.out

后台启动不生成日志

./filebeat -e -c filebeat.yml -d "Publish" >/dev/null 2>&1 &

关键在于最后的 >/dev/null 2>&1 部分,/dev/null是一个虚拟的空设备(类似物理中的黑洞),任何输出信息被重定向到该设备后,将会石沉大海 /dev/null 表示将标准输出信息重定向到"黑洞" 2>&1 表示将标准错误重定向到标准输出(由于标准输出已经定向到“黑洞”了,即:标准输出此时也是"黑洞",再将标准错误输出定向到标准输出,相当于错误输出也被定向至“黑洞”)

2、logstash 启动

后台启动生成日志文件

进入logstash-..*目录下 我这里为了方便把logstash-sample.conf 文件放在了bin目录下 nohup ./bin/logstash -f bin/logstash-sample.conf & > nohup.out

后台启动不生成日志

./bin/logstash -f bin/logstash-sample.conf >/dev/null 2>&1 &

3、启动elasticsearch

后台启动生成日志

进入elastic-..*/bin 目录下 nohup ./elasticsearch & > nohup.out

后台启动不生成日志

./elasticsearch >/dev/null 2>&1 &

八、ELK+filebeat

以上已经实现了logstash采集日志存储至ES,然后kibana展示。为避免logstash作为日志采集器客户端占用资源过大,在原有基础上增加一个filebeat。即设置机器作为Logstash的服务端。其他存有日志的机器上安装轻量级的filebeat作为日志采集器(安装包才十几M)。

部署Logstash服务端

1、部署Logstash服务端

注意:此处安装在192.168.227.88机器上作为服务端接收filebeat

在需要对接日志的机器上安装logstash,然后对接elasticsearch主机。

logstash下载地址: https://artifacts.elastic.co/downloads/logstash/logstash-7.0.1.tar.gz

以下是脚本,快速创建修改目录以及安装logstash


appdeploy@CDT-SIT-APP-03:~$ cat logstash_install.sh
#!/bin/bash

#创建elk用户
useradd elk

#创建相关目录
mkdir /usr/elk
mkdir -p /data/elk/logstash/data
mkdir -p /data/elk/logstash/logs

#安装logstash
tar -xf logstash-7.0.1.tar.gz
mv logstash-7.0.1 /usr/elk/logstash-7.0.1

echo "path.data: /data/elk/logstash/data" >> /usr/elk/logstash-7.0.1/config/logstash.yml
echo "path.data: /data/elk/logstash/logs" >> /usr/elk/logstash-7.0.1/config/logstash.yml

chown -R elk:elk /data/elk
chown -R elk:elk /usr/elk

2、建立conf文件

首先,logstash服务端按配置好的规则从每台filebeat服务器上接收log,收集好后发送给elasticsearch,elasticsearch再创建索引并存储,最后再通过kibana结合es从web界面进行查询和展示。

了解流程后,需要了解logstash是怎么从filebeat收集数据的。这里,就需要建立conf文件了。如下:

以下是采集多个日志分别推送至es创建索引,有nginx和java得日志,通过if语句判断存储至指定索引。


root@logstash:/usr/elk/logstash-7.0.1/config# vi logstash.conf

input {
beats {

port => 5044

}
}

output {
    elasticsearch {
        hosts => "192.168.227.93:9200"

        index => "cec-evcs-data-service-msg-%{+YYYY.MM.dd}"
}
}
output {
  if [tags][0] == "test_nginx"{
    elasticsearch {
      hosts => ["192.168.227.93:9200"]
      index => "test_nginx-%{+YYYY.MM.dd}"
    }
  }
  if [tags][0] == "service-msg"{
    elasticsearch {
      hosts => ["192.168.227.93:9200"]
      index => "service-msg-%{+YYYY.MM.dd}"
    }
  }
if [tags][0] == "exam_log"{
    elasticsearch {
      hosts => ["192.168.227.93:9200"]
      index => "exam-log-%{+YYYY.MM.dd}"
    }
  }
}

3、执行启动Logstash

su elk

/usr/elk/logstash-7.0.1/bin/logstash -f /usr/elk/logstash-7.0.1/config/input-output.conf --config.reload.automatic >/dev/null &

被控端部署filebeat

安装包连接:wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.0.1-linux-x86_64.tar.gz

1、准备filebeat客户端采集日志

useradd elk

#创建相关目录
mkdir /usr/elk
mkdir -p /data/elk/
mkdir -p /data/elk/

#安装filebeat
tar -xf filebeat-7.0.1.tar.gz
mv logstash-7.0.1 /usr/elk/logstash-7.0.1


chown -R elk:elk /data/elk
chown -R elk:elk /usr/elk

2、修改conf文件

这台机器接入java日志

appdeploy@CDT-SIT-APP-03:/usr/elk/filebeat-7.0.1$ cat filebeat_min.yml 
filebeat.inputs:
- type: log
enabled: true
paths:
  - /data/logs/cec-evcs-data-service-msg.log
tags: ["service-msg"]
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
setup.template.settings:
index.number_of_shards: 1
setup.kibana:
output.logstash:
hosts: ["192.168.227.88:5044"]
processors:
- add_host_metadata: ~
- add_cloud_metadata: ~

这台机器接入nginx日志

root@CDT-PT-NGINX-02:/home/appdeploy# cat /usr/elk/filebeat-7.0.1/filebeat2.yml
filebeat.inputs:
- type: log
enabled: true
paths:
  - /data/test2.log
tags: ["test_nginx"]
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
setup.template.settings:
index.number_of_shards: 1
setup.kibana:
output.logstash:
hosts: ["192.168.227.88:5044"]
processors:
- add_host_metadata: ~
- add_cloud_metadata: ~

3、启动filebeat

nohup /usr/elk/filebeat-7.0.1/filebeat -e -c /usr/elk/filebeat-7.0.1/filebeat.yml >/dev/null 2>&1 &
专业从事搬砖多年,还是在继续搬砖中,厚积薄发~
7.0.1

2、ELK环境准备

由于Elasticsearch、Logstash、Kibana均不能以root账号运行。 但是Linux对非root账号可并发操作的文件、线程都有限制。 所以,部署ELK相关的机器都要调整:

修改文件限制

# 修改系统文件
vi /etc/security/limits.conf

#增加的内容

* soft nofile 65536
* hard nofile 65536
* soft nproc 2048
* hard nproc 4096

调整进程数

#修改系统文件
vi /etc/security/limits.d/20-nproc.conf

#调整成以下配置
*         soft   nproc     4096
root       soft   nproc     unlimited

调整虚拟内存&最大并发连接

#修改系统文件
vi /etc/sysctl.conf

#增加的内容
vm.max_map_count=655360
fs.file-max=655360

创建ELK专用用户

useradd elk

创建ELK相关目录并赋权

#创建ELK 数据目录
mkdir /data/elk/
#创建ELK APP目录
将解压后的压缩包mv至data/elk

#更改目录Owner
chown -R elk:elk /data/elk

3、ELK组件包下载地址

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.0.1-linux-x86_64.tar.gz

二、Elasticsearch 部署

本次一共要部署两个Elasticsearch节点,所有文中没有指定机器的操作都表示每个Elasticsearch机器都要执行该操作

1、准备工作

移动Elasticsearch到统一目录

root@elasticsearch-01:/data/elk# ls elasticsearch-7.0.1 root@elasticsearch-01:/data/elk#

su - elk

数据&日志目录

创建Elasticsearch主目录
mkdir /data/elk/es
#创建Elasticsearch数据目录
mkdir /data/elk/es/data
#创建Elasticsearch日志目录
mkdir /data/elk/es/logs

2、Elasticsearch节点配置

#打开目录
cd /data/elk/elasticsearch-7.0.1/
#修改配置

vi config/elasticsearch.yml

主节点配置(192.168.227.93)

cluster.name: my-application
node.name: node-1
node.attr.rack: r1
path.data: /data/elk/es/data
path.logs: /data/elk/es/logs
bootstrap.memory_lock: true
network.host: 192.168.227.93
http.port: 9200
discovery.seed_hosts: ["192.168.227.93", "192.168.227.91"]
cluster.initial_master_nodes: ["node-1"]
action.destructive_requires_name: true

从节点配置(192.168.227.91)

cluster.name: my-application
node.name: node-2
node.attr.rack: r1
path.data: /data/elk/es/data
path.logs: /data/elk/es/logs
network.host: 192.168.227.91
http.port: 9200
discovery.seed_hosts: ["192.168.227.93", "192.168.227.91"]
action.destructive_requires_name: true

配置项说明

cluster.name node.name path.data 数据保存目录 path.logs 日志保存目录 network.host 节点host/ip http.port HTTP访问端口 transport.tcp.port TCP传输端口 node.master 是否允许作为主节点 node.data 是否保存数据 discovery.zen.ping.unicast.hosts 集群中的主节点的初始列表,当节点(主节点或者数据节点)启动时使用这个列表进行探测 discovery.zen.minimum_master_nodes 主节点个数

3、Elasticsearch启动&健康检查

#进入elasticsearch根目录
cd /data/elk/elasticsearch-7.0.1/
#启动
./bin/elasticsearch &
三、Kibana部署

下载地址: https://artifacts.elastic.co/downloads/kibana/kibana-7.0.1-linux-x86_64.tar.gz

1、机器准备

初始化环境,建立用户和安装路径

hostnamectl set-hotname kibana
useradd elk
mkdir /usr/elk
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.0.1-linux-x86_64.tar.gz
tar -xf kibana-7.0.1-linux-x86_64.tar.gz -C usr/elk/ ##解压包至elk目录
chown -R elk:elk /usr/elk

2、修改kibana配置文件

elk@kibana:/usr/elk$ cat /usr/elk/kibana-7.0.1/config/kibana.yml| grep -Ev '^$|#'

i18n.locale: "zh-CN" ###设置为中文
server.port: 5601     ##监听端口
server.host: "192.168.227.90"    
elasticsearch.hosts: "http://192.168.227.93:9200"   ##es主机

3、启动kibana

su elk

./usr/elk/kibana-7.0.1/bin/kibana & 启动kibana后台运行
四、Logstash对接es

1、机器准备

注意:这里是在需要对接日志的机器安装,此处不安装在192.168.227.88机器上,这台机器给第八步骤使用!

在需要对接日志的机器上安装logstash,然后对接elasticsearch主机。

logstash下载地址: https://artifacts.elastic.co/downloads/logstash/logstash-7.0.1.tar.gz

以下是脚本,快速创建修改目录以及安装logstash



appdeploy@CDT-SIT-APP-03:~$ cat logstash_install.sh
#!/bin/bash

#创建elk用户
useradd elk

#创建相关目录
mkdir /usr/elk
mkdir -p /data/elk/logstash/data
mkdir -p /data/elk/logstash/logs

#安装logstash
tar -xf logstash-7.0.1.tar.gz
mv logstash-7.0.1 /usr/elk/logstash-7.0.1

echo "path.data: /data/elk/logstash/data" >> /usr/elk/logstash-7.0.1/config/logstash.yml
echo "path.data: /data/elk/logstash/logs" >> /usr/elk/logstash-7.0.1/config/logstash.yml

chown -R elk:elk /data/elk
chown -R elk:elk /usr/elk

2、建立conf文件

首先,logstash agent按配置好的规则从每台服务器上收集log,收集好后发送给elasticsearch,elasticsearch再创建索引并存储,最后再通过kibana结合es从web界面进行查询和展示。

了解流程后,需要了解logstash是怎么从日志里收集数据的。这里,就需要建立conf文件了。如下:

root@CDT-SIT-APP-03:/usr/elk/logstash-7.0.1/config# cat input-output.conf

input {
file{
path => ["/data/logs/cec-evcs-data-service-9267.log"]

start_position => beginning

codec=>plain

discover_interval=>30

}

}

output {
    stdout { codec => plain }

    elasticsearch {
        hosts => "192.168.227.93:9200"

        index => "cec_evcs_data_service_9267-%{+YYYY.MM.dd}"
      ## 日志背后以年月日结尾作为日志切割,方便后期的日志清理。

}

}

3、执行启动Logstash

su elk

/usr/elk/logstash-7.0.1/bin/logstash -f /usr/elk/logstash-7.0.1/config/input-output.conf --config.reload.automatic >/dev/null &
五、kibana页面

1、查看节点信息

点击左侧列表:堆栈监测

选择节点:

2、创建索引

点击左侧列表:管理

六、ELK定时删除日志
[参考日志]  https://www.cnblogs.com/nf01/articles/13639298.html

以下这个地址是主es的日志存储展示,自行更换ip哈。因为是主从结构,所以删除主es的即会同步删除从es的日志。

http://192.168.227.91:9200/_cat/indices?v

1、执行脚本删除

将以下脚本放至主es的/data/elk/clear_log_script目录下,

脚本说明:前提是日志以日期切片保存,然后筛选多少天前的日志出来保存至指定文本,for循环执行删除日志。删除主es的即可。

cat /data/elk/clear_log_script/clear_log.sh

  #!/bin/bash
  #删除ELK10天前的日志,自己看情况改。
   
  DATE=`date -d "10 days ago" +%Y.%m.%d`
   
  curl -s -XGET http://127.0.0.1:9200/_cat/indices?v| grep $DATE | awk -F '[ ]+' '{print $3}' >/data/elk/clear_log_script/elk.log
   
  for elk in `cat /data/elk/clear_log_script/elk.log`
   
  do
   
  curl -XDELETE "http://192.168.227.93:9200/$elk"
   
  done

加入到定时任务

# crontab -e

#每天凌晨1点定时清理elk索引`

00 01 * * * bash /data/elk/clear_log_script/clear_log.sh &>/dev/null

注意:保证crond服务是启动的

2、kibana页面删除es存储索引

1、filebeat启动

后台启动生成日志文件

进入file-..*目录下 nohup ./filebeat -e -c filebeat.yml -d "Publish" & > nohup.out

后台启动不生成日志

./filebeat -e -c filebeat.yml -d "Publish" >/dev/null 2>&1 &

关键在于最后的 >/dev/null 2>&1 部分,/dev/null是一个虚拟的空设备(类似物理中的黑洞),任何输出信息被重定向到该设备后,将会石沉大海 /dev/null 表示将标准输出信息重定向到"黑洞" 2>&1 表示将标准错误重定向到标准输出(由于标准输出已经定向到“黑洞”了,即:标准输出此时也是"黑洞",再将标准错误输出定向到标准输出,相当于错误输出也被定向至“黑洞”)

2、logstash 启动

后台启动生成日志文件

进入logstash-..*目录下 我这里为了方便把logstash-sample.conf 文件放在了bin目录下 nohup ./bin/logstash -f bin/logstash-sample.conf & > nohup.out

后台启动不生成日志

./bin/logstash -f bin/logstash-sample.conf >/dev/null 2>&1 &

3、启动elasticsearch

后台启动生成日志

进入elastic-..*/bin 目录下 nohup ./elasticsearch & > nohup.out

后台启动不生成日志

./elasticsearch >/dev/null 2>&1 &

八、ELK+filebeat

参考文件: https://blog.csdn.net/wsdc0521/article/details/106308441/

以上已经实现了logstash采集日志存储至ES,然后kibana展示。为避免logstash作为日志采集器客户端占用资源过大,在原有基础上增加一个filebeat。即设置机器作为Logstash的服务端。其他存有日志的机器上安装轻量级的filebeat作为日志采集器(安装包才十几M)。

部署Logstash服务端

1、部署Logstash服务端

注意:此处安装在192.168.227.88机器上作为服务端接收filebeat

在需要对接日志的机器上安装logstash,然后对接elasticsearch主机。

logstash下载地址: https://artifacts.elastic.co/downloads/logstash/logstash-7.0.1.tar.gz

以下是脚本,快速创建修改目录以及安装logstash


appdeploy@CDT-SIT-APP-03:~$ cat logstash_install.sh
#!/bin/bash

#创建elk用户
useradd elk

#创建相关目录
mkdir /usr/elk
mkdir -p /data/elk/logstash/data
mkdir -p /data/elk/logstash/logs

#安装logstash
tar -xf logstash-7.0.1.tar.gz
mv logstash-7.0.1 /usr/elk/logstash-7.0.1

echo "path.data: /data/elk/logstash/data" >> /usr/elk/logstash-7.0.1/config/logstash.yml
echo "path.data: /data/elk/logstash/logs" >> /usr/elk/logstash-7.0.1/config/logstash.yml

chown -R elk:elk /data/elk
chown -R elk:elk /usr/elk

2、建立conf文件

首先,logstash服务端按配置好的规则从每台filebeat服务器上接收log,收集好后发送给elasticsearch,elasticsearch再创建索引并存储,最后再通过kibana结合es从web界面进行查询和展示。

了解流程后,需要了解logstash是怎么从filebeat收集数据的。这里,就需要建立conf文件了。如下:

以下是采集多个日志分别推送至es创建索引,有nginx和java得日志,通过if语句判断存储至指定索引。


root@logstash:/usr/elk/logstash-7.0.1/config# vi logstash.conf

input {
beats {

port => 5044

}
}

output {
    elasticsearch {
        hosts => "192.168.227.93:9200"

        index => "cec-evcs-data-service-msg-%{+YYYY.MM.dd}"
}
}
output {
  if [tags][0] == "test_nginx"{
    elasticsearch {
      hosts => ["192.168.227.93:9200"]
      index => "test_nginx-%{+YYYY.MM.dd}"
    }
  }
  if [tags][0] == "service-msg"{
    elasticsearch {
      hosts => ["192.168.227.93:9200"]
      index => "service-msg-%{+YYYY.MM.dd}"
    }
  }
if [tags][0] == "exam_log"{
    elasticsearch {
      hosts => ["192.168.227.93:9200"]
      index => "exam-log-%{+YYYY.MM.dd}"
    }
  }
}

3、执行启动Logstash

su elk

/usr/elk/logstash-7.0.1/bin/logstash -f /usr/elk/logstash-7.0.1/config/input-output.conf --config.reload.automatic >/dev/null &

被控端部署filebeat

安装包连接:wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.0.1-linux-x86_64.tar.gz

1、准备filebeat客户端采集日志

useradd elk

#创建相关目录
mkdir /usr/elk
mkdir -p /data/elk/
mkdir -p /data/elk/

#安装filebeat
tar -xf filebeat-7.0.1.tar.gz
mv logstash-7.0.1 /usr/elk/logstash-7.0.1


chown -R elk:elk /data/elk
chown -R elk:elk /usr/elk

2、修改conf文件

这台机器接入java日志

appdeploy@CDT-SIT-APP-03:/usr/elk/filebeat-7.0.1$ cat filebeat_min.yml 
filebeat.inputs:
- type: log
enabled: true
paths:
  - /data/logs/cec-evcs-data-service-msg.log
tags: ["service-msg"]
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
setup.template.settings:
index.number_of_shards: 1
setup.kibana:
output.logstash:
hosts: ["192.168.227.88:5044"]
processors:
- add_host_metadata: ~
- add_cloud_metadata: ~

这台机器接入nginx日志

root@CDT-PT-NGINX-02:/home/appdeploy# cat /usr/elk/filebeat-7.0.1/filebeat2.yml
filebeat.inputs:
- type: log
enabled: true
paths:
  - /data/test2.log
tags: ["test_nginx"]
filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
setup.template.settings:
index.number_of_shards: 1
setup.kibana:
output.logstash:
hosts: ["192.168.227.88:5044"]
processors:
- add_host_metadata: ~
- add_cloud_metadata: ~

3、启动filebeat

nohup /usr/elk/filebeat-7.0.1/filebeat -e -c /usr/elk/filebeat-7.0.1/filebeat.yml >/dev/null 2>&1 &
专业从事搬砖多年,还是在继续搬砖中,厚积薄发~