大家好,欢迎来到IT知识分享网。
ELK日志分析系统
一.ELK日志分析系统简介
1.日志服务器的优缺点
2.ELK简介
日志简化分析的管理工具,由Elasticsearch(ES)、Logstash、Kibana三个开源工具组成,官方网站: https://www.elastic.co/products
3.Logstash管理包含四种工具
4.elk工作原理
ELK工作原理展示图:
【APPServer集群】→→【logstash Agent 采集器】→→【ElasticSearch Cluster】→→【Kibana Server】→→【Browser】
二.Elasticsearch介绍
三.Elasticsearch的基础核心概念:
1.接近实时(NRT)
elasticsearch是一个接近实时的搜索平台,这意味着,从索引一个文档直到这个文档能够被搜索到有一个轻微的延迟(通常是1秒)
2.集群(cluster)
es 具有集群机制,节点通过集群名称加入到集群中,同时在集群中的节点会有一个自己的唯一身份标识(自己的名称)
3.节点(node)
节点就是一台单一的服务器,是集群的一部分,存储数据并参与集群的索引和搜索功能。
像集群一样,节点也是通过名字来标识,默认是在节点启动时随机分配的字符名。当然,你可以自己定义。该名字也很重要,在集群中用于识别服务器对应的节点。
4.索引(index)
5.类型(type)
6.文档(document)
索引(库)——》类型(表)——》文档(字段)
7.分片和副本(shards & replicas)
阐述es做为搜索引擎为啥这么快
(1)分片的两个最主要原因:a. 水平分割扩展,增大存储量 b. 分布式并行跨分片操作,提高性能和吞吐量
分布式分片的机制和搜索请求的文档如何汇总完全是由elasticsearch控制的,这些对用户而言是透明的。
四.logstash介绍
1.logStash的主要组件:
●Shipper:日志收集者 。负责监控本地日志文件的变化,及时把日志文件的最新内容收集起来。通常,远程代理端(agent)只需要运行这个组件即可;
●Indexer:日志存储者。负责接收日志并写入到本地文件。
●Broker:日志Hub。负责连接多个Shipper和多个Indexer
●Search and Storage:允许对事件进行搜索和存储;
●Web Interface:基于Web的展示界面
正是由于以上组件在LogStash架构中可独立部署,才提供了更好的集群扩展性
2.LogStash主机分类:
●代理主机(agent host):作为事件的传递者(shipper),将各种日志数据发送至中心主机;只需运行Logstash 代理(agent)程序;
五.Kibana介绍
Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。
2、整合你的数据。Kibana能够更好地处理海量数据,并据此创建柱形图、折线图、散点图、直方图、饼图和地图(???)。
3、复杂数据分析。Kibana提升了Elasticsearch分析能力,能够更加智能地分析数据,执行数学转换并且根据要求对数据切割分块。
4、让更多团队成员受益。强大的数据库可视化接口让各业务岗位都能够从数据集合受益。
5、接口灵活,分享更容易。使用Kibana可以更加方便地创建、保存、分享数据,并将可视化数据快速交流。
6、配置简单。Kibana的配置和启用非常简单,用户体验非常友好。Kibana自带Web服务器,可以快速启动运行。
7、可视化多数据源。Kibana可以非常方便地把来自Logstash、ES-Hadoop、Beats或第三方技术的数据整合到Elasticsearch,支持的第三方技术包括Apache Flume、Fluentd(作为一套收集容器日志的采集器)等。
8、简单数据导出。Kibana可以方便地导出感兴趣的数据,与其它数据集合并融合后快速建模分析,直观的发现新结果。
六.部署elk日志文件系统
1.实验准备
配置和安装ELK日志分析系统,安装集群方式,2个elasticsearch节点,并监控apache服务器日志
2.部署elasticsearch集群
1)配置elasticsearch环境
node1、node2配置elasticsearch环境
[root@localhost ~]# hostnamectl set-hostname node1 [root@localhost ~]# su [root@node1 ~]# vim /etc/hosts #添加本地映射 192.168.226.128 node1 192.168.226.129 node2 [root@node1 ~]# java -version #查看java版本 openjdk version "1.8.0_181" OpenJDK Runtime Environment (build 1.8.0_181-b13) OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode) [root@node1 ~]# cd /opt [root@node1 opt]# ls #上传压缩包解压 jdk-8u91-linux-x64.tar.gz rh [root@node1 opt]# tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/ [root@node1 opt]# vim /etc/profile export JAVA_HOME=/usr/local/jdk1.8.0_91 export JRE_HOME=${
JAVA_HOME}/jre export CLASSPATH=.:${
JAVA_HOME}/lib:${
JRE_HOME}/lib export PATH=${
JAVA_HOME}/bin:$PATH [root@node1 opt]# source /etc/profile [root@node1 opt]# java -version java version "1.8.0_91" Java(TM) SE Runtime Environment (build 1.8.0_91-b14) Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
2)部署elasticsearch软件
node1、node2上部署elasticsearch软件
(1)安装elasticsearch—rpm包
上传elasticsearch-5.5.0.rpm到/opt目录下
[root@node1 ~]# cd /opt [root@node1 opt]# rpm -ivh elasticsearch-5.5.0.rpm
(2)加载系统服务
[root@node1 opt]# systemctl daemon-reload [root@node1 opt]# systemctl enable elasticsearch.service
(3)更改elasticsearch主配置文件
[root@node1 opt]# cp /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/elasticsearch.yml.bak [root@node1 opt]# vim /etc/elasticsearch/elasticsearch.yml 17/ cluster.name: my-elk-cluster #集群名字 23/ node.name: node1 #节点名字 33/ path.data: /data/elk_data #数据存放路径 37/ path.logs: /var/log/elasticsearch/ #日志存放路径 43/ bootstrap.memory_lock: false #不在启动的时候锁定内存(前端缓存。与IOPS-性能测试方式,每秒读写次数相关) 55/ network.host: 0.0.0.0 #提供服务绑定的IP地址,0.0.0.0代表所有地址 59/ http.port: 9200 #侦听端口为9200 68/ discovery.zen.ping.unicast.hosts: ["node1", "node2"] #集群发现通过单播实现 [root@node1 opt]# 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"]
(4)创建数据存放路径并授权
[root@node1 opt]# mkdir -p /data/elk_data [root@node1 opt]# chown elasticsearch:elasticsearch /data/elk_data/
(5)启动elasticsearch是否成功开启
[root@node1 elasticsearch]# systemctl start elasticsearch.service [root@node1 elasticsearch]# netstat -antp |grep 9200 tcp6 0 0 :::9200 :::* LISTEN 64463/java
(6)查看节点信息
用真机的浏览器打开 http://192.168.206.166:9200 有文件打开 下面是节点的信息
用真机的浏览器打开 http://192.168.206.177:9200 有文件打开 下面是节点的信息
(7)集群检查健康和状态
3)安装elasticsearch-head插件
上述查看集群的方式,及其不方便,我们可以通过安装elasticsearch-head插件后,来管理集群
(1)安装依赖环境、编译安装node组件依赖包
上传node-v8.2.1.tar.gz到/opt
[root@localhost opt]# yum install gcc gcc-c++ make -y [root@localhost opt]# cd /opt [root@node1 opt]# tar xzvf node-v8.2.1.tar.gz [root@node1 opt]# cd node-v8.2.1/ [root@node1 node-v8.2.1]# ./configure [root@node1 node-v8.2.1]# make -j3 [root@node1 node-v8.2.1]# make install
(2)安装phantomjs前端框架
上传软件包到/usr/local/src/
[root@localhost node-v8.2.1]# cd /usr/local/src/ [root@localhost src]# tar xjvf phantomjs-2.1.1-linux-x86_64.tar.bz2 [root@localhost src]# cd phantomjs-2.1.1-linux-x86_64/bin [root@localhost bin]# cp phantomjs /usr/local/bin
(3)安装elasticsearch-head数据可视化工具
[root@localhost bin]# cd /usr/local/src/ [root@localhost src]# tar xzvf elasticsearch-head.tar.gz [root@localhost src]# cd elasticsearch-head/ [root@localhost elasticsearch-head]# npm install
(4)修改主配置文件
[root@localhost ~]# cd ~ [root@localhost ~]# vi /etc/elasticsearch/elasticsearch.yml #下面配置文件,插末尾 http.cors.enabled: true #开启跨域访问支持,默认为false http.cors.allow-origin: "*" # 跨域访问允许的域名地址 [root@localhost ~]# systemctl restart elasticsearch
(5)启动elasticsearch-head 启动服务器
[root@localhost ~]# cd /usr/local/src/elasticsearch-head/ [root@localhost elasticsearch-head]# npm run start & #切换到后台运行 [1] [root@localhost elasticsearch-head]# > elasticsearch-head@0.0.0 start /usr/local/src/elasticsearch-head > grunt server Running "connect:server" (connect) task Waiting forever... Started connect web server on http://localhost:9100 [root@localhost elasticsearch-head]# netstat -lnupt |grep 9100 tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN /grunt [root@localhost elasticsearch-head]# netstat -lnupt |grep 9200 tcp6 0 0 :::9200 :::* LISTEN /java
(6)浏览器验证
真机上打开浏览器输入http://192.168.206.166:9100/
创建索引q
索引为index-demo,类型为test,可以看到成功创建
打开浏览器输入http://192.168.206.166:9100/ 查看索引信息
3.安装logstash(192.168.206.188)
(1)更改主机名
hostnamectl set-hostname apache
(2)安装Apahce服务(httpd)
[root@apache ~]# yum -y install httpd [root@apache ~]# systemctl start httpd
(3)安装Java环境
[root@apache ~]# java -version #如果没有装 安装yum -y install java openjdk version "1.8.0_181" OpenJDK Runtime Environment (build 1.8.0_181-b13) OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
(4)安装logstash
上传logstash-5.5.1.rpm到/opt目录下
[root@apache ~]# cd /opt [root@apache opt]# rpm -ivh logstash-5.5.1.rpm #安装logstash [root@apache opt]# systemctl start logstash.service #启动logstash [root@apache opt]# systemctl enable logstash.service [root@apache opt]# ln -s /usr/share/logstash/bin/logstash /usr/local/bin/ #建立logstash软连接
(5)logstash(Apache)与elasticsearch(node)功能是否正常,做对接测试
(6)输入采用标准输入 输出采用标准输出— 在Apache服务器上
[root@apache opt]# logstash -e 'input { stdin{} } output { stdout{} }'
(7)使用rubydebug显示详细输出,codec为一种编解码器
[root@apache opt]# logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
(8)使用logstash将信息写入elasticsearch中 输入 输出 对接
需要手动输入
[root@apache opt]# logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.206.166:9200"] } }'
(9)Apache主机 做对接配置、使用平台收集日志
[root@apache opt]# chmod o+r /var/log/messages [root@apache opt]# ll /var/log/messages -rw----r--. 1 root root 30402 8月 16 04:12 /var/log/messages
配置文件中定义的是收集系统日志(system)
[root@apache opt]# vi /etc/logstash/conf.d/system.conf input {
file{
path => "/var/log/messages" type => "system" start_position => "beginning" } } output {
elasticsearch {
hosts => ["192.168.226.128:9200"] index => "system-%{+YYYY.MM.dd}" } } [root@apache opt]# systemctl restart logstash.service
打开浏览器 输入http://192.168.206.166:9100/ 查看索引信息
4.node1安装kibana
上传kibana-5.5.1-x86_64.rpm 到/usr/local/src目录
[root@node1 ~]# cd /usr/local/src/ [root@node1 src]# rpm -ivh kibana-5.5.1-x86_64.rpm [root@node1 src]# cd /etc/kibana/ [root@node1 kibana]# cp kibana.yml kibana.yml.bak [root@node1 kibana]# vi kibana.yml 2/ server.port: 5601 # kibana打开的端口 7/ server.host: "0.0.0.0" #kibana侦听的地址 21/ elasticsearch.url: "http://192.168.206.166:9200" #和elasticsearch建立联系 30/ kibana.index: ".kibana" #在elasticsearch中添加.kibana索引 [root@node1 kibana]# systemctl start kibana.service #启动kibana服务 [root@node1 kibana]# systemctl enable kibana.service #开机启动kibana服务
5.对接Apache主机的Apache 日志文件(访问的、错误的)
[root@apache opt]# cd /etc/logstash/conf.d/ [root@apache conf.d]# touch apache_log.conf [root@apache conf.d]# vim apache_log.conf input {
file{
path => "/etc/httpd/logs/access_log" type => "access" start_position => "beginning" } file{
path => "/etc/httpd/logs/error_log" type => "error" start_position => "beginning" } } output {
if [type] == "access" {
elasticsearch {
hosts => ["192.168.206.166:9200"] index => "apache_access-%{+YYYY.MM.dd}" } } if [type] == "error" {
elasticsearch {
hosts => ["192.168.206.166:9200"] index => "apache_error-%{+YYYY.MM.dd}" } } } [root@apache conf.d]# /usr/share/logstash/bin/logstash -f apache_log.conf
6.查看验证
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/115295.html


















