EFLK日志收集

ELK

一、什么是ELK

ELK是一套日志几种处理解决方案,包含了ElasticSearch、Logstash 和 Kibana 三个开源工具。

二、ELK组件

ElasticSearch:
  • 是基于Lucene(全文检索引擎的架构)开发的分布式存储检索引擎,用来存储日志
  • 是一个java开发的,可通过RESTful Web 接口,让用户通过浏览器与ElasticSearch交互
  • ElasticSearch是一个实时的、分布式的可扩展搜索引擎,允许进行全文、结构化搜索,通常用于索引和搜索大容量的日志数据,也可以用于搜索许多不同类型的文档
Kiabana:

​ Kiabana常与ElasticSearch一起部署,Kibana可以为ElasticSearch提供图形化web界面。

Logstash:
  • Logstash作为数据收集引擎它可以动态的从各种数据源搜集数据,并对数据机进行过滤、分析、统一格式等操作,然后存储到用户指定的位置,一般会发送给ElasticSearch
  • 它是由Ruby语言编写,运行在java虚拟机上的一款数据处理工具,可以实现数据传输,格式处理,格式输出。
Filebeat:

​ 是一款轻量级的开源日志数据搜索器,相对于Logstash来说,不需要安装JDK环境,对性能的占用相对较小,一般的架构是Filebeat替代了原先Logstash的职责对日志进行手机然后交付给Logstash进行解析或直接发给ES存储

Filebeat+Logstash的优点

1.通过 Logstash 具有基于磁盘的自适应缓冲系统,该系统将吸收传入的吞吐量,从而减轻 Elasticsearch 持续写入数据的压力
2.从其他数据源(例如数据库,S3对象存储或消息传递队列)中提取
3.将数据发送到多个目的地,例如S3,HDFS(Hadoop分布式文件系统)或写入文件
4.使用条件数据流逻辑组成更复杂的处理管道
5.日志的集中化管理 beats 包括四种工具

三、日志集中化管理beats的四种工具

  1. Packetbeat(搜索网络数据流量)
  2. Topbeat(搜索系统、进程和文件系统级别的CPU和内存使用情况等数据)
  3. Filebeat(搜索文件数据)
  4. Winlogbeat(搜索Window时间日志数据)

四、什么是缓存/消息队列

对高并发日志数据进行流量削峰,防止大量并发直接冲击站点,而且这样的可以在一定程度上保证数据不会丢失,并对整个架构解耦。

五、ELK工作原理[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MkhPew8T-1663518520739)(C:/Users/mogu/Downloads/%E6%9C%AA%E5%91%BD%E5%90%8D%E6%96%87%E4%BB%B6%20(7)].png)

AppServer集群产生的日志由Logstash收集,Logstash把收到的日志数据格式化后转存到ES数据库内,通过Kiabana查看ES数据库内索引中的数据并展示到Bower端

六、ELFK日志分析部署

​ 实验环境配置

服务器主机IP职责环境部署
node1192.168.226.123作为ES数据库节点JDK1.8.0_342ElasticSearch Kibana
node2192.168.226.122作为ES数据库节点JDK1.8.0_342ElasticSearch
apache192.168.226.121连接通道JDK1.8.0_342Logstash Apache
filebeat192.168.226.124数据收集JDK1.8.0_342Filebeat

(1)配置两个ES数据库

​ ①配置DNS本地域名解析

echo "192.168.226.123 node1" >>/etc/hosts
echo "192.168.226.122 node2" >>/etc/hosts

​ ②安装ElasticSearch

rpm -ivh elasticsearch-5.5.0.rpm
systemctl daemon-reload && systemctl enable elasticsearch.service  //刷新后台并加载系统

​ ③修改ElasticSearch主配置文件

cp /etc/elasticsearch/elasticsearch.yml  /etc/elasticsearch/elasticsearch.yml.bak	//讲之前的配置文件做备份

vim /etc/elasticsearch/elasticsearch.yml
##17行,取消注释,指定群集名称
cluster.name: my-elk-cluster
##23行,取消注释,指定节点名称(node1节点为node1,node2节点为node2)
node.name: node1
##33行,取消注释,指定数据存放路径
path.data: /data/elk_data
##37行,取消注释,指定日志存放路径
path.logs: /var/log/elasticsearch/
##43行,取消注释,不在启动的时候锁定内存(前端缓存,与IOPS-性能测试方式,每秒读写次数相关)
bootstrap.memory_lock: false
##55行,取消注释,设置监听地址,0.0.0.0代表所有地址
network.host: 0.0.0.0
##59行,取消注释,ES服务的默认监听端口为9200
http.port: 9200
##68行,取消注释,集群发现通过单播实现,指定要发现的节点node1、node2
discovery.zen.ping.unicast.hosts: ["node1", "node2"]

