热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

虚拟机上部署elk相关备忘录

在虚拟机中安装了CentOS7,用此当做服务器练习elk。从官网下载elk相关的压缩包,我下载的是6.8.0版本。我在home目录下新增elksofts文件夹,下载好的压缩包全都放

在虚拟机中安装了CentOS7,用此当做服务器练习elk。

从官网下载elk相关的压缩包,我下载的是6.8.0版本。

我在home目录下新增elksofts文件夹,下载好的压缩包全都放在此文件下,然后解压缩文件。

虚拟机上部署elk相关备忘录

启动elasticsearch可能会遇到的错误:

1,首先要新增一个用户,因为如果是直接解压后,不做任何配置,在root用户下启动是会报错的,报错信息大致如下:

----------------

[[email protected] bin]# ./elasticsearch
warning: Falling back to java on path. This behavior is deprecated. Specify JAVA_HOME
[2020-07-18T17:56:30,467][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [talent_node_1] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~[elasticsearch-6.8.0.jar:6.8.0]
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) ~[elasticsearch-6.8.0.jar:6.8.0]
        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86) ~[elasticsearch-6.8.0.jar:6.8.0]
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124) ~[elasticsearch-cli-6.8.0.jar:6.8.0]
        at org.elasticsearch.cli.Command.main(Command.java:90) ~[elasticsearch-cli-6.8.0.jar:6.8.0]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:116) ~[elasticsearch-6.8.0.jar:6.8.0]
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93) ~[elasticsearch-6.8.0.jar:6.8.0]
Caused by: java.lang.RuntimeException: can not run elasticsearch as root
        at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:103) ~[elasticsearch-6.8.0.jar:6.8.0]
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:170) ~[elasticsearch-6.8.0.jar:6.8.0]
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:333) ~[elasticsearch-6.8.0.jar:6.8.0]
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~[elasticsearch-6.8.0.jar:6.8.0]
        ... 6 more
[[email protected] bin]#

-------------------------------

2,新增用户等可参考
https://www.cnblogs.com/gcgc/p/10297563.html

新增了用户之后还要把elasticsearch所在目录的相关权限赋给新增的用户,不然启动也是会报错的,

[email protected] bin]$ ./elasticsearch -d
OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N
[[email protected] bin]$ 2020-07-17 08:41:42,817 main ERROR RollingFileManager (/home/elksofts/elasticsearch-6.8.0/logs/elasticsearch.log) java.io.FileNotFoundException: /home/elksofts/elasticsearch-6.8.0/logs/elasticsearch.log (权限不够) java.io.FileNotFoundException: /home/elksofts/elasticsearch-6.8.0/logs/elasticsearch.log (权限不够)
        at java.io.FileOutputStream.open0(Native Method)
        at java.io.FileOutputStream.open(FileOutputStream.java:270)
        at java.io.FileOutputStream.(FileOutputStream.java:213)
        at java.io.FileOutputStream.(FileOutputStream.java:133)
        at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:640)
        at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:608)
        at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:113)
        at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:114)
        at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:188)
        at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:145)
        at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:61)
        at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:123)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:959)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:899)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:891)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:514)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:238)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:250)
        at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:547)
        at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:263)
        at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:234)
        at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:127)
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:302)
        at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159)
        at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150)
        at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
        at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)
        at org.elasticsearch.cli.Command.main(Command.java:90)
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:116)
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:93)

 

 

后台启动方式 :./elasticsearch -d

[email protected] bin]$ ./elasticsearch -d

---------------------------------------------------------------------------------------------------------

elasticsearch的启动大致应该就这些了,主要是记录下做备忘,如果有写的不对的地方望各位看官能不吝指教。

在kibana的解压文件中,在config目录下找到kibana.yml配置文件,稍微修改几个地方就能跟上面启动的elasticsearch配套使用了,我配置的地方如下图:

虚拟机上部署elk相关备忘录

配置好之后,切换到kibana的bin目录下面直接启动就行了,

[[email protected] bin]# ./kibana

启动好了之后就可以访问了:http://192.168.0.101:5601

不出意外应该不会有什么问题。

---------------------------------------------------------------------------------------------------------

 

logstash同步mysql中的数据到elasticsearch

我是在bin目录下新增了一个mysql文件夹,里面放的是同步数据的相关配置文件和mysql驱动包

虚拟机上部署elk相关备忘录

 

tid.conf中的内容:

