赞
踩
当我们部署集群服务器的时候,日志文件就会散落在多台服务器上。查看日志信息就需要到各个服务器上去取和查看,我们把这些日志文件归集到一个地方统一管理。
这个时候ELK系统出现了,ELK是elasticsearch、Logstashh和Kibana三个系统的首字母组合。
当然ELK不只是查看日志功能这么简单,还有更多的应用。
Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。
Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
在需要收集日志的所有服务上部署logstash,作为logstash agent(logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到Redis,然后logstash indexer将日志收集在一起交给全文搜索服务ElasticSearch,可以用ElasticSearch进行自定义搜索通过Kibana 来结合自定义搜索进行页面展示。
项目需求分析:
需要两台服务器分别作为elasticsearch服务端和elasticsearch负载端【这台上面要部署logstash服务】
服务端IP地址是:192.168.60.80
负载端IP地址是:192.168.60.90
在部署这个项目的时候会用到主机名,容易忽略
hostnamectl set-hostname node1
hostnamectl set-hostname node2
vim /etc/hosts
192.168.60.80 node1
192.168.60.90 node2
systemctl stop firewalld
setenforce 0
rpm -ivh elasticsearch-5.5.0.rpm
systemctl daemon-reload
systemctl enable 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"] 【集群通过单播发现】
mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data
systemctl start elasticsearch【多启动几次】
netstat -natp | grep 9200
此时可以验证到节点elasticsearch的源码界面
tar zxvf node-v8.2.1.tar.gz
cd node-v8.2.1
yum install -y gcc gcc-c++
./configure
make -j3 【时间较长】
make install
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
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
先在索引界面中添加新索引index-demon,在使用下面的命令写入数据
curl -XPUT '192.168.60.80:9200/index-demon/test/1?pretty&pretty' -H 'content-Type:application/json' -d '{"user":"zhangsan"}'
再次刷新查看
systemctl stop firewalld
setenforce 0
yum install -y httpd
systemctl start httpd
yum install -y java【最小化没有Java环境,所以要安装】
java -version
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
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}" } } }
//【如果需要在这台上面操作请另外启动一个终端】
logstash -f ./apache-log.conf //指定加载这个配置文件
让它处于这个连接状态,不然会断开web与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
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"
systemctl start kibana.service
netstat -natp | grep 5601
访问192.168.60.60:5601会出现kibana日志分析展示界面,注意在创建日志名称的时候要和elasticsearch上面的名称一致。
-f 通过这个选项可以指定logstash的配置文件
-e 后面跟着字符串,该字符串可以被当做logstash的配置【默认使用stdin作为输入,stdout作为输出】
-t 测试配置文件是否正确,然后退出
logstash -e 'input { stdin{} } output { stdout{} }'
####连接成功会出现successfully,下面就要直接输入#######
www.baidu.com
logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
####连接成功会出现successfully,下面就要直接输入#######
www.baidu.com
######唯一的区别是展示出现的结构不同#########
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查看索引信息#######
分析:根据提示信息可知在root路径下面的package.json文件不存在,所以无法启动,找到package.json所在的路径下面进行启动。
分析:服务没有启动,根据报错提示没有找到logstash服务,所以应该创建这个管理服务的文件
/usr/share/logstash/bin/system-install /etc/logstash/startup.options systemd
//初始化logstash服务的启动命令脚本到systemd下面
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。