​ ④检查下配置文件修改是否一致

grep -v "^#" /etc/elasticsearch/elasticsearch.yml
cluster.name: my-elk-cluster
node.name: node1
path.data: /data/elk_data
path.logs: /var/log/elasticsearch/
bootstrap.memory_lock: false
network.host: 0.0.0.0
http.port: 9200
discovery.zen.ping.unicast.hosts: ["node1", "node2"]

​ ⑤创建数据存放路径并授权

mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data/	//给数据库对这个数据存放地点执行权限

​ ⑥启动elasticsearch

systemctl start elasticsearch.service		//这玩意启动慢等会

(2)安装Elasticsearch—head插件

​ ①编译安装node

yum install -y gcc gcc-c++ make
tar zxvf node-v8.2.1.tar.gz 
cd node-v8.2.1/
./configure
make -j 4 && make install

​ ②安装phantomjs

cd /opt
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src
cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin

​ ③安装Elasticsearch-head数据可视化工具

cd /opt
tar -zxvf elasticsearch-head.tar.gz -C /usr/local/src/
cd /usr/local/src/elasticsearch-head/
npm install

​ ④修改Elasticsearch主配置文件

vim /etc/elasticsearch/elasticsearch.yml

##末行添加以下内容
http.cors.enabled: true			##开启跨域访问支持,默认为false
http.cors.allow-origin: "*"		##指定跨域访问允许的域名地址为所有
systemctl restart elasticsearch.service

​ ⑤启动elasticsearch-head 服务

 cd /usr/local/src/elasticsearch-head/
 npm run start &

​ ⑥插个索引测试下

[root@node1 elasticsearch-head]# curl -X PUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'

(2)配置filebeat服务器

​ ①安装filebeat

wget http://101.34.22.188/ELK/filebeat-6.2.4-linux-x86_64.tar.gz -P /opt
cd /opt
tar zxvf filebeat-6.2.4-linux-x86_64.tar.gz
mv filebeat-6.2.4-linux-x86_64 /usr/local/filebeat

​ ②修改filebeat配置文件

cd /usr/local/filebeat	
cp filebeat.yml filebeat.yml.bak
vim filebeat.yml

filebeat.prospectors:
##21行,指定log类型,从日志文件中读取消息
- type: log
##24行,开启日志收集功能,默认为false
  enabled: true
##28行,指定监控的日志文件
    - /var/log/*.log
##29行,添加收集/var/log/messages
    - /var/log/messages
##31行,添加以下内容,注意格式
  fields: 
    service_name: filebeat
    log_type: log
    service_id: 192.168.226.124       #指向的是本机地址,当然filebeat作为一个轻量化的只能对本地的日志收集当然就没input了
#-------------------------- Elasticsearch output ------------------------------
该区域内容全部注释
#----------------------------- Logstash output --------------------------------
##157行,取消注释
output.logstash:
##159行,取消注释,指定logstash的IP和端口号
  hosts: ["192.168.223.13:5044"]
 
[root@filebeat filebeat]# ./filebeat -e -c filebeat.yml
#启动filebeat,-e记录到stderr并禁用syslog /文件输出,-c指定配置文件

(3)配置logstash服务器

​ ①安装apache

hostnamectl set-hostname apache
bash
yum install -y httpd
systemctl start httpd && systemctl enable httpd

​ ②安装JDK

yum install -y java

​ ③安装logstach

cd /opt
rpm -ivh logstash-5.5.1.rpm 
systemctl start logstash.service     
systemctl enable logstash.service
ln -s /usr/share/logstash/bin/logstash /usr/local/bin/
logstash -e 'input { stdin{} } output { stdout{} }'			//测试下

​ ④在logstash组件上建一个logstash配置文件

cd /etc/logstash/conf.d/
vim logstash.conf
input {
    beats {
        port => "5044"
    }
}
output {
    elasticsearch {
        hosts => ["192.168.226.123:9200", "192.168.226.124:9200"]
        index => "%{[fields][service_name]}-%{+YYYY.MM.dd}"
    }
    stdout {
        codec => rubydebug
    }
}
/usr/share/logstash/bin/logstash -f logstash.conf_log.conf 

(4)浏览器验证

192.168.226.123:9

=> [“192.168.226.123:9200”, “192.168.226.124:9200”]
index => “%{[fields][service_name]}-%{+YYYY.MM.dd}”
}
stdout {
codec => rubydebug
}
}
/usr/share/logstash/bin/logstash -f logstash.conf_log.conf


(4)浏览器验证

192.168.226.123:9


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值