一、ELK基础环境简介: ELK环境是一个日志分析系统
1、ELK基础环境搭建用到的组件:elasticsearch、kibana、logstath
1. elasticsearch 简介:
(1) Elasticsearch和MongoDB/Redis/Memcache一样,是非关系型数据库。是一个接近实时的搜索平台,从索引这个文档到这个文档能够被搜索到只有一个轻微的延迟,企业应用定位:采用Restful API标准的可扩展和高可用的实时数据分析的全文搜索工具。
![ELK基础架构逻辑图.png](https://img.haomeiwen.com/i16973075/9bf4add76a73dae1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)(2) 可拓展:支持一主多从且扩容简易,只要cluster.name一致且在同一个网络中就能自动加入当前集群;本身就是开源软件,也支持很多开源的第三方插件。
(3) 在一个集群的多个节点中进行分布式存储,索引支持shards(分片)和复制,即使部分节点down掉,也能自动进行数据恢复和主从切换。
分片(shards):
代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上,构成分布式搜索。
分片的数量只能在索引创建前指定,并且索引创建后不能更改。5.X默认不能通过配置文件定义分片
副本(replicas):
代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当个某个节点某个分片损坏或丢失时可以从副本中恢复。
(4) 使用倒排索引的模式进行数据存储
倒排索引详细查看: https://blog.csdn.net/u013421629/article/details/80992406
2. kibana 简介:
Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。Kibana与Elasticsearch的交互方式是各种不同的图表、表格、地图等,直观的展示数据,从而达到高级的数据分析与可视化的目的。
3. logstath 简介:
Logstash是一个具有实时管道功能的开源数据收集引擎,Logstash可以动态地将来自不同数据源的数据统一起来,并将数据规范化为你选择的目的地,清理和大众化你的所有数据,用于各种高级下游分析和可视化用例。
详细查看:https://blog.csdn.net/yinbiao123456/article/details/86562951
2、Elasticsearch+ Logstash + Kibana工作逻辑
ELK基础架构逻辑图.png 实验架构说明.jpg访问elasticsearch服务是否正常.png 查看head插件监听端口存活.png 访问elasticsearch集群是否正常.png
验证kibana服务启动端口监听.png 访问kibana服务能否正常访问.png 反向代理访问测试.png
一、ELK基础环境组件介绍:elasticsearch、kibana、logstash
1. elasticsearch 简介:
(1) Elasticsearch和MongoDB/Redis/Memcache一样,是非关系型数据库。是一个接近实时的搜索平台,从索引这个文档到这个文档能够被搜索到只有一个轻微的延迟,企业应用定位:采用Restful API标准的可扩展和高可用的实时数据分析的全文搜索工具。
(2) 可拓展:支持一主多从且扩容简易,只要cluster.name一致且在同一个网络中就能自动加入当前集群;本身就是开源软件,也支持很多开源的第三方插件。
(3) 在一个集群的多个节点中进行分布式存储,索引支持shards(分片)和复制,即使部分节点down掉,也能自动进行数据恢复和主从切换。
分片(shards):
代表索引分片,es可以把一个完整的索引分成多个分片,这样的好处是可以把一个大的索引拆分成多个,分布到不同的节点上,构成分布式搜索。
分片的数量只能在索引创建前指定,并且索引创建后不能更改。5.X默认不能通过配置文件定义分片
副本(replicas):
代表索引副本,es可以设置多个索引的副本,副本的作用一是提高系统的容错性,当个某个节点某个分片损坏或丢失时可以从副本中恢复。
(4) 使用倒排索引的模式进行数据存储
倒排索引详细查看: https://blog.csdn.net/u013421629/article/details/80992406
2. kibana 简介:
Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。Kibana与Elasticsearch的交互方式是各种不同的图表、表格、地图等,直观的展示数据,从而达到高级的数据分析与可视化的目的。
3. logstash 简介:
Logstash是一个具有实时管道功能的开源数据收集引擎,Logstash可以动态地将来自不同数据源的数据统一起来,并将数据规范化为你选择的目的地,清理和大众化你的所有数据,用于各种高级下游分析和可视化用例。
详细查看:https://blog.csdn.net/yinbiao123456/article/details/86562951
Elasticsearch+ Logstash + Kibana工作逻辑
ELK基础架构逻辑图.png二、ELK环境搭建
1、本次实验架构图
实验架构说明.jpg2、搭建
es01、es02 、web01 环境搭建前准备:
关闭防火墙 :systemctl stop firewalld
关闭SELinux:setenforce 0
配置好yum源 :wget http://mirrors.aliyun.com/repo/Centos-7.repo
安装jdk: yum install -y java
将下载好的包组导入各节点
(1)elasticsearch 环境构建(es01 es02)
安装 elasticsearch:
[root@eso1/server/tools/elk]# yum localinstall elasticsearch-6.4.1.rpm -y
修改 elasticsearch配置文件如下:
[root@es01 /etc/elasticsearch]# egrep -v "^$|^#" elasticsearch.yml
cluster.name: my-cluster #集群名称
node.name: es02 #节点名称
path.data: /var/lib/elasticsearch #工作目录
path.logs: /var/log/elasticsearch #日志文件存放目录
network.host: 10.0.0.237 #本节点ip
http.port: 9200 #本服务监听端口
discovery.zen.ping.unicast.hosts: ["10.0.0.237", "10.0.0.238"] #集群内部可相互发现
discovery.zen.minimum_master_nodes: 1 #其它N个有master资格的节点.默认为1,对于大的集群来说,可以设置大一点的值(2-4)
http.cors.enabled: true #让 head管理集群中每个节点
http.cors.allow-origin: "*" #让 head管理集群中每个节点
比较重要的两个配置文件
/etc/elasticsearch/elasticsearch.yml #主配置文件
/etc/elasticsearch/jvm.options #可设置内存大小
启动 elasticsearch 服务
[root@es01 /]# systemctl start elasticsearch.service
检查服务正常启动
检查elasticsearch服务启动.png访问 elasticsearch 服务正常
访问elasticsearch服务是否正常.png安装 head 插件管理集群
[root@es01 ~]# yum install nodejs npm openssl screen -y
[root@es01 ~]# node -v #查看 nodejs 版本信息
v6.17.1
[root@es01 ~]# npm -v #查看 npm 版本信息
3.10.10
[root@es01 ~]#
安装cnpm
[root@es01 ~]# npm install -g cnpm --registry=https://registry.npm.taobao.org
安装git工具,并把elasticsearch-head下面的文件克隆到本地
yum install git -y
cd /opt/
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head/
cnpm install
screen -S es-head
cnpm run start
Ctrl+A+D #切换快捷键
cnpm run start
查看head监听端口是否存活
查看head插件监听端口存活.png访问 elasticsearch 集群是否正常工作
访问elasticsearch集群是否正常.png至此 elasticsearch 搭建完成(es01、es02 主机配置相同)
(2) kibana 服务搭建(es01主机)
搭建前准备:
关闭防火墙 :systemctl stop firewalld
关闭SELinux:setenforce 0
配置好yum源 :wget http://mirrors.aliyun.com/repo/Centos-7.repo
安装jdk: yum install -y java
将下载好的kibana包导入es01节点
安装
[root@es01 /server/tools/elk]# ls
elasticsearch-6.4.1.rpm filebeat-6.4.1-x86_64.rpm kibana-6.4.1-x86_64.rpm logstash-6.4.1.rpm
[root@es01 /server/tools/elk]# yum localinstall -y kibana-6.4.1-x86_64.rpm
修改配置文件中如下内容:
[root@es01 /server/tools/elk]# egrep -v "^$|^#" /etc/kibana/kibana.yml
server.port: 5601 #kibana 服务监听端口
server.host: "10.0.0.237" #kibana 服务的主机地址
elasticsearch.url: "http://10.0.0.237:9200" #elasticsearch服务地址:端口
[root@es01 /server/tools/elk]#
启动kibana服务
[root@es01 /server/tools/elk]# systemctl start kibana.service
验证服务是否启动端口是否监听
验证kibana服务启动端口监听.png测试kibana服务能否正常访问
访问kibana服务能否正常访问.png至此 elasticsearch+kibana 搭建完成
(3)web01 节点搭建 nginx+logstash
添加nginx源
[root@web01 ~]# cat /etc/yum.repos.d/nginx.repo
[nx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
[root@web01 ~]# yum provides nginx #查看nginx版本
安装 nginx
[root@web01 ~]# yum install nginx-1.16.0-1.el7.ngx.x86_64
配置nginx反向代理
[root@web01 /etc/nginx/conf.d]# cat elk.conf
server {
listen 80;
server_name elk.test.com;
location / {
proxy_pass http://10.0.0.237:5610;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
[root@web01 /etc/nginx/conf.d]#
启动nginx,测试反向代理是否成功
[root@web01 /]# systemctl start nginx
反向代理访问测试.png
安装 logstash
安装前环境准备:
关闭防火墙 :systemctl stop firewalld
关闭SELinux:setenforce 0
配置好yum源 :wget http://mirrors.aliyun.com/repo/Centos-7.repo
安装jdk: yum install -y java
将软件包导入相关节点
安装 logstash
[root@web01 /server/tools]# yum localinstall logstash-6.4.1.rpm -y
修改配置文件如下
[root@web01 /server/tools]# egrep -v "^#|^$" /etc/logstash/logstash.yml
path.data: /var/lib/logstash
http.host: "10.0.0.239"
http.port: 9600
path.logs: /var/log/logstash
[root@web01 /server/tools]#
新增日志收集输出文件配置如下
[root@web01 /server/tools]# cat /etc/logstash/conf.d/nginx_access.conf
input {
file {
path => "/var/log/nginx/access_json.log"
start_position => "end"
type => "nginx_access"
codec => json
}
}
output {
elasticsearch {
hosts => ["10.0.0.237:9200"]
index => "nginx_access-%{+YYYY.MM.dd}"
}
}
[root@web01 /server/tools]#
将nginx的日志记录格式修改如下
vim /etc/nginx/nginx.conf
log_format access_json '{"@timestamp":"$time_iso8601",'
'"host":"$server_addr",'
'"clientip":"$remote_addr",'
'"size":$body_bytes_sent,'
'"responsetime":$request_time,'
'"upstreamtime":"$upstream_response_time",'
'"upstreamhost":"$upstream_addr",'
'"http_host":"$host",'
'"url":"$uri",'
'"domain":"$host",'
'"xff":"$http_x_forwarded_for",'
'"referer":"$http_referer",'
'"status":"$status"}';
access_log /var/log/nginx/access_json.log access_json;
完整配置文件
[root@web01 /server/tools]# cat /etc/nginx/nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
# log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#
# access_log /var/log/nginx/access.log main;
log_format access_json '{"@timestamp":"$time_iso8601",'
'"host":"$server_addr",'
'"clientip":"$remote_addr",'
'"size":$body_bytes_sent,'
'"responsetime":$request_time,'
'"upstreamtime":"$upstream_response_time",'
'"upstreamhost":"$upstream_addr",'
'"http_host":"$host",'
'"url":"$uri",'
'"domain":"$host",'
'"xff":"$http_x_forwarded_for",'
'"referer":"$http_referer",'
'"status":"$status"}';
access_log /var/log/nginx/access_json.log access_json;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
[root@web01 /server/tools]#
重启nginx,并启动 logstash
[root@web01 /server/tools]# systemctl restart nginx
[root@web01 /server/tools]# systemctl start logstash.service
在 kibana平台展示所收到的日志信息
添加索引模式
image.png image.png image.png image.png image.png通过kibana来展示日志
image.png image.png添加形状图
image.png image.png
网友评论