ELK 搭建

ELK 搭建ELKlinux 环境搭建

ELK 搭建

1.下载ELK包

版本选择7.10.2,可配置中文版。

logstash-7.10.2、elasticsearch-7.10.2、kibana-7.10.2

下载完,解压,例如:tar  -zxvf  logstash-7.10.2-linux-x86_64.tar.gz

2.ELK配置/启动

2.1 logstash配置/启动

Logstash 支持各种输入选择,例如:beats、file、http、jdbc、redis、kafka… …,其中在文件采集时,官方建议使用beats(因为logstash是基于java开发的,需要在jvm跑。当进行采集时会对内存、cpu、io等资源消耗比较高,而beats是基于go语言开发,性能接近c语言,是专为并发而生的).

cd logstash-7.10.2/config # 自定义配置文件 vim logstash-yjg.conf #读 input { # file 从文件读取(官方推荐使用beats采集文件日志) file { path => ["/data/myProject/logs/*.log"] #排除不想监听的文件 #exclude => "exclude.log" #设置多长时间扫描目录,发现新文件 discover_interval => 1 #自定义日志区分类型 type => "ThisIsMyProjectType" # beginning 从文件开始处读写 # end 文件结尾处读写 start_position => end } # http 方式收集,用于客户端上送消息 http{ id => "http_request" port => 9062 codec => json type => "http" } } #过滤 filter { if [type] == "http" { # 把东八区时间赋值给新建的logdate 字段,logstash 不允许自建的特殊字段如带@标识的字段 ruby{ code => "event.set('logdate', (event.get('@timestamp').time.localtime).strftime('%Y-%m-%d %H:%M:%S'))" } } else if [type] == "nginx" { grok { match => ["message", "%{IPORHOST:host} - - \[%{HTTPDATE:logdate}\]"] overwrite => [ "host"] } } else { grok { match => ["message", "%{TIMESTAMP_ISO8601:logdate}"] } } date { match => ["logdate", "YYYY-MM-dd HH:mm:ss.SSS"] # 赋值给 @timestamp target => "@timestamp" } mutate { # 删除不需要的字段 remove_field => ["@version","tags","headers"] } } #输出 output{ #输出到ES elasticsearch{ # es地址 hosts=>["127.0.0.1:9200"] # es的索引名,可更改。建议使用类型区分:eg => "yjg-%{type}-%{+YYYY.MM.dd}" index => "yjg-logstash-%{+YYYY.MM.dd}" } #输出到控制台 stdout{ codec => rubydebug } # 输出到kafka #kafka {} # 输出到数据库 # jdbc { # driver_jar_path => "/mysql-connector-java-5.1.48.jar" # driver_class => "com.mysql.jdbc.Driver" # connection_string => "jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&useAffectedRows=true" # username => "root" # password => "" # statement => ["INSERT INTO logstash_log_temp(level, ip, content, logdate) VALUES( ?, INET_ATON(?), ? ,?)", "[level]","[host]", "[message]", "[logdate]"] # #} }

启动

# 后台启动logstash,并加载指定配置文件 nohup ./bin/logstash -f config/logstash-yjg.conf > log.txt 2>&1 &

注意:如果out 到数据库的话,因为插件不是默认安装,所以需要手动安装

# 官方拉取插件 ./bin/logstash-plugin install logstash-output-jdbc

beats采集

logstash在启动的时候会很慢,因为它基于java开发的,需要在jvm跑。当进行文件采集时会有性能问题,会消耗很大的CPU。代替方案为 beats(官方推荐)

# logstash 默认配置文件 egrep -v "#|^$" config/logstash-sample.conf input { beats { # 开启5044端口,用于接收数据 port => 5044 } } output { elasticsearch { hosts => ["http://localhost:9200"] index => "%{[@metadata][beat]}-%{[@metadata][version]}-%{+YYYY.MM.dd}" } }

数据采集器beats介绍

ELK 搭建

官方支持的beat很多,常用的就是Filebeat 和 Packebeat。 

filebeat-7.10.2、packebeat-7.10.2

配置&启动

egrep -v "#|^$" filebeat.yml # ============================== Filebeat inputs =============================== filebeat.inputs: - type: log # 默认是关闭的,需要手动打开 enabled: true paths: # 数组形式,支持多个日志采集 - /tmp/logs/*.log - /data/logs/*.log # ------------------------------ Logstash Output ------------------------------- output.logstash: # 输出到本地logstash开启的5044端口 hosts: ["localhost:5044"]
./filebeat -e -c filebeat.yml

2.2 elasticsearch配置/启动

cd elasticsearch-7.10.2/config vim elasticsearch.yml path.data: /data/elasticsearch-7.10.2/data path.logs: /data/elasticsearch-7.10.2/logs network.host: 127.0.0.1 http.port: 9200 http.cors.enabled: true http.cors.allow-origin: "*"

 注意:elaticsearch默认不能用root用户启动,否则会提示 java.lang.RuntimeException: can not run elasticsearch as root

