如果出现kibana界面一直处于 server is not ready yet
请在es-head界面删除.kibana,之后重启kibana,我卡在这里好久,折腾了半天才搞定,这次选择安装包的方式,费了不少时间。
我之前用docker镜像安装的elk就挺好的,kibana启动很顺利,选择docker镜像启动的方式推荐。
ELK官网:http://www.elastic.co/
ELK 是elastic公司提供的一套完整的日志收集以及展示的解决方案,是三个产品的首字母缩写,分别是ElasticSearch、Logstash 和 Kibana。
Elasticsearch是个基于Lucence,开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash 主要是用来日志的搜集、分析、过滤日志的工具,支持大量的数据获取方式。一般工作方式为c/s架构,client端安装在需要收集日志的主机上,server端负责将收到的各节点日志进行过滤、修改等操作在一并发往elasticsearch上去。
Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。
原文链接:https://blog.csdn.net/xixlxl/article/details/80502611
Beats 是elastic公司开源的一款采集系统监控数据的代理agent,是在监控服务器上以客户端形式的 数据收集器的统称,可以直接把数据发送给Elasticsearch或者通过Logstash发送给Elasticsearch,然后进行后续的数据分析活动
Beats由如下功能:
Packetbeat:是一个网络数据包分析器,用于监控,收集网络流量信息,Packbeat嗅探服务器之间的流量;
Filebeat:用于监控,收集服务器日志文件,其以取代logstash fowarder;
Metricbeat:可以后去外部系统的监控信息,其可以监控,收集Apache,HAProxy,MongoDB,MySQL,Nginx,Redis,System,Zookeeper等服务
1 Elasticsearch + Logstash + Kibana
这是一种最简单的架构。这种架构,通过logstash收集日志,Elasticsearch分析日志,然后在Kibana(web界面)中展示。这种架构虽然是官网介绍里的方式,但是往往在生产中很少使用。
2 Elasticsearch + Logstash + filebeat + Kibana
与上一种架构相比,这种架构增加了一个filebeat模块。filebeat是一个轻量的日志收集代理,用来部署在客户端,优势是消耗非常少的资源(较logstash), 所以生产中,往往会采取这种架构方式,但是这种架构有一个缺点,当logstash出现故障, 会造成日志的丢失。
3 Elasticsearch + Logstash + filebeat + redis(也可以是其他中间件,比如kafka) + Kibana
这种架构是上面那个架构的完善版,通过增加中间件,来避免数据的丢失。当Logstash出现故障,日志还是存在中间件中,当Logstash再次启动,则会读取中间件中积压的日志。目前我司使用的就是这种架构,我个人也比较推荐这种方式。
jdk环境准备
yum install -y java
java -version
#openjdk version "1.8.0_242"
#OpenJDK Runtime Environment (build 1.8.0_242-b08)
#OpenJDK 64-Bit Server VM (build 25.242-b08, mixed mode)
官网下载地址ELK
https://www.elastic.co/cn/downloads/elasticsearch
清华源elk下载地址
https://mirrors.tuna.tsinghua.edu.cn/elasticstack
譬如下载7.5.2版本如下
#elasticsearch 安装包
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/elasticstack/7.x/yum/7.5.2/elasticsearch-7.5.2-x86_64.rpm
#filebeat 安装 安装在客户端
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/elasticstack/7.x/yum/7.5.2/filebeat-7.5.2-x86_64.rpm
#kibana 安装
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/elasticstack/7.x/yum/7.5.2/kibana-7.5.2-x86_64.rpm
#logstash 安装
rpm -ivh https://mirrors.tuna.tsinghua.edu.cn/elasticstack/7.x/yum/7.5.2/logstash-7.5.2.rpm
#默认文件配置
vim /etc/elasticsearch/elasticsearch.yml
cat /etc/elasticsearch/elasticsearch.yml |grep -E -v "#"
cat /etc/elasticsearch/elasticsearch.yml | egrep -v "#"
cat >elasticsearch.yml<
cat /etc/kibana/kibana.yml |grep -E "^\w"
server.port: 5601
server.host: "10.10.0.22"
elasticsearch.hosts: ["http://10.10.0.22:9200"]
kibana.index: ".kibana"
i18n.locale: "zh-CN"
systemctl start kibana && systemctl status kibana
Es 进入删除.kibana
kibana重新启动
fvim /etc/filebeat/filebeat.yml
filebeat.inputs:
####################nginx###############
- type: log
enabled: true
paths:
- /opt/nginx116/logs/access.log
json.keys_under_root: true
json.overwrite_keys: true
tags: ["access"]
- type: log
enabled: true
paths:
- /opt/nginx116/logs/error.log
tags: ["error"]
####################tomcat##############
- type: log
enabled: true
paths:
- /var/log/tomcat/localhost_access_log.*.txt
json.keys_under_root: true
json.overwrite_keys: true
tags: ["tomcat"]
##################es###################
- type: log
enabled: true
paths:
- /var/log/elasticsearch/elasticsearch.log
multiline.pattern: '^\['
multiline.negate: true
multiline.match: after
tags: ["elasticsearch"]
#################docker################
- type: log
enabled: true
paths:
- /var/lib/docker/containers/558c91f2842aa778a991b844a0d635f12018740d04f8cd8278fed9ff0a04fb17/558c91f2842aa778a991b844a0d635f12018740d04f8cd8278fed9ff0a04fb17-json.log
json.keys_under_root: true
json.overwrite_keys: true
tags: ["docker-nginx"]
##################output###############
set.kibana:
host: "10.10.0.22:5601"
output.elasticsearch:
hosts: ["10.10.0.22:9200"]
indices:
- index: "nginx-access-%{[beat.version]}-%{+yyyy.MM}"
when.contains:
tags: "access"
- index: "nginx-error-%{[beat.version]}-%{+yyyy.MM}"
when.contains:
tags: "error"
- index: "tomcat%{[beat.version]}-%{+yyyy.MM}"
when.contains:
tags: "tomcat"
- index: "elasticsearch%{[beat.version]}-%{+yyyy.MM}"
when.contains:
tags: "elasticsearch"
- index: "docker-nginx%{[beat.version]}-%{+yyyy.MM}"
when.contains:
stream: "stdout"
- index: "docker-nginx-error%{[beat.version]}-%{+yyyy.MM}"
when.contains:
stream: "stderr"
setup.template.name: "nginx"
setup.template.pattern: "nginx-*"
setup.template.enabled: false
setup.template.overwrite: true
本次笔者用的是filebeat6版本,fielbeat 7版本beat.version->agent.version,可以参考官方文档
#keys_under_root可以让字段位于根节点,默认为false
json.keys_under_root: true
#对于同名的key,覆盖原有key值
json.overwrite_keys: true
#message_key是用来合并多行json日志使用的,如果配置该项还需要配置multiline的设置,后面会讲
json.message_key: message
#将解析错误的消息记录储存在error.message字段中
json.add_error_key: true
docker pull alivv/elasticsearch-head
docker run -it -p9100:9100 --name es-head alivv/elasticsearch-head