16 分布式项目-日志系统ELK

[复制链接]
发表于 2024-11-24 13:22:31 | 显示全部楼层 |阅读模式

image.png

image.png

image.png

1.1 ElasticSearch搭建

蓝色为实际输入指令

1.1.1 一、查看JDK版本

java -version

1.1.1 二、创建用户

从5.0开始,ElasticSearch 安全级别提高了,不允许采用root帐号启动,所以我们要添加一个用户。

   1.创建elk 用户组

     groupadd elk

   2.创建用户agan

     useradd agan

     passwd agan

   3.将agan用户添加到elk组

     usermod -G elk agan

   4.设置sudo权限

      visudo


      找到root ALL=(ALL) ALL一行,添加agan用户,如下。

      ## Allow root to run any commands anywhere

      root    ALL=(ALL)       ALL

      agan      ALL=(ALL)       ALL.
=======切换用户 agan=================================

   5.切换用户

      su agan

      cd/data/

image.png

1.1.1 三、安装elasticsearch

1.下载压缩

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.3.tar.gz

解压

tar -zxvf elasticsearch-6.2.3.tar.gz

2.修改目录权限

mv elasticsearch-6.2.3/ elasticsearch

修改权限

sudo chown -R agan:elk ./

3.ElasticSearch 配置

1.修改elasticsearch.yml

    修改network.host和http.port

      cd elasticsearch


     vi config/elasticsearch.yml


        network.host: 0.0.0.0

        http.port: 9200

image.png

=============切换用户 root=================================

image.png

2.修改/etc/sysctl.conf 

         vi /etc/sysctl.conf



添加内容如下:

            vm.max\_map\_count=262144

image.png

sysctl -p 修改文件/etc/security/limits.conf vi /etc/security/limits.conf

添加如下内容

        \* soft nofile 65536

        \* hard nofile 65536

        \* soft nofile 65536

        \* hard nofile 65536

image.png

=========切换用户 agan=================================

image.png

cd /data/

ll

 cd elasticsearch

 ll

 cd bin/

4.ElasticSearch启动与停止

1.后台启动

  ./elasticsearch -d

  2.验证

  curl http://47.106.128.80:9200

image.png

本地验证

http://47.106.128.80:9200/

image.png

1.1.1 四、安装Head插件

1.Head插件简介

      ElasticSearch-head是一个H5编写的ElasticSearch集群操作和管理工具,可以对集群进行傻瓜式操作。

      它提供了:

      a.索引和节点级别操作

      b.搜索接口能够查询集群中原始json或表格格式的检索数据

      c.能够快速访问并显示集群的状态

=========切换用户 root=================================

image.png

image.png

2.安装NodeJS

      #要求在root下执行(上面已执行第一句,不用重复)

      curl -sL https://rpm.nodesource.com/setup\_8.x | bash -


      yum install -y nodejs

   3.安装npm

      npm install -g cnpm --registry=https://registry.npm.taobao.org



   4.使用npm安装grunt

      npm install -g grunt


      npm install -g grunt-cli --registry=https://registry.npm.taobao.org --no-proxy



========切换用户 agan=================================

image.png

5.查看以上版本

node -v


  npm -v


  grunt -version

6.下载head插件源码

cd /home/agan

  mkdir es



  wget https://github.com/mobz/elasticsearch-head/archive/master.zip


  unzip master.zip

7.国内镜像安装

cd elasticsearch-head-master
sudo npm install -g cnpm --registry=https://registry.npm.taobao.org



sudo cnpm install

image.png

1.1.1 五、配置

1.配置 ElasticSearch,使得HTTP对外提供服务

      vi config/elasticsearch.yml

      添加如下内容


      # 增加新的参数,这样head插件可以访问es。设置参数的时候:后面要有空格

      http.cors.enabled: true

      http.cors.allow-origin: "\*"

image.png

image.png 2.修改Head插件配置文件

vi Gruntfile.js

image.png

找到connect:server,添加hostname一项,如下

      connect: {

            server: {

                    options: {

                            hostname: '0.0.0.0',

                            port: 9100,

                            base: '.',

                            keepalive: true

                    }

            }

}

image.png

image.png

image.png

1.1.1 六、启动

1.重启elasticsearch

./elasticsearch -d

image.png

2.启动head

elasticsearch-head-master目录下:

  grunt server

  或  npm run start

image.png

image.png

3.访问9100端口

image.png

1.1.1 七、简单应用

1.创建索引

curl -XPUT http://47.106.128.80:9200/applog

image.png

2.查看head变化

http://47.106.128.80:9100/

image.png

logstash搭建

1.1.1 下载安装包:www.elastic.co/downloads

image.png

image.png

1.1.1 网络好就直接下,不用上面操作

1.1.2 下载压缩

wget https://artifacts.elastic.co/downloads/logstash/logstash-6.2.3.tar.gz
tar zxvf logstash-6.2.3.tar.gz



    改名

   mv logstash-6.2.3/ logstash

image.png

1.1.1 测试

./bin/logstash -e 'input { stdin { } } output { stdout {} }'

image.png

1.1.1 修改配置

