目录:

一、介绍

二、安装JDK

三、安装Elasticsearch

四、安装Kibana

五、安装Nginx

六、安装Logstash

七、安装Logstash-forwarder

八、测试

系统环境:CentOS Linux release 7.4.1708 (Core)

软件版本:

elasticsearch-5.6.10

kibana-5.6.10

logstash-5.6.10

当前问题状况

  1. 开发人员不能登录线上服务器查看详细日志。
  2. 各个系统都有日志,日志数据分散难以查找。
  3. 日志数据量大,查询速度慢,或者数据不够实时。

一、介绍

1、组成

ELK由Elasticsearch、Logstash和Kibana三部分组件组成;
Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Logstash是一个完全开源的工具,它可以对你的日志进行收集、分析,并将其存储供以后使用
kibana 是一个开源和免费的工具,它可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。


2、四大组件
Logstash: logstash server端用来搜集日志;
Elasticsearch: 存储各类日志;
Kibana: web化接口用作查寻和可视化日志;
Logstash Forwarder: logstash client端用来通过lumberjack 网络协议发送日志到logstash server;

3、工作流程

在需要收集日志的所有服务上部署logstash,作为logstash
agent(logstash shipper)用于监控并过滤收集日志,将过滤后的内容发送到Redis,然后logstash
indexer将日志收集在一起交给全文搜索服务ElasticSearch,可以用ElasticSearch进行自定义搜索通过Kibana
来结合自定义搜索进行页面展示。

二、安装JDK

配置阿里源:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all
yum makecache
Logstash的运行依赖于Java运行环境,Elasticsearch 要求至少 Java 7。
[root@controller ~]# yum install java-1.8.0-openjdk -y
[root@controller ~]# java -version
openjdk version "1.8.0_151"
OpenJDK Runtime Environment (build 1.8.0_151-b12)
OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode)

三、安装Elasticsearch

官方下载地址:https://www.elastic.co/downloads/past-releases/elasticsearch-5-6-10

