logstash

Logstash 运行报 setting default path failed: the trustAnchors parameter must be non-empty

纵饮孤独 提交于 2020-03-20 10:18:28
3 月,跳不动了?>>> 前提 jdk: /opt/jdk # version: jdk8 logstash: /opt/logstash # version:6.5.1 环境变量已配置 如果是通过apt install 安装的jdk 解决方案很简单 # 强制更新证书 最终会在 /etc/ssl/certs/java目录下生成此文件cacerts sudo update-ca-certificates -f # 检验文件是否有内容, 不为空基本上就解决了Logstash无法运行的问题 sudo keytool -list -keystore /etc/ssl/certs/java/cacerts 由于我是自定义安装,且文件/opt/jdk/jre/lib/security/cacerts内容为空 # 所以我要做得就是让cacerts中存在内容即可 # 简单的解决方案就是导入一个证书即可 密码: changeit keytool -import -keystore ./cacerts -file /etc/ssl/certs/ca-certificates.crt 另外关于keytool的 详细用法 请看 来源: oschina 链接: https://my.oschina.net/u/3054299/blog/3206990

如何使用Logstash

混江龙づ霸主 提交于 2020-03-19 07:45:27
目录 一、什么是Logstash 二、如何安装 三、快速使用 四、Input输入插件 五、codec编码插件 六、filter过滤器插件 七、output输出插件 八、总结 一、什么是Logstash Logstash是一个日志收集器,可以理解为一个管道,或者中间件。 功能是从定义的输入源inputs读取信息,经过filters过滤器处理,输入到定义好的outputs输出源。 输入源可以是stdin、日志文件、数据库等,输出源可以是stdout、elesticsearch、HDFS等。 另外,Logstash不只是一个input | filter | output 的数据流,而是一个 input | decode | filter | encode | output 的数据流!有一个codec插件就是用来 decode、encode 事件的,可以解析我们经常用的json格式,非常的强大,接下来给大家演示一下Logstash的使用,一学就会。 二、如何安装 最简单方式是直接 下载 安装,另外也可以通过 docker安装 , 我是直接下载的zip包,解压后如下 三、快速使用 直接启动 ./bin/logstash -e 'input { stdin { } } output { stdout {} }' -e 代表可以从命令行读取配置, input { stdin { } }

从 ELK 到 EFK 演进

我的未来我决定 提交于 2020-03-18 13:52:24
背景 作为中国最大的在线教育站点,目前沪江日志服务的用户包含网校,交易,金融,CCTalk 等多个部门的多个产品的日志搜索分析业务,每日产生的各类日志有好十几种,每天处理约10亿条(1TB)日志,热数据保留最近7天数据,冷数据永久保存。 为什么做日志系统 首先,什么是日志? 日志就是程序产生的,遵循一定格式(通常包含时间戳)的文本数据 通常日志由服务器生成,输出到不同的文件中,一般会有系统日志、 应用日志、安全日志。这些日志分散地存储在不同的机器上。 通常当系统发生故障时,工程师需要登录到各个服务器上,使用 grep / sed / awk 等 Linux 脚本工具去日志里查找故障原因。在没有日志系统的情况下,首先需要定位处理请求的服务器,如果这台服务器部署了多个实例,则需要去每个应用实例的日志目录下去找日志文件。每个应用实例还会设置日志滚动策略(如:每天生成一个文件),还有日志压缩归档策略等。 这样一系列流程下来,对于我们排查故障以及及时找到故障原因,造成了比较大的麻烦。因此,如果我们能把这些日志集中管理,并提供集中检索功能,不仅可以提高诊断的效率,同时对系统情况有个全面的理解,避免事后救火的被动。 我认为,日志数据在以下几方面具有非常重要的作用: 数据查找 :通过检索日志信息,定位相应的 bug ,找出解决方案 服务诊断 :通过对日志信息进行统计、分析

