ElasticSearch-kibana-Logstash-mysql[干货]

为了解决什么问题?

本文介绍如何将mysql里的表数据导入至ElasticSearch(以下简称es),并用kibana查询这些数据

准备

一台装有centos 7能够正常联网的服务器(内存至少8G)
安装好JDK(版本大于等于8)
下载相同版本的ElasticSearch,kibana,logstash的rpm安装包(官网都有这里就不多说了)
提供一个测试mysql数据库(表里要有数据噢)
将下载好的rpm包全部传到服务器/tmp/下
mysql驱动jar

安装ElasticSearch(以下简称es)

  1. 关闭机器selinux
  2. 执行安装命令
rpm -ivh  elasticsearch-8.5.0-x86_64.rpm
  1. 查看elasticsearch.service安装文件
#我们使用rpm安装的serivce文件都在/usr/lib/systemd/system/下
vi /usr/lib/systemd/system/elasticsearch.service
  1. 查看es本体安装目录
#我们使用rpm安装的安装本体都在/usr/share/下
cd /usr/share/elasticsearch/
[root@node91 elasticsearch]# ls
bin  jdk  lib  LICENSE.txt  modules  NOTICE.txt  plugins  README.asciidoc
  1. 调整查看配置文件
[root@node91 elasticsearch]# cd /etc/elasticsearch/
[root@node91 elasticsearch]# ls
certs                   elasticsearch-plugins.example.yml  elasticsearch.yml.rpmsave  jvm.options.d      role_mapping.yml  users
elasticsearch.keystore  elasticsearch.yml                  jvm.options                log4j2.properties  roles.yml         users_roles
  1. vi编辑elasticsearch.yml主配置文件
# 部分需要更改的配置
# es日志地址
path.logs: /var/log/elasticsearch解析
# 网络监听地址
network.host: 0.0.0.0
# 访问端口
http.port: 9200
# 安全配置 xpack开头的全部改成false
xpack.* = false
  1. 启动es服务
# 所有采用rpm安装的软件都会交由systemctl去管理,下面趁机说下一些systemctl服务的基本操作
# 系统重载systemctl服务,凡是对serivice文件做了更改的必须执行下面的命令
systemctl daemon-reload
# 查看es服务状态
systemctl status elasticsearch.service
# 运行es服务,并查看日志
systemctl start elasticsearch.service && journalctl -f -n 22 -u elasticsearch.service
# 关闭es服务
systemctl stop elasticsearch.service
# 将es服务注册为开机自启服务
systemctl enable elasticsearch.service
# 禁用es服务为开机自启
systemctl disabled elasticsearch.service
# 重启es服务,并查看日志
systemctl restart elasticsearch.service && journalctl -f -n 22 -u elasticsearch.service
  1. 测试es服务是否正常开启
# 能看到  "You Know, for Search" 即说明正常
curl http://localhost:9200
{
  "name" : "elk",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "hqp4Aad0T2Gcd4QyiHASmA",
  "version" : {
    "number" : "8.5.0",
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "de777fa",
    "build_date" : "2022-10-24T18:30:11.767338Z",
    "build_snapshot" : false,
    "lucene_version" : "9.4.1",
    "minimum_wire_compatibility_version" : "7.17.0",
    "minimum_index_compatibility_version" : "7.0.0"
  },
  "tagline" : "You Know, for Search"
}

安装kibana

  1. 执行安装命令
rpm -ivh  kibana-8.5.0-x86_64.rpm
  1. 查看kibana.service安装文件
#我们使用rpm安装的serivce文件都在/usr/lib/systemd/system/下
vi /usr/lib/systemd/system/kibana.service
  1. 查看kibana本体安装目录
#我们使用rpm安装的安装本体都在/usr/share/下
cd /usr/share/kibana/
[root@node91 kibana]# ls
bin  LICENSE.txt  node  node_modules  NOTICE.txt  package.json  plugins  README.txt  src  x-pack
  1. 调整查看配置文件
[root@node91 kibana]# cd /etc/kibana/
[root@node91 kibana]# ls
kibana.keystore  kibana.yml  node.options
  1. vi编辑kibana.yml主配置文件
# 部分需要更改的配置
# kibana端口
server.port: 5601
# 可访问,0.0.0.0 表示可远程链接
server.host: "0.0.0.0"
# 监听es地址
elasticsearch.hosts: ["http://localhost:9200"]
# 访问端口
http.port: 9200
# web页面显示改成中文
i18n.locale: "zh-CN"
  1. 启动kibana服务(跟es的服务一个地址噢也是同样的用法)
