下载ELK
elasticsearch+kibana下载地址:https://www.elastic.co/cn/start
logstash下载地址:https://www.elastic.co/cn/downloads/logstash
笔者采用的所有版本都是7.4.2,资源链接:https://pan.baidu.com/s/13bjRZGORelM1GDvtYIyadw,提取码:tr1z
解压程序压缩包,并对文件夹赋权
Chmod -R 777 Software
Linux命令备忘
开放5672端口
firewall-cmd --zone=public --add-port=5672/tcp --permanent
关闭5672端口
firewall-cmd --zone=public --remove-port=5672/tcp --permanent
配置立即生效
firewall-cmd --reload
查看端口占用
netstat -tunlp | grep 5601
安装Elasticsearch
创建非root用户
由于elasticsearch不能使用root账号运行,所以需要先创建普通用户账号
adduser es
pssswd es
usermod -aG wheel es
更改配置
config文件夹下的jvm.options用于设置JVM参数,这里设置一下内存分配
-Xms512m
-Xmx512m
允许远程访问
修改config文件夹下的elasticsearch.yml
network.host: 0.0.0.0
配置系统服务
创建系统服务文件
vim /etc/systemd/system/elasticsearch.service
写入
[Unit]
Description=elasticsearch
[Service]
User=es
ExecStart=/home/Software/elasticsearch-7.4.2/bin/elasticsearch
[Install]
WantedBy=multi-user.target
刷新并配置为开机自启动
systemctl daemon-reload
systemctl enable elasticsearch
修改最大打开文件数、最大进程数
参考:https://www.cnblogs.com/linus-tan/p/10276289.html
https://www.jianshu.com/p/1d02c97f3573(重要)
https://blog.csdn.net/jiahao1186/article/details/90235771(重要)
在文件 /etc/security/limits.conf 最后追加
* hard nofile 65536
* soft nofile 65536
在文件 /etc/sysctl.conf 最后追加
vm.max_map_count=65536
执行命令
sysctl -p
如果将elasticsearch注册为系统服务,则还需要修改以下文件,否则不能以systemctl命令启动
vim /etc/systemd/system.conf
vim /etc/systemd/user.conf
在这两个文件中设置
DefaultLimitNOFILE=65535
DefaultLimitNPROC=65535
启动
在程序目录下执行
sh bin/elasticsearch
如果注册为系统服务,可以执行
systemctl start elasticsearch
注意事项
开放端口时,要打开9200-9400所有的端口,因为elasticsearch不仅仅使用了9200和9300,如果只开放9200、9300端口,那么spring-data-elasticsearch将无法连接到elasticsearch,并抛出 failed to load elasticsearch nodes 的ERROR级别异常,以及握手超时等DEBUG异常
安装Logstash
Hello World
解压后进入logstash根目录,执行以下命令:
bin/logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'
执行命令后,终端等待输入,此时输入"Hello World"并回车,程序启动后将输出:
创建软连接
ln -s /home/Software/logstash-7.4.2/bin/logstash /bin/
然后就可以直接使用logstash命令,而不用指定安装路径
指定配置文件的Hello World
创建logstash.conf文件,笔者放在logstash-7.4.2/confg目录下,文件内容如下:
input{
stdin{}
}
output{
stdout{
codec => rubydebug{}
}
}
指定配置文件启动程序,笔者是在config目录下执行的这条命令
logstash -f logstash.conf
程序启动后,输入Hello World,可以看到输出
配置TCP输入
修改logstash.conf:
input{
tcp{
port => 50001
mode => "server"
ssl_enable => false
}
}
output{
stdout{
codec => rubydebug{}
}
}
另开一个终端,安装nc工具,并发送数据
yum install -y nc
nc 192.168.89.181 50001 < /etc/passwd
echo "Hello World" > /dev/tcp/192.168.89.181/50001
在启动logstash的终端上可以看到输出
logback配置
引入maven依赖
<dependency>
<groupId>net.logstash.logback</groupId>
<artifactId>logstash-logback-encoder</artifactId>
<version>6.2</version>
</dependency>
在logback.xml中配置appender
<appender name="LOGSTASH" class="net.logstash.logback.appender.LogstashTcpSocketAppender">
<destination>192.168.89.181:50001</destination>
<encoder charset="UTF-8" class="net.logstash.logback.encoder.LogstashEncoder">
<customFields>{"appname":"webapp_ni"}</customFields>
</encoder>
</appender>
启动appender
<root level="DEBUG">
<appender-ref ref="LOGSTASH"/>
</root>
此时运行springboot程序,在logstash的控制台上可以看到输出
配置为系统服务
在程序bin目录下执行
sh system-install
这个脚本会将logstash注册为系统服务,但是其服务文件实测有问题,需要作如下修改:
vim /etc/systemd/system/logstash.service
[Unit]
Description=logstash
[Service]
User=root
EnvironmentFile=/etc/default/logstash
EnvironmentFile=/etc/sysconfig/logstash
ExecStart=/home/Software/logstash-7.4.2/bin/logstash -f /home/Software/logstash-7.4.2/config/logstash.conf
Restart=always
WorkingDirectory=/
Nice=19
LimitNOFILE=16384
[Install]
WantedBy=multi-user.target
然后就可以使用以下命令
设置服务自启动:systemctl enable logstash
启动服务:systemctl start logstash
停止服务:systemctl stop logstash
重启服务:systemctl restart logstash
查看服务状态:systemctl status logstash
配置elasticsearch输出
编辑config/logstash.conf
input{
tcp{
port => 50001
mode => "server"
ssl_enable => false
}
}
output{
elasticsearch{
action => "index"
hosts => "127.0.0.1:9200"
index => "dss2-log"
}
}
安装kibana
修改配置文件
修改配置文件config/kibana.yml,这里需要注意的是server.host只有设置为"0.0.0.0"时才能远程访问,如果设置为"localhost"或者"127.0.0.1",则只能在本机访问
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]
启动
kibana默认不允许以root启动,但是启动时可以带参数强制以root启动
sh kibana --allow-root
配置为系统服务
cat /etc/systemd/system/kibana.service
[Unit]
After=syslog.target
Description=kibana
[Service]
ExecStart=/home/Software/kibana-7.4.2/bin/kibana --allow-root
[Install]
WantedBy=multi-user.target
通过kibana查看采集到日志
index匹配好即可,不详述