ElasticSearch(二)Logstash的基础使用

别等时光非礼了梦想. 提交于 2020-03-15 17:03:05
第二周了,今天我们来讲一下Logstash的使用。 首先,我们打开ES,使用postman新建一个索引user,在postman里使用PUT方式向 localhost:9200/user 发送请求。 看到返回信息: { "acknowledged": true, "shards_acknowledged": true, "index": "user" } 说明索引建立成功了,如果没有建立成功,可能是因为 ES 没有开启自动创建索引,修改一下 config/elasticsearch.yml 里的配置,把 action.auto_create_index 设置为 true 。重新执行一下上面的操作。 这个时候我们看一下user索引里的数据,在postman里使用get方式,发送 localhost:9200/user/_search?q=*&pretty 查看 user 索引下的所有数据。 可以看到,在user索引下,并没有任何数据。 我们要读取的表结构为: CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `account` varchar(40) DEFAULT NULL, `password` varchar(40) DEFAULT NULL, `name` varchar(20) DEFAULT NULL,

logstash 配置服务项

▼魔方 西西 提交于 2020-03-14 12:01:23
服务项 ; /usr/lib/systemd/system/logstash.service [Unit] Description=Logstash Documentation=http://www.elastic.co After=elasticsearch.service [Service] Environment=LS_HOME=/var/lib/logstash Environment=LS_HEAP_SIZE="500m" Environment=LS_CONF_DIR=/etc/logstash/conf.d Environment=LS_LOG_DIR=/var/log/logstash Environment=LS_SETTINGS_DIR=/etc/logstash ; User=logstash ; Group=logstash User=root Group=root ExecStart=/usr/share/logstash/bin/logstash -f $LS_CONF_DIR --path.logs $LS_LOG_DIR --path.data $LS_HOME --path.settings $LS_SETTINGS_DIR StandardOutput=null StandardError=journal SuccessExitStatus

ELK--04 使用redis优化方案

主宰稳场 提交于 2020-03-14 11:18:51
目录 ELK--04 使用redis优化方案 1.filebeat引入redis缓存 (redis 单节点) 2.filebeat引入redis完善方案 (使用两台服务器完成redis高可用) 3.filbeat引入redis优化方案 ELK--04 使用redis优化方案 1.filebeat引入redis缓存 (redis 单节点) filebeat收集日志传给redis,因为redis和es不能直接通信,需要中间件logstash从redis中取数据传给es,es在传给kibana展示数据 1.安装redis [root@db01 ~]# yum install redis [root@db01 ~]# sed -i 's#^bind 127.0.0.1#bind 127.0.0.1 10.0.0.51#' /etc/redis.conf [root@db01 ~]# systemctl start redis [root@db01 ~]# netstat -lntup|grep redis [root@db01 ~]# redis-cli -h 10.0.0.51 2.停止docker容器 [root@db01 ~]# docker stop $(docker ps -q) 3.停止filebeat [root@db01 ~]# systemctl stop

logstash 服务配置

此生再无相见时 提交于 2020-03-14 10:28:31
配置文件: /usr/lib/systemd/system/logstash.service 相关目录: logstash.conf 位于 /etc/logstash/conf.d 中,logstash.yml 位于 /etc/logstash 中 [Unit] Description=Logstash Documentation=http://www.elastic.co After=elasticsearch.service [Service] Environment=LS_HOME=/var/lib/logstash Environment=LS_HEAP_SIZE="500m" Environment=LS_CONF_DIR=/etc/logstash/conf.d Environment=LS_LOG_DIR=/var/log/logstash Environment=LS_SETTINGS_DIR=/etc/logstash ; User=logstash ; Group=logstash User=root Group=root ExecStart=/usr/share/logstash/bin/logstash -f $LS_CONF_DIR --path.logs $LS_LOG_DIR --path.data $LS_HOME --path.settings

Elasticsearch集群数据迁移

