序言
Elastic Stack是是Elastic公司的一套开源项目,这套技术栈也被广泛的称之为ELK。包括elasicsearch,logstash,kibana。其主要功能就是对数据进行收集,格式化,索引,分析和可视化。具有搭建简单,配置容易等优点。
起初,只有elasticsearch是elastic公司的,不过在接下来的一段时间内,elastic公司先后收购了logstash和kibana,统一三者的发布版本号,完善了三者间的配合,将三者打造成了数据收集分析和展示的利器。
ElasticStack从2014年开始逐渐趋于完善稳定,不过现在(2016年05月16日)仍处在快速迭代中。
对于分析日志而言,一般分为三个步骤;日志收集,日志整理存储,数据展示。对应ElasticStack中的:L(ogstash), E(lasticsearch),K(ibana)。
安装
本人的所有安装均在CentOs7下进行安装的,如系统不同,请做适当修改。
安装JAVA
ELK的运行需要基于Java,其次运行的时候,他会去在环境变量寻找Java,所以还需要设置环境变量。
安装Java
1
yum install java-1.7.0-openjdk
查找文件安装位置
如果我们不熟悉yum安装后的文件位置,可以通过
rpm -ql
来显示安装后的文件所在位置1
rpm -ql java-1.8.0-openjdk
设置环境变量
编辑
~/.bashrc
或/etc/bashrc
, 在里面添加JAVA_HOME
和JRE_HOME
1
2
3
4
5
6#set java environment
JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75.x86_64
JRE_HOME=$JAVA_HOME/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH
安装Elastic
官方提供了两种安装方式,一种是压缩包的方式,这种方式比较的简单,解压后既可以使用
压缩包安装
从官网下载好 tar.gz 文件 (tar.gz 和 zip文件一样 看个人习惯)
1
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz
解压压缩文件并进入文件夹
1
2tar -zxf elasticsearch-6.2.4.tar.gz
cd elasticsearch-6.2.4运行
1
bin/elasticsearch
通过上面的命令运行的时候,你会发现elasticsearch是在前台运行的,终端关闭,elasticsearch也就关闭了,我们可以加个参数
-d
实现以守护进程的方式运行即可1
bin/elasticsearch -d
可能会遇到的问题
can not run elasticsearch as root
新建一个 用户,并切换到这个用户,然后再启动elastic
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
切换到 root 用户修改
1
vim /etc/security/limits.conf
在最后面追加下面内容
1
2*** hard nofile 65536
*** soft nofile 65536Error occurred during initialization of VM,Could not reserve enough space for 2097152KB object heap
这里主要是内存不足,将elastic的运行内存调低即可
切换到 root 用户修改
1
vim /etc/security/limits.conf
将原文件中的下面内容
1
2-Xms2g
-Xms2g修改为
1
2-Xms1g
-Xms1g
YUM安装
下载并安装签名密钥
1
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
添加repo源
编辑
elk.repo
1
vim /etc/yum.repos.d/elk.repo
并添加一下内容
1
2
3
4
5
6
7
8[elasticsearch-6.x]
name=Elasticsearch repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md使用Yum安装
1
yum install elasticsearch
测试是否安装成功
运行后,通过curl访问对应的端口
1
curl -XGET http://localhost:9200
如果有内容返回,恭喜你。
安装Logstash
压缩包安装
从官网下载好 tar.gz 文件 (tar.gz 和 zip文件一样 看个人习惯)
1
wget https://artifacts.elastic.co/downloads/logstash/logstash-6.2.4.tar.gz
解压压缩文件并进入文件夹
1
2tar -zxf logstash-6.2.4.tar.gz
cd logstash-6.2.4运行
1
bin/logstash -f logstash.conf
YUM安装
下载并安装签名密钥
这里其实跟elastic一样,如果上面执行过,可跳过
1
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
添加repo源
编辑
elk.repo
1
vim /etc/yum.repos.d/elk.repo
并添加一下内容
1
2
3
4
5
6
7
8[logstash-6.x]
name=Elastic repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md使用Yum安装
1
yum install logstash
安装Kiban
压缩包安装
从官网下载好 tar.gz 文件 (tar.gz 和 zip文件一样 看个人习惯)
1
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.4-linux-x86_64.tar.gz
解压压缩文件并进入文件夹
1
2tar -zxf kibana-6.2.4-linux-x86_64.tar.gz
cd kibana-6.2.4-linux-x86_64修改
config/kibana.yml
里面的elasticsearch.url 指向你的 elastic的地址运行
1
bin/kibana
在浏览器查看
打开浏览器,输入你的服务器的ip:5601, 例http://127.0.0.1:5601, 就可以看到Kibana的页面了,当然,有可能你的服务器没有开放5601端口,这里也可以通过nginx做个代理,进行访问,这个就放在下一篇文章讲解了。
YUM安装
下载并安装签名密钥
这里其实跟elastic一样,如果上面执行过,可跳过
1
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
添加repo源
编辑
elk.repo
1
vim /etc/yum.repos.d/elk.repo
并添加一下内容
1
2
3
4
5
6
7
8[kibana-6.x]
name=Kibana repository for 6.x packages
baseurl=https://artifacts.elastic.co/packages/6.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md使用Yum安装
1
yum install kibana
将数据从MySQL导入到elastic
我们这里安装了Logstash,所以我们这里可以通过Logstash连接数据库,获取数据后推送到elastic,由于我们数据库的数据是递增的,我们使用Logstash的时候,也可以以递增的方式向elastic添加数据,这样也减少各个方面的压力
Logstash连接数据库需要jdbc的支持,所以,第一步还是安装扩展
安装mysql-connector-java
yum直接安装既可以,安装完成后,通过rmp -ql
找到 /usr/share/java/mysql-connector-java-5.1.17.jar 的位置,这里后面会用到
配置Logstash的配置文件
在input里面,书写多个 对象, Logstash会从上而下执行,而不是覆盖,所以,如果你想一次添加多个表的数据到elastic,可以多写几个jdbc的对象,每个对象访问不同的库和表
https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html
上面是elastic官方的 jdbc 插件的使用说明,下面我就上一下自己的配置,并简单的附一下说明
1 | input { |
后记
个人也是刚刚接触ELK,准备打算将学习过程中的东西记录下来,也算是踩坑日记了,所以,ELK的相关东西后面应该还会有很多,Fighting!