ELK浅析(1)


ELK简介

ELK是三个开源软件的缩写,分别表示:Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat,它是一个轻量级的日志收集处理工具(Agent),Filebeat占用资源少,适合于在各个服务器上搜集日志后传输给Logstash,官方也推荐此工具。

Elasticsearch是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。主要负责将日志索引并存储起来,方便业务方检索查询。

Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。是一个日志收集、过滤、转发的中间件,主要负责将各条业务线的各类日志统一收集、过滤后,转发给 Elasticsearch 进行下一步处理。

Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

ELK框架

在这里插入图片描述

组件安装

先从ELK官网(https://www.elastic.co/guide/index.html)下载如下三个组件:
elasticsearch-xx.xx.xx-linux-x86_64.tar.gz
kibana-xx.xx.xx-linux-x86_64.tar.gz
logstash-xx.xx.xx.tar.gz

安装elasticsearch

第一步 安装依赖包

yum -y install tomcat

第二步 解压压缩包

tar -xf elasticsearch-xx.xx.xx-linux-x86_64.tar.gz

第三步 修改配置
进入解压目录下的config

echo "network.host: 0.0.0.0" >> elasticsearch.yml
echo "http.port: 9200" >> elasticsearch.yml
echo "http.cors.enabled: true" >> elasticsearch.yml
echo "http.cors.allow-origin: \"*\"" >> elasticsearch.yml

单节点

echo "node.name: node-1" >> elasticsearch.yml
echo "discovery.seed_hosts: [\"127.0.0.1\"]" >> elasticsearch.yml
echo "cluster.initial_master_nodes: [\"node-1\"]" >> elasticsearch.yml

多节点

每个节点配置不同的node.name与initial_master_nodes对应
echo "discovery.seed_hosts: [\"IP1\",\"IP2\"......]" >> elasticsearch.yml
echo "cluster.initial_master_nodes: ["node-1","node-2"......]" >> elasticsearch.yml

第四步 创建用户(无法使用root启动)
创建用户组

groupadd elk

创建用户

useradd elk -g elk -p 123456

第五步 设置目录所属
修改解压后的目录的所属

chown -R elk:elk elasticsearch-xx.xx.xx

第六步 设置线程数

echo "* soft nproc 4096" >> /etc/security/limits.conf
echo "* hard nproc 4096" >> /etc/security/limits.conf
echo "root soft nproc 4096" >> /etc/security/limits.conf
echo "root hard nproc 4096" >> /etc/security/limits.conf

第七步 增大内存映射

echo "vm.max_map_count = 655360" >> /etc/sysctl.conf
sysctl -p

第八步 启动
切换用户

su elk

进入解压后的目录下的bin,启动

nohup sh elasticsearch > /dev/null 2>&1 & 或 ./elasticsearch -d

安装elasticsearch异常解决

错误

错误一

在这里插入图片描述
解决
修改elasticsearch-env的122行
将< <(env)改为<<<“env”

错误二

在这里插入图片描述
解决
echo “vm.max_map_count = 655360” >> /etc/sysctl.conf
sysctl -p

echo “* soft nproc 4096” >> /etc/security/limits.conf
echo “* hard nproc 4096” >> /etc/security/limits.conf
echo “root soft nproc 4096” >> /etc/security/limits.conf
echo “root hard nproc 4096” >> /etc/security/limits.conf

错误三

在这里插入图片描述
解决
修改配置文件elasticsearch.yml
根据节点个数配置
在# --------------------------------- Discovery ----------------------------------中添加
discovery.seed_hosts: [“IP1”,“IP2”…]
cluster.initial_master_nodes: [“node-1”,“node-2”…]

错误四

在这里插入图片描述
解决
echo “* soft nofile 65536” >> /etc/security/limits.conf
echo “* hard nofile 65536” >> /etc/security/limits.conf
echo “root soft nofile 65536” >> /etc/security/limits.conf
echo “root hard nofile 65536” >> /etc/security/limits.conf

警告

警告一

在这里插入图片描述
解决
检查elasticsearch.yml配置文件
node.name配置与cluster.initial_master_nodes相同

安装kibana

第一步 安装依赖包

yum -y install tomcat

第二步 解压

tar -xf kibana-xx.xx.xx-linux-x86_64.tar.gz

第三步 配置
进入解压目录下的config

echo "server.port: 5601" >> kibana.yml
echo "server.host: \"0.0.0.0\"" >> kibana.yml
echo "elasticsearch.hosts: [\"http://localhost:9200\"]" >> kibana.yml
echo "kibana.index: \".kibana\"" >> kibana.yml
echo "pid.file: ../run/kibana.pid" >> kibana.yml
echo "logging.dest: ../log/kibana.log" >> kibana.yml
echo "i18n.locale: \"zh-CN\"" >>  kibana.yml

第四步 设置目录所属
修改解压后的目录的所属

chown -R elk:elk kibana-xx.xx.xx

第五步 启动
切换用户

su elk

进入解压后的目录下的bin,启动

nohup sh kibana > /dev/null 2>&1 &

安装logstash

第一步 安装依赖包

yum -y install tomcat

第二步 解压

tar -xf logstash-xx.xx.xx.tar.gz

第三步 安装插件
进入解压后的目录下的bin
在线安装

./logstash-plugin install 插件名

离线安装(离线下载需要打包插件)

./logstash-plugin install file://path/packet_name.zip

第四步 配置自定义文件
第五步 启动
进入解压后的目录下的bin,启动

nohup sh logstash -f 自定义配置文件 > /dev/null 2>&1 &

结语

至此,本章内容结束,希望大家有所收获,后面关于ELK还会有几篇文章,主要讲述配置等,敬请期待。