目录:

一、介绍

二、安装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

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

三、安装Elasticsearch

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

  1. #创建用户elasticsearch-5.6.10
  2. [root@elk-node1 local]# useradd elasticsearch
  3. #解压
  4. [root@elk-node1 application]# tar -xf elasticsearch-5.6.10.tar.gz -C /usr/local/
  5. #创建软链接
  6. [root@elk-node1 local]# ln -s elasticsearch-5.6.10/ elasticsearch
  7. #授权
  8. [root@elk-node1 local]# chown -R elasticsearch elasticsearch-5.6.10/
  9. [root@elk-node1 local]# chown -R elasticsearch elasticsearch
  10. #修改配置文件
  11. [root@elk-node1 local]# cd elasticsearch/config/
  12. [root@elk-node1 config]# pwd
  13. /usr/local/elasticsearch/config
  14. [root@elk-node1 config]# grep -Ev "^#|^$" elasticsearch.yml
  15. cluster.name: pcidata-elk
  16. node.name: elk-node1
  17. bootstrap.memory_lock: true
  18. network.host: 0.0.0.0
  19. http.port: 9200
  20. http.cors.enabled: true
  21. http.cors.allow-origin: "*"
  22. #修改打开文件句柄数,添加limits.conf内容
  23. [root@elk-node1 config]# ulimit -SHn 65536
  24. [root@elk-node1 config]# tail /etc/security/limits.conf
  25. elasticsearch hard nofile 131072
  26. elasticsearch soft nproc 2048
  27. elasticsearch hard nproc 4096
  28. elasticsearch soft memlock unlimited
  29. elasticsearch hard memlock unlimited
  30.  
  31. #切换到elasticsearch启动服务
  32. [root@elk-node1 config]# su - elasticsearch
  33. Last login: Mon Aug 6 18:42:34 CST 2018 on pts/2
  34. [elasticsearch@elk-node1 ~]$ ll
  35. total 0
  36. [elasticsearch@elk-node1 ~]$ cd /usr/local/elasticsearch/bin/
  37. [elasticsearch@elk-node1 bin]$ ./elasticsearch -d
  38. #报错则根据日志信息填坑
  39. [elasticsearch@elk-node1 logs]$ pwd
  40. /usr/local/elasticsearch/logs
  41. [elasticsearch@elk-node1 logs]$ tail pcidata-elk.log
  42. [elasticsearch@elk-node1 logs]$ ss -lntp|grep 9200
  43. LISTEN 0 128 :::9200 :::* users:(("java",pid=4189,fd=170))
  44. #输出以下信息说明安装ok
  45. [elasticsearch@elk-node1 logs]$ curl 'http://localhost:9200/?pretty'
  46. {
  47. "name" : "elk-node1",
  48. "cluster_name" : "pcidata-elk",
  49. "cluster_uuid" : "GrfwFbeOQAmATCqZnvsq8Q",
  50. "version" : {
  51. "number" : "5.6.10",
  52. "build_hash" : "b727a60",
  53. "build_date" : "2018-06-06T15:48:34.860Z",
  54. "build_snapshot" : false,
  55. "lucene_version" : "6.6.1"
  56. },
  57. "tagline" : "You Know, for Search"
  58. }
  59. 安装elasticsearch-head插件
  60. 1、安装git
  61. [root@elk-node1 config]# yum install -y git
  62. 2、下载elasticsearch-head插件源码
  63. [root@elk-node1 config]# git clone git://github.com/mobz/elasticsearch-head.git
  64. Cloning into 'elasticsearch-head'...
  65. remote: Counting objects: 4224, done.
  66. remote: Total 4224 (delta 0), reused 0 (delta 0), pack-reused 4224
  67. Receiving objects: 100% (4224/4224), 2.16 MiB | 542.00 KiB/s, done.
  68. Resolving deltas: 100% (2328/2328), done.
  69. 3.安装node
  70. 由于head插件本质上还是一个nodejs的工程,因此需要安装node,使用npm来安装依赖的包,npm可以理解为maven
  71. [root@elk-node1 elasticsearch]# wget https://nodejs.org/dist/v8.11.3/node-v8.11.3-linux-x64.tar.xz
  72. 4.解压node
  73. [root@elk-node1 elasticsearch]# mv node-v8.11.3-linux-x64.tar.xz /usr/local/application/
  74. [root@elk-node1 application]# tar -xf node-v8.11.3-linux-x64.tar.xz
  75. [root@elk-node1 application]# ln -s node-v8.11.3-linux-x64/ node
  76. 5.配置node环境变量
  77. [root@elk-node1 application]# vim /etc/profile
  78. export NODE_HOME=/usr/local/application/node
  79. export PATH=$NODE_HOME/bin:$PATH
  80. [root@elk-node1 application]# source /etc/profile
  81.  
  82. 6.测试node是否生效
  83. [root@elk-node1 application]# node -v
  84. v8.11.3
  85. [root@elk-node1 application]# npm -v
  86. 5.6.0
  87. 初始化
  88. [root@elk-node1 application]# npm init
  89. This utility will walk you through creating a package.json file.
  90. It only covers the most common items, and tries to guess sensible defaults.
  91.  
  92. See `npm help json` for definitive documentation on these fields
  93. and exactly what they do.
  94.  
  95. Use `npm install <pkg>` afterwards to install a package and
  96. save it as a dependency in the package.json file.
  97.  
  98. Press ^C at any time to quit.
  99. package name: (application)
  100. version: (1.0.0)
  101. description:
  102. entry point: (index.js)
  103. test command:
  104. git repository:
  105. keywords:
  106. author:
  107. license: (ISC)
  108. About to write to /usr/local/application/package.json:
  109.  
  110. {
  111. "name": "application",
  112. "version": "1.0.0",
  113. "description": "",
  114. "main": "index.js",
  115. "dependencies": {
  116. "grunt-cli": "^1.2.0"
  117. },
  118. "devDependencies": {},
  119. "scripts": {
  120. "test": "echo \"Error: no test specified\" && exit 1"
  121. },
  122. "author": "",
  123. "license": "ISC"
  124. }
  125.  
  126. Is this ok? (yes) yes
  127.  
  128. 7.安装grunt
  129. grunt是一个很方便的构建工具,可以进行打包压缩、测试、执行等等的工作,5.6.10里的head插件就是通过grunt启动的。因此需要安装一下
  130. [root@elk-node1 elasticsearch-head]# pwd
  131. /usr/local/elasticsearch/elasticsearch-head
  132. [root@elk-node1 elasticsearch-head]# npm install -g grunt-cli
  133.  
  134. 8.检查安装是否成功
  135. [root@elk-node1 elasticsearch-head]# grunt -version
  136. grunt-cli v1.2.0
  137.  
  138. 9.修改服务器监听地址
  139. vim elasticsearch-head/Gruntfile.js
  140.  
  141. connect: {
  142. server: {
  143. options: {
  144. port: 9100,
  145. hostname: '*',
  146. base: '.',
  147. keepalive: true
  148. }
  149. }
  150. }
  151. 增加hostname属性设置为*
  152.  
  153. 10.修改head的连接地址:
  154.  
  155. vim elasticsearch-head/_site/app.js
  156.  
  157. this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";
  158.  
  159. localhost修改成你es的服务器地址,如:
  160.  
  161. this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://172.20.10.198:9200";
  162.  
  163. 11.运行head head目录中,执行npm install
  164. [root@elk-node1 elasticsearch-head]# npm install phantomjs-prebuilt@5.6.106 --ignore-scripts
  165. [root@elk-node1 elasticsearch-head]# npm install
  166. 12.启动nodejs
  167. grunt server &
  168.  
  169. 13.访问target9100
  170.  
  171. http://172.20.10.198:9100/

