Elastic Stack的安装和搭建
ELK其实并不是一款软件,而是一整套解决方案,是三个软件产品的首字母缩写,Elasticsearch,Logstash 和 Kibana。这三款软件都是开源软件,通常是配合使用,而且又先后归于 Elastic.co 公司名下,故被简称为ELK协议栈。

- Elasticsearch是一个实时的分布式搜索和分析引擎,它可以用于全文搜索,结构化搜索以及分析。提供搜集、分析、存储数据三大功能。
- Kibana可以为Elasticsearch提供分析和可视化的 Web 平台。它可以在Elasticsearch的索引中查找,交互数据,并生成各种维度的表图,可以帮助汇总、分析和搜索重要数据日志。
- Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。负责将收到的各节点日志进行过滤、修改等操作在一并发往Elasticsearch上去。
- Beats是ELK 协议栈的新成员,集合了多种单一用途轻量级开源数据搜集器,基于Logstash-Forwarder源代码开发,是对它的替代。Beats采集日志后发送到Logstash进行解析,亦可直接发送到 Elasticsearch进行集中式存储和分析。Beats包含多种搜集器,常用的有:
Packetbeat(搜集网络流量数据)
Topbeat(搜集系统、进程和文件系统级别的 CPU 和内存使用情况等数据)
Filebeat(搜集文件数据)
Winlogbeat(搜集 Windows 事件日志数据)
本文的教程采用Filebeat作为数据搜集器,且和Elasticsearch、Kibana安装在同一台服务器上,IP地址为10.18.224.112。
安装Java
查看yum库中的java安装包
[root@cncs ~]#yum -y list java*
安装最新版本java
[root@cncs ~]#yum -y install java-1.8.0-openjdk*
查看Java版本
[root@cncs ~]#java -version
配置limit相关参数
[root@cncs ~]#vi /etc/security/limits.conf
#添加
* soft nproc 65536
* hard nproc 65536
* soft nofile 65536
* hard nofile 65536
[root@cncs ~]# cat /etc/security/limits.conf | grep -v "^#" | grep -v "^$"
* soft nproc 65536
* hard nproc 65536
* soft nofile 65536
* hard nofile 65536
修改虚拟内存交换区的大小
[root@cncs ~]#vi /etc/sysctl.conf
#添加
vm.max_map_count=262144
[root@cncs ~]# sysctl -p
vm.max_map_count = 262144
安装Elasticsearch
配置Elasticsearch 的yum源
[root@cncs ~]# vi /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
引入GPG key
[root@cncs ~]#rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
安装Elasticsearch
[root@cncs ~]# yum -y install elasticsearch
修改配置文件
[root@cncs ~]# vi /etc/elasticsearch/elasticsearch.yml
cluster.name: cncs_cluster_us
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["10.18.224.112"]
cluster.initial_master_nodes: ["node-1"]
[root@cncs ~]# cat /etc/elasticsearch/elasticsearch.yml | grep -v '^#'
cluster.name: cncs_cluster_us
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["10.18.224.112"]
cluster.initial_master_nodes: ["node-1"]
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
数据目录:/var/lib/elasticsearch
日志目录:/var/log/elasticsearch
配置开机自启动和开启服务
[root@cncs ~]# systemctl enable elasticsearch.service
[root@cncs ~]# systemctl start elasticsearch.service
防火墙权限
[root@cncs ~]# firewall-cmd --permanent --add-port 9200/tcp
[root@cncs ~]# firewall-cmd --reload
验证服务是否启动
[root@cncs ~]# netstat -lptnu | grep java
tcp6 0 0 :::9200 :::* LISTEN 31390/java
tcp6 0 0 :::9300 :::* LISTEN 31390/java
9200作为Http协议,主要用于外部通讯
9300作为Tcp协议,ES集群之间是通过9300进行通讯
[root@cncs ~]# curl -X GET http://10.18.224.112:9200
{
"name" : "node-1",
"cluster_name" : "cncs_cluster_us",
"cluster_uuid" : "3NUlLjGHTmuSXBXPtfZ3-w",
"version" : {
"number" : "7.13.4",
"build_flavor" : "default",
"build_type" : "rpm",
"build_hash" : "c5f60e894ca0c61cdbae4f5a686d9f08bcefc942",
"build_date" : "2021-07-14T18:33:36.673943207Z",
"build_snapshot" : false,
"lucene_version" : "8.8.2",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
安装Filebeat
yum安装Filebeat
[root@cncs ~]# yum install filebeat -y
配置开机自启动和开启服务
[root@cncs filebeat]# systemctl enable filebeat
[root@cncs filebeat]# systemctl start filebeat
Filebeat从input读取日志信息,经过相应解析和处理之后,从output输出到目标存储库。输入可以从Log、Syslog、Stdin、Redis、UDP、Docker、TCP、NetFlow输入,然后可以输出到Elasticsearch、Logstash、Kafka、Redis、File、Console、Cloud。
Filebeat的配置文件:/etc/filebeat/filebeat.yml
Filebeat支持的module:
[root@cncs ~]# cd /etc/filebeat/modules.d/
[root@cncs modules.d]# ls
activemq.yml.disabled cyberark.yml.disabled imperva.yml.disabled netflow.yml.disabled santa.yml.disabled
apache.yml.disabled cylance.yml.disabled infoblox.yml.disabled netscout.yml.disabled snort.yml.disabled
auditd.yml.disabled elasticsearch.yml.disabled iptables.yml.disabled nginx.yml.disabled snyk.yml.disabled
awsfargate.yml.disabled envoyproxy.yml.disabled juniper.yml.disabled o365.yml.disabled sonicwall.yml.disabled
aws.yml.disabled f5.yml.disabled kafka.yml.disabled okta.yml.disabled sophos.yml.disabled
azure.yml.disabled fortinet.yml.disabled kibana.yml.disabled oracle.yml.disabled squid.yml.disabled
barracuda.yml.disabled gcp.yml.disabled logstash.yml.disabled osquery.yml.disabled suricata.yml.disabled
bluecoat.yml.disabled googlecloud.yml.disabled microsoft.yml.disabled panw.yml.disabled system.yml.disabled
cef.yml.disabled google_workspace.yml.disabled misp.yml.disabled pensando.yml.disabled threatintel.yml.disabled
checkpoint.yml.disabled gsuite.yml.disabled mongodb.yml.disabled postgresql.yml.disabled tomcat.yml.disabled
cisco.yml haproxy.yml.disabled mssql.yml.disabled proofpoint.yml.disabled traefik.yml.disabled
coredns.yml.disabled ibmmq.yml.disabled mysqlenterprise.yml.disabled rabbitmq.yml.disabled zeek.yml.disabled
crowdstrike.yml.disabled icinga.yml.disabled mysql.yml.disabled radware.yml.disabled zoom.yml.disabled
cyberarkpas.yml.disabled iis.yml.disabled nats.yml.disabled redis.yml.disabled zscaler.yml.disabled
后文将介绍使用cisco和netflow这两个模块。
安装Kibana
yum源安装
[root@cncs ~]# yum install kibana -y
配置Kibana
[root@cncs ~]# vi /etc/kibana/kibana.yml
[root@cncs ~]# cat /etc/kibana/kibana.yml |grep -v "^#" |grep -v "^$"
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://10.18.224.112:9200"]
防火墙开放
[root@cncs ~]# firewall-cmd --permanent --add-port=5601/tcp
[root@cncs ~]# firewall-cmd --reload
配置开机自启动和启动Kibana服务
[root@cncs ~]# systemctl enable kibana
[root@cncs ~]# systemctl start kibana
浏览器访问
打开浏览器访问http://10.18.224.112:5601
本文到此完毕,下一篇文章介绍如何配置收集思科设备日志。