Ubuntu下部署ELK

1. 安装Ubun

办公电脑,只有一台,但是配置还可以,16g内存,所以就直接搞个虚拟机,把系统装在虚拟机中。

下载可个vmware,为了不影响他人网速,从同事那里拷了个Ubuntu 16(Ubuntu的版本是按发布时间定的,不是图形界面的那种),就开始安装,分配cpu,内存,硬盘等,一路默认下来,系统就自动安装好了。
系统重启后,直接是一个字符屏幕,输入用户名和密码。输入密码时没有占位符,还真不习惯。登录完成后,按照官网文档,试了试一些基本的命令:mkdirsudo等。

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 -versionJava,有相应的数据返回。
环境变量配置完成。

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命令。另外还问了vimcat命令: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:9200127.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(如果已经启动,则跳过)
在浏览器中验证
部署成功

Ubuntu下部署ELK的更多相关文章

  1. ios中的.dylib和.a lib有什么区别?

    我知道Objectivec中的编译和运行时是什么,但是我想知道是什么画了这两个库之间的界限?他们的目的是什么,除了陈述一个是静态的而另一个是动态的?我们何时需要一个而不是另一个?

  2. xamarin.ios – ShareKit与MonoTouch如何?

    有人可以验证ShareKit实际上是否可用于MonoTouch并指导我完成使其工作所需的步骤?解决方法您首先从getsharekit.com下载还是使用ShareKit2.0?

  3. ios – iPhone崩溃日志不能正确地符号化并且是双重间隔的

    任何建议超过欢迎.谢谢.解决方法当这件事发生在我身上时,它只是我通过电子邮件收到的日志.如果我记得,至少有一些是在.msg文件中,我不得不把它们拿出来.它可能是Exchange编码更改.如果你显示不可见的字符,你可能会看到每个字符之间的东西.您可以找到并替换它们以删除它们或更改编辑器中的编码.

  4. ios – Xcode 7 beta 2:LaunchScreen.storyboard无法打开文档

    我在两个不同的Mac(iMac和MacBookpro)上收到这个错误.不知道为什么人们不能再现它,但我需要一些帮助.在运行XX优胜美地10.10.4的Mac上运行Xcode7beta2(15六月’15).甚至无法编译和运行我的项目..我从创建菜单创建了一个视图应用程序项目,就是这样.编辑:我试图删除并重新添加storyboard文件(也可以打开Main.storyboard插件),我仍然得到相同的

  5. ios – 为具有多个目标和不同平台的项目编写Podfile

    如何让CocoaPods成功整合到我的项目和iOS/Mac目标?我已经阅读了Podfile文档,但发现它在这方面缺乏.解决方法得到它了!从我的每个目标和运行的pod安装中删除libPods-xxxx.a文件,再次执行了我的目标集成.

  6. iOS中的CocoaPods是什么?

    任何人都可以详细说明iOS开发中的CocoaPods.我似乎无法理解它们是什么.提前致谢.解决方法CocoaPods是我在最近的iOS应用程序开发中发现的最好的东西之一.我用它来获取最新的Github开源项目作为框架和lib到我的项目中.最好的部分是它将自动管理依赖lib,因此无需拖放文件并下载文件夹blaablaaa只需一个简单的代码’podinstall即可!

  7. Swift 2/iOS 9 – libz.dylib找不到

    我在我的新的Swift2.0项目中使用一些来自google的外部代码,在早期版本中需要“libz.dylib”。更新到新的XCode/新的SDK后。

  8. android – 用我非常简单的calabash测试用例不断得到错误“HTTPClient :: ReceiveTimeoutError”

    我是calabash-android测试自动化库的新手.我花了两天时间来理解这个问题没有成功:(我正在使用calabash-android版本0.8.0,我按照文档pre-definedsteps进行测试.我的测试很简单,只需等待登录界面(这是一个包含id为“email_field”的输入字段的活动),输入用户名和密码.这是我在功能文件中的步骤:当我使用命令calabash-android运行my

  9. android – UnsatisfiedLInkError使用NDK链接到FFMPEG

    我使用bambuser的文件编译了FFMPEGforandroid.编译运行正常.没有错误.我还确保在build.sh中更改包名称.但是,一旦我尝试链接到文件,手机就会抛出UnsatisfiedLinkError.这是Androkd.mk文件:Video.c很简单:相应的Java代码也很简单:但我得到这个错误:我尝试用Java手动加载预构建的共享库(bambuser文件)(使用System.loa

  10. android – (Ionic 2)尝试回退到Cordova-lib执行时发生错误:TypeError:无法读取未定义的属性’then’

    编辑:当使用离子2时会发生这种情况.我知道它还不稳定,但我认为可能有一些修复,因为似乎其他人没有得到这个问题.编辑结束出于某种原因,我在尝试构建我的离子应用程序时突然开始出现此错误,使用“ionicbuildandroid”,以及“ionicbuildios”:我迷失在这里,不知道从哪里开始寻找.有没有人以前见过这个,能指出我正确的方向吗?

随机推荐

  1. crontab发送一个月份的电子邮件

    ubuntu14.04邮件服务器:Postfixroot收到来自crontab的十几封电子邮件.这些邮件包含PHP警告.>我已经解决了这些警告的原因.>我已修复每个cronjobs不发送电子邮件(输出发送到>/dev/null2>&1)>我删除了之前的所有电子邮件/var/mail/root/var/spool/mail/root但我仍然每小时收到十几封电子邮件.这些电子邮件来自cronjobs,

  2. 模拟两个ubuntu服务器计算机之间的慢速连接

    我想模拟以下场景:假设我有4台ubuntu服务器机器A,B,C和D.我想在机器A和机器C之间减少20%的网络带宽,在A和B之间减少10%.使用网络模拟/限制工具来做到这一点?

  3. ubuntu-12.04 – 如何在ubuntu 12.04中卸载从源安装的redis?

    我从源代码在Ubuntu12.04上安装了redis-server.但在某些时候它无法完全安装,最后一次makeinstallcmd失败.然后我刚刚通过apt包安装.现在我很困惑哪个安装正在运行哪个conf文件?实际上我想卸载/删除通过源安装的所有内容,只是想安装一个包.转到源代码树并尝试以下命令:如果这不起作用,您可以列出软件自行安装所需的步骤:

  4. ubuntu – “apt-get source”无法找到包但“apt-get install”和“apt-get cache”可以找到它

    我正在尝试下载软件包的源代码,但是当我运行时它无法找到.但是当我运行apt-cache搜索squid3时,它会找到它.它也适用于apt-getinstallsquid3.我使用的是Ubuntu11.04服务器,这是我的/etc/apt/sources.list我已经多次更新了.我尝试了很多不同的debs,并没有发现任何其他地方的错误.这里的问题是你的二进制包(deb)与你的源包(deb-src)不

  5. ubuntu – 有没有办法检测nginx何时完成正常关闭?

    &&touchrestarted),因为即使Nginx没有完成其关闭,touch命令也会立即执行.有没有好办法呢?这样的事情怎么样?因此,pgrep将查找任何Nginx进程,而while循环将让它坐在那里直到它们全部消失.你可以改变一些有用的东西,比如睡1;/etc/init.d/Nginx停止,以便它会休眠一秒钟,然后尝试使用init.d脚本停止Nginx.你也可以在某处放置一个计数器,这样你就可以在需要太长时间时发出轰击信号.

  6. ubuntu – 如何将所有外发电子邮件从postfix重定向到单个地址进行测试

    我正在为基于Web的应用程序设置测试服务器,该应用程序发送一些电子邮件通知.有时候测试是使用真实的客户数据进行的,因此我需要保证服务器在我们测试时无法向真实客户发送电子邮件.我想要的是配置postfix,以便它接收任何外发电子邮件并将其重定向到一个电子邮件地址,而不是传递到真正的目的地.我正在运行ubuntu服务器9.10.先感谢您设置本地用户以接收所有被困邮件:你需要在main.cf中添加:然后

  7. ubuntu – vagrant无法连接到虚拟框

    当我使用基本的Vagrantfile,只配置了两条线:我看到我的虚拟框打开,但是我的流氓日志多次显示此行直到超时:然后,超时后的一段时间,虚拟框框终于要求我登录,但是太久了!所以我用流氓/流氓记录.然后在我的物理机器上,如果我“流氓ssh”.没有事情发生,直到:怎么了?

  8. ubuntu – Nginx – 转发HTTP AUTH – 用户?

    我和Nginx和Jenkins有些麻烦.我尝试使用Nginx作为Jenkins实例的反向代理,使用HTTP基本身份验证.它到目前为止工作,但我不知道如何传递带有AUTH用户名的标头?}尝试将此指令添加到您的位置块

  9. Debian / Ubuntu – 删除后如何恢复/ var / cache / apt结构?

    我在ubuntu服务器上的空间不足,所以我做了这个命令以节省空间但是现在在尝试使用apt时,我会收到以下错误:等等显然我删除了一些目录结构.有没有办法做apt-getrebuild-var-tree或类似的?

  10. 检查ubuntu上安装的rubygems版本?

    如何查看我的ubuntu盒子上安装的rubygems版本?只是一个想法,列出已安装的软件包和grep为ruby或宝石或其他:)dpkg–get-selections

返回
顶部