1、开源工具介绍
Elasticsearch:是个开源分布式实时分析搜索引擎,建立在全文搜索引擎库Apache Lucene基础上,同时隐藏了Apache Lucene的复杂性。核心概念:(接近实时、群集、节点、索引、分片和副本)。
Logstash:是一个完全开源的工具,主要用于日志收集,同时可以对数据处理,并输出给Elasticsearch。
Kibana:是一个开源和免费的工具,Kibana可以为Logstash和ElasticSearch提供图形化的日志分析Web界面,可以汇总,分析和搜索重要数据日志。主要功能:(Elasticserach无缝之集成、整合数据、复杂数据分析、接口灵活、分析更容易、配置简单、可视化多数据源、简单数据导出)。
2、实验案例
组件包:
elasticsearch-5.5.0.rpm、elasticsearch-head.tar.gz、node-v8.2.1.tar.gz
phantomjs-2.1.1-linux-x86_64.tar.bz2、logstash-5.5.1.rpm、kibana-5.5.1-x86_64.rpm
设备 | IP | 备注 |
node1 | 192.168.136.10 | Node1 elasticsearch |
node2 | 192.168.136.20 | Node2 kibana |
node3 | 192.168.136.30 | Node3 logstash+httpd |
( 初始化配置 )
三台设备都需要安装java运行环境jdk
[root@node1 ~]# yum -y install java
( 安装ElasticSearch )
分别在node1和node2上添加域名信息[root@node1 ~]#
cat << EOF >> /etc/hosts
> 192.168.136.10 node1
> 192.168.136.20 node2
> EOF
上传安装包elasticserach-5.5.0.rpm至{node1}和{node2}并进行安装配置
[root@node1 ~]# rpm -ivh elasticsearch-5.5.0.rpm
[root@node1 ~]# vim /etc/elasticsearch/elasticsearch.yml
cluster.name: my-elk-cluster #群集名称
node.name: node1 #节点名称,不同节点修改编号(node2修改为node2)
path.data: /data/elk_data #日志收集目录
path.logs: /data/elk_log #日志存放路径
bootstrap.memory_lock: false #不锁定内存
network.host: 0.0.0.0 #监听IP
http.port: 9200 #监听端口
discovery.zen.ping.unicast.hosts: ["node1", "node2"] #单播实现群集
创建日志收集和存放目录(node1和node2都要配置)
[root@node1 ~]# mkdir -p /data/elk_data && mkdir -p /data/elk_log
[root@node1 ~]# chown -R elasticsearch:elasticsearch /data
启动服务
[root@node1 ~]# systemctl start elasticsearch
[root@node1 ~]# netstat -anpt
tcp6 0 0 :::9200 :::* LISTEN 7496/java
tcp6 0 0 :::9300 :::* LISTEN 7496/java
( node1配置 )
node1部署Elasticearch-head插件;上传安装包node-v8.2.1.tar.gz、elasticsearch-head.tar.gz、phantomjs-2.1.1-linux-x86_64.tar.bz2
[root@node1 ~]# tar zxf node-v8.2.1.tar.gz
[root@node1 ~]# cd node-v8.2.1
[root@node1 node-v8.2.1]# ./configure && make && make install
安装phantojs组件
[root@node1 ~]# yum -y install bzip2
[root@node1 ~]# tar jxf phantomjs-2.1.1-linux-x86_64.tar.bz2
[root@node1 ~]# mv phantomjs-2.1.1-linux-x86_64 /usr/src/phantomjs2.1
[root@node1 ~]# ln -s /usr/src/phantomjs2.1/bin/* /usr/local/bin/
安装elasticserarch-head组件
[root@node1 ~]# tar zxf elasticsearch-head.tar.gz
[root@node1 ~]# cd elasticsearch-head
[root@node1 ~]# npm install
[root@node1 ~]#
cat << EOF >> /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-headers: Authorization,Content-Type
EOF
重启服务Elasticsearch
[root@node1 ~]# systemctl restart elasticsearch
[root@node1 ~]# cd elasticsearch-head
[root@node1 elasticsearch-head]# npm run start &
( node3配置 )
在node3上部署httpd+logstash;上传安装包 logstash-5.5.1.rpm
[root@node3 ~]# yum -y install httpd
[root@node3 ~]# rpm -ivh logstash-5.5.1.rpm
[root@node3 ~]# ln -s /usr/share/logstash/bin/logstash /usr/local/sbin/
编辑自定义提交日志配置
[root@node3 ~]# vim /etc/logstash/conf.d/httpd_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.136.10:9200"]
index => "httpd_access-%{+YYYY.MM.dd}"
}
}
if [type] == "error" {
elasticsearch {
hosts => ["192.168.136.10:9200"]
index => "httpd_error-%{+YYYY.MM.dd}"
}
}
}
启动日志传递
[root@node3 ~]# nohup logstash -f /etc/logstash/conf.d/httpd_log.conf &
验证访问:http://192.168.136.10:9100
( node2配置 )
在node2上安装kibana图形化查看工具;上传安装包kibana-5.5.1-x86.rpm
[root@node2 ~]# rpm -ivh kibana-5.5.1-x86_64.rpm
[root@node2 ~]# vim /etc/kibana/kibana.yml
[root@node2 ~]#
cat << EOF >> /etc/kibana/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://192.168.136.10:9200"
kibana.index: ".kibana"
EOF
[root@node2 ~]# systemctl enable kibana --now