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介绍

官方支持的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 添加索引




3.2 日志展示

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

至此搭建全部结束,下期分享logstash采集和kibana查询规则
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177251.html原文链接:https://javaforall.net
