安装elasticsearch

下载:http://www.elastic.co/downloads/elasticsearch

下载后解压

修改配置文件,xxx是自定义目录

vi elasticsearch.yml
cluster.name: my-application
node.name: node-
path.data: /xxx/data/elastic/data
path.logs: /xxx/data/elastic/logs
network.host: 10.202.203.29

在bin目录下执行./elasticsearch ,会报错,提示不能使用root用户启动

所以新增一个用户,用户名密码都是elastic

groupadd elastic
useradd elastic -g elastic -p elastic

修改相应目录的权限

chown -R elastic:elastic elasticsearch-6.2.

注意上面的数据和日志目录也需要修改权限 -R参数表示递归处理

切换到新用户

su elastic

重新执行启动命令,会报如下错误

上面的错误修改

vim /etc/security/limits.conf

切换回root用户修改配置

sysctl -w vm.max_map_count=

查看结果

sysctl -a|grep vm.max_map_count

重新切换到elastic用户启动服务

表示成功启动,打开浏览器:

停止服务

$ jps | grep Elasticsearch
14542 Elasticsearch
$ kill -SIGTERM 15516

如果es需要启用密码验证的话,需要做如下配置

可以通过xpack api 查看

此时的许可证是无效的,安全是不会开启的

需要先启用一个30天的许可证

根据提示添加参数

设置内置账户密码

再次查看,需要加上登录选项

此时再看,安全已经启用了

安装logstash

下载:http://www.elastic.co/cn/downloads/logstash

解压到bin目录执行

./logstash -e 'input{stdin{}}output{stdout{codec=>rubydebug}}'

这里等待用户输入,输入后返回数据

安装kibana

下载:http://www.elastic.co/cn/downloads/kibana

解压后修改conf目录下的配置,注意这里elastic的地址不要用localhost

server.host: "10.202.203.29"
server.name: "kibana-1"
elasticsearch.url: "http://10.202.203.29:9200"
elasticsearch.username: "elastic"
elasticsearch.password: "elastic"

使用如下命令启动

nohup ./kibana >> ../logs/kibana.log &

如果报一下提示

使用下面命令

nohup ./kibana >> ../logs/kibana.log >& &

nohup表示后台启动,如果要关闭先找到进程号

netstat -lnp|grep 

使用下面命令关闭

kill - 

打开浏览器5601端口

kafka与logstash整合

logstash收集日志到kafka

在kafka-manager中创建一个新主题kafka-elk-log

在logstash根目录下新建一个etc目录

在etc目录中新建一个logstash_input_kafka文件,在文件中配置从控制台接收输入,并将收集到的信息输出到kafka,内容如下

input{
# 从控制台接收输入
stdin{}
}
output{
kafka{
# 消息写入的主题
topic_id=>"kafka-elk-log"
# 连接kafka集群配置
bootstrap_servers=>"10.202.203.29:9092"
# 批量写入配置
batch_size=>
# logstash导入数据编码方式
codec=>"plain"
}
stdout{
# 设置控制台打印数据表现形式
codec=>rubydebug
}
}

切换到bin目录执行

./logstash -f ../etc/logstash_input_kafka

输入一行消息

使用下面命令验证

kafka-run-class.sh kafka.tools.DumpLogSegments --files /neworiental/logs/kafka-logs/kafka-elk-log-/.log --print-data-log

logstash从kafka消费日志

在logstash/etc目录下新增一个logstash_out_es文件

input{
kafka{
# 消费者
group_id=>"kafka_elk_group"
# 消费者标识
client_id=>logstash
# 消费的主题
topics=>"kafka-elk-log"
# 连接kafka集群配置
bootstrap_servers=>"10.202.203.29:9092"
# 消费起始位置
auto_offset_reset=>"earliest"
# 消费者线程数
consumer_threads=>
# logstash导入数据编码方式
codec=>"plain"
}
}
output{
elasticsearch{
# elasticsearch集群地址,多个地址以逗号分隔
hosts=>["10.202.203.29:9200"]
# 创建索引
index=>"kafka-elk-log-%{+YYYY.MM.dd}"
# 指定数据导入elasticsearch格式
codec=>"plain"
}
}

在bin目录执行

./logstash -f ../etc/logstash_out_es

接下来打开kibana-management添加一个索引模式

接下来在Discover中选择刚才添加的索引模式,同时添加只显示message和timestamp

打开生产者程序,写入几条消息

点击kibana右上角的时间选择

选择刷新时间和Quick标签,可以实时看到日志信息

logstash从rabbitmq消费日志

input{
kafka{
# rabbitmq地址
host=>"10.202.80.196"
# 端口
port=>
# vhost
vhost=>"NIST"
# 用户名
user=>"bm"
# 密码
password=>"bm_p@ss"
# queue
queue=>"apicenter"
# subscription_retry_interval_seconds
subscription_retry_interval_seconds=>
# key
key=>"apicenter"
}
}
output{
elasticsearch{
# elasticsearch集群地址,多个地址以逗号分隔
hosts=>["10.202.203.29:9200"]
# 创建索引
index=>"rabbitmq-elk-log-%{+YYYY.MM.dd}"
# 指定数据导入elasticsearch格式
codec=>"plain"
}
}

Metricbeat

