ELK日志收集系统-----介绍与部署

参考文档:
https://blog.csdn.net/u014773389/article/details/81207017
https://www.cnblogs.com/aubin/p/8026184.html
https://blog.csdn.net/qq_22211217/article/details/80764568

一、ELK应用场景

在复杂的企业应用服务群中,记录日志方式多种多样,并且不易归档以及提供日志监控的机制。无论是开发人员还是运维人员都无法准确的定位服务、服务器上面出现的种种问题,也没有高效搜索日志内容从而快速定位问题的方式。因此需要一个集中式、独立的、搜集管理各个服务和服务器上的日志信息,集中管理,并提供良好的UI界面进行数据展示,处理分析。

得此:ELK提供一套开源的解决方案,能高效、简便的满足以上场景。

二、ELK日志系统介绍

1、ELK分别是Elasticsearch、Logstash、Kibana三个开源框架缩写。

框架 简介 作用
Elasticsearch 开源分布式搜索引擎,提供存储、分析、搜索功能。特点:分布式、基于reasful风格、支持海量高并发的准实时搜索场景、稳定、可靠、快速、使用方便等。 接收搜集的海量结构化日志数据,并提供给kibana查询分析
Logstash 开源日志搜集、分析、过滤框架,支持多种数据输入输出方式。 用于收集日志,对日志进行过滤形成结构化数据,并转发到elasticsearch中
Kibana 开源日志报表系统,对elasticsearch以及logstash有良好的web页面支持。 对elasticsearch提供的数据进行分析展示

2、ELK经典应用如下

image

Logstash部署至服务主机,对各个服务的日志进行采集、过滤、推送。
Elasticsearch存储Logstash传送的结构化数据,提供给Kibana。
Kibana提供用户UIweb页面进行,数据展示和分析形成图表等。

备注:logs 泛指,各种日志文件以及日志信息:windows,negix,tomcat,webserver等等。
<meta charset="utf-8">

资料链接

Elasticsearch java 存储,提供数据
Logstash java 收集日志,转发到ES,过滤转换字段
Kibana java 过滤,分析,搜索,展示
Filebeat GO 收集日志,转发给ES
image

0.Elasticsearch安装(安装时候找自己需要的版本)

#首先要安装java环境
[root@elk02 /server/tools]# yum install java -y
#查看版本
[root@elk02 /server/tools]# java -version
openjdk version "1.8.0_222"
OpenJDK Runtime Environment (build 1.8.0_222-b10)
OpenJDK 64-Bit Server VM (build 25.222-b10, mixed mode)

###创建elasticsearch用户,root用户启动elasticsearch会失败
groupadd elsearch
useradd elsearch -g elsearch
su

#安装配置
[root@elk02 /server/tools]# rpm -ivh elasticsearch-6.6.0.rpm
[root@elk02 /server/tools]# vim /etc/elasticsearch/elasticsearch.yml
[root@elk02 /server/tools]# grep ^[a-z] /etc/elasticsearch/elasticsearch.yml(修改配置文件)
node.name: node-1  \\节点名称 ,每个节点不一样(切记一定要改)
path.data: /var/lib/elasticsearch  \\数据目录(手动创建,给授权 chown -R elasticsearch.elasticsearch  /var/lib/elasticsearch)
path.logs: /var/log/elasticsearch  \\日志目录(手动创建,给授权 chown -R elasticsearch.elasticsearch /var/log/elasticsearch)
bootstrap.memory_lock: true  \\锁定内存设置
network.host: 10.38.33.83  \\监听网卡地址(本机地址)
http.port: 9200  \\端口号
cluster.initial_master_nodes: ["node-1"] (一定要和node节点一样)

#启动
systemctl daemon-reload
systemctl enable elasticsearch.service
systemctl restart elasticsearch.service

#检查
[root@elk02 /server/tools]# netstat -lntup|grep 9200
tcp6     0    0 10.38.33.83:9200      :::*  LISTEN   10151/java          

[root@elk02 /server/tools]# curl localhost:9200
{
  "name" : "node-1",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "KmylgV4QSbmapQF0z_xlhQ",
  "version" : {
    "number" : "6.6.0",
    "build_flavor" : "default",
    "build_type" : "rpm",
    "build_hash" : "a9861f4",
    "build_date" : "2019-01-24T11:27:09.439740Z",
    "build_snapshot" : false,
    "lucene_version" : "7.6.0",
    "minimum_wire_compatibility_version" : "5.6.0",
    "minimum_index_compatibility_version" : "5.0.0"
  },
  "tagline" : "You Know, for Search"
}

解决内存锁定的报错

官方解决方案:
systemctl edit elasticsearch
[Service]
LimitMEMLOCK=infinity
重启服务
systemctl daemon-reload
systemctl restart elasticsearch

安装elasticsearch-head插件

##由于head插件本质上还是一个nodejs的工程,因此需要安装node,使用npm来安装依赖的包。
<1>安装Node.js
mkdir -p  /usr/local/node

下载解压
wget https://nodejs.org/dist/v6.10.2/node-v6.10.2-linux-x64.tar.xz
tar xvf node-v6.10.2-linux-x64.tar
mv node-v6.10.2-linux-x64 /usr/local/node

 配置并生效(路径一定要对)
