Ubuntu下部署ELK
1. 安装Ubun
办公电脑,只有一台,但是配置还可以,16g内存,所以就直接搞个虚拟机,把系统装在虚拟机中。
下载可个vmware,为了不影响他人网速,从同事那里拷了个Ubuntu 16(Ubuntu的版本是按发布时间定的,不是图形界面的那种),就开始安装,分配cpu,内存,硬盘等,一路默认下来,系统就自动安装好了。
系统重启后,直接是一个字符屏幕,输入用户名和密码。输入密码时没有占位符,还真不习惯。登录完成后,按照官网文档,试了试一些基本的命令:mkdir
、sudo
等。
2. 系统插件安装
系统安装好了后,想部署个elk练练手。Ok,开干,在window中下载elk安装包,很快就下载好了,然后我就蒙了,WTF,我怎么把软件塞进Ubuntu啊!!!
为了度娘,可以用xShell给整上去。下载xshell,这个倒是不大,很快就下载好了。安装完成,弹出个新建回话界面,需要输入Ubuntu的ip和端口。
在Ubuntu中输入命令:ip addr
,就可以看到虚拟机的ip和端口,拿着ip和端口,到xshell中新建链接。输入完成,点击连接,居然链接不上,好吧,请教了下运维哥们儿。他检查了下ip,ip是正确的,猜测可能是ssh服务没有启动,so,运行命令 netstat -ntpl
,结果没有记录。认定服务没有启动起来。然后运行命令启动服务:server ssh restart。发现服务没有安装,继续运行命令:apt-get install openssh-server
。系统开始自动下载ssh。但是那个下载速度啊,比flash man 还慢,几kb的下载。
等了半个小时,终于下载好了。下载完毕后服务自动安装。然后继续运行命令:netstat -ntpl
查看服务是否开启。终于有内容了
既然服务已经启动,那就上xshell,开始连接。这个时候,xshell中连接的端口是我之前写的24端口,还是连接不上,经过摸索,原来xshell默认使用的是22端口。
改成22端口,Connection established!!弹出个登录界面
然后输入Ubuntu的用户名,点击确定,后面输入对应的密码。Good ,通过xshell进入Ubuntu了。后面的命令操作,没有做特别说明,都是在xshell中操作了。
3. 更换资源
之前下载软件的时候,慢的跟shit一样,看记录,直接连接到外网在下载,太慢了,运维哥们儿告诉我可以切换源。找到一篇博客,博客里面有国内的地址源。Copy了清华大学的源。输入命令切换为管理员权限:sudo -i
,这时提示输入密码,输入之前登录用户的密码(系统创建的第一个用户,具有sudo权限)。
进入系统资源地址配置文件:vim /etc/apt/sources.list
。提示命令不存在,我擦,规矩真多… ,没有安装vim,好吧,输入命令安装vim:apt-get install vim
。
安装完成后,进入系统资源列表:vi /etc/apt/sources.list
,在里面将前面复制的资源地址复制进去,然后保存退出(:wq
):英文的冒号,跟wq然后回车。资源配置已经ok了,把这些资源刷新的内存中:apt-get update
。
4. 将ELK上传到Ubuntu
直接将ELK的安装包拖动到xshell窗口。然后就自动传输了,速度还挺快。很快就传完了。然后就下班了(_)。
第二天上午处理公司相关的事情,整到11:40才整完。然后就继续昨天未完之事。
正在想文件到底传到哪儿呢,一看界面,有提示,temp(其实是上传时的当前目录),ok,到temp中看一下:cd /tmp/
。文件赫然在列。
Ok,文件已经成功上传到Ubuntu。2016年11月18日
5. 将jdk上传Ubuntu
Elk是基于Java,所以还需要安装jdk。到官网下载了个jdk:jdk-8u111-linux-x64.gz,先将jdk上传到Ubuntu,有了前面的经验,这里就不详述了,直接拖进去,10Mb的传输速度,刚刚的
6. 安装jdk
1) 创建个jdk安装目录:sudo mkdir /usr/lib/jvm
2) 将下载的jdk解压到安装目录:tar xvzf jdk-8u91-linux-x64.tar.gz -C /usr/lib/jvm/
。刚开始是以自己账号执行,提示没有权限,然后换成root权限:sudo -i
,然后在执行解压,顺利完成。
3) 配置环境变量
进入配置文件:vim ~/.bashrc
,在文档最后追加一下内容
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_111
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
然后按esc键,输入:wq
,保存退出。
4) 将环境变量刷新到缓存
环境变量写好了后,将变量刷新到系统缓存:source ~/.bashrc
,然后执行Java -version
和Java
,有相应的数据返回。
环境变量配置完成。
7. 安装Logstash
Mkdir /usr/lib/logstash
,解压logstash
输入命令:tar xvzf logstash-2.3.2.tar.gz -c /usr/lib/logstash/
,居然提示命令不对,wfk,咋可能呢,刚刚还输入了。遂问度娘,度娘说哪个-c应该是大写,而不是小写(!)。修命令tar xvzf logstash-2.3.2.tar.gz -C /usr/lib/logstash/
。解压完成。
3) 创建logstash的配置文件
命令是啥呢?我百度了一圈居然没找到!!只有说有vim 或者vi,好吧直接试试:vim logstash.conf
。
向同事问了下用touch
命令。另外还问了vim
、cat
命令:vim
查看和编辑文件,cat
查看文件,touch
创建文件。如果需要创建一个文件,然后马上编辑,就可以用vim
,在编辑完成保存,会保存到当前目录。
所以,我决定使用vim:vim logstash.conf
。进入编辑界面,然后输入一下内容
然后保存退出:按下esc
,然后输入:wq
。
dir
下,果然在了
Ok,现在输入、输出配置都为空,先启动下看看是什么效果。
8. 启动logstash
输入命令:./bin/logstash -f logstash.conf
。(-f 是指定配置文件),此时会提示启动成功
由于我们之前没有为输入和输出指定任何内容(logstash.conf),所以没有输入输出效果。现在我们修改下logstash.conf,以便我们能看到输入和输出效果。
输入命令:vim logstash.conf
,修给为如下:
按下esc
,输入:wq
保存退出。
再启动logstash,输入命令:./bin/logstash -f logstash.conf
。此时,界面应该等待输入状态
此时输入任何东西都会输出
此时格式不好看,更改下输出格式:按下ctrl + c
退出编辑
这个时候pipeline还没有停止,再按下ctrl + c
停止
编辑logstash.conf,输入命令:vim logstash.conf
。随便输入什么,进入编辑状态,输入一下内容
按下esc,输入::wq
保存退出
在此启动logstash,输入命令:./bin/logstash -f logstash.conf
如果配置文件错误,将会提示如下信息
启动成功后,输入test,旧货出现好看的输出格式
9. 安装elasticSearch
将文件解压到user/lib/elastic-search:
10. 修改elasticSearch配置文件
输入命令:vim config/elasticsearch.yml
。
11. 启动elasticSearch
输入命令:./bin/elasticsearch -d
#-d为后台启动,发现启动不成功
好吧,看看日志说什么。按下ctrl + c
退出,输入命令:cd logs
,查看日志,没有看出什么具体的,百度了下,可能是没有配置端口和host,
打开配置文件: vim config/elasticsearch.yml
Host和端口都注释了,好吧,取消注释试试
保存退出。
再启动,发现还是报错
在此百度了下,得到如下结果
好吧,我切换到我自己的用户:su 你的用户名
再执行启动命令,又爆出其他错误
没权限。。百度了下,我这个用户具有sudo权限,有两个方案:
1、 将ElasticSearch的安装目录及其子目录改为另外一个非root账户(已有账户),命令如下
sudo chown -R guest elasticsearch-2.4.0
sudo chgrp -R guest elasticsearch-2.4.0
2、 专门为es创建个账号,然后再将这个文件夹切换到新建的这个用户下,然后用这个用户启动。
创建用户组和用户命令如下
groupadd elsearch
useradd elsearch -g elsearch -p elasticsearch
在设置权限时,需要切换到root。
账号创建完了,更改elasticsearch文件夹及内部文件的所属用户及组为elsearch:elsearch
输入命令:
chown -R elasticsarch:elasticsearch /usr/lib/elastic-search/elasticsearch-2.3.2/
切换到elastic用户
使用elasticsearch用户启动
12. 验证elasticSearch启动状态
在浏览器中输入网址http://localhost:9200/
,结果启动不成功。
然后不知道是什么原因,百度了下,在启动的时候,不在后台启动,以便看到启动日志。
重新启动elasticSearch:./bin/elasticsearch
。(注意,没有加-d,即不在后台启动)
从这个图中,可以看出,其实是启动了的,启动地址也显示了,这个时候,再访问127.0.0.1:9200
和127.0.0.1:9300
都访问不了。
到elasticSearch.yml中阅读了下配置说明,这里配置的是es所在服务器的ip,不配默认为本机。然后验证的时候,在其他电脑输入es所在电脑的ip和对应端口
从新修改配置文件,并修改为虚拟机的ip
然后保存退出,并重新启动,然后在其他电脑上输入网址,就会有如下信息
13. 安装elasticSearch插件
这个看着没多少东西,例如索引什么的都没有,需要安装一个插件(head)。
安装方法有两个:第一,使用install 直接安装,第二,直接将插件下载,然后复制到es指定目录下。这里使用第一个方法。
现将当前目录切换到es根目录:cd /usr/lib/elastic-search/elasticsearch-2.3.2/
,然后输入命令:./bin/plugin install mobz/elasticsearch-head
,就会显示正在下载并自动安装
然后再其他电脑上浏览器中输入http://192.168.71.129:9200/_plugin/head/
即可查看
14. 测试elasticSearch与logstash连接
修改logstash.conf,让输入同时输出到屏幕和es
输入命令:vim logstash.conf
,修改完成保存时,提示readonly
百度了下,使用wq!
和 set noreadonly
,以及rm /var/temp/logstash.conf.*
,都还是无法保存,然后想了下会不会是其他程序占用,使用命令:ps -fe|grep logstash.conf
,发现只有(--color=auto logstash.conf
)这个占用,按理说这个应该是系统设置字体颜色的,不会对文件上锁;……好吧,看下这个文件到底是否具有读写(rw)权限,使用命令:ls -ld logstash.conf
,结果如下,
看来,只有root才有权限。好吧,切换到root用户,然后在编辑,成功保存。然后切换到我自己的用户名,继续启动。
启动后,再控制台随便输入什么,理论上应该在控制台和es中输出刚刚输入的内容,结果,报了一串的错误,
看错误信息,应该是es没有启动,切换到elasticsearch用户,启动es,然后切换到自己的用户,再启动logstash,还是报上图的错误,我在浏览器中输入http://192.168.71.129:9200/
,正常访问,es是启动了的,那只能是es(是192.168.71.129)的ip配置和logstash.conf(是localhost)中配置的不一致,改成一样试试。改成一样后,再次启动。启动成功,并成功在控制台和es打印出输入内容
15. 安装kibana
1) 创建安装目录
Mkdir /usr/lib/kibana
2) 解压kibana
进入tmp文件夹:cd /tmp
解压文件,输入命令:tar xvzf l kibana-4.5.0-linux-x64.tar.gz -C /usr/lib/ kibana/
16. 启动kibana
输入命令:./bin/kibana
。报错,提示没权限
我擦,继续给我这个权限赋权限,并启动
提示没有和es建立连接,应该是kibana配置不对,查看并修改kibana配置:vim config/kinana.yml
。
保存退出,启动kibana。
并在浏览器中访问,开起来是启动成功了
有个提示,这个是提示连接不上es,因为es我还没启动,
17. ELK串联验证
1) 启动elasticsearch(如果已经启动,则跳过)
2) 启动logstash(如果已经启动,则跳过)
3) 启动kibana(如果已经启动,则跳过)
在浏览器中验证
部署成功