一、环境准备

1. 安装Java

下载 Java 包并解压到 /opt/java

wget https://download.oracle.com/otn-pub/java/jdk/14.0.2+12/205943a0976c4ed48cb16f1043c5c647/jdk-14.0.2_linux-x64_bin.tar.gz?AuthParam=1599124293_4d4589c549379cf08244488c9a8afc85 -O /opt/jdk-14.0.2_linux-x64_bin.tar.gz && tar zxf jdk-14.0.2_linux-x64_bin.tar.gz 

若无法下载,点击快捷链接到 Java下载页

生成 jre 文件夹

cd /opt/jdk-14.0.2
bin/jlink --module-path jmods --add-modules java.desktop --output jre

在文件结尾添加 Java 环境变量

vim /etc/profile
# set java environment
JAVA_HOME=/opt/jdk-14.0.2
JRE_HOME=/opt/jdk-14.0.2/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

重载环境变量

source /etc/profile

输出 Java 版本

java -version

2. 创建 低权限账户

groupadd es
useradd es -g es
3. 安装 tmux
yum install -y tmux
或
apt install -y tmux

二、 安装并配置ELKB

1. 安装 Filebeat 到 日志服务器上

1.1 部署 二进制 版本
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.9.0-linux-x86_64.tar.gz -O /opt/filebeat-7.9.0.tar.gz && tar zxf /opt/filebeat-7.9.0.tar.gz -C /opt
1.2 编辑配置文件
vim /opt/filebeat-7.9.0-linux-x86_64/file.yml
# =================================== inputs ===================================
filebeat.inputs:

- type: log
  tail_files: false
  backoff: "1s"
  scan_frequency: "1s"
  paths:
      - /opt/software/log/*.log*        # 填写日志所在位置
  # 多行日志合并
  multiline.pattern: '^\[:000'            # 匹配不是 [:000 开头的
  multiline.negate: true                        # 正则否定模式
  multiline.match: after                        # 合并到上一行的末尾
  # 输出自定义字段,可用作区分
  fields:
    Type: Center
  # 作为顶级字段存储并覆盖
  fields_under_root: true

- type: log
  tail_files: false
  backoff: "1s"
  scan_frequency: "1s"
  paths:
      - /var/logs/nginx/log/*.log*
  multiline.pattern: '^\[:000'
  multiline.negate: true
  multiline.match: after
  fields:
    Type: Nginx
  fields_under_root: true

# ============================== Filebeat modules ==============================

filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
  #reload.period: 10s

# ================================== Outputs ===================================
# 输出到 Logstash
output.logstash:
  hosts: ["domain.com:5044", "10.10.10.3:5044"]
  # SSL安全配置
  #ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
  #ssl.certificate: "/etc/pki/client/cert.pem"
  #ssl.key: "/etc/pki/client/cert.key"
1.3 启动 Filebeat
/opt/filebeat-7.9.0-linux-x86_64/filebeat -f file.yml

2. 安装 Logstash 到 中转服务器上

2.1 部署 二进制 版本
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.9.0.tar.gz -O /opt/logstash-7.9.0.tar.gz && tar zxf /opt/logstash-7.9.0.tar.gz -C /opt
2.2 编辑配置文件
vim /opt/logstash-7.9.0/config/logstash.conf
# 监听 5044 端口,接收 filebeat 传输的数据
input {
        beats {
                host => '0.0.0.0'
                port => 5044
        }
}
# 筛选器
filter{
    # 正则匹配 字段
    grok{
        match => [
            "message" , "\[:%{USERNAME:SN}\]\s\[%{TIMESTAMP_ISO8601:Time}\]\s*\S*\[%{LOGLEVEL:Log-Level}\]\s*\S*\[%{USERNAME:Services}\]\s*\S*\[%{DATA:Path}\](?<Data>([\s*\S+]*))",
            "message" , "\[:%{USERNAME:SN}\]\s\[%{TIMESTAMP_ISO8601:Time}\]\s*\S+\[\S+\[%{LOGLEVEL:Log-Level}\]\s*\[%{USERNAME:Services}\]\s*\[%{DATA:Path}\]%{DATA:Data}\[0m"
        ]
        # 移除不需要的字段
        remove_field => ['agent','path','tags','SN','ecs','@version','log','host','input','start_time']            
    }
    # 定义时区,建议保留
    date{
        match => ["Time", "yyy-MM-dd HH:mm:ss"]
        target => "@timestamp"
        timezone => "Asia/Shanghai"
    }
}


output {
    # 输出信息到屏幕
    stdout{}
    # 匹配 filebeat 传回字段,分类存储到 es
    if [Type] == "Center" {
        elasticsearch {
            hosts => ["10.10.10.4:9200"]
            index => "center-log-%{+YYYY.MM.dd}"
            # 密码验证
                  #user => "elastic"
                  #password => "Passwd"
          }
    }
    if [Type] == "Nginx" {
        elasticsearch {
            hosts => ["10.10.10.4:9200"]
            index => "Nginx-log-%{+YYYY.MM.dd}"
            #user => "elastic"
            #password => "Passwd"
        }
  }
}
2.3 启动 Logstash
/opt/logstash-7.9.0/bin/logstash -f /opt/logstash-7.9.0/config/logstash.conf

3. 安装 Elasticsearch 到 数据服务器上

3.1 部署 二进制 版本
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.0-linux-x86_64.tar.gz -O /opt/elasticsearch-7.9.0-linux-x86_64.tar.gz && tar zxf /opt/elasticsearch-7.9.0-linux-x86_64.tar.gz -C /opt
3.2 配置环境
sysctl -w vm.max_map_count=262144
echo "vm.max_map_count=262144" >> /etc/sysctl.conf

vim /etc/security/limits.conf
# 添加
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

sysctl -p
3.3 编辑配置文件

单节点部署

cluster.name: single-cluster

node.name: node-1

#path.data: /path/to/data        # 数据存放位置

#path.logs: /path/to/logs        # 日志存放位置

network.host: 0.0.0.0

http.port: 9200

discovery.seed_hosts: ["127.0.0.1"]

cluster.initial_master_nodes: ["node-1"]
3.4 启动 Elasticsearch
chown -R es:es /opt/elasticsearch-7.9.0/
su - es
tmux new -s elasticsearch
/opt/elasticsearch-7.9.0/bin/elasticsearch

Ctrl+b d 退出 tmux

4. 安装 Kibana 到 分析服务器上

4.1 部署 二进制 版本
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.9.0-linux-x86_64.tar.gz -O /opt/kibana-7.9.0-linux-x86_64.tar.gz && tar zxf /opt/kibana-7.9.0-linux-x86_64.tar.gz -C /opt
4.2 编辑配置文件
vim /opt/kibana-7.9.0-linux-x86_64/config/kibana.yml
server.port: 5601

server.host: "0.0.0.0"

server.name: "kibana"

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

#elasticsearch.username: "kibana_system"
#elasticsearch.password: "pass"

i18n.locale: "zh-CN"
4.3 启动 Kibana
chown -R /opt/kibana-7.9.0-linux-x86_64/
su - es
tmux new -s kibana
/opt/kibana-7.9.0-linux-x86_64/bin/kibana

Ctrl+b d 退出 tmux

三、查看日志数据

1. 打开浏览器输入 kibana 地址

http://10.10.10.5:9200

elkb01.png

2. 检查并添加索引

elkb02.png

elkb03.png

elkb04.png

elkb05.png

elkb06.png

elkb07.png

3. 查看日志

elkb08.png

elkb09.png