ELK基础 环境搭建

一、ELK基础环境简介: ELK环境是一个日志分析系统

1、ELK基础环境搭建用到的组件:elasticsearch、kibana、logstath

1. elasticsearch 简介:

(1) Elasticsearch和MongoDB/Redis/Memcache一样,是非关系型数据库。是一个接近实时的搜索平台,从索引这个文档到这个文档能够被搜索到只有一个轻微的延迟,企业应用定位:采用Restful API标准的可扩展和高可用的实时数据分析的全文搜索工具。
![ELK基础架构逻辑图.png](https://upload-images.jianshu.io/upload_images/16973075-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、本次实验架构图

实验架构说明.jpg

2、搭建

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
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,898评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,401评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,058评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,539评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,382评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,319评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,706评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,370评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,664评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,715评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,476评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,326评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,730评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,003评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,275评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,683评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,877评论 2 335

推荐阅读更多精彩内容