环境说明

线上服务器负责匹配整理数据到 redis 中存储,本地把 redis 里的日志文件再导致 ES 中。

环境的前提是已经把 java 8 安装好

yum 软件安装后占用大小

  • java-1.8.0 = 178M
  • logstash = 290M
  • elasticsearch = 469M
  • kibana = 688M

以下以 centos7 yum 方式安装

java 8 安装

# yum search java-1.8.0

# #找到 java-1.8.0-openjdk-devel

# yum install java-1.8.0-openjdk-devel

# #添加环境变量

# vi /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.222.b10-1.el7_7.x86_64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

# #JAVA_HOME 需要替换成你服务器的目录,cd /usr/lib/jvm/java + tab 进入,pwd 显示全路径

# #验证

# java -version

ElasticSearch

# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

# vi /etc/yum.repos.d/elasticsearch.repo
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

# yum install elasticsearch

yum elasticsearch 安装

配置

Logstash

# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

# vi /etc/yum.repos.d/logstash.repo
[logstash-7.x]
name=Elastic repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

# yum install logstash

# #启用慢处理
# yum install haveged
# systemctl start haveged

# #安装服务
# cd /usr/share/logstash/bin
# ./system-install /etc/logstash/startup.options systemd
# vi /etc/logstash/logstash.yml
node.name: test

mkdir 755 /var/log/logstash
chown logstash:logstash /var/log/logstash

chown logstash:logstash /etc/logstash/startup.options

# #启用
# systemctl start logstash

yum logstash 安装
添加 logstash 到windows 服务

FQA:

1、服务启动不了

通过查看系统日志来查看错误,systemctl 启动时没有任何信息出来,通过 ps aux |grep logstash 查看有没有进行启动。也可以通过 systemctl status logstash 查看状态。信息中会出现最后一些停止的时候,我们可以判断是不是报错了,通过 /var/log/message 查看错误内容,如果不确认是不是当次的报错可以使用 tail -f /var/log/message 执行后回车留空几行(在单独一个窗口中)。再启动 logstash 就可以得到错误信息。我们只需要关注 [ERROR|error] 标识里的 :message 信息即可

could not find java; set JAVA_HOME or ensure java is in PATH

2、匹配过的数据第二次就不再进行匹配了

这是 logstash.sincedb 的作用。我们需要在 pipeline.input.sincedb_path 中进行设置即可,linux 设置为 "/dev/null",windows 设置成 "NUL" 即可不记录处理历史。

3、 Ignoring the 'pipelines.yml' file because modules or command line options are specified

这个问题是我手贱动配置导致的问题,logstash.yml 里的 Pipeline Configuration Settings 下的配置不要动,会出上面的那个提示。(单个 pipeline 的时候感觉不到问题,但是如何是多个就会出现失效的错觉)

4、logstash 启动慢设置

logstash 启动缓慢问题-haveged安装

Note: 不知道是不是因为用了虚拟机的问题,感觉运行速度没有什么变化。

5、ERROR No configuration found in the configured sources.

这个错误是因为你没有 pipeline 而报的错

6、为什么不管 linux 还是 windows 服务都会出现重启的问题
// TODO 未找到原因

经验

如果没有用过的软件,配置文件只动必需动的。不要软件还没能正常启动就到处动配置(当然你自信对配置了如指掌可以忽略),到时出错调试到你头秃。

Kibana

# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

# vi /etc/yum.repos.d/kibana.repo
[kibana-7.x]
name=Kibana repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

# yum install kibana

yum kibana 安装

Redis

redis 安装

ELK 整合

使用 nssm 设置 windows 服务

参考文章

# 服务管理
任务管理器 -> 服务 -右键-> [启动服务|停止服务]

# 删除服务
sc delete 服务名

FQA

为什么做先存储到 redis 再导入 ES

因为是集中式日志系统,我们会有多台服务器,每台服务器都会监听日志文件,日志文件的生成数量是不一样的,这会造成并发高而导致 ES 写入失败。redis 在这里的是起一个排队的作用(起码能保存能写入完成再进行下一次写入),还可以使用 kafka 来代替,内存抗压强,读写快。

旧日志如何初始化导入 ES 中

如果 logstash.pipeline 没有生成 sincedb 文件,会把日志文件全部重新处理。已有则可以删除 sincedb 文件再启动即可。


jani
62 声望2 粉丝

该家伙很懒,什么都没留下~