美文网首页
1.单实例ELK部署

1.单实例ELK部署

作者: Goun | 来源:发表于2021-04-11 23:40 被阅读0次

1.简介

ELK的工作流程:logstash获取日志信息,进行筛选,传给elasticsearch,然后kibana从elasticsearch获取数据,通过web界面展示出来,beat套件是负责收集的一套工具。

[图片上传失败...(image-45c78f-1618155554207)]

2.filebeat安装

依赖:jdk7
filebeat是负责收集主机上的数据,应为filebeat配置简介,依赖环境低,可以将多台filebeat收集到的日志信息,传输给logstash进行处理。

配置说明

#收集配置(input_type可以设置多个)
# 定义一个挖矿者
filebeat.prospectors:
# 
- input_type: log
  paths:
    - /data/trade/app/tradeserver/logs/*.log
    - /data/trade/app/scheduleserver/logs/*.log
    - /data/trade/app/bankprocessor/logs/*.log
    - /data/trade/app/orgmanageserver/logs/*.log
    - /data/trade/app/manageserver/logs/*.log
    
# 定义日子文件字符集,默认UTF8
  encoding: gbk
  # 指定不采集关键字的列
  exclude_lines: ["DBG", "反序列化报文", "返回文本回应", "解密失败"]
  # 指定采集关键字
  include_lines: ["ERR", "WARN", "失败"]
  # 顶多不采集文件
  exclude_files: [".zip$", ".out$"]

# 定义日志的type,可以在es中根据type进行判断
  document_type: app
 
# 对日志中添加新的行
  #fields:
    #  level: debug
    #  review: 1
   #如果添加此字段,fields会和type同级,否则默认为"fields":{ "level":"debug" }
   #fields_under_root: true

- input_type: log
  paths:
    - /data/trade/www/tomcat_trade/logs/catalina.out
  document_type: tomcat

  # 合并行
  multiline:
    pattern: '^[0-9]{4}\-[0-9]{2}\-[0-9]{2}'      # 将不是以日期开头的行合并
    negate: true
    match: after
    max_lines: 50                    # 最大合并行
    timeout: 5s                    # 合并时间,防止堵塞

# 输出设置
output.redis:
  hosts: ["192.168.30.135"]
  key: "tradeserver"
  db: 0
  timeout: 5

注意:

    这里redis是用来做消息队列,所有不存在大量日志撑爆你的内存。

启动

./filebeat

创建filedata索引

$ ./import_dashboards -es http://172.20.10.16:9200 -user elastic -pass changeme  -only-index

执行完脚本后,会在kibana中出现一个filebeat-*的索引,我们可以更加方便的可视化这些数据。

3.安装logstash(5.2.0)

依赖:jdk8

下载:5.2

解压完成后,手动执行下面的测试命令:

./logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'

插件安装

$ ./logstash-plugin list       列出所有可以安装的插件
$ ./logstash-plugin install x-pack   安装x-pack插件

常用插件

logstash-filter-geoip            # 一个本地数据库,可以查询ip信息
logstash-filter-grok              # 对message进行单独的拆分,传输给es
x-pack                                   # 统一管理插件,安装后,对连接进行用户加密,Kibana可以看到各组件的运行详情

手动创建logstash.conf文件,内容如下

# 获取本地日志文件,将日志内容写入到redis
input {
    redis
    {
    host => "192.168.30.135"
    port => "6379"
    data_type => "list"
    key => "tradeserver"
    }
}
input {
    redis
    {
       host => "192.168.30.135"
       port => "6379"
       data_type => "list"
       key => "tomcat_trade"
    }
}

filter {
    if [type] == "log" {
        # 将json格式的message解析
       json { 
           source => "message" 
           #remove_field => ["offset", "message", "_score", "@version"] 
           }
       # grok 对指定字段采用匹配,可以自己采用正则,也可以使用默认(./vendor/bundle/jruby/1.9/gems/logstash-patterns-core-4.1.0/patterns
),测试地址:http://grokdebug.herokuapp.com/
       grok {
          match => [
            # 使用预先编辑好的正则表达式解析
            "message", "%{IPORHOST:addre} \- \- \[%{HTTPDATE:timestamp}\] \"%{WORD:http_method} %{NOTSPACE:request} HTTP/%{NUMBER:httpversion}\" %{NUMBER:status} (?:%{NUMBER:bytes}|-)"
            # 手动编辑正则表达式解析
            #"message" => "^.*\"(?<real_ip>[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)\".*(?<upstream_ip>\"[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\:[0-9]+\"$)"
        ]
        }
       # 官网nginx日志解析
       # grok {
       #     match => { "message" => "%{NGINXACCESS}" }
       # }
    #  对指定字段进行地址查询,只支持ip地址
    geoip {
            source => "real_ip"
            remove_field => ["geoip.country_code3", "geoip.country_code2", "geoip.region_code"]
            #database => "/data/elk/logstash/config/GeoLiteCity.dat"
        }

    mutate {
      convert => [ "[geoip][coordinates]", "float" ]
      #convert => [ "response","integer" ]
      #convert => [ "bytes","integer" ]
      #replace => { "type" => "nginx_access" }
      #remove_field => "message"
    }

    date {
      match => [ "timestamp","dd/MMM/yyyy:HH:mm:ss Z"]

    }
    mutate {
      remove_field => "timestamp"

    }
    }
}

input {
   file {
      path => ["/tmp/redis.log", "/var/log/message"]
      type => "system"
      start_position => "beginning"        # 设置从什么位置读取,如果设置为beginning,第一次会从文件头部开始读取,后期默认从结尾开始读取
   }
}

output {
        if [type] == "log" {
        elasticsearch {
                 hosts => ["192.168.30.135:9200"]
                 index => "logstash-nginx-access-%{+YYYY.MM.dd}"
         user => elastic
                 password => changeme
        }
    }
    else if [type] == "app" {
            elasticsearch {
                 hosts => ["192.168.30.135:9200"]
             index => "app-%{+YYYY.MM.dd}"
         user => elastic
                 password => changeme
            }
    }
    else {
        elasticsearch {
                hosts => ["192.168.30.135:9200"]
                index => "system-%{+YYYY.MM.dd}"
                user => elastic
                password => changeme
        }
    }
}

应为logstash和elasticsearch默认使用的UTC时间,所以我们创建索引会慢八个小时的解决方法

当我们手机端type数量太多时,可以使用%{type}自动生成index名字

output {
    elasticsearch {
         hosts => ["192.168.30.135:9200"]
         index => "%{type}-%{+YYYY.MM.dd}"
         user => elastic
         password => changeme
    }
}

geoip数据库下载

curl -O "http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz"
gunzip GeoLiteCity.dat.gz

启动logstash服务

./bin/logstash  -f logstash.conf

注意:
如果你的logstash不是root用户运行,那么需要运行的用户对日志文件有读取的权限

echo "www.ioart.com" >> /var/log/fjp.log
当你对/var/log/fjp.log进行追加文件的时候,在logstash的运行窗口是有输出的,如下:
{
       "message" => "www.ioart.com",
"@version" => "1",
    "@timestamp" => "2015-09-18T06:04:30.975Z",
          "type" => "cms",
          "host" => "example.com",
          "path" => "/var/log/fjp.log"
}

4.安装elasticsearch

修改elasticsearch.yml配置文件

#指定索引存放位置,多个地方用,号分割
path.data: /path/to/data
path.logs: /path/to/logs
# 关闭系统调佣过滤器,详细见:https://www.elastic.co/guide/en/elasticsearch/reference/current/system-call-filter-check.html
bootstrap.system_call_filter: false
#网络监听地址,如果更改之选项,会开启强制启动检测,需要修改系统参数
network.host: 0.0.0.0

系统参数修改

  1. vim /etc/sysctl.conf 加入:
    # Elasticsearch对各种混合文件使用NioFs(注:非阻塞文件系统)和MMapFs(注:内存映射文件系统)。请确保配置了足够大的映射数量,以便与足够的虚拟内存可用于mmapped。
    vm.max_map_count=262144
    
    # 执行 sysctl -p  使配置生效
    
  2. vim /etc/security/limits.d/20-nproc.conf #打开进程数
    * soft nproc 65536
  3. vim /etc/security/limits.conf #打开文件数
    * soft nofile 65536
    * hard nofile 65536
    * - memlock unlimited

插件安装

$ ./elasticsearch-plugin list
x-pack

$ ./elasticsearch-plugin install x-pack

安装x-pack模块后,连接es需要账号密码,默认账号密码为:elastic/changeme

注:

x-pack监控功能是免费的,需要去官网申请证书:https://www.elastic.co/guide/en/x-pack/current/installing-license.html

对服务进行启动之间,将上面的注释全部取消
./elasticsearch

集群状态查看

wget http://172.20.10.17:9200/_cluster/health?pretty

访问测试

curl -X GET http://localhost:9200
{
  "status" : 200,
  "name" : "Jessica Drew",
  "cluster_name" : "elasticsearch",
  "version" : {
    "number" : "1.7.2",
    "build_hash" : "e43676b1385b8125d647f593f7202acbd816e8ec",
    "build_timestamp" : "2015-09-14T09:49:53Z",
    "build_snapshot" : false,
    "lucene_version" : "4.10.4"
  },
  "tagline" : "You Know, for Search"
}

查看elasticsearch是否获取到了数据

curl 'http://localhost:9200/_search?pretty'

如果获取到了数据,那么就说明elasticsearch安装没有问题

5.kibana安装

修改kibana.yml配置文件

server.host: "192.168.30.135"
elasticsearch.url: "http://192.168.30.135:9200"
# 使用高德地图
tilemap.url: 'http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}'

x-pack插件安装

$ ./kibana-plugin list
x-pack@5.3.1

$ ./kibana-plugin install x-pack

直接在bin里面运行./kibana。

在浏览器里面输入localhost:5601进行访问
创建index的时候,记住查看elasticsearch里面的index值,一般的为logstash-*
下面是成功后查看到的日志信息

日志展示界面(lunce语法)
[图片上传失败...(image-e0da48-1618155624429)]

图表分析界面
[图片上传失败...(image-cf25f-1618155624429)]

x-pack界面界面
[图片上传失败...(image-dc7674-1618155624429)]

相关文章

  • 1.单实例ELK部署

    1.简介 [图片上传失败...(image-45c78f-1618155554207)] 2.filebeat安装...

  • Tomcat 多实例部署 I

    单实例部署的麻烦 掀桌!单实例部署,TMD的每次重启所有项目都被影响!! 单实例部署时,不管是直接放在webapp...

  • Tomcat多实例单应用部署方案

    一、Tomcat部署的场景分析 通常,我们对tomcat部署需求可以分为几种:单实例单应用,单实例多应用,多实例单...

  • ELK扫盲以及搭建

    1. ELK部署说明 1.1ELK介绍: 1.1.1 ELK是什么? ELK是三个开源软件的缩写,分别表示:Ela...

  • ELK安装

    记录一下ELK部署过程 一、部署ElasticSearch 下载解压ElasticSearch 1.部署maste...

  • Kafka+Zookeeper+Filebeat+ELK 搭建日

    ELK 环境介绍: 开始安装部署ELK 1.下载安装包及测试安装包完整性 2.部署elasticsearch 3....

  • elk stack 入门实战

    elk 入门学习路线图 第一章 安装ELK 1.1 部署kibana 1.2 部署elastic 1.3 部...

  • ELK日志分析系统(使用篇)

    ELK日志分析系统使用教程 1.登陆kibana部署机器http://172.168.160.193:5601/(...

  • ELK安装部署并监控nginx

    ELK日志收集部署 ELK介绍 ELK是3个开源产品的组合: Elasticsearch Logstash Kib...

  • 测试/生产环境elk部署实践

    最近两周,需要部署一套elk日志收集系统,顺便将其整理成部署文档 elk + kafka + zookeeper生...

网友评论

      本文标题:1.单实例ELK部署

      本文链接:https://www.haomeiwen.com/subject/dvqtlltx.html