ELK【Elasticsearch Logstash Kibana】日志分析系统及配置构建、故障问题及解决方案

ELK【Elasticsearch Logstash Kibana】日志分析系统及配置

文章目录

一、认识elk日志分析系统

当我们部署集群服务器的时候,日志文件就会散落在多台服务器上。查看日志信息就需要到各个服务器上去取和查看,我们把这些日志文件归集到一个地方统一管理。
这个时候ELK系统出现了,ELK是elasticsearch、Logstashh和Kibana三个系统的首字母组合。
当然ELK不只是查看日志功能这么简单,还有更多的应用。

【1】elasticsearch存储及索引

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

【2】logstash日志收集

Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。

【3】kibana日志展示

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

【4】elk的作用及工作原理

在需要收集日志的所有服务上部署logstash,作为logstash agent(logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到Redis,然后logstash indexer将日志收集在一起交给全文搜索服务ElasticSearch,可以用ElasticSearch进行自定义搜索通过Kibana 来结合自定义搜索进行页面展示。
在这里插入图片描述

二、部署elk日志分析系统

项目需求分析:
需要两台服务器分别作为elasticsearch服务端和elasticsearch负载端【这台上面要部署logstash服务】
服务端IP地址是:192.168.60.80
负载端IP地址是:192.168.60.90
在部署这个项目的时候会用到主机名,容易忽略

【1】elasticsearch部署
(1)修改服务端和负载端的主机名
hostnamectl set-hostname node1
hostnamectl set-hostname node2
(2)添加本地解析并关闭防火防护【//以下配置服务端和负载端配置一样】
vim /etc/hosts     
192.168.60.80 node1
192.168.60.90 node2

systemctl stop firewalld
setenforce 0
(3)安装elasticsearch-5.5.0软件【这个需要上传软件包】并加载
rpm -ivh elasticsearch-5.5.0.rpm
systemctl daemon-reload
systemctl enable elasticsearch
(4)修改elasticsearch配置文件
cp /etc/elasticsearch/elasticsearch.yml  /etc/elasticsearch/elasticsearch.yml.bak 
vim /etc/elasticsearch/elasticsearch.yml
17:cluster.name: my-elk-cluster
23:node.name: node1 | node2【在负载端中使用的主机名是node2】
33:path.data: /data/elk_data    【数据文件路径需要手动创建】
37:path.logs: /var/log/elasticsearch  【日志文件存放路径】
43:bootstrap.memory_lock: false   【不在启动的时候锁定内存】
55:network.host: 0.0.0.0                  【任意网段服务】
59:http.port: 9200
68:discovery.zen.ping.unicast.hosts: ["node1", "node2"]    【集群通过单播发现】
(5)创建数据存放路径、修改属主属组和启动
mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data
systemctl start elasticsearch【多启动几次】
netstat -natp | grep 9200

此时可以验证到节点elasticsearch的源码界面
在这里插入图片描述
在这里插入图片描述

(6)编译安装node软件包
tar zxvf node-v8.2.1.tar.gz
cd node-v8.2.1
yum install -y gcc gcc-c++
./configure
make -j3  【时间较长】
make install
(7)安装phantomjs
yum install -y bzip2【最小化没由bzip2】
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src
cp /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin
(8)安装elasticsearch_head
tar zxvf elasticsearch-head.tar.gz -C /usr/local/src
cd /usr/local/src/elasticsearch-head/
npm install
vim /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"
npm run start &
netstat -natp | grep 9100
systemctl restart elasticsearch【等待一会时间】
netstat -natp | grep 9200
(9)在浏览器上面访问192.168.60.80:9100就会出现node节点界面

在这里插入图片描述

(10)添加数据

先在索引界面中添加新索引index-demon,在使用下面的命令写入数据

curl -XPUT '192.168.60.80:9200/index-demon/test/1?pretty&pretty' -H 'content-Type:application/json' -d '{"user":"zhangsan"}'

再次刷新查看
在这里插入图片描述

【2】logstash部署
(1)关闭防火防护,安装Apache测试网站
systemctl stop firewalld
setenforce 0

yum install -y httpd
systemctl start httpd
(2)部署Java环境
yum install -y java【最小化没有Java环境,所以要安装】
java -version
(3)安装logstash软件包
rpm -ivh logstash-5.5.1.rpm
//优化命令
ln -s /usr/share/logstash/bin/logstash /usr/local/bin
【最小化没有自动加载安装systemd管理程序】
/usr/share/logstash/bin/system-install /etc/logstash/startup.options systemd
//启动服务
/bin/systemctl start logstash.service
(4)编写配置文件
cd /etc/logstash/conf.d
vim apache-log.conf
input {
  file{
    path => "/var/log/httpd/access_log"
    type => "access"
    start_position => "beginning"
  }
  file{
    path => "/var/log/httpd/error_log"
    type => "error"
    start_position => "beginning"
  }
}

output {
 if [type] == "access" {
  elasticsearch{
    hosts => ["192.168.60.80:9200"]
    index => "apache_access-%{+YYYY.MM.dd}"
  }
 }
 if [type] == "error" {
  elasticsearch{
    hosts => ["192.168.60.80:9200"]
    index => "apache_error-%{+YYYY.MM.dd}"
  }
 }

}
(5)启动logstash指定配置文件

//【如果需要在这台上面操作请另外启动一个终端】

logstash -f  ./apache-log.conf    //指定加载这个配置文件

让它处于这个连接状态,不然会断开web与kibana的连接
在这里插入图片描述

【3】kibana部署
(1)关闭防火防护安装kibana软件包
systemctl stop firewalld
setenforce 0

rpm -ivh kibana-5.5.1-x86_64.rpm

cp /etc/kibana/kibana.yml /etc/kibana/kibana.yml.bak
(2)修改kibana配置文件,连接elasticsearch服务
vim /etc/kibana/kibana.yml
2:server.port: 5601
7:server.host: "0.0.0.0"
21:elasticsearch.url: "http://192.168.60.80:9200"
30:kibana.index: ".kibana"
(3)重新启动,查看端口号
systemctl start kibana.service 
netstat -natp | grep 5601
【4】在浏览器上面访问192.168.60.80:9100会出现负载均衡节点界面和Apache日志索引

在这里插入图片描述
访问192.168.60.60:5601会出现kibana日志分析展示界面,注意在创建日志名称的时候要和elasticsearch上面的名称一致。
在这里插入图片描述
在这里插入图片描述

【5】补充知识logstash
(1)logstash命令的使用
-f      通过这个选项可以指定logstash的配置文件
-e     后面跟着字符串,该字符串可以被当做logstash的配置【默认使用stdin作为输入,stdout作为输出】
-t     测试配置文件是否正确,然后退出
(2)标准的输入输出
logstash -e 'input { stdin{} } output { stdout{} }'
####连接成功会出现successfully,下面就要直接输入#######
www.baidu.com   
(3)使用rubydebug显示详细输出,codec是一种解码器
logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
####连接成功会出现successfully,下面就要直接输入#######
www.baidu.com   
######唯一的区别是展示出现的结构不同#########
(4)使用logstash将信息写入elasticsearch中
logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.60.80:9200"] } }'
####连接成功会出现successfully,下面就要直接输入#######
www.baidu.com
www.kgc.com
www.tast.com   
########在浏览器上面输入192.168.60.80:9100查看索引信息#######

三、故障问题解决方式

【问题一】重新启动elasticsearch服务器的时候9100端口无法启动,出现错误

在这里插入图片描述
分析:根据提示信息可知在root路径下面的package.json文件不存在,所以无法启动,找到package.json所在的路径下面进行启动。
在这里插入图片描述

【解决方案】进入package.json所在目录启动

在这里插入图片描述
在这里插入图片描述

【问题二】启动logstash的时候失败

在这里插入图片描述
分析:服务没有启动,根据报错提示没有找到logstash服务,所以应该创建这个管理服务的文件

【解决方案】创建管理服务
/usr/share/logstash/bin/system-install /etc/logstash/startup.options systemd

//初始化logstash服务的启动命令脚本到systemd下面

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值