ELK安装配置文档
- 一、环境准备
- 基础配置
- 二、Jdk1.8环境部署
- 1、安装jdk
- 2、编辑环境变量
- 三、ElasticSearch部署
- 1、安装
- 2、修改文件所有者
- 3、修改配置文件
- 4、启动
- 四、elasticsearch-head部署(可不安装,跳过)
- 1、nodejs安装
- 2、head插件安装
- 3、修改head插件配置文件
- 4、启动
- 五、logstash部署
- 1、安装
- 2、修改配置文件
- 3、验证配置文件
- 4、设置数据源日志输出
- 5、启动
- 六、kibana部署
- 1、安装
- 2、修改配置文件
- 3、启动
- 4、创建索引
- 七、参考资料
一、环境准备
基础配置
/etc/security/limits.conf
修改系统进程数量、最大打开文件数等配置,新加入到.conf文件最底部
参考自:https://blog.csdn.net/zxljsbk/article/details/89153690
cat >> /etc/security/limits.conf <<EOF
* soft nofile 65536
* hard nofile 65536
* soft nproc 4096
* hard nproc 4096
EOF
/etc/sysctl.conf
设置最大映射数量
系统虚拟内存默认最大映射数为65530,无法满足ES系统要求,需要调整为262144以上
echo "vm.max_map_count = 655360" >> /etc/sysctl.conf
保存并退出后,再输入命令:sysctl -p
立即生效
二、Jdk1.8环境部署
1、安装jdk
jdk下载链接
上传安装jdk文件、解压、移动到 /usr/local/java 路径
tar -zxf jdk-8u221-linux-x64.tar.gz
mv jdk1.8.0_221/ /usr/local/java
2、编辑环境变量
编辑 /etc/profile 文件
cat >> /etc/profile <<"EOF"
###java###
export JAVA_HOME=/usr/local/java
export JRE_HOME=/usr/local/java/jre
export PATH=$PATH:/usr/local/java/bin
export CLASSPATH=./:/usr/local/java/lib:/usr/local/java/jre/lib
EOF
source /etc/profile # 让环境变量生效
java -version # 查看java版本、安装位置
which java
ln -s /usr/local/java/bin/* /bin # 使用 ln -s 命令建立软连接(将java文件链接到/bin下面,否则后面logstash报错非常难排查原因)
三、ElasticSearch部署
1、安装
es下载链接
上传ElasticSearch安装文件、解压、移动到 /usr/local/elasticsearch 路径
tar -zxf elasticsearch-7.6.0-linux-x86_64.tar.gz
mv elasticsearch-7.6.0 /usr/local/elasticsearch
2、修改文件所有者
创建data文件,用于存放es的数据和日志
修改文件和目录的所有者和所属组(因为elasticsearch是不允许root用户启动的,所以需要添加新用户)
mkdir -p /var/data/es-data
mkdir -p /var/data/es-log
useradd es
chown -R es:es /usr/local/elasticsearch/ # 设置es用户拥有该目录权限
chown -R es:es /var/data/es-data
chown -R es:es /var/data/es-log
3、修改配置文件
cd /usr/local/elasticsearch/config/
cp elasticsearch.yml elasticsearch.yml.bak
vim elasticsearch.yml
文件最后自行添加如下内容:
cat >> elasticsearch.yml <<"EOF"
transport.tcp.compress: true
transport.tcp.port: 9300
network.publish_host: 192.168.234.10 # 本机ip
node.master: true # 允许成为主节点
node.data: true # 允许成为数据节点
# xpack.security.enabled: true # 建议关闭或不设置,若设置了有很多非常麻烦的事
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-methods: OPTIONS, HEAD, GET, POST, PUT, DELETE
http.cors.allow-headers: "X-Requested-With, Content-Type, Content-Length, X-User"
indices.query.bool.max_clause_count: 8192
search.max_buckets: 100000
EOF
4、启动
su es
cd /usr/local/elasticsearch/bin
./elasticsearch -d # 后台启动
./elasticsearch # 非后台启动,主要用于调试
如果启动测试,出现如下报错:
- 报错一:
报错原因:前面说了 elasticsearch是不允许root用户启动的 所以需要切换到前面创建的es账号下来运行 - 报错二:
报错原因是:线程占用 解决方法:杀死elasticsearch线程 / 重启
ps -ef | grep elasticsearch|grep -v grep
kill -9 id
- 报错三:
报错原因是:是该文件的权限问题。进入该文件所属目录查看文件权限验证:
解决方法:使用命令删除该文件即可,下次启动es时会自动创建
rm -rf elasticsearch.keystore
启动成功后,使用如下命令测试:
curl http://192.168.234.10:9200 # 输入本机ip
curl '192.168.234.10:9200/_cluster/health?pretty' # 查看es健康状态
若提示如下信息,则表示成功:
四、elasticsearch-head部署(可不安装,跳过)
安装配置可参考:https://www.cnblogs.com/wangzhuxing/p/9352258.html
1、nodejs安装
因为head插件是用node.js开发的,所以需要此环境(切换回root用户)
wget https://nodejs.org/dist/v14.15.4/node-v14.15.4-linux-x64.tar.xz
tar -zxf node-v14.15.4-linux-x64.tar.xz
mv node-v14.15.4-linux-x64 /usr/local/node
编辑 /etc/profile 文件
cat >> /etc/profile <<"EOF"
#node
export NODE_HOME=/usr/local/node
export PATH=$NODE_HOME/bin:$PATH
export NODE_PATH=$NODE_HOME/lib/node_modules:$PATH
EOF
让环境变量生效
source /etc/profile
node -v
2、head插件安装
wget https://github.com/mobz/elasticsearch-head/archive/master.zip
yum -y install unzip
unzip master.zip
mv elasticsearch-head-master/ /usr/local/elasticsearch-head
cd /usr/local/elasticsearch-head
yum -y install npm
npm install -g cnpm --registry=https://registry.npm.taobao.org
npm install -g grunt-cli
npm install -g grunt
npm install grunt-contrib-clean
npm install grunt-contrib-concat
npm install grunt-contrib-watch
npm install grunt-contrib-connect
npm install grunt-contrib-copy
npm install grunt-contrib-jasmine # 如果有些输入有报错,就再输入一遍,不行就略过(有些没安装也可以正常运行),执行下面第三步
如果安装过程,出现如下报错:
解决方法:cnpm install --save-dev "grunt@>=1.4.1"
解决方法:npm install phantomjs-prebuilt@2.1.16 --ignore-scripts
3、修改head插件配置文件
cd /usr/local/elasticsearch-head/
cp Gruntfile.js Gruntfile.js.bak
vim Gruntfile.js
4、启动
》首先确认elasticsearch已经启动
[es@localhost /usr/local/elasticsearch]$ bin/elasticsearch -d
[es@localhost /usr/local/elasticsearch]$ jps # jps是java提供的一个显示当前所有java进程pid的命令
3261 Elasticsearch # 适合在linux/unix平台上简单察看当前java进程的一些简单情况
3375 Jps
[es@localhost /usr/local/elasticsearch]$ kill 3261 # 如果需要终止ElasticSearch,可以这样操作
》启动head
cd /usr/local/elasticsearch-head
grunt server
如果启动head过程,出现如下报错:
解决方法是:cnpm install grunt --save-dev
》启动成功,访问9100端口
如果出现“未连接”,请修改localhost为192.168.234.10(在es库elasticsearch.yml 文件中设置的network.host),然后单击“连接”
按钮
五、logstash部署
1、安装
wget https://artifacts.elastic.co/downloads/logstash/logstash-7.5.0.tar.gz
tar -zxf logstash-7.5.0.tar.gz
mv logstash-7.5.0 /usr/local/logstash
2、修改配置文件
cd /usr/local/logstash/config
cp logstash-sample.conf logstash.conf
vim logstash.conf 修改如下配置:
3、验证配置文件
cd /usr/local/logstash/bin
./logstash -f /usr/local/logstash/config/logstash.conf --config.test_and_exit
4、设置数据源日志输出
配置服务器的ip以及配置的监听端口
cat >> /etc/rsyslog.conf <<"EOF"
#### RULES ####
*.* @@192.168.234.10:10514 # 增加自己服务器IP
EOF
systemctl restart rsyslog # 重启rsyslog,让配置生效
5、启动
cd /usr/local/logstash/bin
./logstash -f /usr/local/logstash/config/logstash.conf
使用Shell软件远程登录到此服务器,测试一下有没有日志输出:
检查一下10514端口是否已被监听:
yum -y install net-tools
netstat -lntp | grep 10514
如果端口正常监听了,那么logstash服务就启动成功:
但如图所示,如果不改成宿主机的IP,默认使用 127.0.0.1,这样外面的机器是无法通过TCP/HTTP等方式访问的
因此,还需要修改配置文件logstash.yml,修改完后重启Logstash
vim /usr/local/logstash/config/logstash.yml
http.host: "192.168.234.10"
至此,logstash配置完成。后续将结合suricata获取到的数据信息输出到es(修改相关配置文件)
六、kibana部署
1、安装
wget https://artifacts.elastic.co/downloads/kibana/kibana-7.5.1-linux-x86_64.tar.gz
tar -zxf kibana-7.5.1-linux-x86_64.tar.gz
mv kibana-7.5.1-linux-x86_64 /usr/local/kibana
2、修改配置文件
vim /usr/local/kibana/config/kibana.yml
#编辑内容如下:
server.port: 5601 # Kibana 运行端口
server.host: "192.168.234.10" # Kibana服务主机
server.name: "kibana" # Kibana服务名称
elasticsearch.hosts: ["http://192.168.234.10:9200"] # 指定ES访问地址
i18n.locale: "zh-CN " # 指定语言 English - en , Chinese - zh-CN
3、启动
cd /usr/local/kibana/bin
./kibana --allow-root
浏览器输入该地址进行访问: http:192.168.234.10:5601 页面展示如下:
4、创建索引
后续将结合suricata获取到的数据信息输出到es,便可以在此创建索引来查看相关数据
还可以根据需要创建Kibana看板,也可下载相关看板json文件进行导入
至此,ELK 安装完成,后续的详细配置信息,见下一篇文章
七、参考资料
- 使用Suricata和ELK进行流量检测 - 知乎
- Suricata+ELK集群监控办公网流量-CSDN博客
- ElasticSearch-7.5.1安装部署-备份-CSDN博客
- 使用Suricata构建网络层入侵检测 | MaliciousKr.Cc
- suricata + ELK保姆级搭建入侵检测/入侵防御02 — ELK搭建-CSDN博客
- CentOS7 安装 Logstash-CSDN博客