文档章节

基于FlumeNG+Kafka+ElasticSearch+Kibana的日志系统

张shieppp
 张shieppp
发布于 06/22 17:08
字数 1424
阅读 33
收藏 0
点赞 0
评论 0

环境准备

1.服务器概览

hostnameip操作系统说明安装内容
node1.fek192.168.2.161centos 7node1节点nginx,jdk1.8, flumeNG, elasticsearch slave1
node2.fek192.168.2.162centos 7node2节点jdk1.8, elasticsearch slave2
master.fek192.168.2.163centos 7master节点jdk1.8, elasticsearch master, kibana
master.kafka192.168.2.151centos 7master节点jdk1.8, kafka master, zookeeper
worker1.kafka192.168.2.152centos 7slaver节点jdk1.8, kafka master, zookeeper
worker2.kafka192.168.2.153centos 7slaver节点jdk1.8, kafka master, zookeeper

2.服务器环境安装

三台服务均安装jdk1.8(此处省略,自行安装)。

node1.fek安装nginx,模仿需要采集日志的web容器(此处省略,自行安装)。

三台服务均执行

#添加host
192.168.2.161 node1.fek
192.168.2.162 node2.fek
192.168.2.163 master.fek

192.168.2.151 master.kafka
192.168.2.152 worker1.kafka
192.168.2.153 worker2.kafka


#执行以下命令关闭防火墙
[root@node1 ~]systemctl stop firewalld && systemctl disable firewalld
[root@node1 ~]setenforce 0

#将SELINUX的值改成disabled
[root@node1 ~]vim /etc/selinux/config

SELINUX=disabled

#修改系统参数
sudo vim /etc/security/limits.conf
*               soft    nproc           65536
*               hard    nproc           65536
*               soft    nofile          65536
*               hard    nofile          65536
sudo vim /etc/sysctl.conf
vm.max_map_count= 262144
sudo sysctl -p


#重启服务器
[root@node1 ~]reboot

elasticsearch集群安装

注意:安装elasticsearch需要非root用户,此处我们用user用户

mkdir -p /opt/elasticsearch
chown user:user /opt/elasticsearch
su user

下载

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.0.tar.gz

tar -zxvf elasticsearch-6.3.0.tar.gz

cd elasticsearch-6.3.0/config

mkdir -p /opt/elasticsearch/data
mkdir -p /opt/elasticsearch/logs

修改配置参数 elasticsearch.yml

cluster.name: fek-cluster                                 # 集群名称
node.name: els1                                             # 节点名称,仅仅是描述名称,用于在日志中区分

path.data: /opt/elasticsearch/data                           # 数据的默认存放路径
path.logs: /opt/elasticsearch/logs                           # 日志的默认存放路径

network.host: 192.168.2.163                                   # 当前节点的IP地址
http.port: 9200                                             # 对外提供服务的端口,9300为集群服务的端口

discovery.zen.ping.unicast.hosts: ["node1.fek", "node2.fek", "master.fek"]       
# 集群个节点IP地址,也可以使用els、els.shuaiguoxia.com等名称,需要各节点能够解析

discovery.zen.minimum_master_nodes: 2                       # 为了避免脑裂,集群节点数最少为 半数+1

jvm.options

-Xms1g                                                  # JVM最大、最小使用内存
-Xmx1g

对于node1.fek node2.fek,安装实际情况修改elasticsearch.yml参数

启动集群

./bin/elasticsearch -d

访问http://192.168.2.163:9200/_cluster/health?pretty,查看集群状态

