ELK +filebeat+redis(7.15.1-1)

ELK +filebeat+redis(7.15.1-1),第1张

ELK +filebeat+redis(7.15.1-1)

最近发现ELK页面等有了较大的改动,重新配置了遍最新版

注:软件版本必须一致,这里配置现发布的最新版本 7.15.1-1
注:conf文件中格式使用空格,空2格,不要用tab 不要用tab 不要用tab

1.配置JDK环境 (略)

#################以下为 直接使用logstash获取日志#################

2.安装配置elasticsearch.x86_64

[root@localhost yum.repos.d]# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
[root@localhost yum.repos.d]# cat elasticsearch.repo 
[elasticsearch]
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=0
autorefresh=1
type=rpm-md

[root@localhost yum.repos.d]# yum clean all 
[root@localhost yum.repos.d]# yum makecache fast

[root@localhost yum.repos.d]# yum -y install elasticsearch.x86_64
[root@localhost /]# systemctl enable elasticsearch
Created symlink from /etc/systemd/system/multi-user.target.wants/elasticsearch.service to /usr/lib/systemd/system/elasticsearch.service.
[root@localhost /]# systemctl start elasticsearch 
[root@localhost /]# systemctl status  elasticsearch 
● elasticsearch.service - Elasticsearch
   Loaded: loaded (/usr/lib/systemd/system/elasticsearch.service; enabled; vendor preset: disabled)
   Active: active (running) since 三 2021-11-03 17:04:35 CST; 7s ago
     Docs: https://www.elastic.co
 Main PID: 15439 (java)
   CGroup: /system.slice/elasticsearch.service
           ├─15439 /usr/share/elasticsearch/jdk/bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava....
           └─15638 /usr/share/elasticsearch/modules/x-pack-ml/platform/linux-x86_64/bin/controller

11月 03 17:04:20 localhost.localdomain systemd[1]: Starting Elasticsearch...
11月 03 17:04:35 localhost.localdomain systemd[1]: Started Elasticsearch.

[root@localhost /]# netstat -ntlp |grep java
tcp6       0      0 127.0.0.1:9200          :::*                    LISTEN      15439/java          
tcp6       0      0 ::1:9200                :::*                    LISTEN      15439/java          
tcp6       0      0 127.0.0.1:9300          :::*                    LISTEN      15439/java          
tcp6       0      0 ::1:9300                :::*                    LISTEN      15439/java      
#9200作为Http协议,主要用于外部通讯
#9300作为Tcp协议,ES集群之间是通过9300进行通讯

[root@localhost /]# vim /etc/elasticsearch/elasticsearch.yml 
[root@localhost /]# cat /etc/elasticsearch/elasticsearch.yml | grep -v '^#'
cluster.name: elk001
node.name: node-1
path.data: /var/lib/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 10.2.33.102
http.port: 9200
discovery.seed_hosts: ["10.2.33.102", "[::1]"]
cluster.initial_master_nodes: ["node-1"]

