centos 传统方式部署和使用elk 7.8.0(非容器方式)

21 篇文章 1 订阅
5 篇文章 0 订阅

本文已独家授权给微信公众号【逻魔代码】

1. 问题背景

在linux(CentOS7)环境下,如何搭建一套elk系统?

elk 安装包

elasticsearch-7.8.0-x86_64.rpm + kibana-7.8.0-x86_64.rpm + logst
如下图
在这里插入图片描述

CentOS 7

CentOS 7.4 64bit, 图略。

说明

实际上熟悉了docker的用法之后,使用docker和不使用docker差别不大,篇幅所限,只记录重点,不涉及docker环境下的安装和配置。

注:里面提到的所有操作都是我亲测过的。

2. 安装(es 和 kibana)

1. 安装es

  1. rpm -ivh xxx.rpm

安装完毕后,需要配置内容。
尤其是需要配置es可以从远程机器访问
配置后启动,效果如下图。
在这里插入图片描述
要点:

  1. es依赖java环境,所以先安装jdk,自行解决。
  2. es安装完成后,可能需要修改配置文件,如端口等
  3. es启动时可能会报错,如 can not run elasticsearch as root(新建其他用户,并配置各个目录权限即可解决,一搜即得)等,需要处理
  4. max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535] 这个报错需要配置一下,参考这两个即可解惑。https://www.jianshu.com/p/692608b3b6f9 https://blog.csdn.net/weixin_40143280/article/details/105273199

2. 安装kibana

  1. rpm -ivh xxx.rpm

安装完毕后,需要配置内容。
尤其是需要配置kibana可以从远程机器访问
配置后启动,效果如下图。

其中遇到一个报错,解决办法:The Reporting plugin encountered issues launching Chromium in a self-test

启动后效果如图
在这里插入图片描述
启动过程如图:
在这里插入图片描述
我安装的kibana启动比较顺利。
/usr/share/kibana --allow-root 就成功了,有一些WARN信息,但无所谓。
当然地,如果不喜欢控制台的输出信息,可以这样: nohup bin/kibana --allow-root &

关键部分暂时部署完成,目标是通过.net 或 java 或logstash的方式 将数据存入es,然后在kibana可以灵活展示和使用

此时kibana可以直接连接到刚才部署的es上面,看和操作es的一些index。


3. 使用

自己的思路:

  1. 只先安装es和kibana,es用来存数据(姑且可以先用kibana的 示例数据,或者 通过csv文件导入的数据来玩,暂不考虑如何向es中导入数据的问题)
  2. 使用kibana自带的sample数据或自己导入的数据,熟悉dashboardcavansvisulize 等的概念,做到大致了解,心中有数。可以产生各种灵活的饼图柱状图折线图热力图之类的东西自己玩。

如下图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


4. logstash的安装与使用

安装

  1. rpm -ivh xxx.rpm

安装完毕后,需要配置内容,然后启动。

当然,启动报错是很正常的,遇到什么解决什么,见招拆招就行了。

跟前面的es和kibana一样,安装完成后,/usr/share/logstash/etc/logstash 处出现文件。

使用logstash

我现在的目的是,通过logstash,不断地从一个mysql表中读数据,写入es的一个索引中。

在这里插入图片描述
如图,画横线的两个conf文件就是我的两次导入需要的配置文件,内容仿照logstash-sample.conf的格式,使用mysql数据源,如ph3.conf内容如下:

input {
        jdbc {
                # jdbc_driver_library => "./mysql-connector-java-5.1.49.jar"
                jdbc_driver_library => "/usr/share/logstash/mylib/5.1.45/mysql-connector-java-5.1.45.jar"
                jdbc_driver_class => "com.mysql.jdbc.Driver"
                jdbc_connection_string => "jdbc:mysql://1.2.3.4:13308/test?characterEncoding=UTF-8&useSSL=false"
                jdbc_user => root
                jdbc_password => 123456
                jdbc_paging_enabled => "true" #是否进行分页
                # jdbc_page_size => "50000"
                tracking_column => "id"
                use_column_value => true
                # statement_filepath => "sql文件路径,与下面的执行语句二选1"
                statement => "SELECT * FROM ph3 where id > 0 "
                # 设置监听间隔  各字段含义(由左至右)秒、分、时、天、月、年,全部为*默认含义为每分钟都更新
                # schedule => " 10 * * * * *"
                schedule => "5 * * * * *"
        }
}
output {
        elasticsearch {
                document_id => "%{id}"
                # document_type => ""
                index => "ph4-new-index"
                hosts => ["localhost:9200"]
        }
        stdout{
                codec => rubydebug
        }
}

然后执行命令,启动logstash进程去完成这件事:
sudo bin/logstash -f /etc/logstash/ph3.conf --path.settings=/etc/logstash
命令内容:

-f 指定了配置文件
–path.settings 指定一个目录,用到一些其他的通用配置,不用管。

可能遇到一些报错,如提示找不到 logstash.yml 文件, --path.settings 指向的不是一个目录,权限不足等,都是网上一搜就能解决的。

其中特别注意, tracking_column => "id" 这一行 和 document_id => "%{id}"这行要体会一下意思,以免导入程序跑了半天数据库里只有1个document。
这个问题可能会遇到,遇到也好解决,一搜就有。就是这个id字段不是随便写的,需要是mysql数据库的表里的字段,可以作为唯一标识的那种,比如int主键。

以下上个启动图。
在这里插入图片描述
如图,红框部分就是任务已经开始执行起来了。
然后在kibana网页的索引模式里面,就可以把这个索引加入到kibana管理里了,然后就可以跟其他数据一样随意操作。
在这里插入图片描述
自此这条路就完全打通了。

即:

elk都安装且运行正常的情况下,
logstash 从mysql等数据源按照cron表达式确定的时间持续地从mysql中读取数据 ==> 把数据写入到es中 ==> kibana管理这些数据,可以自定义出各种花样繁多的统计图统计表,导出统计数据等

以后就很随意了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值