{
  "cluster_name" : "fek-cluster",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 3,
  "number_of_data_nodes" : 3,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

http://192.168.2.163:9200/_cluster/state/nodes?pretty

{
  "cluster_name" : "fek-cluster",
  "compressed_size_in_bytes" : 9419,
  "nodes" : {
    "NaRMw2usS0q28ZscXMHHcQ" : {
      "name" : "node2.fek",
      "ephemeral_id" : "1BF5Tiw_RbCq9FsbwuyWjA",
      "transport_address" : "192.168.2.162:9300",
      "attributes" : {
        "ml.machine_memory" : "1021931520",
        "ml.max_open_jobs" : "20",
        "xpack.installed" : "true",
        "ml.enabled" : "true"
      }
    },
    "y3UhYgopT12alHMlJDJlWQ" : {
      "name" : "node1.fek",
      "ephemeral_id" : "j5K2Re4QSW-GcJMVVXPP5g",
      "transport_address" : "192.168.2.161:9300",
      "attributes" : {
        "ml.machine_memory" : "1021931520",
        "ml.max_open_jobs" : "20",
        "xpack.installed" : "true",
        "ml.enabled" : "true"
      }
    },
    "kO7CFyN3RKWLURRtrhwTMQ" : {
      "name" : "master.fek",
      "ephemeral_id" : "JH2omxVpRVyqQN47RMENsQ",
      "transport_address" : "192.168.2.163:9300",
      "attributes" : {
        "ml.machine_memory" : "1021931520",
        "ml.max_open_jobs" : "20",
        "xpack.installed" : "true",
        "ml.enabled" : "true"
      }
    }
  }
}

Kafka集群安装

Kafka集群部署使用:https://my.oschina.net/orrin/blog/1834218

FlumeNG安装

***0.消费Kafka信息,传入ES

mkdir -p /opt/app/
cd /opt/app/
wget http://opgwqjk89.bkt.clouddn.com/kafka-es-1.0-SNAPSHOT.jar
java -jar kafka-es-1.0-SNAPSHOT.jar

源码地址:kafka-es 可以根据项目需要,过滤清洗日志,在入ES的库时可以异步写入HDFS,做大数据分析

此处选择Kafka是因为其削峰能力。

1. 配置FlumeNG 此处,我们使用node1.fek上nginx模拟需要采集日志的应用,nginx日志位于/usr/local/nginx/logs目录

mkdir -p /opt/flume/
cd /opt/flume/
wget http://mirror.bit.edu.cn/apache/flume/1.8.0/apache-flume-1.8.0-bin.tar.gz
tar -zxvf apache-flume-1.8.0-bin.tar.gz

配置flume-fek.conf,可以配置Spooling Directory Source(监听一个目录)或 Exec Source(监听一个文件)

#Spooling Directory Source
agent.sources = sc_nginx
agent.channels = cl_nginx
agent.sinks = sk_nginx

agent.sources.sc_nginx.type = spooldir
agent.sources.sc_nginx.spoolDir = /usr/local/nginx/logs
agent.sources.sc_nginx.fileHeader = true


agent.channels.cl_nginx.type = memory
agent.channels.cl_nginx.capacity = 1000
agent.channels.cl_nginx.transactionCapacity = 100

agent1.sinks.sk_nginx.type = org.apache.flume.sink.kafka.KafkaSink
agent1.sinks.sk_nginx.kafka.topic = fek_topic
agent1.sinks.sk_nginx.kafka.bootstrap.servers = 192.168.2.151:9092,192.168.2.152:9092,192.168.2.153:9092
agent1.sinks.sk_nginx.kafka.flumeBatchSize = 20
agent1.sinks.sk_nginx.kafka.producer.acks = 1
agent1.sinks.sk_nginx.kafka.producer.linger.ms = 1
agent1.sinks.sk_nginx.kafka.producer.compression.type = snappy


agent.sources.sc_nginx.channels = cl_nginx
agent.sinks.sk_nginx.channel = cl_nginx

#Exec Source
agent.sources = sc_nginx
agent.channels = cl_nginx
agent.sinks = sk_nginx

agent.sources.sc_nginx.type = exec
agent.sources.sc_nginx.command = tail -F /usr/local/nginx/logs/access.log

agent.channels.cl_nginx.type = memory
agent.channels.cl_nginx.capacity = 1000
agent.channels.cl_nginx.transactionCapacity = 100

agent1.sinks.sk_nginx.type = org.apache.flume.sink.kafka.KafkaSink
agent1.sinks.sk_nginx.kafka.topic = fek_topic
agent1.sinks.sk_nginx.kafka.bootstrap.servers = 192.168.2.151:9092,192.168.2.152:9092,192.168.2.153:9092
agent1.sinks.sk_nginx.kafka.flumeBatchSize = 20
agent1.sinks.sk_nginx.kafka.producer.acks = 1
agent1.sinks.sk_nginx.kafka.producer.linger.ms = 1
agent1.sinks.sk_nginx.kafka.producer.compression.type = snappy


agent.sources.sc_nginx.channels = cl_nginx
agent.sinks.sk_nginx.channel = cl_nginx

配置文件说明:

配置项名称作用举例
agent1flume节点名称,启动时通过参数命令-name指定
agent1.sources监听的源,可以有多个,空格隔开即可,用于收集数据并发送到channelagent1.sources=s1 s2
agent1.channels临时通道,可以有多个,空格隔开,存放source收集的数据,sink从这里读取数据agent1.channels=c1
agent1.sinks接收器,可以有多个,空格隔开,从channel读取数据,并发送给目标 (比如kafka 或者hdfs或者另一个flume)agent1.sinks=k1
agent.sources.s1.type源的类型,s1是源名称,可以是目录、日志文件、或者监听端口等。 常用的source的类型包括avro、exec、netcat、spooldir和syslog等. 具体请参考官网 http://flume.apache.org/FlumeUserGuide.html#flume-sourcesagent.sources.s1.type=spooldir agent.sources.s2.type=avro
agent1.sources.s1.channels监听数据要写入的channel名称agent1.sources.s1.channels=c1
agent1.channels.c1.type通道的类型,c1为通道名称,此处memory表示为常用的memory-channel, 同时也有其他类型的channel,如JDBC、file-channel、custom-channel等, 具体请参考官网 http://flume.apache.org/FlumeUserGuide.html#flume-channelsagent1.channels.c1.type=memory
agent1.sinks.k1.type接收器类型,k1为接收器名称,logger表示直接写入日志, 常用的包括avro、logger、HDFS、Hbase以及file-roll等, 具体参考官网 http://flume.apache.org/FlumeUserGuide.html#flume-sinksagent1.sinks.k1.type=logger

2. 启动FlumeNG

cd /opt/flume/apache-flume-1.8.0/
mkdir -p /opt/flume/apache-flume-1.8.0/logs
bin/flume-ng agent --conf ./conf/ -f conf/flume-fek.conf -n agent > ./logs/start.log 2>&1 &

启动命令参数说明:

参数作用举例
–conf 或 -c指定配置文件夹,包含flume-env.sh和log4j的配置文件–conf conf
–conf-file 或 -f配置文件地址--conf-file conf/flume.conf
–name 或 -nagent(flume节点)名称--name agent1

Kibana安装

在master.fek上安装Kibana

mkdir -p /opt/kibana/
cd /opt/kibana/
wget https://artifacts.elastic.co/downloads/kibana/kibana-6.3.0-linux-x86_64.tar.gz
tar -zxvf kibana-6.3.0-linux-x86_64.tar.gz
mv kibana-6.3.0-linux-x86_64 kibana-6.3.0

编辑kibana-6.3.0/config/kibana.yml

#配置本机ip  
server.host: "master.fek"
#配置es集群url  
elasticsearch.url: "http://192.168.2.163:9200"

启动

cd kibana-6.3.0//bin

./kibana &

访问:http://192.168.2.163:5061 avatar

© 著作权归作者所有

共有 人打赏支持
张shieppp
粉丝 1
博文 8
码字总数 9543
作品 0
浦东
架构师
Mysql事务和Mysql 日志

事务特性 1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。 2、一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏...

SibylY
05/08
0
0
日志分析系统--Sevnote

系统笔记 Sevnote 是使用 NodeJS 开发的基于 Elasticsearch 的海量日志分析系统,能通过主机,设备,程序,优先级,关键字来过滤系统日志,更有动态仪表盘能实时的监控日志的产生。支持 Sysl...

帽子戏法
2015/02/28
10.3K
4
MSSQL · 实现分析 · SQL Server实现审计日志的方案探索

摘要 这篇文章介绍四种实现MSSQL Server审计日志功能的方法探索,即解析数据库事务日志、SQL Profiler、SQL Audit以及Extended Event。详细介绍了这四种方法的具体实现,以及通过优缺点的对比...

阿里云RDS-数据库内核组
2017/06/07
0
0
NAT日志查询分析系统基于nosql

目前每天产生的日志文件大小约45GB(压缩后为6GB),NAT日志条目接近1千万条。保留60天的日志文件大小近2.5TB,日志条目近6亿条。 主要研究内容包括1)海量日志信息的noSQL非关系型数据库存储...

