ELK kibana无法启动 filebeat配置收集日志

前言:

如果出现kibana界面一直处于 server is not ready yet
请在es-head界面删除.kibana,之后重启kibana,我卡在这里好久,折腾了半天才搞定,这次选择安装包的方式,费了不少时间。
我之前用docker镜像安装的elk就挺好的,kibana启动很顺利,选择docker镜像启动的方式推荐。

ELK的概念

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等服务

ELK常见的架构

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再次启动,则会读取中间件中积压的日志。目前我司使用的就是这种架构,我个人也比较推荐这种方式。

ELK的部署

下载地址

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

物理机安装ELK

elasticsearch配置文件修改


#默认文件配置
vim /etc/elasticsearch/elasticsearch.yml
cat /etc/elasticsearch/elasticsearch.yml |grep  -E -v "#"  
cat /etc/elasticsearch/elasticsearch.yml | egrep -v "#"
cat >elasticsearch.yml<

kibana修改配置文件

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重新启动

filebeat配置文件

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,可以参考官方文档

filebeat json格式

#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

Elasticsearch API

  • 集群状态:http://10.10.0.22:9200/_cluster/health?pretty
  • 节点状态:http://10.10.0.22:9200/_nodes/process?pretty
  • 分片状态:http://10.10.0.22:9200/_cat/shards
  • 索引分片存储信息:http://10.10.0.22:9200//index/_shard_stores?pretty
  • 索引状态:http://10.10.0.22:9200//index/_stats?pretty
  • 索引元数据:http://10.10.0.22:9200//index?pretty

安装es插件

docker pull alivv/elasticsearch-head

docker run -it -p9100:9100 --name es-head  alivv/elasticsearch-head















你可能感兴趣的:(linux)