目录
一、Elasticsearch集合部署(在node1上操作)
1、准备环境
2、部署安装Elasticsearch软件
3、配置Elasticsearch主配置文件
4、创建数据存放路径并授权
5、查看node1节点信息
二、Elasticsearch集群部署(在node2上操作)
1、前面步骤与node1节点一致
2、在node1节点上吧配置文件上传到node2节点
3、修改配置文件
4、创建数据存放路径并授权
5、查看node2节点信息
三、安装 Elasticsearch-head 插件(node1和node2节点操作一样)
1、编译安装 node
2、安装phantomjs
编辑3、安装 Elasticsearch-head 数据可视化工具
4、修改 Elasticsearch 主配置文件
5、启动 elasticsearch-head 服务
6、通过 Elasticsearch-head查看Elasticsearch 信息
7、插入索引,进行测试
四、Logstash部署(192.168.62.70)
1、安装httpd服务
2、安装java环境
3、安装logstash
4、测试Logstash
4.1 Logstash 命令常用选项
4.2 定义输入输出流
4.3使用runydebug输出详细格式显示,codec为一种编解码器
4.4 使用Logstash将信息写入Elasticsearch中
5、定义logstash配置文件
6、浏览器验证查看索引信息
五、kibana部署(node1节点)
1、安装Kibana
2、设置Kibana的主配置文件
3、启动kibana服务
4、验证Kibana
5、将 Apache 服务器的日志(访问的、错误的)添加到 Elasticsearch 并通过 Kibana 显示
一、Elasticsearch集合部署(在node1上操作)
node1节点:192.168.62.50
node2节点:192.168.62.60
Apache节点:192.168.62.70
Elasticsearch包下载地址
https://www.elastic.co/cn/downloads/past-releases/elasticsearch-5-5-0
日志分析系统原理
- 首先有Apache产生大量的日志在本机中,那么Logstash就会input获取日志,然后进行Filter Plugin(过滤日志和格式处理),最后将处理好的日志outpu发送日志到ES的cluster集群中。
- ES将收到的日志进行索引和存储。
- 最后可以使用Kibana进行查看分析日志。
1、准备环境
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
#关闭防火墙和核心防护
vim /etc/hosts
或
echo "192.168.62.50 node1" >> /etc/hosts
echo "192.168.62.60 node2" >> /etc/hosts
#配置域名解析
java -version
#查看java版本
2、部署安装Elasticsearch软件
rpm -ivh elasticsearch-5.5.0.rpm
cd /etc/elasticsearch/
cp elasticsearch.yml elasticsearch.yml.bak
3、配置Elasticsearch主配置文件
vim /etc/elasticsearch/elasticsearch.yml
--17--取消注释,指定集群名字
cluster.name: jn
--23--取消注释,指定节点名字:Node1节点为node1,Node2节点为node2
node.name: node1
--33--取消注释,指定数据存放路径
path.data: /data/elk_data
--37--取消注释,指定日志存放路径
path.logs: /var/log/elasticsearch/
--43--取消注释,改为在启动的时候不锁定内存
bootstrap.memory_lock: false
--55--取消注释,设置监听地址,0.0.0.0代表所有地址
network.host: 0.0.0.0
--59--取消注释,ES 服务的默认监听端口为9200
http.port: 9200
--68--取消注释,集群发现通过单播实现,指定要发现的节点 node1、node2
discovery.zen.ping.unicast.hosts: ["node1", "node2"]
grep -v "^#" /etc/elasticsearch/elasticsearch.yml
4、创建数据存放路径并授权
mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data/
systemctl start elasticsearch
netstat -antp | grep 9200
systemctl enable --now elasticsearch.service
netstat -antp | grep 9200
5、查看node1节点信息
http://192.168.62.50:9200/_cluster/health?pretty
#查看健康状态
二、Elasticsearch集群部署(在node2上操作)
1、前面步骤与node1节点一致
2、在node1节点上吧配置文件上传到node2节点
scp elasticsearch.yml root@192.168.62.60:/etc/elasticsearch/
3、修改配置文件
vim /etc/elasticsearch/elasticsearch.yml
grep -v "^#" /etc/elasticsearch/elasticsearch.yml
4、创建数据存放路径并授权
mkdir -p /data/elk_data
chown elasticsearch:elasticsearch /data/elk_data/
systemctl daemon-reload
systemctl enable --now elasticsearch.service
systemctl start elasticsearch
netstat -antp | grep 9200
5、查看node2节点信息
由于es服务启动之后,访问界面比较丑陋,为了更好的查看索引库当中的信息,我们可以通过安装elasticsearch-head这个插件来实现,这个插件可以更方便快捷的看到es的管理界面。
三、安装 Elasticsearch-head 插件(node1和node2节点操作一样)
Elasticsearch 在 5.0 版本后,Elasticsearch-head 插件需要作为独立服务进行安装,需要使用npm工具(NodeJS的包管理工具)安装。
安装 Elasticsearch-head 需要提前安装好依赖软件 node 和 phantomjs。
node:是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
phantomjs:是一个基于 webkit 的JavaScriptAPI,可以理解为一个隐形的浏览器,任何基于 webkit 浏览器做的事情,它都可以做到。
1、编译安装 node
上传软件包 node-v8.2.1.tar.gz 到/opt
yum install gcc gcc-c++ make -y
cd /opt
tar zxvf node-v8.2.1.tar.gz
cd node-v8.2.1/
./configure
make && make install
2、安装phantomjs
上传软件包 phantomjs-2.1.1-linux-x86_64.tar.bz2到opt
cd /opt
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2 -C /usr/local/src/
cd /usr/local/src/phantomjs-2.1.1-linux-x86_64/bin
cp phantomjs /usr/local/bin
3、安装 Elasticsearch-head 数据可视化工具
上传软件包 elasticsearch-head.tar.gz 到/opt
cd /opt
tar zxvf elasticsearch-head.tar.gz -C /usr/local/src/
cd /usr/local/src/elasticsearch-head/
npm install
4、修改 Elasticsearch 主配置文件
vim /etc/elasticsearch/elasticsearch.yml
--末尾添加以下内容--
http.cors.enabled: true
http.cors.allow-origin: "*"
5、启动 elasticsearch-head 服务
/usr/local/src/elasticsearch-head/node_modules/grunt/bin
./grunt server
6、通过 Elasticsearch-head查看Elasticsearch 信息
浏览器访问 http://192.168.62.50:9100/ 地址并连接群集。如果看到群集健康值为 green 绿色,代表群集很健康。
7、插入索引,进行测试
#node1节点插入
curl -X PUT 'localhost:9200/index-demo/test/1?pretty&pretty' -H 'content-Type: application/json' -d '{"user":"lcdb","mesg":"i am superman"}'
浏览器访问 http://192.168.62.50:9100/ 查看索引信息,可以看见索引默认被分片5个,并且有一个副本。
点击“数据浏览”,会发现在node1上创建的索引为 index-demo,类型为 test 的相关信息。
四、Logstash部署(192.168.62.70)
下载地址:https://www.elastic.co/cn/downloads/past-releases/logstash-5-5-1
Logstash 一般部署在需要监控其日志的服务器。在本案例中,Logstash 部署在 Apache 服务器上,用于收集 Apache 服务器的日志信息并发送到 Elasticsearch。
1、安装httpd服务
yum -y install httpd
systemctl start httpd
2、安装java环境
yum -y install java
java –version
3、安装logstash
4、测试Logstash
4.1 Logstash 命令常用选项
-f:通过这个选项可以指定 Logstash 的配置文件,根据配置文件配置 Logstash 的输入和输出流。
-e:从命令行中获取,输入、输出后面跟着字符串,该字符串可以被当作 Logstash 的配置(如果是空,则默认使用 stdin 作为输入,stdout 作为输出)。
-t:测试配置文件是否正确,然后退出。
4.2 定义输入输出流
输入采用标准输入,输出采用标准输出(类似管道)
指定数据输入端口,默认为9600~9700
logstash -e ‘input { stdin{} } output { stdout{} }’
4.3使用runydebug输出详细格式显示,codec为一种编解码器
logstash -e 'input { stdin{} } output { stdout{ codec=>rubydebug } }'
4.4 使用Logstash将信息写入Elasticsearch中
logstash -e 'input { stdin{} } output { elasticsearch { hosts=>["192.168.62.50:9200"] } }'
结果不在标准输出显示,而是发送至 Elasticsearch 中,可浏览器访问 http://192.168.62.50:9100/ 查看索引信息和数据浏览。
5、定义logstash配置文件
Logstash 配置文件基本由三部分组成(根据需要选择使用)
- input:表示从数据源采集数据,常见的数据源如Kafka、日志文件等
- filter:表示数据处理层,包括对数据进行格式化处理、数据类型转换、数据过滤等,支持正则表达式
- output:表示将Logstash收集的数据经由过滤器处理之后输出到Elasticsearch。
修改 Logstash 配置文件,让其收集系统日志/var/log/messages,并将其输出到 elasticsearch 中
#创建配置文件
vim /etc/logstash/conf.d/syslog.conf
input {
file{
path =>"/var/log/messages"
type =>"system"
start_position =>"beginning"
}
}
output {
elasticsearch {
hosts => ["192.168.109.11:9200"]
index =>"system-%{+YYYY.MM.dd}"
}
}
systemctl restart logstash #重启服务
6、浏览器验证查看索引信息
五、kibana部署(node1节点)
下载地址:https://www.elastic.co/cn/downloads/past-releases/kibana-5-5-1
1、安装Kibana
cd /opt
rpm -ivh kibana-5.5.1-x86_64.rpm
2、设置Kibana的主配置文件
vim /etc/kibana/kibana.yml
--2--取消注释,Kiabana 服务的默认监听端口为5601
server.port: 5601
--7--取消注释,设置 Kiabana 的监听地址,0.0.0.0代表所有地址
server.host: "0.0.0.0"
--21--取消注释,设置和 Elasticsearch 建立连接的地址和端口
elasticsearch.url: "http://192.168.80.10:9200"
--30--取消注释,设置在 elasticsearch 中添加.kibana索引
kibana.index: ".kibana"
3、启动kibana服务
systemctl daemon-reload
systemctl start kibana.service
systemctl enable kibana.service
netstat -antp | grep 5601
4、验证Kibana
浏览器访问http://192.168.62.50:5601
我们先前添加了system的日志,这里可以i添加system的索引
这里切换到发现就会发现有数据
5、将 Apache 服务器的日志(访问的、错误的)添加到 Elasticsearch 并通过 Kibana 显示
vim /etc/logstash/conf.d/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.62.50:9200"]
index => "apache_access-%{+YYYY.MM.dd}"
}
}
if [type] == "error" {
elasticsearch {
hosts => ["192.168.62.50:9200"]
index => "apache_error-%{+YYYY.MM.dd}"
}
}
}
cd /etc/logstash/conf.d/
/usr/share/logstash/bin/logstash -f apache_log.conf
访问apache(192.168.62.70),增加日志
浏览器访问 http://192.168.62.50:9100 查看索引是否创建
成功
接着去kibana创建访问日志索引
再创建错误日志
再去discover上查看日志
然后在宿主机上刷新访问,会刷新日志,可以在kibana查看时间