环境说明
线上服务器负责匹配整理数据到 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
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 启动慢设置
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
Redis
ELK 整合
使用 nssm 设置 windows 服务
# 服务管理
任务管理器 -> 服务 -右键-> [启动服务|停止服务]
# 删除服务
sc delete 服务名
FQA
为什么做先存储到 redis 再导入 ES
因为是集中式日志系统,我们会有多台服务器,每台服务器都会监听日志文件,日志文件的生成数量是不一样的,这会造成并发高而导致 ES
写入失败。redis
在这里的是起一个排队的作用(起码能保存能写入完成再进行下一次写入),还可以使用 kafka
来代替,内存抗压强,读写快。
旧日志如何初始化导入 ES 中
如果 logstash.pipeline 没有生成 sincedb
文件,会把日志文件全部重新处理。已有则可以删除 sincedb
文件再启动即可。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。