1 系统参数设置

软件版本

os            Centos 8 Stream
elasticsearch 7.14.0
kibana        7.14.0
logstash      7.14.0
jdk           openjdk17

系统要求

cpu 4核
内存 不小于4G

修改 /etc/security/limits.conf 文件

vim /etc/security/limits.conf

添加以下4行

soft nofile 65536

hard nofile 131072

soft nproc 65536

hard nproc 65536

修改 /etc/sysctl.conf 文件

vim /etc/sysctl.conf

添加下面1行

vm.max_map_count=655360

执行下面命令使配置生效

sysctl -p

2 安装elasticsearch

2.1 创建elk目录

mkdir /opt/elk
cd /opt/elk

2.2 下载

cd /opt/elk
wget https://mirrors.huaweicloud.com/elasticsearch/7.14.0/elasticsearch-7.14.0-linux-x86_64.tar.gz

2.3 解压并移动到指定目录

tar -zxvf elasticsearch-7.14.0-linux-x86_64.tar.gz -C .

2.4 修改配置文件

cd elasticsearch-7.14.0
vim ./config/elasticsearch.yml
node.name: node-1 # 设置节点名
network.host: 0.0.0.0 # 允许外部 ip 访问
cluster.initial_master_nodes: ["node-1"] # 设置集群初始主节点

2.5 新建用户并赋权

adduser elk
# 设置用户 es 的密码(需要输入两遍密码)
# passwd elk
# 将对应的文件夹权限赋予用户 elk
chown -R elk /opt/elk/elasticsearch-7.14.0

2.6 切换至新建的用户并启动 Elasticsearch

# 切换用户 elk
su elk
# 启动 ElasticSearch (-d 表示在后台启动)
/opt/elk/elasticsearch-7.14.0/bin/elasticsearch -d
# 启动需要java11,本地安装过其他非java11环境,需要修改启动文件 elasticsearch-env
需要注释掉38、39、40、41、42、50行

2.7 验证,防火墙需要开放9200端口

# firewall-cmd --permanent --add-port=9200/tcp
# firewall-cmd --permanent --add-port=9200/udp
# firewall-cmd --reload

访问: http://ip:9200
返回结果:
{
    "name": "node-1",
    "cluster_name": "elasticsearch",
    "cluster_uuid": "O-Ox1pjfRJWH_-gpG8Zetw",
    "version": {
        "number": "7.14.0",
        "build_flavor": "default",
        "build_type": "tar",
        "build_hash": "757314695644ea9a1dc2fecd26d1a43856725e65",
        "build_date": "2020-06-14T19:35:50.234439Z",
        "build_snapshot": false,
        "lucene_version": "8.5.1",
        "minimum_wire_compatibility_version": "6.8.0",
        "minimum_index_compatibility_version": "6.0.0-beta1"
    },
    "tagline": "You Know, for Search"
}

3.安装kibana

3.1 下载

cd /opt/elk
wget https://mirrors.huaweicloud.com/kibana/7.14.0/kibana-7.14.0-linux-x86_64.tar.gz

3.2 解压并移动到指定目录

tar -zxvf kibana-7.14.0-linux-x86_64.tar.gz -C .

3.3 修改配置文件

cd kibana-7.14.0
vim ./config/kibana.yml
# 服务端口
server.port: 5601
# 服务器ip  本机
server.host: "0.0.0.0"
# Elasticsearch 服务地址
elasticsearch.hosts: ["http://localhost:9200"]
# 设置语言为中文
i18n.locale: "zh-CN"

3.4 授权并切换用户

给 elk 用户授予 kibana 目录的权限
# 授权
chown -R elk /opt/elk/kibana-7.14.0
# 切换用户
su elk

3.5 启动 Kibana

注意: 启动 Kibana 之前需要先启动 Elasticsearch
需要先配置防火墙打开5601端口:
# firewall-cmd --permanent --add-port=5601/tcp
# firewall-cmd --permanent --add-port=5601/udp
# firewall-cmd --reload
# 后台启动方式
nohup ./bin/kibana &