假如想象 提交于 2020-03-13 12:43:34
参考 https://www.elastic.co/guide/en/elasticsearch/reference/5.0/modules-snapshots.html https://www.elastic.co/guide/en/elasticsearch/guide/current/_rolling_restarts.html https://blog.csdn.net/u014431852/article/details/52905821 环境 阿里云elasticsearch集群5.0版本 微软云elasticsearch集群5.6版本 需求 需要把阿里云elasticsearch集群新老数据迁移到微软云elasticsearch集群 解决 新数据比较好弄数据源输出到新的微软云kafka集群然后微软云logstash消费新数据到新elasticsearch集群即可,关于老数据迁移比较麻烦,但官网也给了成熟的解决方案既是快照备份与还原,下面实施过程既是对实施过程的记录 实施 阿里云elasticsearch集群操作 一,先关闭数据平衡,注意一个一个的来,关一个节点的进程none,all循环一次,否则最后集群切片变动,恢复时间很长 1、修改elasticsearch.yml配置,添加如下 path.repo: /storage/esdata 设置索引备份快照路径

别跟我说这很容易

风格不统一 提交于 2020-03-12 16:28:37
早上刚上班,接到了小王同学的电话,电话里小王说自己辞职了,看看身边有没有合适的工作给推荐一下,我随即问怎么突然就辞职了呢,小王叹了一口气,说在这家公司干不下去了。 小王所在的是一家中小型软件公司,主要给客户做项目为主,而小王是一线开发团队的leader,平时上班沉默寡言,基本可以理解为“逆来顺受“型程序员,是个典型的IT男,按照他的说法:要还房贷、车贷、上有老、下有小,因此工作上任何不顺心的事都可以忍受,什么都可以丢,工作不能丢。但是这次,他忍不了了。 什么原因呢,这要从最近的一个项目说起: 销售接到客户的一个需求,要做一款单位内部使用的通讯APP,功能需求类似与微信或QQ,销售一听,觉得这个功能很熟悉,应该很好实现,一口就答应了,然后销售就给小王所在的项目经理提出了开发需求,要求小王带队一周内开发一个带有用户互动功能的APP。 小王接到开发需求后,跟项目经理进行了技术评估,项目经理的意见是,这个通讯APP要实现的功能是个烂大街的技术,很容易实现,想都没想,就接下了这个活。 但小王拒绝了项目经理,他说这个通讯APP开发周期太短,又没有类似技术积累,一周内绝对不可能开发完成。而项目经理表示完全有可能,他拿出专业的姿态,告诉小王说网上有现成的,下载下来改改就行了。而小王对此方案果断拒绝,原因是:网上下载不到完全适合客户需求的,就算有,下载下来也要经过一段时间的代码熟悉过程。

实现ES和MySQL数据库同步解决方案

99封情书 提交于 2020-03-12 11:30:48
1. Logstash 实现ES 与数据库同步: 使用定时器(使用sql 定时的去查询数据进行同步)、实现方式比较简单。 2. MQ 实现 ES 与数据库同步: 实时性,消息放到MQ中,消费者会自动的消费,复杂性更高。 MQ方式保持数据一致性比较强,因为MQ能够自动重试、补偿。而logstash无法实现补偿、重试。 3. MySQL与ES的同步插件ElasticSearch-JDBC: 无法灵活的添加数据,比如你对添加进mysql中的数据进行一些聚合,查询等操作之后,再添加到es,这种操作插件很难实现。 4. 使用多线程代码实现,在进行MySQL的CRUD之后,开启一个线程,异步去调用ES的CRUD操作: 比较容易实现,但是实时性不强,容错率低。 推荐方案:第二种,因为在MQ不丢失消息的前提下,MQ可以做到高可用和信息的持久化,很难出现消费端添加失败的情况,失败了也可以通过日志记录后处理。 来源: oschina 链接: https://my.oschina.net/jacklinnn/blog/3192388