下载:http://www.elastic.co/downloads/beats/metricbeat

解压后编辑metricbeat.yml文件,设置elasticsearch

启动

./metricbeat -e -c metricbeat.yml

默认使用当前版本作为索引

在kibana中添加索引模式

在Discovery中查看数据

接下来设置dashboard,编辑配置文件

重新启动metricbeat,打开kibana,切换到Dashboard

可以看到

 点击System进去
 

kafka+elk的更多相关文章

  1. .NET下日志系统的搭建——log4net+kafka+elk

    .NET下日志系统的搭建--log4net+kafka+elk 前言     我们公司的程序日志之前都是采用log4net记录文件日志的方式(有关log4net的简单使用可以看我另一篇博客),但是随着 ...

  2. 基于Kafka+ELK搭建海量日志平台

    早在传统的单体应用时代,查看日志大都通过SSH客户端登服务器去看,使用较多的命令就是 less 或者 tail.如果服务部署了好几台,就要分别登录到这几台机器上看,等到了分布式和微服务架构流行时代,一 ...

  3. Zookeeper、Kafka集群与Filebeat+Kafka+ELK架构

    Zookeeper.Kafka集群与Filebeat+Kafka+ELK架构 目录 Zookeeper.Kafka集群与Filebeat+Kafka+ELK架构 一.Zookeeper 1. Zook ...

  4. SpringBoot+kafka+ELK分布式日志收集

    一.背景 随着业务复杂度的提升以及微服务的兴起,传统单一项目会被按照业务规则进行垂直拆分,另外为了防止单点故障我们也会将重要的服务模块进行集群部署,通过负载均衡进行服务的调用.那么随着节点的增多,各个 ...

  5. 日志收集ELK+kafka相关博客

    SpringBoot+kafka+ELK分布式日志收集 使用 logstash + kafka + elasticsearch 实现日志监控 Kibana 安装 与 汉化 windows系统安装运行f ...

  6. A session of Log Collect, Retrieval and Analysis using ELK Stack

    Motivation 运维过程中对问题的定位往往需要跟踪和定位日志.分布式和弹性计算的引入,使得日志的定位和分析变得越发复杂. 本次实践主要的目的是考察现有成熟的日志收集.检索和分析方案:Kafka+ ...

  7. elk单台环境搭建

    一.简介1.核心组成ELK由Elasticsearch.Logstash和Kibana三部分组件组成:Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分 ...

  8. Docker极简部署Kafka+Zookeeper+ElasticStack

    之前写ELK部分时有朋友问有没有能一键部署的Kafka+ELK,写本文主要是填这个坑,基本上配置已经集中在一两个文件中了,理论上此配置支持ElasticStack 7.x所有版本 本文所有配置与代码均 ...

  9. Kafka知识总结及面试题

    目录 概念 Kafka基础概念 命令行 Kafka 数据存储设计 kafka在zookeeper中存储结构 生产者 生产者设计 消费者 消费者设计 面试题 kafka设计 请说明什么是Apache K ...

随机推荐

  1. 651. 4 Keys Keyboard复制粘贴获得的最大长度

    [抄题]: Imagine you have a special keyboard with the following keys: Key 1: (A): Print one 'A' on scre ...

  2. 交叉编译bash

    1 下载bash版本:[version 4.2.53]地址:http://ftp.gnu.org/gnu/bash/ 2 解压将下载的bash压缩包解压,命令: # mkdir /home/carri ...

  3. java_22 Map接口

    1Map Collection是孤立存在的,向集合中存储元素是一个一个放进去的 Map中的集合存储是成对的,可以通过键找到值.即将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值 ...

  4. Solidity类型Uint类型区分?

    1. Solidity中默认 Uint 也就是Uint256, 也就是 无符号 256位整数范围,即 2的 256次方 减一的 10进制范围, 预计大小为: 115792089237316195423 ...

  5. 【转载】SQL Server - 使用 Merge 语句实现表数据之间的对比同步

    原文地址:SQL Server - 使用 Merge 语句实现表数据之间的对比同步 表数据之间的同步有很多种实现方式,比如删除然后重新 INSERT,或者写一些其它的分支条件判断再加以 INSERT ...

  6. AndroidStudio 3 export jar file

    1.  File -> New -> New Module -> Android Library  例子中暂命名ModuleA 2. 修改刚创建 ModuleA下的build.gra ...

  7. 11. English vocabulary 英语词汇量

    11. English vocabulary 英语词汇量 (1) The exact number of English words is not known.The large dictionari ...

  8. 公司git服务器记录

    gitolite:server/web/AmomeWebApp.git gitolite:server/web/AmomeBackendManage.git git@192.168.1.183 === ...

  9. 可遇不可求的Question之flash的socket连接安全策略文件篇

    flash的socket连接安全策略文件   最近公司做压力测试的时候,发现了一个问题.flash的socket客户端向服务端请求安全策略文件的时候,服务端负责回发策略文件的端口能连接上,但是没有响应 ...

  10. MFC 多窗口通信时,使用RadioButton和Button时冲突问题

    最近项目需要我们实现在两个窗口间进行通信,其中有个小功能如图所示: 当我点击GDIProgram中的Button1时,会更新Dialog的Radio1和Radio2的状态. Dialog中的Radio ...