# 为elaticsearch创建用户 groupadd elsearch useradd elsearch -g elsearch -p elasticsearch # 分配权限 chown -R elsearch:elsearch elasticsearch-7.10.2 # 切换用户到elsearch su elsearch

启动

# 后台启动 ./bin/elasticsearch &
# 验证启动是否成功 http://127.0.0.1::9200 { "name" : "my-name", "cluster_name" : "elasticsearch", "cluster_uuid" : "Px7djFasdfasdfa4eGTSbQ", "version" : { "number" : "7.10.2", "build_flavor" : "default", "build_type" : "tar", "build_hash" : "747e1cc71def0a3", "build_date" : "2021-01-13T00:42:12.Z", "build_snapshot" : false, "lucene_version" : "8.7.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }

2.3 kibana配置/启动

cd kibana-7.10.2-linux-x86_64/config vim kibana.yml server.port: 5601 server.host: "127.0.0.1" server.name: "my-kibana" elasticsearch.hosts: ["http://127.0.0.1:9200"] kibana.index: ".kibana" # 设置中文(注意,如果是kibana-6*版本的话,需要下载python的服务,手动翻译,替换原文件,比较麻烦,故使用7版本) i18n.locale: "zh-CN"

启动

# 启动kibana ./bin/kibana 

注意:kibana 不支持root用户启动,否则提示:Kibana should not be run as root.  Use –allow-root to continue。如果硬是要用root用户启动  就在后面加   –allow-root 

# kibana 强制使用root用户启动 ./bin/kibana --allow-root

3.使用

3.1 添加索引

ELK 搭建

 ELK 搭建

 ELK 搭建

 ELK 搭建

 3.2 日志展示ELK 搭建

 ELK 搭建

3.3 @timestamp问题

注意:@timestamp 默认为UTC时间,比北京时间采集时间少8个小时。可以在kibana高级设置中更改

ELK 搭建

至此搭建全部结束,下期分享logstash采集和kibana查询规则

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177251.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午7:57
下一篇 2026年3月26日 下午7:58


相关推荐

  • TimedCache 带时间缓存工具类,附加监听回调 | Java工具类

    TimedCache 带时间缓存工具类,附加监听回调 | Java工具类简述我们在工作中会碰到需要使用带过期时间的缓存场景 但是使用 redis 有太重了 毕竟缓存的数据很小 放在内存够够的 hutools 提供了 TimedCache 时间缓存工具 可以实现该场景 下面使用到该组件 并为了适配工作场景 对该工具类做优化升级 Maven 依赖 dependency groupId cn hutool groupId artifactId hutool artifactId dependency

    2026年3月26日
    2
  • Kimi与小红书合作,AI技术再升级

    Kimi与小红书合作,AI技术再升级

    2026年3月12日
    2
  • Linux更改文件权限命令「建议收藏」

    Linux更改文件权限命令「建议收藏」chmod命令1、格式:chmod【-cfvR】【–help】【–version】modefile2、参数1)必要参数-c当发送改变时,报告处理信息-f错误信息不输出-R处理指定目录以及其子目录下的所有文件-v运行时显示详细处理信息2)选择参数–reference=<目录或者文件>:设置成具有指定目录或文件具有相同的权限–version:显示版本信息<权限范围>+<权限设置>:使权限范围内的目录或文件具有指定的权限<

    2025年10月28日
    4
  • 微信小程序页面跳转传参(对象、数组)「建议收藏」

    跳转事件jump:function(e){ letarray={id:1,name:’张三’}wx.navigateTo({url:’/pages/index/index?array=’+JSON.stringify(array), })}跳转页面onLoad:function(options){ console.log(‘跳转事件参数’,JSON.parse(options.array))},遇到问题可以看我主页加

    2022年4月16日
    84
  • C++ 计算三角形面积

    C++ 计算三角形面积C 编码实现计算三角形面积 1 计算公式方法一 S p p a p b p c 而公式里的 p 为半周长 p a b c 2 方法二 S ah 2 方法三 2 思路 模块化设计定义点数据结构 使用结构体定义点定义计算两点间距离函数 定义计算面积函数 3 编码 include lt iostream gt include lt math h gt usingnames

    2026年3月18日
    2
  • MyBatis中的JdbcType映射介绍

    Java项目涉及到数据库交互,以往常用的是JDBC,现在则有Hibernate、Mybatis等这些持久化支持。 项目中用到了MyBatis,和JDBC最显著的区别,就是SQL语句配置化,通过xml文件定义SQL语句,当然JDBC也可以将SQL配置化,需要定制开发,MyBatis则直接支持这种方法。 官方对于MyBatis的介绍,MyBatisisafirstclas…

    2022年4月5日
    88

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号