一次失败的ELK安装配置指南

2022-07-11 14:54:05 浏览数 (1)

系统现在分为好多部分,面对不同的服务,又接受不同的服务。

bug联查确实很有难度,几乎除了负责统一的我以外没人能找到真正的原因了。所以,想着能把日志监控做起来,恰好最近不是很忙,就折腾了一下ELK这个日志监测系统,结果弄了两天还没有成功。

什么,不知道什么是ELK?那就百度一下吧,哦不,谷歌一下,程序猿说百度显得不专业。

其实我之前也不知道什么是ELK,只是最近找日志系统才知道有这么个东西。

看着网上充斥着各种五分钟配置ELK,十分钟配置ELK,我真是感觉大神无处不在,为什么我就弄不成功呢?

好了,不多说了,开始讲具体实施的过程吧。

看起来这个工程更新迭代还挺快,2015年的帖子介绍的还是1.x.x,现在都已经5.x.x版本了,有很多功能和特性都发生了变化,配置起来也不一样了。

kibana 和 elasticsearch下载地址

https://www.elastic.co/products

logstash下载地址

https://www.elastic.co/downloads/logstash

服务测试机:

126.32.22.94

日志采集机器:

126.32.24.195

JDK版本1.7(这是个坑,5.x.x版本都只能用1.8的JDK)

版本:

kibana-5.0.0 x86_64

logstash-5.2.2

elasticsearch-5.0.0

redis地址:

126.32.24.194 db11

安装elasticsearch

1.下载tar.gz到目录/data/xxx/logMonitor/elasticsearch

解压:tar -zxvf -----.tar.gz

进入bin目录,尝试安装head,结果遇到jdk版本问题,暂时跳过

./elasticsearch-plugin -install mobz/elasticsearch-head

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/elasticsearch/plugins/PluginCli : Unsupported major.minor version 52.0

启动,依然是在bin目录下

nohup ./elasticsearch -Des.insecure.allow.root=true >/data/xxx/logMonitor/elasticsearch/nohup.log 2>&1 &

得到进程号3745,ps看一下,结果没找到,看来启动不成功。check了一下log,看来还是jdk问题

下载了1.8版本的jdk

jdk-8u121-linux-x64.rpm

上传到/usr/local/src

安装rpm rpm -ivh jdk-8u121-linux-x64.rpm

安装完成后在/usr/java/目录下面会有jdk。。。。

配置环境变量

vim /etc/profile

在末尾增加下面内容

export JAVA_HOME=/usr/java/jdk1.8.0_121

export JRE_HOME=$JAVA_HOME/jre

export CLASSPATH=$JAVA_HOME/lib:$CLASSPATH

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH

保存后执行 source /etc/profile让配置生效

重新试试安装head plugin

这时候成功了 ,启动elasticsearch

输出有这么一个错误,然后退出了

ERROR: D is not a recognized option

这个命令已经不能用了吗?

只好退出root,用我的用户twoeggs(二蛋)来操作

还得重新加载一下jdk

使用root chown -R twoeggs /data/xxx/logMonitor 给用户twoeggs赋权限

然后切换到用户twoeggs

启动 nohup ./bin/elasticsearch > nohup.log &

看日志还有个警告

[WARN ][o.e.b.JNANatives ] unable to install syscall filter:

java.lang.UnsupportedOperationException: seccomp unavailable: requires kernel 3.5 with CONFIG_SECCOMP and CONFIG_SECCOMP_FILTER compiled in

但是输入测试,是有结果的,所以那个警告先放一放

curl -X GET http://localhost:9200/

{

"name" : "uCelUQO",

"cluster_name" : "elasticsearch",

"cluster_uuid" : "aDfiyryqQbaYs68VJza74Q",

"version" : {

"number" : "5.0.0",

"build_hash" : "253032b",

"build_date" : "2016-10-26T04:37:51.531Z",

"build_snapshot" : false,

"lucene_version" : "6.2.0"

},

"tagline" : "You Know, for Search"

}

好了,下一步。开始安装kibana

进入目录logMonitor/kibana

解压

tar -zxvf kibana-5.0.0-linux-x86_64.tar.gz

在config/kibana.yml 中配置 search的地址,增加下面一行

elasticsearch.url:"http://localhost:9200"

