ELK 企业级日志分析系统
一、ELK
1、ELK简介
- ElasticSearch:是基于Lucene(一个全文检索引擎的架构)开发的分布式存储检索引擎,用来存储各类日志。
- Logstash:作为数据收集引擎。它支持动态的从各种数据源搜集数据,并对数据进行过滤、分析、丰富、统一格式等操作,然后存储到用户指定的位置,一般会发送给 Elasticsearch。
- Kiabana:是基于 Node.js 开发的展示工具,可以为 Logstash 和 ElasticSearch 提供图形化的日志分析 Web 界面展示,可以汇总、分析和搜索重要数据日志。
- Filebeat:轻量级的开源日志文件数据搜集器。通常在需要采集数据的客户端安装 Filebeat,并指定目录与日志格式,Filebeat 就能快速收集数据,并发送给 logstash 进行解析,或是直接发给 Elasticsearch 存储,性能上相比运行于 JVM 上的 logstash 优势明显,是对它的替代。
2、ELK的作用
- 一般大型系统是一个分布式部署的架构,不同的服务模块部署在不同的服务器上,问题出现时,大部分情况需要根据问题暴露的关键信息,定位到具体的服务器和服务模块,构建一套集中式日志系统,可以提高定位问题的效率。
3、完整日志系统基本特征
- 收集:能够采集多种来源的日志数据
- 传输:能够稳定的把日志数据解析过滤并传输到存储系统
- 存储:存储日志数据
- 分析:支持 UI 分析
- 警告:能够提供错误报告,监控机制
4、ELK 的工作原理
- (1)在所有需要收集日志的服务器上部署Logstash;或者先将日志进行集中化管理在日志服务器上,在日志服务器上部署 Logstash。
- (2)Logstash 收集日志,将日志格式化并输出到 Elasticsearch 群集中。
- (3)Elasticsearch 对格式化后的数据进行索引和存储。
二、部署ELK日志分析系统
1、实验需求
1、配置ELK日志分析集群
2、使用Logstash收集日志
3、使用Kibana查看分析日志
2、环境配置
主机 | 操作系统 | IP地址 | 安装包 / 软件 / 工具 |
---|---|---|---|
node1 | CentOS7 | 192.168.239.101 | Elasticsearch |
node2 | CentOS7 | 192.168.239.102 | Elasticsearch |
apache | CentOS7 | 192.168.239.103 | httpd / Logstash |
真机 | Windows | 192.168.239.100 | —— |
所有节点,关闭系统防火墙和安全机制
systemctl stop firewalld.service
setenforce 0
node1(192.168.239.101)
hostnamectl set-hostname node1
su -
node2(192.168.239.102)
hostnamectl set-hostname node2
su -
apache(192.168.239.103)
hostnamectl set-hostname apache
su -
3、配置elasticsearch环境(node1、node2)
node1(192.168.239.101)
node2(192.168.239.102)
仅一处主机名不同,已标注
echo '192.168.239.101 node1' >> /etc/hosts
echo '192.168.239.102 node2' >> /etc/hosts
cd /opt
rz elasticsearch-5.5.0.rpm
rpm -ivh elasticsearch-5.5.0.rpm
systemctl daemon-reload
systemctl enable elasticsearch.service
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"]
grep -v "^#" /etc/elasticsearch/elasticsearch.yml
mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data/
systemctl start elasticsearch
netstat -antp |grep 9200
1、此时可真机访问,查看节点信息
http://192.168.239.101:9200
http://192.168.239.102:9200
2、真机检测集群健康、查看集群状态
http://192.168.239.101:9200/_cluster/health?pretty
http://192.168.239.102:9200/_cluster/health?pretty
http://192.168.239.101:9200/_cluster/state?pretty
http://192.168.239.102:9200/_cluster/state?pretty
4、 安装elasticsearch-head插件
- 上述查看集群的方式,及其不方便,我们可以通过安装elasticsearch-head插件后,来管理集群
node1(192.168.239.101)
node2(192.168.239.102)
yum -y install gcc gcc-c++ make
cd /opt
rz node-v8.2.1.tar.gz
tar xzvf node-v8.2.1.tar.gz
cd node-v8.2.1/
./configure
make -j2 && make install
cd /usr/local/src
rz phantomjs-2.1.1-linux-x86_64.tar.bz2
tar xjvf phantomjs-2.1.1-linux-x86_64.tar.bz2
cd phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin
cd /usr/local/src/
rz elasticsearch-head.tar.gz
tar xzvf elasticsearch-head.tar.gz
cd elasticsearch-head/
npm install
vim /etc/elasticsearch/elasticsearch.yml
==末行插入==
http.cors.enabled: true
http.cors.allow-origin: "*"
systemctl restart elasticsearch
cd /usr/local/src/elasticsearch-head/
npm run start &
netstat -lnupt |grep 9100
netstat -lnupt |grep 9200
真机上打开浏览器输入
http://192.168.239.101:9100
http://192.168.239.102:9100
-
可以看见群集很健康是绿色
-
在Elasticsearch 后面的栏目中输入
http://192.168.239.101:9200
http://192.168.239.102:9200
然后点连接 会发现:集群健康值: green (0 of 0)
●node1信息动作
★node2信息动作
node1(192.168.239.101)
索引为index-demo,类型为test,可以看到成功创建
curl -XPUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"zhangsan","mesg":"hello world"}'
真机访问,查看索引信息
http://192.168.239.101:9100
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。