bluetears19882012
2012/12/24
753
0
一篇文章让你读懂ELK在CDN质量监控中的价值

一篇文章让你读懂ELK在CDN质量监控中的价值灵活调配ELK,适应大数据场景 数说事实 在开篇之前,先简单的列举下我们线上ELK的真实数据。目前自建的ELK集群主要接入了自建CDN的日志,以及多个应...

Yennis
2016/10/31
151
0
Winform开发框架之权限管理系统的改进

权限管理系统,一直是很多Mis系统和一些常见的管理系统所需要的,所以一般可以作为独立的模块进行开发,需要的时候进行整合即可,不需要每次从头开发,除非特殊的系统需求。我在Winform开发框...

walb呀
2017/12/04
0
0
mysql高可用架构设计,处理高并发,大流量!

  主要介绍:复制功能介绍、mysql二进制日志、mysql复制拓扑、高可用框架、单点故障、读写分离和负载均衡介绍等   mysql复制功能介绍   mysql复制功能提供分担读负载   复制解决的问...

思梦教育
06/26
0
0
分布式应用日志管理--Log4Grid

Log4Grid 是一款开源分布式应用监控和日志管理系统,通过该系统可以实时查看每个应用的进程情况外还能看到相应用户记录的程序处理日志信息。为了保证不对用户现有程序的改动,Log4Grid提供相...

