ELK入门 恶补

Shanon ·
更新时间:2024-09-21
· 967 次阅读

ELK是Elasticsearch、Logstash、Kiban

市面上也被成为Elastic Stack (这三个加在一块)

日志分析架构技术栈总称

Elasticsearch

Elasticsearch是一个基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。

像类似百度、谷歌这种大数据全文搜索引擎的场景都可以使用Elasticsearch作为底层支持框架,

简称Elasticsearch为es

Logstash

Logstash是ELK的中央数据流引擎,用于从不同目标(文件/数据存储/MQ)收集的不同格式数据,经过过滤后支持输出到不同目的地(文件/MQ/redis/elasticsearch/kafka等)

Kibana

Kibana可以将elasticsearch的数据通过友好的页面展示出来,提供实时分析的功能。

流程

通过Logstash去收集每台服务器日志文件,

然后按定义的正则模板过滤后传输到Kafka或redis,

然后由另一个Logstash从KafKa或redis读取日志存储到elasticsearch中创建索引,

最后通过Kibana展示给开发者或运维人员进行分析。

Logstash 收集各种日志,过滤传输到——> Elasticsearch (ES)——>后交给Kinana 分析展示

过滤环节是很耗时间和资源的,过滤完成后才传输到ES中

优化过的流程:

Nginx——>收集——>Logstash——>Kafka

logstash过滤(所有的数据都用这个logstash过滤),传输到——>ES——>展示,分析 ——> Kibana

优化后Kafka作为缓冲存储作用,

运行在数据源的Logstash采集器收集到数据后作为生产者直接传输到Kafka

Kafka它的读写性能是非常高的

我们需要独立部署一个专门消费的Logstash,

这个Logstash负责过滤,并将过滤好的数据传输到ES,

后面依然由Kibana读取ES数据进行展示

这个架构不但性能好,而且耦合低,并且可以针对不同环节进行平行扩展

在新的架构上平行扩展可能演变的架构图:

Nginx——>收集——>Logstash——>Kafka

logstash过滤。

另外一条线也是这样,最后各自logstash过滤过的,传给ES

而:ES,和 kibana,也可以有更多的节点。

小白都会超详细–ELK日志管理平台搭建教程

https://blog.csdn.net/li123128/article/details/81052374

一、介绍

二、安装JDK

三、安装Elasticsearch

四、安装Logstash

五、安装Kibana

ELK由Elasticsearch、Logstash和Kibana三部分组件组成;

Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。

Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用

kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。

四大组件
Logstash: logstash server端用来搜集日志;
Elasticsearch: 存储各类日志;
Kibana: web化接口用作查寻和可视化日志;
Logstash Forwarder: logstash client端用来通过lumberjack 网络协议发送日志到logstash server;

工作流程

在需要收集日志的所有服务上部署logstash,作为logstash agent(logstash shipper)用于监控并过滤收集日志,

将过滤后的内容发送到Redis,

然后logstash indexer将日志收集在一起交给全文搜索服务ElasticSearch,

可以用ElasticSearch进行自定义搜索通过Kibana 来结合自定义搜索进行页面展示。

Logstash-forwarder(多个)——》logstash——》elasticsearch——》kibana——》nginx

一、 Elasticsearch安装 配置阿里源:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum clean all yum makecache Logstash的运行依赖于Java运行环境,Elasticsearch 要求至少 Java 7。 [root@controller ~]# yum install java-1.8.0-openjdk -y [root@controller ~]# java -version openjdk version "1.8.0_151" OpenJDK Runtime Environment (build 1.8.0_151-b12) OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode) 1、关闭防火墙 systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall开机启动 2、关闭selinux sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config setenforce 0 4)添加自启动 chkconfig --add elasticsearch 5)启动命令 systemctl daemon-reload systemctl enable elasticsearch.service

防火墙: 关闭
Sellinux: 关闭
JDK 1.8(备注至少是1.8版本的JDK)

https://www.elastic.co/downloads/elasticsearch

sudo chown -R luna elasticsearch-6.1.0/ 或者 创建elsearch用户组 及elsearch用户 groupadd elsearch rch -p elasticsearch 更改elasticsearch文件夹及内部文件的所属用户及组为elsearch:elsearch cd /opt chown -R elsearch:elsearch elasticsearch su elsearch cd elasticsearch/bin ./elasticsearch 1、下载