--------------------------------------------------------------------------------------------------------------------------------

input {
    stdin { }
    jdbc {
        type => "custom_my"
        
        #数据库地址
        
        # mysql 数据库链接,itv_web_log为数据库名
        jdbc_connection_string => "jdbc:mysql://192.168.0.103:3306/ztwbxwtest?characterEncoding=utf8&useSSL=false&serverTimezOne=UTC&rewriteBatchedStatements=true"
        
        # 用户名和密码
        jdbc_user => "root"
        jdbc_password => "123456"
        
        # 驱动
        jdbc_driver_library => "/home/elksofts/logstash-6.8.0/bin/mysql/mysql-connector-java-5.1.37.jar"
        
        # 驱动类名
        jdbc_driver_class => "com.mysql.jdbc.Driver"
        
        
        #sql路径
        # 执行的sql 文件路径+名称
        statement_filepath => "/home/elksofts/logstash-6.8.0/bin/mysql/tid.sql"
        
        
        #是否开启记录追踪
        record_last_run => "true"
        #是否需要追踪字段,如果为true,则需要指定tracking_column,默认是timestamp
        use_column_value => "true"
        #指定追踪的字段
        tracking_column => "f_custom_id"
        #追踪字段的类型,目前只有数字和时间类型,默认是数字类型
        #tracking_column_type => "timestamp"
        
        #设置时区
        #jdbc_default_timezOne=>"Asia/Shanghai"
        
        #是否每次清除last_run_metadata_path的内容
        clean_run => "true"
        
        #这里可以手动设置:sql_last_value的值,默认时间是1970-01-01,默认数字是0
        #们只需要在 SQL 语句中 WHERE MY_ID > :last_sql_value 即可. 其中 :sql_last_value 取得就是该文件中的值
        last_run_metadata_path => "/home/elksofts/logstash-6.8.0/bin/mysql/tid.txt"
        
        #多久同步一次
        schedule => "* * * * *"
        #是否分页
        jdbc_paging_enabled => "true"
        jdbc_page_size => "50000"
    }
    
    jdbc {
        type => "project_my"
        
        #数据库地址
        
        # mysql 数据库链接,itv_web_log为数据库名
        jdbc_connection_string => "jdbc:mysql://192.168.0.103:3306/ztwbxwtest?characterEncoding=utf8&useSSL=false&serverTimezOne=UTC&rewriteBatchedStatements=true"
        
        # 用户名和密码
        jdbc_user => "root"
        jdbc_password => "123456"
        
        # 驱动
        jdbc_driver_library => "/home/elksofts/logstash-6.8.0/bin/mysql/mysql-connector-java-5.1.37.jar"
        
        # 驱动类名
        jdbc_driver_class => "com.mysql.jdbc.Driver"
        
        
        #sql路径
        # 执行的sql 文件路径+名称
        statement_filepath => "/home/elksofts/logstash-6.8.0/bin/mysql/projectv2.sql"
        
        
        #是否开启记录追踪
        record_last_run => "true"
        #是否需要追踪字段,如果为true,则需要指定tracking_column,默认是timestamp
        use_column_value => "true"
        #指定追踪的字段
        tracking_column => "f_project_id"
        #追踪字段的类型,目前只有数字和时间类型,默认是数字类型
        #tracking_column_type => "timestamp"
        
        #设置时区
        #jdbc_default_timezOne=>"Asia/Shanghai"
        
        #是否每次清除last_run_metadata_path的内容
        clean_run => "true"
        
        #这里可以手动设置:sql_last_value的值,默认时间是1970-01-01,默认数字是0
        #们只需要在 SQL 语句中 WHERE MY_ID > :last_sql_value 即可. 其中 :sql_last_value 取得就是该文件中的值
        last_run_metadata_path => "/home/elksofts/logstash-6.8.0/bin/mysql/tidv2.txt"
        
        #多久同步一次
        schedule => "* * * * *"
        #是否分页
        jdbc_paging_enabled => "true"
        jdbc_page_size => "50000"
    }
}
filter {
    json {
        source => "message"
        remove_field => ["message"]
    }
    mutate {
        #指定要删除的字段
        #remove_field => "@version"
        #remove_field => "@timestamp"
    }
}
output {
    #     
    stdout {
        codec =>  rubydebug
    }
    
    if[type] == "custom_my"{
        elasticsearch {
            hosts => ["http://192.168.0.101:9200/"]
            index => "talent20200716"
            #action => "update"
            #action => "delete"
            upsert => "update"
            #doc_as_upsert  => true
            document_id => "%{f_custom_id}"
        }
    }
    if[type] == "project_my"{
        elasticsearch {
            hosts => ["http://192.168.0.101:9200/"]
            index => "project20200716"
            #action => "update"
            #action => "delete"
            upsert => "update"
            #doc_as_upsert  => true
            document_id => "%{f_project_id}"
        }
    }   

}