#创建用户elasticsearch-5.6.10
[root@elk-node1 local]# useradd elasticsearch
#解压
[root@elk-node1 application]# tar -xf elasticsearch-5.6.10.tar.gz -C /usr/local/
#创建软链接
[root@elk-node1 local]# ln -s elasticsearch-5.6.10/ elasticsearch
#授权
[root@elk-node1 local]# chown -R elasticsearch elasticsearch-5.6.10/
[root@elk-node1 local]# chown -R elasticsearch elasticsearch
#修改配置文件
[root@elk-node1 local]# cd elasticsearch/config/
[root@elk-node1 config]# pwd
/usr/local/elasticsearch/config
[root@elk-node1 config]# grep -Ev "^#|^$" elasticsearch.yml
cluster.name: pcidata-elk
node.name: elk-node1
bootstrap.memory_lock: true
network.host: 0.0.0.0
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
#修改打开文件句柄数,添加limits.conf内容
[root@elk-node1 config]# ulimit -SHn 65536
[root@elk-node1 config]# tail /etc/security/limits.conf
elasticsearch hard nofile 131072
elasticsearch soft nproc 2048
elasticsearch hard nproc 4096
elasticsearch soft memlock unlimited
elasticsearch hard memlock unlimited #切换到elasticsearch启动服务
[root@elk-node1 config]# su - elasticsearch
Last login: Mon Aug 6 18:42:34 CST 2018 on pts/2
[elasticsearch@elk-node1 ~]$ ll
total 0
[elasticsearch@elk-node1 ~]$ cd /usr/local/elasticsearch/bin/
[elasticsearch@elk-node1 bin]$ ./elasticsearch -d
#报错则根据日志信息填坑
[elasticsearch@elk-node1 logs]$ pwd
/usr/local/elasticsearch/logs
[elasticsearch@elk-node1 logs]$ tail pcidata-elk.log
[elasticsearch@elk-node1 logs]$ ss -lntp|grep 9200
LISTEN 0 128 :::9200 :::* users:(("java",pid=4189,fd=170))
#输出以下信息说明安装ok
[elasticsearch@elk-node1 logs]$ curl 'http://localhost:9200/?pretty'
{
"name" : "elk-node1",
"cluster_name" : "pcidata-elk",
"cluster_uuid" : "GrfwFbeOQAmATCqZnvsq8Q",
"version" : {
"number" : "5.6.10",
"build_hash" : "b727a60",
"build_date" : "2018-06-06T15:48:34.860Z",
"build_snapshot" : false,
"lucene_version" : "6.6.1"
},
"tagline" : "You Know, for Search"
}
安装elasticsearch-head插件
1、安装git
[root@elk-node1 config]# yum install -y git
2、下载elasticsearch-head插件源码
[root@elk-node1 config]# git clone git://github.com/mobz/elasticsearch-head.git
Cloning into 'elasticsearch-head'...
remote: Counting objects: 4224, done.
remote: Total 4224 (delta 0), reused 0 (delta 0), pack-reused 4224
Receiving objects: 100% (4224/4224), 2.16 MiB | 542.00 KiB/s, done.
Resolving deltas: 100% (2328/2328), done.
3.安装node
由于head插件本质上还是一个nodejs的工程,因此需要安装node,使用npm来安装依赖的包,npm可以理解为maven
[root@elk-node1 elasticsearch]# wget https://nodejs.org/dist/v8.11.3/node-v8.11.3-linux-x64.tar.xz
4.解压node
[root@elk-node1 elasticsearch]# mv node-v8.11.3-linux-x64.tar.xz /usr/local/application/
[root@elk-node1 application]# tar -xf node-v8.11.3-linux-x64.tar.xz
[root@elk-node1 application]# ln -s node-v8.11.3-linux-x64/ node
5.配置node环境变量
[root@elk-node1 application]# vim /etc/profile
export NODE_HOME=/usr/local/application/node
export PATH=$NODE_HOME/bin:$PATH
[root@elk-node1 application]# source /etc/profile 6.测试node是否生效
[root@elk-node1 application]# node -v
v8.11.3
[root@elk-node1 application]# npm -v
5.6.0
初始化
[root@elk-node1 application]# npm init
This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults. See `npm help json` for definitive documentation on these fields
and exactly what they do. Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file. Press ^C at any time to quit.
package name: (application)
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to /usr/local/application/package.json: {
"name": "application",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"grunt-cli": "^1.2.0"
},
"devDependencies": {},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
} Is this ok? (yes) yes 7.安装grunt
grunt是一个很方便的构建工具,可以进行打包压缩、测试、执行等等的工作,5.6.10里的head插件就是通过grunt启动的。因此需要安装一下
[root@elk-node1 elasticsearch-head]# pwd
/usr/local/elasticsearch/elasticsearch-head
[root@elk-node1 elasticsearch-head]# npm install -g grunt-cli 8.检查安装是否成功
[root@elk-node1 elasticsearch-head]# grunt -version
grunt-cli v1.2.0 9.修改服务器监听地址
vim elasticsearch-head/Gruntfile.js connect: {
server: {
options: {
port: 9100,
hostname: '*',
base: '.',
keepalive: true
}
}
}
增加hostname属性设置为* 10.修改head的连接地址: vim elasticsearch-head/_site/app.js this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200"; 把localhost修改成你es的服务器地址,如: this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://172.20.10.198:9200"; 11.运行head, 在head目录中,执行npm install
[root@elk-node1 elasticsearch-head]# npm install phantomjs-prebuilt@5.6.106 --ignore-scripts
[root@elk-node1 elasticsearch-head]# npm install
12.启动nodejs
grunt server & 13.访问target:9100 http://172.20.10.198:9100/

四、安装Kibana

官方下载地址:https://www.elastic.co/downloads/past-releases/kibana-5-6-10

#解压kibana-5.6.10
[root@elk-node1 local]# pwd
/usr/local
[root@elk-node1 local]# tar -xf kibana-5.6.10-linux-x86_64.tar.gz
#创建软链接
[root@elk-node1 local]# ln -s kibana-5.6.10-linux-x86_64/ kibana
#修改配置文件
[root@elk-node1 config]# pwd
/usr/local/kibana/config
[root@elk-node1 config]# grep -Ev "^#|^$" kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.url: "http://172.20.10.198:9200"
kibana.index: ".kibana"
#启动
[root@elk-node1 config]# /usr/local/kibana/bin/kibana
#输出以下信息说明安装ok
[root@elk-node1 config]# curl localhost:5601
<script>var hashRoute = '/app/kibana';
var defaultRoute = '/app/kibana'; var hash = window.location.hash;
if (hash.length) {
window.location = hashRoute + hash;
} else {
window.location = defaultRoute;
}</script>

