• Linux部署elk日志监控系统


    目录

    一、简介

    二、部署elasticsearch

    2.1 安装jdk11(jdk版本>=11)

    2.2 下载安装包

    2.3 授权elk用户 

    2.4 配置elasticsearch.yml

    2.5 启动elasticsearch

    三、部署logstash

    3.1 启动测试

    3.2 可能出现的报错

    3.3 指定配置文件启动logstash

    3.4 安装Elasticsearch Head

    3.4.1 安装谷歌插件

    3.4.2 安装nodejs

    四、部署kibana

    4.1 修改配置文件并启动 


    一、简介

    ELK是Elasticsearch、Logstash、Kibana的简称,这三者是核心套件,但并非全部。

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

    应用场景:分布式部署项目,需要收集日志、微服务架构项目,收集各个服务的日志、大数据行业。

    二、部署elasticsearch

    如果是多节点,其他节点只需要安装elasticsearch即可。

    11.0.1.16elasticsearch+logstash+kibana

     

    2.1 安装jdk11(jdk版本>=11)

    jdk安装包不能直接wget下载,oracle下载需要用户登录验证

    jdk下载地址:Java Downloads | Oracle

    1. [root@elk-16 /]# hostnamectl set-hostname elk-16
    2. [root@elk-16 /]# ls /opt/jdk/
    3. jdk-11.0.20_linux-x64_bin.tar.gz
    4. [root@elk-16 /]# tar -zxf jdk-11.0.20_linux-x64_bin.tar.gz
    5. [root@elk-16 /]# vim /etc/profile
    6. #文末添加两行,配置环境变量
    7. export JAVA_HOME=/opt/jdk/jdk-11.0.20
    8. export PATH=$JAVA_HOME/bin:$PATH
    9. [root@elk-16 /]# source /etc/profile
    10. [root@elk-16 /]# java -version
    11. java version "11.0.20" 2023-07-18 LTS
    12. ******

    2.2 下载安装包

    下载组件,注意版本保持一致

    1. [root@elk-16 /]# mkdir /opt/elk
    2. [root@elk-16 /]# cd /opt/elk
    3. [root@elk-16 elk]# wget https://artifacts.elastic.co/downloads/kibana/kibana-7.9.3-linux-x86_64.tar.gz
    4. [root@elk-16 elk]# wget https://artifacts.elastic.co/downloads/logstash/logstash-7.9.3.tar.gz
    5. [root@elk-16 elk]# wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.3-linux-x86_64.tar.gz
    6. [root@elk-16 elk]# wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.9.3-linux-x86_64.tar.gz

    2.3 授权elk用户 

    1. #解压
    2. [root@elk-16 elk]# tar -zxf elasticsearch-7.9.3-linux-x86_64.tar.gz -C /opt/elk/
    3. [root@elk-16 elk]# tar -zxf kibana-7.9.3-linux-x86_64.tar.gz -C /opt/elk/
    4. [root@elk-16 elk]# tar -zxf logstash-7.9.3.tar.gz -C /opt/elk/
    5. #创建elk用户
    6. [root@elk-16 elk]# useradd elk
    7. #创建数据日志目录
    8. [root@elk-16 elk]# mkdir /opt/elk
    9. [root@elk-16 elk]# mkdir /var/log/elk/es7
    10. [root@elk-16 elk]# mkdir /data/es7
    11. #elk用户授权
    12. [root@elk-16 elk]# chown -R elk:elk /opt/elk
    13. [root@elk-16 elk]# chown -R elk:elk /var/log/elk
    14. [root@elk-16 elk]# chown -R elk:elk /data/es7
    15. [root@elk-16 opt]# chown -R elk:elk /opt/elk/logstash-7.9.3
    16. [root@elk-16 opt]# chown -R elk:elk /opt/elk/kibana-7.9.3-linux-x86_64

    2.4 配置elasticsearch.yml

    更改配置文件elasticsearch.yml

    1. #1、修改elasticsearch.yml配置文件
    2. vim /opt/elk/elasticsearch-7.9.3/config/elasticsearch.yml
    3. # ---------------------------------- Cluster -----------------------------------
    4. cluster.name: bigdata-elk
    5. # ------------------------------------ Node ------------------------------------
    6. node.name: elk-16
    7. # ----------------------------------- Paths ------------------------------------
    8. path.data: /data/es7
    9. path.logs: /var/log/elk/es7
    10. # ---------------------------------- Network -----------------------------------
    11. network.host: 0.0.0.0
    12. transport.host: 0.0.0.0
    13. network.publish_host: 11.0.1.16
    14. http.port: 9200
    15. # --------------------------------- Discovery ----------------------------------
    16. #如果有多节点,其他节点只需要安装es7,其余两个不用,并且这两行需要添加所有节点IP、主机名,用逗号“,”隔开
    17. discovery.seed_hosts: ["11.0.1.16"]
    18. cluster.initial_master_nodes: ["elk-16"]
    19. # ---------------------------------- Various -----------------------------------
    20. http.cors.enabled: true
    21. http.cors.allow-origin: "*"
    22. bootstrap.memory_lock: false
    23. bootstrap.system_call_filter: false
    24. #2、修改系统参数,不修改可能达到系统瓶颈,导致软件崩溃
    25. echo "vm.max_map_count=655360" >> /etc/sysctl.conf
    26. sysctl -p
    27. 报错:sysctl: cannot stat /proc/sys/–p: No such file or directory
    28. 执行以下命令:
    29. 1、 modprobe br_netfilter
    30. 2、 ls /proc/sys/net/bridge
    31. 3、 sysctl -p
    32. vim /etc/security/limits.conf
    33. * soft nofile 65536
    34. * hard nofile 65536
    35. * soft nproc 65536
    36. * hard nproc 65536
    37. echo "elk soft nproc 65536" >> /etc/security/limits.d/20-nproc.conf
    38. #3、告警:Elasticsearch built-in security features are not enabled. Without authentication, your cluster could be accessible to anyone.
    39. #在文件elasticsearch.yml中加入下面的配置
    40. xpack.security.enabled: false

    2.5 启动elasticsearch

    注意切换到elk用户再启动elasticsearch

    提示jdk版本过低(因为一开始我装的是jdk8,后面改了jdk11就没问题了)

    1. [elk@elk-16 elk]$ /opt/elk/elasticsearch-7.9.3/bin/elasticsearch -d
    2. future versions of Elasticsearch will require Java 11; your Java version from [/opt/jdk/jdk1.8.0_381/jre] does not meet this requirement
    3. future versions of Elasticsearch will require Java 11; your Java version from [/opt/jdk/jdk1.8.0_381/jre] does not meet this requirement

    换到jdk11后,启动正常

    1. [elk@elk-16 elasticsearch-7.9.3]$ /opt/elk/elasticsearch-7.9.3/bin/elasticsearch -d
    2. Java HotSpot(TM) 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
    3. ******
    4. For complete error details, refer to the log at /var/log/elk/es7/elk.log

    ctrl+c不会停止elasticsearch,测试,有以下内容表示elasticsearch启动成功。

    1. [root@elk-16 ~]# curl 127.0.0.1:9200
    2. {
    3. "name" : "elk-16",
    4. "cluster_name" : "elk",
    5. "cluster_uuid" : "ZwKngvYkT82yM-lbqAgXXA",
    6. "version" : {
    7. "number" : "7.9.3",
    8. "build_flavor" : "default",
    9. "build_type" : "tar",
    10. "build_hash" : "c4138e51121ef06a6404866cddc601906fe5c868",
    11. "build_date" : "2020-10-16T10:36:16.141335Z",
    12. "build_snapshot" : false,
    13. "lucene_version" : "8.6.2",
    14. "minimum_wire_compatibility_version" : "6.8.0",
    15. "minimum_index_compatibility_version" : "6.0.0-beta1"
    16. },
    17. "tagline" : "You Know, for Search"
    18. }

    宿主机也测试一下,遇到过11.0.1.16本机可以访问,虚拟机宿主机却访问不了的情况,正常情况下本机宿主机都是可以访问的。 

    如果想要结束elasticsearch进程,用kill命令结束进程

    1. #查看进程号
    2. ps -ef | grep elastic 或者 lsof -i:9200
    3. kill -9 ***

    三、部署logstash

    3.1 启动测试

    注意,解压logstash后可能会出现找不到java命令的情况,使用source /etc/profiles 刷新环境变量即可,测试启动logstash,出现“Successfully started Logstash API endpoint {:port=>9600}
    ”启动成功。

    1. [root@elk-16 opt]# su elk
    2. [elk@elk-16 opt]# cd /opt/elk/logstash-7.9.3
    3. [elk@elk-16 logstash-7.9.3]# bin/logstash -e 'input {stdin {}} output {stdout {}}'
    4. Java HotSpot(TM) 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
    5. WARNING: An illegal reflective access operation has occurred
    6. WARNING: Illegal reflective access by org.jruby.ext.openssl.SecurityHelper
    7. ******
    8. [2023-09-25T17:20:44,771][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}
    9. hello
    10. {
    11. "@timestamp" => 2023-09-25T14:36:42.644Z,
    12. "@version" => "1",
    13. "host" => "elk-16",
    14. "message" => "hello"
    15. }
    16. #hello是我输入的,启动后会生成终端,可以随意输入,ctrl+c停止logstash运行

    3.2 可能出现的报错

    出现“Errno::EACCES - Permission denied - /opt/elk/logstash-7.9.3/data”,没有给elk用户授权/opt/elk/logstash-7.9.3

    1. #无logstash-7.9.3/data无权限
    2. [elk@elk-16 logstash-7.9.3]$ bin/logstash -e 'input { stdin { } } output { stdout {} }'
    3. ******
    4. [ERROR] 2023-09-25 22:28:46.776 [main] Logstash - java.lang.IllegalStateException: Logstash stopped processing because of an error: (ArgumentError) Path "/opt/elk/logstash-7.9.3/data" does not exist, and I failed trying to create it: Errno::EACCES - Permission denied - /opt/elk/logstash-7.9.3/data

     如果授权后还是不行,尝试删除/opt/elk/logstash-7.9.3/data。删除后使用logstash命令会重新生产一个data目录。

    1. [elk@elk-16 logstash-7.9.3]# bin/logstash -e 'input {stdin {}} output {stdout {}}'
    2. ******
    3. [2023-09-25T17:25:46,132][ERROR][org.logstash.Logstash ] java.lang.IllegalStateException: Logstash stopped processing because of an error: (SystemExit) exit

    3.3 指定配置文件启动logstash

    更改配置文件需要切换回root用户,建议开两个终端,一个elk一个root,避免来回切换麻烦。

    1. [elk@elk-16 logstash-7.9.3]# su root
    2. [root@elk-16 logstash-7.9.3]# vim /opt/elk/logstash-7.9.3/config/test_file.conf
    3. input {
    4. file {
    5. path => ["/var/log/elk/es7/bigdata-elk.log"]
    6. type => "bigdata-elk"
    7. }
    8. }
    9. output {
    10. elasticsearch {
    11. hosts => ["11.0.1.16:9200"]
    12. index => "sbigdata-elk-log-%{+YYY.MM.dd}"
    13. }
    14. }

    注意启动都是elk用户,指定配置文件启动logstash成功

    1. [elk@elk-16 logstash-7.9.3]$ bin/logstash -f config/test_file.conf
    2. ******
    3. [2023-09-26T10:42:02,634][INFO ][logstash.agent ] Successfully started Logstash API endpoint {:port=>9600}

    需要保证elasticsearch启动,没有启动会抛出拒绝连接错误

    [2023-09-25T23:08:00,360][WARN ][logstash.outputs.elasticsearch][main] Attempted to resurrect connection to dead ES instance, but got an error. {:url=>"http://11.0.1.16:9200/", :error_type=>LogStash::Outputs::ElasticSearch::HttpClient::Pool::HostUnreachableError, :error=>"Elasticsearch Unreachable: [http://11.0.1.16:9200/][Manticore::SocketException] 拒绝连接 (Connection refused)"}

     打开新的终端,查看9200、9600

    1. [root@elk-16 ~]# netstat -tulnp | grep 9600
    2. tcp6 0 0 127.0.0.1:9600 :::* LISTEN 1755/java
    3. [root@elk-16 ~]#
    4. [root@elk-16 ~]# netstat -tulnp | grep 9200
    5. tcp6 0 0 :::9200 :::* LISTEN 1483/java

    3.4 安装Elasticsearch Head

    两种方式,谷歌插件或者部署nodejs,可以观察集群监控状态

    3.4.1 安装谷歌插件

    下载谷歌插件Multi Elasticsearch Head,注意需要挂梯子,没条件请使用nodejs,打开插件,“New”,输入elasticsearch接口URL。

    3.4.2 安装nodejs

    github下载elasticsearch-head-master.zip传入/opt/elk目录

    下载地址:GitHub - mobz/elasticsearch-head: A web front end for an elastic search cluster

    安装nodejs

    1. #nodejs v14.15安装包
    2. [root@elk-16 elk]# wget https://nodejs.org/dist/v14.15.0/node-v14.15.0-linux-x64.tar.xz
    3. [root@elk-16 elk]# xz -d node-v14.15.0-linux-x64.tar.xz
    4. [root@elk-16 elk]# tar -xf node-v14.15.0-linux-x64.tar
    5. [root@elk-16 elk]# unzip elasticsearch-head-master.zip
    6. #phantomjs 官网 https://phantomjs.org/download.html
    7. [root@elk-16 elk]# wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
    8. [root@elk-16 elk]# yum -y install bzip2 fontconfig-devel
    9. [root@elk-16 elk]# tar -xvjf phantomjs-2.1.1-linux-x86_64.tar.bz2
    10. #创建node、npm命令软连接
    11. [root@elk-16 elk]# ln -s /opt/elk/node-v14.15.0-linux-x64/bin/node /usr/local/bin/node
    12. [root@elk-16 elk]# ln -s /opt/elk/node-v14.15.0-linux-x64/bin/npm /usr/local/bin/npm
    13. [root@elk-16 elk]# ln -s /opt/elk/phantomjs-2.1.1-linux-x86_64/bin/phantomjs /usr/local/bin/phantomjs
    14. #查看版本
    15. [root@elk-16 elk]# node -v
    16. v14.15.0
    17. [root@elk-16 elk]# npm -v
    18. 6.14.8
    19. [root@elk-16 elk]# phantomjs --version
    20. 2.1.1
    1. #安装模块
    2. [root@elk-16 elk]# cd /opt/elk/elasticsearch-head-master
    3. [root@elk-16 elasticsearch-head-master]# npm install --registry=https://registry.npm.taobao.org

    npm install 报错,npm install因为某些原因中断最好删除node_modules目录

    npm ERR! phantomjs-prebuilt@2.1.16 install: `node install.js` 

    1. #手动全局安装phantomjs-prebuilt@2.1.16
    2. [root@elk-16 elasticsearch-head-master]# npm -g install phantomjs-prebuilt@2.1.16 --ignore-script

    测试前台启动成功后ctrl+c再用后台启动

    1. #前台启动
    2. [root@elk-16 elasticsearch-head-master]# npm run start
    3. ******
    4. Waiting forever...
    5. Started connect web server on http://localhost:9100
    6. #后台启动
    7. [root@elk-16 elasticsearch-head-master]# npm run start &
    1. [root@elk-16 ~]# netstat -tulnp |grep 9100
    2. tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN 5080/grunt

    四、部署kibana

    4.1 修改配置文件并启动 

    1. #修改配置文件
    2. vim /opt/elk/kibana-7.9.3-linux-x86_64/config/kibana.yml
    3. server.port: 5601
    4. server.host: "11.0.1.16"
    5. server.name: "bigdata-kibana"
    6. elasticsearch.hosts: ["http://11.0.1.16:9200"]
    7. logging.dest: /var/log/elk/kibana/kibana.log
    8. i18n.locale: "zh-CN"
    9. #创建日志目录
    10. mkdir /var/log/elk/kibana
    11. chown -R elk:elk /var/log/elk/kibana
    12. #前台启动kibana
    13. bin/kibana
    14. #后台启动kibana
    15. bin/kibana &

    查看9200 9600 9100 5601 端口,结束进程请使用kill命令 

    通过查询端口号结束后台运行进程

    1. [root@elk-16 /]# yum install -y lsof
    2. [root@elk-16 /]# lsof -i:5601
    3. [root@elk-16 /]# kill -9 ******

     访问 http://11.0.1.16:5601/

    至此,elasticsearch+logstash+kibana日志监控系统部署完成。

    参考文档:

    https://www.cnblogs.com/wangzhuxing/p/9665905.html#_label1_1

    ELK 安装部署(入门必备)_elk安装部署_与光同尘~追光者的博客-CSDN博客

    logstash报错问题解决:Logstash stopped processing because of an error: (SystemExit) exit_BigCabbageFy的博客-CSDN博客

    npm install 安装时i,报错 phantomjs-prebuilt@2.1.16 install: `node install.js`-CSDN博客

  • 相关阅读:
    PHP 二手物品交易网站系统mysql数据库web结构apache计算机软件工程网页wamp
    JS标准库
    Bitbucket 使用 SSH 拉取仓库失败的问题
    Mysql 单行处理函数打字练习—— 让你熟悉必要的函数,提高查询效率
    Delphi 取消与设置CDS本地排序
    讲解Windows系统中如何使用Python读取图片的元数据【Metadata】
    LeetCode 2760. 最长奇偶子数组:模拟(使用一个变量记录状态)
    137.【SpringCloud-快速搭建】
    Oracle 11g安装使用、备份恢复并与SpringBoot集成
    音视频解封装demo:将FLV文件解封装(demux)得到文件中的H264数据和AAC数据(纯手工,不依赖第三方开源库)
  • 原文地址:https://blog.csdn.net/weixin_48878440/article/details/133275604