[root@localhost /]# systemctl restart elasticsearch
[root@localhost ~]# curl http://10.2.33.102:9200
{
  "name" : "node-1",
  "cluster_name" : "elk001",
  "cluster_uuid" : "hTUer8_jQRSYE-cwg55mSw",
  "version" : {
    "number" : "7.15.1",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "83c34f456ae29d60e94d886e455e6a3409bba9ed",
    "build_date" : "2021-10-07T21:56:19.031608185Z",
    "build_snapshot" : false,
    "lucene_version" : "8.9.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}
配置说明 属性名说明cluster.name配置elasticsearch的集群名称。node.name节点名,es会默认随机指定一个名字,用户可自行配置。path.data设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号分隔。path.logs设置日志文件的存储路径,默认是es根目录下的logs文件夹。path.conf设置配置文件的存储路径,tar或zip包安装默认在es根目录下的config文件夹,rpm安装默认在path.plugins设置插件的存放路径,默认是es根目录下的plugins文件夹。bootstrap.memory_lock设置为true可以锁住ES使用的内存,避免内存进行swap。network.host设置bind_host和publish_host,设置为0.0.0.0允许所有外网访问。http.port设置对外服务的http端口,默认为9200。transport.tcp.port集群结点之间通信端口,默认为9300。discovery.zen.ping.timeout设置ES自动发现节点连接超时的时间,默认为3S。discovery.zen.minimum_master_nodes主结点数量的最少值 ,此值的公式为:(master_eligible_nodes / 2) + 1 ,比如:有3个符合要求的主结点,那么这里要设置为2。discovery.seed_hosts集群发现,配置该节点会与哪些候选地址进行通信,hostname,ip,ip+port,比如:[“127.0.0.1:9300”]。cluster.initial_master_nodes当你第一次启动全新的Elasticsearch集群时,会有一个集群引导(cluster bootstrapping)步骤,这个步骤会确定一个在第一次选举中投票被计数的、并且可以成为master节点的集合。在开发模式,如果没有配置 discovery settings,该步骤由节点自身自动执行。因为这种自动引导本质上是不安全的,当您在生产模式下启动一个全新的集群时,你必须显式指定那些可以成为master节点的名称或者IP地址,这些节点应该在第一次选举中计算选票数。

3.安装配置logstash.x86_64

logstash目录结构

类型描述默认值如何定义配置homelogstash安装的默认主目录/usr/share/logstashbinlogstash的二进制脚本程序和logstash-plugin插件安装脚本/usr/share/logstash/binsettings配置文件,包括logstash.yml、jvm选项配置、启动选项配置/etc/logstashpath.settingsconflogstash数据收集配置/etc/logstash/conf.d* encoding:#指定被监控的文件的编码类型,使用plain和utf-8都是可以处理中文日志的 exclude_lines: ['^DBG'] #不包含匹配正则的行 include_lines: ['^ERR', '^WARN'] #包含匹配正则的行 harvester_buffer_size: 16384 #每个harvester在获取文件时使用的缓冲区的字节大小 max_bytes: 10485760 #单个日志消息可以拥有的最大字节数。max_bytes之后的所有字节都被丢弃而不发送。默认值为10MB (10485760) exclude_files: ['.gz$'] #用于匹配希望Filebeat忽略的文件的正则表达式列表 ingore_older: 0 #默认为0,表示禁用,可以配置2h,2m等,注意ignore_older必须大于close_inactive的值.表示忽略超过设置值未更新的 文件或者文件从来没有被harvester收集 close_* #close_ *配置选项用于在特定标准或时间之后关闭harvester。 关闭harvester意味着关闭文件处理程序。 如果在harvester关闭 后文件被更新,则在scan_frequency过后,文件将被重新拾取。 但是,如果在harvester关闭时移动或删除文件,Filebeat将无法再次接收文件 ,并且harvester未读取的任何数据都将丢失。 close_inactive #启动选项时,如果在制定时间没有被读取,将关闭文件句柄 读取的最后一条日志定义为下一次读取的起始点,而不是基于文件的修改时间 如果关闭的文件发生变化,一个新的harverster将在scan_frequency运行后被启动 建议至少设置一个大于读取日志频率的值,配置多个prospector来实现针对不同更新速度的日志文件 使用内部时间戳机制,来反映记录日志的读取,每次读取到最后一行日志时开始倒计时使用2h 5m 来表示 close_rename #当选项启动,如果文件被重命名和移动,filebeat关闭文件的处理读取 close_removed #当选项启动,文件被删除时,filebeat关闭文件的处理读取这个选项启动后,必须启动clean_removed close_eof #适合只写一次日志的文件,然后filebeat关闭文件的处理读取 close_timeout #当选项启动时,filebeat会给每个harvester设置预定义时间,不管这个文件是否被读取,达到设定时间后,将被关闭 close_timeout 不能等于ignore_older,会导致文件更新时,不会被读取如果output一直没有输出日志事件,这个timeout是不会被启动的, 至少要要有一个事件发送,然后haverter将被关闭 设置0 表示不启动 clean_inactived #从注册表文件中删除先前收获的文件的状态 设置必须大于ignore_older+scan_frequency,以确保在文件仍在收集时没有删除任何状态 配置选项有助于减小注册表文件的大小,特别是如果每天都生成大量的新文件 此配置选项也可用于防止在Linux上重用inode的Filebeat问题 clean_removed #启动选项后,如果文件在磁盘上找不到,将从注册表中清除filebeat 如果关闭close removed 必须关闭clean removed scan_frequency #prospector检查指定用于收获的路径中的新文件的频率,默认10s tail_files:#如果设置为true,Filebeat从文件尾开始监控文件新增内容,把新增的每一行文件作为一个事件依次发送, 而不是从文件开始处重新发送所有内容。 symlinks:#符号链接选项允许Filebeat除常规文件外,可以收集符号链接。收集符号链接时,即使报告了符号链接的路径, Filebeat也会打开并读取原始文件。 backoff: #backoff选项指定Filebeat如何积极地抓取新文件进行更新。默认1s,backoff选项定义Filebeat在达到EOF之后 再次检查文件之间等待的时间。 max_backoff: #在达到EOF之后再次检查文件之前Filebeat等待的最长时间 backoff_factor: #指定backoff尝试等待时间几次,默认是2 harvester_limit:#harvester_limit选项限制一个prospector并行启动的harvester数量,直接影响文件打开数 tags #列表中添加标签,用过过滤,例如:tags: ["json"] fields #可选字段,选择额外的字段进行输出可以是标量值,元组,字典等嵌套类型 默认在sub-dictionary位置 filebeat.inputs: fields: app_id: query_engine_12 fields_under_root #如果值为ture,那么fields存储在输出文档的顶级位置 multiline.pattern #必须匹配的regexp模式 multiline.negate #定义上面的模式匹配条件的动作是 否定的,默认是false 假如模式匹配条件'^b',默认是false模式,表示讲按照模式匹配进行匹配 将不是以b开头的日志行进行合并 如果是true,表示将不以b开头的日志行进行合并 multiline.match # 指定Filebeat如何将匹配行组合成事件,在之前或者之后,取决于上面所指定的negate multiline.max_lines #可以组合成一个事件的最大行数,超过将丢弃,默认500 multiline.timeout #定义超时时间,如果开始一个新的事件在超时时间内没有发现匹配,也将发送日志,默认是5s max_procs #设置可以同时执行的最大CPU数。默认值为系统中可用的逻辑CPU的数量。 name #为该filebeat指定名字,默认为主机的hostname

注:/etc/logstash/conf.d 下可配置多个文件
2、在logstash上配置第二个nginx.conf 接收filebeat传输过来的数据

[root@elk001 conf.d]# pwd
/etc/logstash/conf.d

[root@elk001 conf.d]# ll
总用量 8
-rw-r--r-- 1 root root 174 11月  8 16:54 nginx.conf
-rw-r--r-- 1 root root 538 11月  8 16:29 system.conf
[root@elk001 conf.d]# cat nginx.conf 
input{
  beats{
    host => "10.2.33.102"
    port => "5044"
  }
}
output {
  elasticsearch{
    hosts => ["10.2.33.102:9200"]
    index => "nginx-web-%{+YYYY.MM.dd}"
  }
}

[root@elk001 conf.d]# systemctl restart logstash 

3、登陆http://10.2.33.102:5601查看新增的文件

#################filebeat-redis-logstash-elasticsearch-kibana #################

架构图:

 说明:(测试就把除了filebeat都装一台上了,生产环境请自分配)
  1,前端服务器只启动轻量级日志收集工具filebeat(不需要JDK环境)
  2,收集的日志不经过处理直接发送到redis消息队列
  3,redis消息队列只是暂时存储日志数据,不需要进行持久化(防止数据丢失)
  4,logstash从redis消息队列读取数据并且按照一定规则进行过滤然后存储至elasticsearch
  5,通过kibana进行图形化展示

redis在其中的作用:
存储日志,全部日志集中一起,打好标签,便于 *** 作管理,可以是nginx,apache,tomcat等其他只要产生都可以存储,只要打上标签,logstash在input时就会分好类
提高冗余性,若redis后面的全部宕机了,也不至于数据丢失
加快日志的读取速度,防止大批量日志的时候logstash无法及时处理

redis配置安装(略)

bind 0.0.0.0
protected-mode no
requirepass redis123456

一些配置上面已有,忽略,直接修改配置文件,如下:
修改filebeat配置文件,redis作为日志的输出对象,需要添加,放置不同的redis库,设置不同的key方便使用

[root@localhost filebeat]# cat /etc/filebeat/filebeat.yml
# ============================== Filebeat inputs ===============================
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/*.log
  tags: ["nginx-web"]
filebeat.config.modules:
  path: ${path.config}/modules.d/*.yml
  reload.enabled: false
# ======================= Elasticsearch template setting =======================
setup.template.settings:
  index.number_of_shards: 1
setup.kibana:
output.redis:
  hosts: ["10.2.33.102:6379"]
  password: "redis123456"
  key: "nginx-web"
  data_type: "list"
  db: 4
processors:
  - add_host_metadata:
      when.not.contains.tags: forwarded
  - add_cloud_metadata: ~
  - add_docker_metadata: ~
  - add_kubernetes_metadata: ~
# ================================== Logging ===================================
#logging.level: debug
# ============================= X-Pack Monitoring ==============================
#monitoring.enabled: false
# ============================== Instrumentation ===============================
#instrumentation:
    #enabled: false
    #hosts:
    #  - http://localhost:8200
    #api_key:
# ================================= Migration ==================================
#migration.6_to_7.enabled: true

修改logstash配置文件,根据filebeat中设置的redis存储进行读取:

[root@elk001 conf.d]# cat redis.conf 
input{
  redis {
    host => "10.2.33.102"
    port => 6379
    password => "redis123456"
    key => "nginx-web"
    data_type => "list"
    db => 4
  }
}
output {
  elasticsearch {
    hosts => ["10.2.33.102:9200"]
    index => "redis-%{+YYYY.MM.dd}"
  }
}

注:修改配置文件注意要重启服务

redis查看数据

[root@elk001 conf.d]# redis-cli 
127.0.0.1:6379> auth redis123456
OK
127.0.0.1:6379> select 4
OK
127.0.0.1:6379[4]> keys *
1) "nginx-web"


登陆验证:

 

#################filebeat-kafka-logstash-elasticsearch-kibana #################

未完待续。。。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5433352.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-11
下一篇 2022-12-11

发表评论

登录后才能评论

评论列表(0条)

保存