elk日志系统
ELK组合是日志系统的经典组合。但是Logstash是java程序,占用内存资源比较大,前端将其换成轻量级的filebeat。haproxy放在主节点上做代理转发。
filebeat(日志收集)+ elasticsearch(日志存储搜索)+kibana(ui展示)+haproxy(代理转发)
安装
离线安装包: smb://192.168.9.1/公共模块/繁星/繁星二代/自检系统/(elk_tx1、elk_server、haproxy_tx1)
filebeat使用源码放在主机上编译。 elk三个工程使用官方下载的tar.gz的包。都是java程序,直接就能运行。
繁星2代已编译好filebeat,其他平台需按照下面步骤编译:
filebeat编译安装参考:
https://blog.csdn.net/lk142500/article/details/79535849
ubuntu14安装golang1.10:
https://www.cnblogs.com/senlinyang/p/8777384.html
配置
elasticsearch-6.4.0配置
# 修改 elasticsearch-6.4.0/config/elasticsearch.yml
# 开放所有ip访问
network.host: 0.0.0.0
# 修改系统参数,否则运行会报错
vi /etc/sysctl.conf
vm.max_map_count=655360
sysctl -p
kibana-6.4.0-linux-x86_64配置
# 修改 kibana-6.4.0-linux-x86_64/config/kibana.yml
# 开放所有ip访问
server.host: "0.0.0.0"
# 配置elasticsearch的访问地址
elasticsearch.url: "http://127.0.0.1:9200"
filebeat配置
- type: log
# 改成true
enabled: true
# 配置日志路径,可配置多个,支持通配符但层级格式必须相符
paths:
- /root/Log/Ops/*/*.log
- /root/Log/VASvr/*/*.log
# 日志编码格式。如果不一致,配置两个《- type: log》块。
encoding: gbk
# 本机标签,在kibana搜索时可以以beat.name为过滤条件
name: "myname-192.168.5.99"
haproxy配置
# 编辑/etc/haproxy/haproxy.cfg 在末尾增加下面配置
# 将本机所有9200端口数据转发至服务器9200端口
listen elastic_proxy
bind 0.0.0.0:9200
mode tcp
server s1 192.168.9.133:9200
使用
kibana访问地址: http://ip:5601
quick start
Discover是查看、搜索日志的主要页面。如果有filebeat上报日志,第一次进入Discover会自动跳转,创建Index Patterns。
创建完毕后,在Discover中可以看到日志内容了,鼠标移到message,点add添加到“selected fields”中,日志内容看起来会清晰些。
Management->Elasticsearch->Index Management中会自动生成类似“filebeat-7.0.0-alpha1-2018.09.29”的行。
进入Management->Kibana->Index Patterns可查看、删除、重新创建Index Patterns
仅以上配置,利用搜索栏和Add a filter, 以主机、文件名、时间、关键字等等组合条件,就能满足绝大多数需求。
其他使用技巧在下面补充
kibana页面上的日志搜索技巧
kikana Discover页面的搜索栏支持的查询语法名叫Lucene query。elasticsearch底层使用Lucene,api和kibana都支持Lucene语法。
lucene query语法参考:https://blog.csdn.net/feifantiyan/article/details/54411183
下面列出几个使用实例:
- 查找beat.name为8.133的设备上日志文件路径中包含"Ops/2018-9-30"的日志
source:?*\/Ops\/2018-09-30?* AND beat.name:8.133