vim /etc/profile
export NODE_HOME=/usr/local/node
export PATH=$PATH:$NODE_HOME/bin
source /etc/profile

查看版本验证
[elsearch@imok bin]$ node -v
v6.10.2
[elsearch@imok bin]$ npm -v
3.10.10

<2>下载head插件
##如果未安装git ,则先安装git工具
yum install –y git
git clone https://github.com/mobz/elasticsearch-head.git

<3>安装grunt
cd elasticsearch-head
npm install -g grunt --registry=https://registry.npm.taobao.org
<4>安装插件

npm install
在elasticsearch-head目录下node_modules/grunt下如果没有grunt二进制程序,需要执行:
npm install grunt --save 

<5>修改配置 elasticsearch-head下Gruntfile.js文件
修改connect配置节点

image

修改 _site/app.js 修改http://localhost:9200字段到本机ES端口与IP

image

<6>修改 elasticsearch配置文件

修改elasticsearch.yml文件加入以下内容:

是否支持跨域
http.cors.enabled: true
表示支持所有域名
http.cors.allow-origin: "
"

image

<7>启动head插件服务(后台运行)

<pre style="margin: 0px; padding: 0px; overflow-wrap: break-word; font-family: "Courier New" !important; font-size: 12px !important;">/elasticsearch-head/node_modules/grunt/bin/grunt server &</pre>

image

<8>查看(游览器输入ip:9100)

如下图说明安装OK

image

1.kibana安装

[root@elk01 /server/tools]# ls
elasticsearch-6.6.0.rpm
filebeat-6.6.0-x86_64.rpm
kibana-6.6.0-x86_64.rpm
logstash-6.6.0.rpm

rpm -ivh kibana-6.6.0-x86_64.rpm

2.kibana配置

[root@lb01 /data/soft]# grep "^[a-z]" /etc/kibana/kibana.yml
server.port: 5601
server.host: "10.38.33.83"
elasticsearch.hosts: ["http://10.38.33.83:9200"]
kibana.index: ".kibana"

重启kibana
systemctl restart kibana.service

image
image
image
image
image

调节内存使用大小的方法

[root@elk02 ~]# vim /etc/elasticsearch/jvm.options
...
 19 # Xms represents the initial size of total heap space
 20 # Xmx represents the maximum size of total heap space
 21 
 22 -Xms512m
 23 -Xmx512m

3.filebeat

安装filebeat
rpm -ivh filebeat-6.6.0-x86_64.rpm 

查看配置文件路径
[root@elk01 ~]# rpm -qc filebeat 
/etc/filebeat/filebeat.yml

修改配置文件
[root@elk01 ~]# vim  /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/access.log
output.elasticsearch:
  hosts: ["10.38.33.83:9200"]

启动filebeat
[root@elk01 ~]# systemctl restart filebeat.service

查看日志
[root@elk01 ~]# tail -f /var/log/filebeat/filebeat 

安装nginx
[root@elk01 ~]# yum install -y nginx

启动nginx
[root@elk01 ~]# systemctl restart nginx.service 

在浏览器上刷一些访问日志
http://10.38.33.83/YouArePig

查看nginx的日志
[root@elk01 ~]# tail -f /var/log/nginx/access.log

filebeat工作原理
100条
停止filebeat
110条
启动filebeat


刷新elasticsearch-head插件

image

操作kibana

image
image
image
image
image
image

<meta charset="utf-8">

收集Nginx的json日志

1.第一步:修改nginx日志为json格式,重启nginx

> /var/log/nginx/access.log

log_format json '{ "time_local": "$time_local", '
                     '"remote_addr": "$remote_addr", '
                     '"referer": "$http_referer", '
                     '"request": "$request", '
                     '"status": $status, '
                     '"bytes": $body_bytes_sent, '
                     '"agent": "$http_user_agent", '
                     '"x_forwarded": "$http_x_forwarded_for", '
                     '"up_addr": "$upstream_addr",'
                     '"up_host": "$upstream_http_host",'
                     '"upstream_time": "$upstream_response_time",'
                     '"request_time": "$request_time"'
 ' }';

access_log  /var/log/nginx/access.log  json; 
------------------------------------------------------------------------------
systemctl restart nginx

第二步:修改filebeat配置文件

[root@lb01 ~]# cat /etc/filebeat/filebeat.yml 
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/access.log
  json.keys_under_root: true
  json.overwrite_keys: true
  tags: ["access"] 

- type: log
  enabled: true
  paths:
    - /var/log/nginx/error.log
  tags: ["error"] 

output.elasticsearch:
  hosts: ["10.38.33.83:9200"]
  indices:
  - index: "nginx-access-%{[beat.version]}-%{+yyyy.MM}"
    when.contains:
      tags: "access"
  - index: "nginx-error-%{[beat.version]}-%{+yyyy.MM}"
    when.contains:
      tags: "error"

setup.template.name: "nginx"
setup.template.pattern: "nginx-*"
setup.template.enabled: false
setup.template.overwrite: true

=================================

重启filebeat

systemctl restart filebeat

第三步: 访问nginx

ab -c 10 -n 100 http://10.38.33.83/oldzhang.html

第四步: kibana添加索引

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