3.6 在浏览器中访问 Kibana

访问地址: http://ip:5601/

4 安装logstash

4.1 下载

cd /opt/elk
wget https://mirrors.huaweicloud.com/logstash/7.14.0/logstash-7.14.0.tar.gz

4.2 解压并移动到指定目录

tar -zxvf logstash-7.14.0.tar.gz -C .

4.3 新建配置文件

根据原有的 logstash-sample.conf 配置文件复制出一个新的配置文件并修改
cd logstash-7.14.0
cp config/logstash-sample.conf config/logstash-es.conf
# 修改配置文件logstash-es.conf
vim config/logstash-es.conf
修改成如下内容:
input {                                         # input输入源配置
  tcp {                                         # 使用tcp输入源
    port => 5044                                # 服务器监听端口9061接收日志,默认ip localhost
    codec => json_lines                         # 使用json解析日志  需要安装json解析插件
  }
}

output {                                        # output 数据输出配置
  elasticsearch {                               # 使用elasticsearch接收
    hosts => ["http://localhost:9200"]          # 集群地址 多个用,隔开
    index => "logstash-%{+YYYY.MM.dd}"
  }
  stdout {                                      # 输出到命令窗口
  	codec => rubydebug
  }
}

4.4 安装插件

由于国内无法访问默认的gem source,需要将gem source改为国内的源
# 修改Gemfile
vim Gemfile
首先确保linux上有gem,没有则安装 yum install gem
# gem -v
替换安装源
gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/
# 将source这一行改成如下所示:
source "https://gems.ruby-china.com/"

./bin/logstash-plugin install --no-verify logstash-codec-json_lines

如果报以下错误,请检查是否已经配置了 JDK 环境变量。
could not find java; set JAVA_HOME or ensure java is in PATH

需要先配置防火墙打开5601端口:
# firewall-cmd --permanent --add-port=5044/tcp
# firewall-cmd --permanent --add-port=5044/udp
# firewall-cmd --reload

4.5 启动 Logstash

# 后台启动Logstash
nohup ./bin/logstash -f ./config/logstash-es.conf &
# Successfully started Logstash API endpoint {:port=>9600}

5 Springboot集成Logstash

5.1 引入依赖

<!--集成 logstash 日志-->
<dependency>
    <groupId>net.logstash.logback</groupId>
    <artifactId>logstash-logback-encoder</artifactId>
    <version>6.3</version>
</dependency>

5.2 配置logback.xml

<springProperty scope="context" name="serverName" source="spring.application.name" />
<!--输出到logstash的appender-->
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
    <!--可以访问的logstash日志收集端口-->
    <destination>10.191.2.144:5044</destination>
    <encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
        <!-- 添加自定义属性,server_name为服务名 -->
        <customFields>{"server_name": "${serverName}"}</customFields>
    </encoder>
</appender>

root系统日志
<!--使用上述订阅logstash数据tcp传输 -->
<appender-ref ref="LOGSTASH" />

6 验证

这里以tianyi-gateway调用tianyi-system为例,说明如何查看服务日志。首先两个服务都正常启动了,如下图展示:

在这里插入图片描述

tianyi-system

在这里插入图片描述

打开kibana,找到Stack Management,选择Index Management

在这里插入图片描述

可以看到已创建的日志索引

在这里插入图片描述

点击Index Patterns,创建索引模式,便于在Discover中搜索数据

在这里插入图片描述

索引模式创建好之后,在Discover中便可根据索引模式搜索数据,这里已经选择了logstash的索引,根据服务名称server_name搜索日志,如果想搜索tianyi-system的日志,就将tianyi-gateway替换为tianyi-system,高亮表示搜索的信息中包含搜索关键字。

在这里插入图片描述

如果想搜索tianyi-system服务中包含某一条信息的日志,比如想搜索包含error关键字的日志,可以这么写搜索条件

在这里插入图片描述

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