--------------------------------------------------------------------------------------------------------------------------------

 

tid.sql中的内容:

SELECT * FROM book_my where id > :sql_last_value

配置文件大概就以上那些,切换到bin目录下

[[email protected] bin]# ./logstash -f mysql/tid.conf

大概经过以上步骤就可以把mysql中的数据同步到elasticsearch中,这个时候就可以在kibana中看到

虚拟机上部署elk相关备忘录

 

 

=======

logstash启动报下面这个错误 Expected one of #, input, filter, output at line 1, column 1 (byte 1) after :

可能是配置文件编码问题,我按照这篇文章解决了此错误
https://blog.csdn.net/Crazy_T_B/article/details/79422602?utm_source=blogxgwz0
(配置文件的编码是UTF-8 BOM也就是第一行就东西的只是我们看不到而已,解决方案就是把文件换成UTF-8编码格式就行无Bom模式的。)

 

[2020-07-18T17:39:00,546][ERROR][logstash.agent           ] Failed to execute action
{:action=>LogStash::PipelineAction::Create/pipeline_id:main, :exception=>"LogStash::ConfigurationError",
:message=>"Expected one of #, input, filter, output at line 1, column 1 (byte 1) after ",
:backtrace=>["/home/elksofts/logstash-6.8.0/logstash-core/lib/logstash/compiler.rb:41:in `compile_imperative'",
"/home/elksofts/logstash-6.8.0/logstash-core/lib/logstash/compiler.rb:49:in `compile_graph'",
"/home/elksofts/logstash-6.8.0/logstash-core/lib/logstash/compiler.rb:11:in `block in compile_sources'",
"org/jruby/RubyArray.java:2577:in `map'", "/home/elksofts/logstash-6.8.0/logstash-core/lib/logstash/compiler.rb:10:in
`compile_sources'", "org/logstash/execution/AbstractPipelineExt.java:151:in `initialize'",
"/home/elksofts/logstash-6.8.0/logstash-core/lib/logstash/pipeline.rb:22:in `initialize'",
"/home/elksofts/logstash-6.8.0/logstash-core/lib/logstash/pipeline.rb:90:in `initialize'",
"/home/elksofts/logstash-6.8.0/logstash-core/lib/logstash/pipeline_action/create.rb:43:in `block in execute'",
"/home/elksofts/logstash-6.8.0/logstash-core/lib/logstash/agent.rb:96:in `block in exclusive'",
"org/jruby/ext/thread/Mutex.java:165:in `synchronize'", "/home/elksofts/logstash-6.8.0/logstash-core/lib/logstash/agent.rb:96:in `exclusive'",
"/home/elksofts/logstash-6.8.0/logstash-core/lib/logstash/pipeline_action/create.rb:39:in `execute'",
"/home/elksofts/logstash-6.8.0/logstash-core/lib/logstash/agent.rb:334:in `block in converge_state'"]}

 

 

 


推荐阅读
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文讨论了在VMWARE5.1的虚拟服务器Windows Server 2008R2上安装oracle 10g客户端时出现的问题,并提供了解决方法。错误日志显示了异常访问违例,通过分析日志中的问题帧,找到了解决问题的线索。文章详细介绍了解决方法,帮助读者顺利安装oracle 10g客户端。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文记录了在vue cli 3.x中移除console的一些采坑经验,通过使用uglifyjs-webpack-plugin插件,在vue.config.js中进行相关配置,包括设置minimizer、UglifyJsPlugin和compress等参数,最终成功移除了console。同时,还包括了一些可能出现的报错情况和解决方法。 ... [详细]
  • 解决.net项目中未注册“microsoft.ACE.oledb.12.0”提供程序的方法
    在开发.net项目中,通过microsoft.ACE.oledb读取excel文件信息时,报错“未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序”。本文提供了解决这个问题的方法,包括错误描述和代码示例。通过注册提供程序和修改连接字符串,可以成功读取excel文件信息。 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有