泥水佬
2014/04/08
3.3K
1
Solaris、Sco 、Mac OS系统日志分析工具

Solaris、Mac OS系统日志分析工具 本文以PC服务器上常见的几种UNIX系统例如Solaris、Mac OS以及Sco Openserver系统为例如何在它们这些平台下查找系统日志。 一、用SMC分析系统日志 我们知道L...

OSSIM
2015/08/07
0
0
如何筹建公司的大数据分析系统(一)

浅谈下,如标题这个问题: 随着大数据被不停的挖掘,每天有态度的人利用用户数据信息,产生巨大的商业价值,以及风险告警,在筹建大数据分析系统时,大家都很热衷新的东西,在做公司架构体系...

凛冬一壶酒
2017/09/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

SpringBoot | 第十章:Swagger2的集成和使用

前言 前一章节介绍了mybatisPlus的集成和简单使用,本章节开始接着上一章节的用户表,进行Swagger2的集成。现在都奉行前后端分离开发和微服务大行其道,分微服务及前后端分离后,前后端开发的...

oKong
今天
2
0
Python 最小二乘法 拟合 二次曲线

Python 二次拟合 随机生成数据,并且加上噪声干扰 构造需要拟合的函数形式,使用最小二乘法进行拟合 输出拟合后的参数 将拟合后的函数与原始数据绘图后进行对比 import numpy as npimport...

阿豪boy
今天
1
0
云拿 无人便利店

附近(上海市-航南路)开了家无人便利店.特意进去体验了一下.下面把自己看到的跟大家分享下. 经得现场工作人员同意后拍了几张照片.从外面看是这样.店门口的指导里强调:不要一次扫码多个人进入....

周翔
昨天
1
0
Java设计模式学习之工厂模式

在Java(或者叫做面向对象语言)的世界中,工厂模式被广泛应用于项目中,也许你并没有听说过,不过也许你已经在使用了。 简单来说,工厂模式的出现源于增加程序序的可扩展性,降低耦合度。之...

路小磊
昨天
161
1
npm profile 新功能介绍

转载地址 npm profile 新功能介绍 npm新版本新推来一个功能,npm profile,这个可以更改自己简介信息的命令,以后可以不用去登录网站来修改自己的简介了 具体的这个功能的支持大概是在6这个版...

durban
昨天
1
0
Serial2Ethernet Bi-redirection

Serial Tool Serial Tool is a utility for developing serial communications, custom protocols or device testing. You can set up bytes to send accordingly to your protocol and save......

zungyiu
昨天
1
0
python里求解物理学上的双弹簧质能系统

物理的模型如下: 在这个系统里有两个物体,它们的质量分别是m1和m2,被两个弹簧连接在一起,伸缩系统为k1和k2,左端固定。假定没有外力时,两个弹簧的长度为L1和L2。 由于两物体有重力,那么...

wangxuwei
昨天
0
0
apolloxlua 介绍

##项目介绍 apolloxlua 目前支持javascript到lua的翻译。可以在openresty和luajit里使用。这个工具分为两种模式, 一种是web模式,可以通过网页使用。另外一种是tool模式, 通常作为大规模翻...

钟元OSS
昨天
2
0
Mybatis入门

简介: 定义:Mybatis是一个支持普通SQL查询、存储过程和高级映射的持久层框架。 途径:MyBatis通过XML文件或者注解的形式配置映射,实现数据库查询。 特性:动态SQL语句。 文件结构:Mybat...

霍淇滨
昨天
2
0
开发技术瓶颈期,如何突破

前言 读书、学习的那些事情,以前我也陆续叨叨了不少,但总觉得 “学习方法” 就是一个永远在路上的话题。个人的能力、经验积累与习惯方法不尽相同,而且一篇文章甚至一本书都很难将学习方法...

_小迷糊
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部