https://www.elastic.co/downloads/elasticsearch 最新版的在下面找就行

[elk@localhost elasticsearch]$ pwd /usr/local/src/elasticsearch [elk@localhost elasticsearch]$ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.4.2.tar.gz tar -zxvf elasticsearch-6.4.2.tar.gz

在config目录下的elasticsearch.yml文件中你可以设置es服务的端口号以及网络ip等

network.host:0.0.0.0

切换到bin目录下

./elasticsearch

别用root启动,见上面的

问题一:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决方案:
切换到root用户
编辑 /etc/sysctl.conf,追加以下内容:
vm.max_map_count=655360
保存后,执行:
sysctl -p

问题二:ERROR: bootstrap checks failed
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
max number of threads [1024] for user [lishang] likely too low, increase to at least [2048]
解决:切换到root用户,编辑limits.conf 添加类似如下内容
vi /etc/security/limits.conf

* soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096

问题三:max number of threads [1024] for user [lish] likely too low, increase to at least [2048]
解决:切换到root用户,进入limits.d目录下修改配置文件。
vi /etc/security/limits.d/90-nproc.conf

soft nproc 1024 修改为:soft nproc 2048

验证:

curl localhost:9200

二、 Logstash的安装 wget https://artifacts.elastic.co/downloads/logstash/logstash-6.4.2.tar.gz

https://artifacts.elastic.co/downloads/logstash 同理,最新版的在下面找就行

尽量迅雷下载

tar -zxvf logstash-6.4.2.tar.gz

在config目录下的logstash.yml我这里也都采用的是默认的,大家可以根据自己的需求自行设

vim logstash.yml 设置tomcat的serer.xml

http://archive.apache.org/dist/tomcat/tomcat-8/v8.5.34/bin/

默认的:

pattern="%h %l %u %t “%r” %s %b"

[elk@localhost conf]$ pwd /usr/local/src/tomcat/apache-tomcat-8.5.34/conf [elk@localhost conf]$ vim server.xml

改成:

pattern="%h %l %u %t "%r" %s %b %D "%{Referer}i" "%{User-Agent}i"" 创建root-tomcat.conf文件 [elk@localhost logstash-6.4.2]$ pwd /usr/local/src/elasticsearch/logstash-6.4.2 [elk@localhost logstash-6.4.2]$ vim root-tomcat.conf input { file { path => "/usr/local/src/tomcat/apache-tomcat-8.5.34/logs/localhost_access_log*.txt" sincedb_path => "/usr/local/src/elasticsearch/logstash-6.4.2/config/sincedb_apache_access_log.txt" type => "apache_access_log" add_field => {"tomcatip" => "192.168.1.23改成localhost"} } } filter{ if [type] == "apache_access_log" { grok{ match => { "message" => "%{IPORHOST:clientip} %{USER:ident} %{USER:auth} \[%{HTTPDATE:timestamp}\] \"(?:%{WORD:verb} %{URIPATHPARAM:request}(?: HTTP/%{NUMBER:httpversion})?|-)\" %{NUMBER:response} (?:%{NUMBER:bytes}|-) %{NUMBER:responsetime} \"(?:%{URI:referrer}|-)\" %{QS:agent}" } } ruby { code => "event.timestamp.time.localtime" } date{ match => [ "timestamp", "dd/MM/yyyy:HH:mm:ss Z" ] target => ["writetime"] } mutate { convert => { "response" => "integer" "bytes" => "integer" "responsetime" => "integer" } } } } output { if [type] == "apache_access_log" { elasticsearch { hosts => ["192.168.1.23改成localhost:9200"] index => "logstash-apacheaccesslog-%{+YYYY.MM.dd}" } } }

启动:

[elk@localhost logstash-6.4.2]$ ./bin/logstash -f root-tomcat.conf 三、 安装kibana wget https://artifacts.elastic.co/downloads/kibana/kibana-6.4.2-linux-x86_64.tar.gz tar -zxvf kibana-6.4.2-linux-x86_64.tar.gz cd config/ vim kibana.yml server.host: "0.0.0.0" 自动检查ip地址,会检查到localhost ./bin/kibana

http://localhost:5601

https://www.jianshu.com/p/3a1f5ea2ce8d


作者:天海华兮



elk

需要 登录 后方可回复, 如果你还没有账号请 注册新账号