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
本文到此完毕,下一篇文章介绍如何配置收集思科设备日志。