在 logstash的主目录下

   vim config/log\_to\_es.conf



   复制内容如下:

   # For detail structure of this file  

   # Set: https://www.elastic.co/guide/en/logstash/current/configuration-file-structure.html  

   input {  

     # For detail config for log4j as input,   

     # See: https://www.elastic.co/guide/en/logstash/current/plugins-inputs-log4j.html  

     tcp {  

       mode => "server"  

       host => "47.106.128.80"  

       port => 9250  

     }  

   }

   filter {  

     #Only matched data are send to output.  

   }  

   output {  

     # For detail config for elasticsearch as output,   

     # See: https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html  

     elasticsearch {  

       action => "index"          #The operation on ES  

       hosts  => "47.106.128.80:9200"   #ElasticSearch host, can be array.  

       index  => "applog"         #The index to write data to.  

     }  

   }

1.1.1 启动

./bin/logstash -f config/log\_to\_es.conf 

   或 后台运行守护进程 ./bin/logstash -f config/log\_to\_es.conf &

image.png

image.png

测试 curl 'http://47.106.128.80:9200/\_search?pretty'

1.1 Kibana搭建(UI)

1.1.1 网速慢可以网页下载,然后上传到Linux的data中

image.png

1.1.1 网速好在data文件夹下下载

1.下载压缩

   wget https://artifacts.elastic.co/downloads/kibana/kibana-6.2.3-linux-x86\_64.tar.gz


   tar zxvf kibana-6.2.3-linux-x86\_64.tar.gz


   mv kibana-6.2.3-linux-x86\_64.tar.gz/ kibana

image.png

1.1.1 修改配置

vim config/kibana.yml 


   把以下注释放开,使配置起作用。

   server.port: 5601

   server.host: “192.168.1.245”

   elasticsearch.url: http://192.168.48.35:9200

   kibana.index: “.kibana”

image.png

image.png

1.1.1 启动

./bin/kibana 4.测试 http://192.168.48.35:5601/app/kibana

image.png

1.1 springcloud集成ELK(修改15.1-15.2)

1.1.1 集成ELK方法

15.1和15.2生产者消费者添加依赖

image.png

<dependency>

         <groupId>org.springframework.cloud</groupId>

        <artifactId>spring-cloud-starter-sleuth</artifactId>

       </dependency>



      <dependency>

         <groupId>net.logstash.logback</groupId>

         <artifactId>logstash-logback-encoder</artifactId>

         <version>5.0</version>

       </dependency>

logback.xml要把日志发到服务器上

<?xml version="1.0" encoding="UTF-8"?>

<!--该日志将日志级别不同的log信息保存到不同的文件中 -->

<configuration>

   <include resource="org/springframework/boot/logging/logback/defaults.xml" />


   <springProperty scope="context" name="springAppName"

      source="spring.application.name" />


   <!-- 日志在工程中的输出位置 -->

   <property name="LOG\_FILE" value="\${BUILD\_FOLDER:-build}/\${springAppName}" />


   <!-- 控制台的日志输出样式 -->

   <property name="CONSOLE\_LOG\_PATTERN"

      value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(\${LOG\_LEVEL\_PATTERN:-%5p}) %clr(\${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %m%n\${LOG\_EXCEPTION\_CONVERSION\_WORD:-%wEx}}" />


   <!-- 控制台输出 -->

   <appender name="console" class="ch.qos.logback.core.ConsoleAppender">

      <filter class="ch.qos.logback.classic.filter.ThresholdFilter">

         <level>INFO</level>

      </filter>

      <!-- 日志输出编码 -->

      <encoder>

         <pattern>\${CONSOLE\_LOG\_PATTERN}</pattern>

         <charset>utf8</charset>

      </encoder>

   </appender>


   <!-- 为logstash输出的JSON格式的Appender -->

   <appender name="logstash"

      class="net.logstash.logback.appender.LogstashTcpSocketAppender">

      <destination>47.106.128.80:9250</destination>

      <!-- 日志输出编码 -->

      <encoder

         class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">

         <providers>

            <timestamp>

                <timeZone>UTC</timeZone>

            </timestamp>

            <pattern>

                <pattern>

                   {

                   "severity": "%level",

                   "service": "\${springAppName:-}",

                   "trace": "%X{X-B3-TraceId:-}",

                   "span": "%X{X-B3-SpanId:-}",

                   "exportable": "%X{X-Span-Export:-}",

                   "pid": "\${PID:-}",

                   "thread": "%thread",

                   "class": "%logger{40}",

                   "rest": "%message"

                   }

                </pattern>

            </pattern>

         </providers>

      </encoder>

   </appender>


   <!-- 日志输出级别 -->

   <root level="DEBUG">

      <appender-ref ref="console" />

      <appender-ref ref="logstash" />

   </root>

</configuration>

1.1.1 启动生产者和消费者

发送一个请求

image.png

观察Elasticsearch页面变化

image.png

image.png

Kibana连接到Elasticsearch

image.png

image.png

image.png

image.png

试一下Kinbana功能

image.png

image.png

1.1.1 ELK原理

logback发送日志到logstash的input

image.png

image.png

image.png

logstash的output连接Elasticsearch

image.png

Elasticsearch再通过Kibana(UI)展示出来

image.png

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

GMT+8, 2025-4-21 01:30 , Processed in 0.073026 second(s), 35 queries Archiver|手机版|小黑屋|Attic ( 京ICP备2020048627号 )

快速回复 返回顶部 返回列表