启动kibana

nohup bin/kibana > ../nohup.log &

测试一下,服务确实启动了,有返回结果。但是在浏览器里却不能访问?

可能是网络问题?

curl -X GET http://localhost:5601/

<script>var hashRoute = '/app/kibana';

var defaultRoute = '/app/kibana';

var hash = window.location.hash;

if (hash.length) {

window.location = hashRoute hash;

} else {

window.location = defaultRoute;

}</script>

经过检查,发现时配置文件的问题,它会自动绑定到IPV6上面,需要手动改一下配置文件。

elasticsearch和kibana都需要改。

先改了elasticsearch的,在这一行改为 network.host:0.0.0.0

但是没法重新启动了,遇到了问题

ERROR: bootstrap checks failed

max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144],

在网上查了一下 需要配置一下,使用命令

sudo sysctl -w vm.max_map_count=262144

上面这些配置都是临时性的,如果下次需要还要重新配置

然后重启,这次终于好了,在浏览器输入126.32.22.94:9200 可以收到显示信息

强势插入:

安装x-pack插件

1.安装elasticsearch的插件

sudo bin/elasticsearch-plugin install x-pack

2.安装kibana的插件

sudo bin/kibana-plugin install x-pack

ElasticSearch:

用户名:elastic

密码:changeme

登录到Kibana会发现 elastic是一个最高级别的user,拥有所有权限,其角色是superuser。

下面继续搞kibana

在配置文件中加入host:"0.0.0.0"好像不太好用,又删掉

仔细查看了kibana的配置文件,有这样一条,简单翻译一下

# Specifies the address to which the Kibana server will bind. IP addresses and host names are both valid values.

#指定Kibana服务要绑定的地址。IP地址跟主机名都可以。

# The default is 'localhost', which usually means remote machines will not be able to connect.

#默认值是“localhost”本机,这就意味着远程机器通常情况下是不能连接的。

# To allow connections from remote users, set this parameter to a non-loopback address.

#要想允许远程用户访问,就把该参数设置成非回送地址。

#server.host: "localhost"

尝试了改成0.0.0.0,和改为我的主机ip都不好使。。。再继续研究

先暂停上面的工作,先来安装logstash

把logstash上传到生产日志的服务器上响应目录

/data/xxx/logstash

解压tar -zxvf logstash...

启动,看来这个也有jdk版本问题,都需要jdk1.8

切换了jdk版本之后看起来是成功启动了

然后呢,输入下面的语句启动logstash,再输入hello world!进行测试

bin/logstash -e 'input { stdin { } } output { stdout {} }'

hello world!

启动logstash输出正常

Sending Logstash's logs to /data/hexl/logstash/logstash-5.2.2/logs which is now configured via log4j2.properties

[2017-03-14T16:25:52,665][INFO ][logstash.setting.writabledirectory] Creating directory {:setting=>"path.queue", :path=>"/data/hexl/logstash/logstash-5.2.2/data/queue"}

[2017-03-14T16:25:52,688][INFO ][logstash.agent ] No persistent UUID file found. Generating new UUID {:uuid=>"02674bd2-2d46-43fd-868d-b71108947a7d", :path=>"/data/hexl/logstash/logstash-5.2.2/data/uuid"}

[2017-03-14T16:25:52,820][INFO ][logstash.pipeline ] Starting pipeline {"id"=>"main", "pipeline.workers"=>24, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>5, "pipeline.max_inflight"=>3000}

[2017-03-14T16:25:52,856][INFO ][logstash.pipeline ] Pipeline main started

对输入进行了格式化输出:

The stdin plugin is now waiting for input:

2017-03-14T08:25:52.889Z recommend_dataparse_web195v24_sjs hello world!

[2017-03-14T16:25:52,912][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}

hi

2017-03-14T08:25:58.339Z recommend_dataparse_web195v24_sjs hi

但是配置elasticsearch的连接怎么都不好使,真是要疯。

安装logstash的插件

bin/logstash-plugin install x-pack

所以,搞来搞去,还是没有成功。

我准备去读一下项目文档啦,希望能有所帮助吧。

或者谁有成功经验可以指导一下我嘛。。。

等我研究明白搭建成功了,再来重新写一篇吧~~~加油

0 人点赞