一.简介 ELK是 Elasticsearch、Filebeat、Logstash、Kibana的简称。 Elasticsearch是实时全文搜索和分析引擎,提供搜集、分析、存储数据三大功能;是一套开放REST和JAVA API等结构提供高效搜索功能,可扩展的分布式系统。它构建于Apache Lucene搜索引擎库之上。Logstash是一个用来搜集、分析、过滤日志的工具。它支持几乎任何类型的日志,包括系统日志、错误日志和自定义应用程序日志。它可以从许多来源接收日志,这些来源包括 syslog、消息传递(例如 RabbitMQ)和JMX,它能够以多种方式输出数据,包括电子邮件、websockets和Elasticsearch。Kibana是一个基于Web的图形界面,用于搜索、分析和可视化存储在 Elasticsearch指标中的日志数据。它利用Elasticsearch的REST接口来检索数据,不仅允许用户创建他们自己的数据的定制仪表板视图,还允许他们以特殊的方式查询和过滤数据Filebeat是Beats中的一员。Beats在是一个轻量级日志采集器,其实Beats家族有6个成员,早期的ELK架构中使用Logstash收集、解析日志,但是Logstash对内存、cpu、io等资源消耗比较高。相比Logstash,Beats所占系统的CPU和内存几乎可以忽略不计。二.搭建工作 jdk版本推荐1.8以上,ELK各版本推荐一致,下载可搜索官网。 1. JDK 设当前服务器目录为 /root jdk-8u171-linux-x64.tar.gz 已上传到 /root 目录下 ### pwd ,返回 /root tar -zxvf jdk-8u171-linux-x64.tar.gz mkdir /usr/java mv jdk1.8.0_171 /usr/java vim /etc/profile #### 将以下内容 shift + insert 到 /etc/profile 的末尾 export JAVA_HOME=/usr/java/jdk1.8.0_171 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin export PATH=$PATH:${JAVA_PATH} source /etc/profile ### 测试jdk安装 java -version 2. Elasticsearch#### elasticsearch 默认不能以root身份启动,创建用户,并指定密码 useradd admin passwd admin su admin cd /home/admin ### pwd 返回 /home/admin 设 tar.gz 已上传至 /home/admin tar -zxvf elasticsearch-6.2.4.tar.gz mv elasticsearch-6.2.4 /usr/local cd /usr/local/elasticsearch-6.2.4 vim config/elasticsearch.yml #### 修改以下配置,cluster.name 根据业务需要自定义 cluster.name: my-cluster network.host: 0.0.0.0 http.port: 9200 #允许跨域 http.cors.enabled: true http.cors.allow-origin: /.*/ ### 修改 /etc/security/limits.conf 修改配置 * hard nofile 65536 vim /etc/security/limits.conf ### 修改 /etc/sysctl.conf 添加配置 vm.max_map_count=262144 vim /etc/sysctl.conf ### 重新加载一次系统参数 sysctl -p ### 修改 /etc/profile,注释配置 ulimit -n 65535 vim /etc/profile ### 启动 elasticsearch ./bin/elasticsearch -d -p pid ### 查看启动是否成功 curl "http://127.0.0.1:9200" 3. Logstash 设当前服务器目录为 /root logstash-6.2.4.tar.gz 已上传到 /root 目录下 tar -zxvf logstash-6.2.4.tar.gz mv logstash-6.2.4 /usr/local cd /usr/local/logstash-6.2.4 ### 配置 logstash config文件 vim config/daily.config input{ beats { port => 10515 } } filter { dissect { mapping => { "message" => "%{timestamp} [%{thread}] %{log-level} %{class} - %{message}" } } kv { source => "message" field_split => "`" value_split => "=" } } output{ stdout{ } elasticsearch{ hosts=>["this is your ES server IP:9200"] index => "demo:daily-index,this is your ES index " } } ### 启动脚本,指定配置文件,指定data目录(tips:同一个logstash可配置多个项目,指定不同的config,path.data nohup sh ./bin/logstash -f /usr/local/logstash-6.2.4/config/daily.config --path.data=/usr/local/logstash-6.2.4/data > nohup.log & 4. Kibana 设当前服务器目录为 /root logstash-6.2.4.tar.gz 已上传到 /root 目录下 tar -zxvf kibana-6.2.4-linux-x86_64.tar.gz mv kibana-6.2.4-linux-x86_64 /usr/local cd /usr/local/kibana-6.2.4-linux-x86_64 ### 配置 kibana config文件,增加配置 vim config/kibana.yml server.port: 5601 server.host: "0.0.0.0" elasticsearch.url: "http://this is your ES server IP:9200" kibana.index: ".kibana6" ### 启动 nohup ./bin/kibana & 5. FileBeatFilebeat安装 下载:wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.5.0-linux-x86_64.tar.gz 解压:tar -zxvf filebeat-6.2.1-linux-x86_64.tar.gz 修改 filebeat.yml 配置文件 enabled: true paths: - /root/et-industry-knowledge-graph/logs/smartqa.log 日志收集路径 注释掉 es logstash 配置 output.logstash: # The Logstash hosts hosts: ["localhost:10515"] logstash地址 启动 nohup ./filebeat -e -c filebeat.yml > filebeat.log & 查看启动 ps -ef|grep filebeat