# 运行kibana服务,并查看日志
systemctl start kibana.service && journalctl -f -n 22 -u kibana.service
  1. 打开浏览器,浏览kibana web页面
http://localhost:5601

安装logstash

  1. 执行安装命令
rpm -ivh  logstash-8.5.0-x86_64.rpm
  1. 查看logstash.service安装文件
#我们使用rpm安装的serivce文件都在/usr/lib/systemd/system/下
vi /usr/lib/systemd/system/logstash.service
  1. 查看logstash本体安装目录
#我们使用rpm安装的安装本体都在/usr/share/下
cd /usr/share/logstash/
[root@node91 logstash]# ls
bin     CONTRIBUTORS  Gemfile       jdk          lib          logstash-core             modules     tools   x-pack
config  data          Gemfile.lock  JDK_VERSION  LICENSE.txt  logstash-core-plugin-api  NOTICE.TXT  vendor
  1. 调整查看配置文件
[root@node91 logstash]# cd /etc/logstash/
[root@node91 logstash]# ls
conf.d  jvm.options  log4j2.properties  logstash-sample.conf  logstash.yml  pipelines.yml  startup.options
  1. vi编辑startup.options启动参数配置文件
# 部分需要更改的配置
# logstash自身带了jdk,需要把这里编辑下,否则启动可能会报错
JAVACMD=/usr/share/logstash/jdk
  1. 将mysql 驱动jar放至/usr/share/logstash/bin/下
  • 我的路径是/usr/share/logstash/bin/mysql-connector-java-8.0.19.jar
  1. 增加编辑数据传输配置
# 在/etc/logstash/文件夹下增加config文件夹,将放置链接mysql与es的配置文件
[root@node91 logstash]# cd /etc/logstash/
[root@node91 logstash]# mkdir config
[root@node91 logstash]# cd config
[root@node91 config]# cd config
[root@node91 config]# vi jdbc.conf
# jdbc.conf内容,如下
input {
    jdbc {
      # 数据库连接字符串
      jdbc_connection_string => "jdbc:mysql://192.168.3.187:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2B8"
      # 数据库登录名
      jdbc_user => "root"
      # 登录密码
      jdbc_password => "rootdb"
      # jdbc驱动程序包路径
      jdbc_driver_library => "/usr/share/logstash/bin/mysql-connector-java-8.0.19.jar"
      # 驱动程序类名
      jdbc_driver_class => "com.mysql.cj.jdbc.Driver"
      # 是否分页
      jdbc_paging_enabled => "true"
      # 每页几条记录
      jdbc_page_size => "10000"
      # 同步查询语句,:sql_last_value变量为上次同步时间,程序会记录下来,如果第一次同步则为1970-1-1
      # mapping中日期类型字段我定义了格式,为了避免报错,我就在SQL语句中格式化为字符类型
      statement => "SELECT *  FROM test WHERE createTime>= :sql_last_value"
      # 同步频率,cron表达式,不会的可以百度一下;这样是每分钟执行一次
      schedule => "* * * * *"
      # 时区,一定要配置,不然 :sql_last_value变量会少了8小时
      jdbc_default_timezone => "Asia/Shanghai"
      type => "jdbc"
    }
}
filter {
}
output {
      elasticsearch {
       # ES索引名称
        index => "mysql-test01"
       # ES文档ID,配置表的主键字段
        document_id => "%{id}"
    hosts => ["localhost:9200"]
      }
}
  1. 启动logstash服务(跟es的服务一个地址噢也是同样的用法)
# 运行logstash服务,并查看日志
systemctl start logstash.service && journalctl -f -n 22 -u logstash.service
  1. 将配置文件设置到启动项
# 编辑 logstash.service
vi /usr/lib/systemd/system/logstash.service
# ExecStart项前 增加启动配置
# 修改前
ExecStart=/usr/share/logstash/bin/logstash "--path.settings" "/etc/logstash"
# 修改后
ExecStart=/usr/share/logstash/bin/logstash -f  /etc/logstash/config/jdbc.conf  "--path.settings" "/etc/logstash"
  1. 打开浏览器,浏览kibana web页面,操作数据
http://localhost:5601

附录:

  1. 三套软件下载地址
https://artifacts.elastic.co/downloads/elasticsearch
https://www.elastic.co/cn/downloads/kibana
https://www.elastic.co/cn/downloads/logstash
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335

推荐阅读更多精彩内容