四、安装Kibana

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

  1. #解压kibana-5.6.10
  2. [root@elk-node1 local]# pwd
  3. /usr/local
  4. [root@elk-node1 local]# tar -xf kibana-5.6.10-linux-x86_64.tar.gz
  5. #创建软链接
  6. [root@elk-node1 local]# ln -s kibana-5.6.10-linux-x86_64/ kibana
  7. #修改配置文件
  8. [root@elk-node1 config]# pwd
  9. /usr/local/kibana/config
  10. [root@elk-node1 config]# grep -Ev "^#|^$" kibana.yml
  11. server.port: 5601
  12. server.host: "0.0.0.0"
  13. elasticsearch.url: "http://172.20.10.198:9200"
  14. kibana.index: ".kibana"
  15. #启动
  16. [root@elk-node1 config]# /usr/local/kibana/bin/kibana
  17. #输出以下信息说明安装ok
  18. [root@elk-node1 config]# curl localhost:5601
  19. <script>var hashRoute = '/app/kibana';
  20. var defaultRoute = '/app/kibana';
  21.  
  22. var hash = window.location.hash;
  23. if (hash.length) {
  24. window.location = hashRoute + hash;
  25. } else {
  26. window.location = defaultRoute;
  27. }</script>

五、安装Nginx

  1. 直接yum安装:
  2. yum install nginx httpd-tools -y
  3. 修改配置文件:
  4. vim /etc/nginx/nginx.conf
  5. 查看http{...}中是否有include /etc/nginx/default.d/*.conf;若无则添加
  6. 添加kibana.conf文件:
  7. [root@controller ~]# cat /etc/nginx/conf.d/kibana.conf
  8. server {
  9. listen 80;
  10.  
  11. server_name example.com;
  12.  
  13. location / {
  14. proxy_pass http://172.20.10.198:5601;
  15. proxy_http_version 1.1;
  16. proxy_set_header Upgrade $http_upgrade;
  17. proxy_set_header Connection 'upgrade';
  18. proxy_set_header Host $host;
  19. proxy_cache_bypass $http_upgrade;
  20. }

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

六、安装Logstash

  1. 下载安装Logstash
  2. [root@controller elk]# wget https://download.elastic.co/logstash/logstash/logstash-5.6.10.tar.gz
  3. [root@controller elk]# tar xf logstash-5.1.1.tar.gz
  4. [root@controller elk]# cd logstash-5.6.10
  5. 验证:
  6. [root@controller logstash-5.6.10]# ./bin/logstash -e 'input { stdin { } } output { stdout {} }'
  7. Settings: Default filter workers: 2
  8. Logstash startup completed
  9. 2017-11-17T03:32:02.825Z controller
  10. 配置openssl:
  11. [root@controller tls]# vim /etc/pki/tls/openssl.cnf
  12. [root@controller tls]# echo " subjectAltName=IP: 172.20.10.198">>/etc/pki/tls/openssl.cnf
  13. 生成logstash-forwarder.crt文件:
  14. [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
  15. 配置logstash
  16. [root@controller logstash-5.6.10]# pwd
  17. /usr/local/src/elk/logstash-5.6.10
  18. [root@controller logstash-5.6.10]# mkdir conf
  19. [root@controller logstash-5.6.10]# cd conf/
  20. [root@controller conf]# cat simple.conf
  21. input {
  22. lumberjack {
  23. port => 5043
  24. type => "logs"
  25. ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
  26. ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
  27. }
  28. }
  29. filter {
  30. grok {
  31. match => { "message" => "%{COMBINEDAPACHELOG}" }
  32. }
  33. date {
  34. match => [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]
  35. }
  36. }
  37. output {
  38. elasticsearch { hosts => ["localhost:9200"] }
  39. stdout { codec => rubydebug }
  40. }
  41. 启动:
  42. [root@controller tls]# cd /usr/local/src/elk/logstash-5.6.10/bin/
  43. [root@controller bin]# ./logstash -f ../conf/simple.conf

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

  1. 安装源:
  2. [root@controller ~]# rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch
  3. [root@controller ~]# cat /etc/yum.repos.d/logstash-forwarder.repo
  4. name=logstash-forwarder repository
  5. baseurl=http://packages.elastic.co/logstashforwarder/centos
  6. gpgcheck=1
  7. gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
  8. enabled=1
  9. [root@controller ~]# yum -y install logstash-forwarder
  10. 修改配置文件:
  11. 添加服务端ssl文件
  12. mkdir -p /etc/pki/tls/certs
  13. scp user@logstash_server:/etc/pki/tls/certs/logstash_forwarder.crt /etc/pki/tls/certs/
  14. [root@controller bin]# grep -Ev '#|^$' /etc/logstash-forwarder.conf
  15. {
  16. "network": {
  17. "servers": [ "172.20.10.198:5043" ],
  18. "ssl ca": "/etc/pki/tls/certs/logstash-forwarder.crt",
  19. "timeout": 15
  20. },
  21. "files": [
  22. {
  23. "paths": [
  24. "/var/log/syslog",
  25. "/var/log/auth.log"
  26. ],
  27. "fields": { "type": "syslog" }
  28. }, {
  29. }, {
  30. }
  31. ]
  32. }
  33. 启动:
  34. 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. 没有robots.txt文件是否会影响收录呢

    Spider在抓取您的网站之前,会访问您的robots.txt 文件,以确定您的网站是否会阻止 蜘蛛抓取任何网页或网址.如果您的 robots.txt 文件存在但无法访问(也就是说,如果它没有返回 2 ...

  2. Vue入门

    一.引入vue 方法一:下载vue.js,然后像引用jquery一样,在HTML中使用script标签引入 <script src="https://unpkg.com/vue/dis ...

  3. Django查询笔记1

    models.Book.objects.filter(**kwargs): querySet [obj1,obj2] models.Book.objects.filter(**kwargs).valu ...

  4. JDBC(二)之JDBC处理CLOB和BLOB及事务与数据库元数据获取

    前面大概介绍了JDBC连接数据库的过程,以及怎么操作数据库,今天给大家分享JDBC怎么处理CLOB和BLOB存储图片的事情,以及JDBC怎么去处理事务.怎么在插入数据的时候生成主键返回值 一.JDBC ...

  5. JSON对象添加删除属性

    假如目前我们有如下一个Json对象 var jsonObj={ 'param1':22, 'param2' :33 }; 增加属性: 我们现在向该对象jsonObj中添加一个新的属性字段:param3 ...

  6. JAVA爬虫实践(实践三:爬虫框架webMagic和csdnBlog爬虫)

    WebMagic WebMagic是一个简单灵活的Java爬虫框架.基于WebMagic,你可以快速开发出一个高效.易维护的爬虫. 采用HttpClient可以实现定向的爬虫,也可以自己编写算法逻辑来 ...

  7. vueThink权限配置

    vueThink中的 admin 默认是展示所有权限,其他的权限组用户就要自己去特定进行配置 http://vuedemo.cn:8181 这里我是默认本地配置了apache到  php\public ...

  8. DEDECMS 留言薄模块的使用方法

    一.留言薄的安装 留言薄的安装过程和其他插件一样,首先我们进入后台模块管理列表,点击其对应的"安装": 以上步骤,我们完成了留言薄插件的安装. 二.留言薄的卸载 留言薄的卸载,同样 ...

  9. Mybatis异常:java.lang.ClassNotFoundException: org.mybatis.spring.SqlSessionFactoryBean

    问题描述: 一月 15, 2014 3:43:13 下午 org.springframework.context.support.AbstractApplicationContext prepareR ...

  10. php等比例压缩图片

    <?php function resizeImage($im,$maxwidth,$maxheight,$name,$filetype) { $pic_width = imagesx($im); ...