五、安装Nginx

直接yum安装:
yum install nginx httpd-tools -y
修改配置文件:
vim /etc/nginx/nginx.conf
查看http{...}中是否有include /etc/nginx/default.d/*.conf;若无则添加
添加kibana.conf文件:
[root@controller ~]# cat /etc/nginx/conf.d/kibana.conf
server {
listen 80; server_name example.com; location / {
proxy_pass http://172.20.10.198:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}

启动:
[root@controller ~]# systemctl start nginx

六、安装Logstash

下载安装Logstash:
[root@controller elk]# wget https://download.elastic.co/logstash/logstash/logstash-5.6.10.tar.gz
[root@controller elk]# tar xf logstash-5.1.1.tar.gz
[root@controller elk]# cd logstash-5.6.10
验证:
[root@controller logstash-5.6.10]# ./bin/logstash -e 'input { stdin { } } output { stdout {} }'
Settings: Default filter workers: 2
Logstash startup completed
2017-11-17T03:32:02.825Z controller
配置openssl:
[root@controller tls]# vim /etc/pki/tls/openssl.cnf
[root@controller tls]# echo " subjectAltName=IP: 172.20.10.198">>/etc/pki/tls/openssl.cnf
生成logstash-forwarder.crt文件:
[root@controller tls]# openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt
配置logstash:
[root@controller logstash-5.6.10]# pwd
/usr/local/src/elk/logstash-5.6.10
[root@controller logstash-5.6.10]# mkdir conf
[root@controller logstash-5.6.10]# cd conf/
[root@controller conf]# cat simple.conf
input {
lumberjack {
port => 5043
type => "logs"
ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
date {
match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
}
}
output {
elasticsearch { hosts => ["localhost:9200"] }
stdout { codec => rubydebug }
}
启动:
[root@controller tls]# cd /usr/local/src/elk/logstash-5.6.10/bin/
[root@controller bin]# ./logstash -f ../conf/simple.conf

七、安装Logstash-forwarder(客户端)

安装源:
[root@controller ~]# rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch
[root@controller ~]# cat /etc/yum.repos.d/logstash-forwarder.repo
name=logstash-forwarder repository
baseurl=http://packages.elastic.co/logstashforwarder/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1
[root@controller ~]# yum -y install logstash-forwarder
修改配置文件:
添加服务端ssl文件
mkdir -p /etc/pki/tls/certs
scp user@logstash_server:/etc/pki/tls/certs/logstash_forwarder.crt /etc/pki/tls/certs/
[root@controller bin]# grep -Ev '#|^$' /etc/logstash-forwarder.conf
{
"network": {
"servers": [ "172.20.10.198:5043" ],
"ssl ca": "/etc/pki/tls/certs/logstash-forwarder.crt",
"timeout": 15
},
"files": [
{
"paths": [
"/var/log/syslog",
"/var/log/auth.log"
],
"fields": { "type": "syslog" }
}, {
}, {
}
]
}
启动:
service logstash-forwarder start

效果图:

ELK日志管理搭建的更多相关文章

  1. 小白都会超详细--ELK日志管理平台搭建教程

    目录 一.介绍 二.安装JDK 三.安装Elasticsearch 四.安装Logstash 五.安装Kibana 六.Kibana简单使用 系统环境:CentOS Linux release 7.4 ...

  2. ELK日志管理

    ELK一般由三部分组成:logstash(日志格式化) + elasticsearch(检索) + Kibana(前台报表展示) 官网地址:https://www.elastic.co/ 本人在这用的 ...

  3. elk日志平台搭建小记

    最近抽出点时间,搭建了新版本的elk日志平台 elastaicsearch 和logstash,kibana和filebeat都是5.6版本的 中间使用redis做缓存,版本为3.2 使用的系统为ce ...

  4. SpringBoot+ELK日志系统搭建

    一.ELK是什么 "ELK"是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch.Logstash 和 Kibana.Elasticsearch 是一个搜索和分 ...

  5. ELK 日志系统搭建配置

    logstash是一个数据分析软件,主要目的是分析log日志.整一套软件可以当作一个MVC模型,logstash是controller层,Elasticsearch是一个model层,kibana是v ...

  6. 基于Docker的ELK日志平台搭建

    1.安装Docker Docker可简单理解为一个轻量级的虚拟机.Docker对进程进行封装隔离,隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器.Docker和传统虚拟化方式的不同.传统虚拟 ...

  7. ELK日志平台搭建

    功能: 1. 查看当天的服务器日志信息(要求:在出现警告甚至警告级别以上的都要查询)2. 能够查看服务器的所有用户的操作日志3. 能够查询nginx服务器采集的日志(kibana作图)4. 查看tom ...

  8. ELK日志管理之——logstash配置语法

    Logstash 设计了自己的 DSL -- 有点像 Puppet 的 DSL,或许因为都是用 Ruby 语言写的吧 -- 包括有区域,注释,数据类型(布尔值,字符串,数值,数组,哈希),条件判断,字 ...

  9. ELK日志管理之——elasticsearch部署

    1.配置官方yum源 [root@localhost ~]# rpm --import http://packages.elasticsearch.org/GPG-KEY-elasticsearch ...

随机推荐

  1. NC和NO、耳机美标和欧标的区别

    NO是常开(NORMAL OPEN),就是通常即未通电状态下,是断开的,通电后在电磁线圈的作用下(吸合)处于闭合状态.NC是常闭(NORMAL CLOSE),就是通常即未通电状态下,是闭合的,通电后在 ...

  2. kmalloc、vmalloc、__get_free_pages()的区别

    一.分布位置上的区别: kmalloc()和__get_free_pages()函数申请的内存位于物理内存的映射区域,而且在物理上也是连续的,它们与真实的物理地址只有一个固定的偏移,因此存在简单的线性 ...

  3. 微信小程序--合法域名校验出错

    第一次做小demo的时候遇到一个问题,合法域名校验出错: 第一步:登陆微信公众号平台--个人中心--设置--开发设置--服务器域名(一个月只有5次修改机会一定要珍惜) 第二步 打开微信开发者工具,有个 ...

  4. Arch Linux安装记录

    1.分区(MBR)# cfdisk 半图形界面,划分三个区:sda1 20G,sda2 80G,sda3 4G. 2.创建文件系统# mkfs.ext4 /dev/sda1# mkfs.ext4 /d ...

  5. CTF---密码学入门第四题 困在栅栏里的凯撒

    困在栅栏里的凯撒分值:10 来源: 北邮天枢战队 难度:易 参与人数:4531人 Get Flag:2124人 答题人数:2285人 解题通过率:93% 小白发现了一段很6的字符:NlEyQd{sef ...

  6. 队列的存储结构的实现(C/C++实现)

    存档 #include "iostream.h" #include "stdlib.h" #define max 20 typedef char elemtyp ...

  7. 江西理工大学南昌校区cool code竞赛

    这次比赛原本就是来打酱油的,想做个签到题就走!一开始不知道1002是签到题,一直死磕1001,WA了四发过了,回头一看Rank,三十名,我靠!看了1001的AC率,在我AC之前只有一个人AC了,当时我 ...

  8. vijos 1110小胖邮递员;bzoj 1210: [HNOI2004]邮递员

    Description Smith在P市的邮政局工作,他每天的工作是从邮局出发,到自己所管辖的所有邮筒取信件,然后带回邮局.他所管辖的邮筒非常巧地排成了一个m*n的点阵(点阵中的间距都是相等的).左上 ...

  9. 拿到List<Map<String,String>>对用属性的值。。。。。。。

    list.get(i).get("orderNumber") 来拿到下面的对应属性的值

  10. 在阿里云服务器上安装完成并启动Tomcat后,通过http不能访问--解决办法

    在阿里云服务器上安装完成并启动Tomcat后,通过http不能访问的原因是阿里云平台为了安全设置了安全组策略,必须我们授权的端口,其他计算机才能通过http访问 解决办法:(这里以阿里轻量应用服务器为 ...