当前位置:首页 » 存储配置 » 日志存储项目

日志存储项目

发布时间: 2022-10-16 14:28:52

❶ 如何实现日志的集中化存储

在我们的企业中有多种不同的设备,服务器、交换机、防火墙以及路由器等等设备,而这些设备会产生大量的日志。如果网络中出现故障时,如果一台一台的去查询日志,那工作量就太大了,而且不容易查询。所以最好的办法就是日志集中收集存储。
Windows系统有自带的WMI服务,通过该服服务就可以远程收集windows系统的日志。网络设备的日志通常是基于syslog日志的转发。通过这种技术将日志统一的发送集中到一台服务器上。在这台服务器上使用工具接收发送过来的数据,将其保存为文本文件,集中的保存日志。
卓豪EventLog Analyzer就是一个专门针对日志管理的工具,可以对企业中各种设备日志的统一收集存储并分析。

❷ 如何实现日志的集中化存储以及使用loganalyzer做日志分析

一、安装Mysql数据库
选择使用编译好的二进制格式的MySQL程序包

1

mysql-5.5.22-linux2.6-i686.tar.gz

1、创建MySQL的数据存放位置
为了备份日志方便把数据放在LVM卷中。还可以利用LVM的扩容功能,当我们的空间不够使用时。
查看,已经存在的卷组是否还有剩余空间,来创建LV。

1
2
3

[root@mysql local]# vgdisplay | grep -i"PE[[:space:]]*/[[:space:]]*Size"
Alloc PE / Size 6656 / 52.00GiB
Free PE / Size 1023 / 7.99 GiB

说明:还有7.99GB,空间可以创建LV。
注意:
如果存在的文件很大的话,见议我们在创建逻辑卷时最好把PE的大小设置大点。

创建LV

1
2
3
4

root@mysql local]# lvcreate -L 4G -n loglv vg0
Logical volume "loglv" created
[root@mysql local]# lvscan | grep "loglv"
ACTIVE '/dev/vg0/loglv'[4.00 GiB] inherit

格式化逻辑卷loglv

1
2
3

[root@mysql local]# mke2fs -t ext4 -L LOGDATA /dev/vg0/loglv
[root@mysql local]# echo $?
0

挂载逻辑卷

设置开机自动挂载.编辑/etc/fstab文件增加下面一行。

1

/dev/mapper/vg0-loglv /logdata ext4 defaults 0 0

自动挂载测试

1
2
3

root@mysql local]# mount -a
[root@mysql local]# mount | grep"loglv"
/dev/mapper/vg0-loglv on /logdata type ext4(rw)

2、准备好安装MySQL数据库的必需条件
(1)、创建用户mysql,用来被始化数据库使用的。

说明:最好mysql是系统用户,这样就算mysql用户被人劫持,也无法登陆系统的。

1
2
3

[root@mysql local]# useradd -r mysql
[root@mysql local]# id mysql
uid=399(mysql) gid=399(mysql)groups=399(mysql)

(2)、设置MySQL数据库的数据存放位置:在/logdata中创建data,且属主属组为mysql

1
2
3
4

[root@mysql logdata]# mkdir data
[root@mysql logdata]# chown mysql:mysql./data/
[root@mysql logdata]# ll -d data
drwxr-xr-x 2 mysql mysql 4096 Aug 20 15:40data

3、安装MySQL数据库
(1)、把程序包解压到”/uer/local”目录,为了后续维护方便并创建一个软链接。

1
2
3
4
5
6

[root@mysql user]# tar -xfmysql-5.5.22-linux2.6-i686.tar.gz -C/usr/local/
[root@mysql user]# cd /usr/local/
[root@mysql local]# ln -svmysql-5.5.22-linux2.6-i686 mysql
`mysql' -> `mysql-5.5.22-linux2.6-i686'
[root@mysql local]# ll | grep mysql
lrwxrwxrwx 1 root root 26 Aug 20 15:03mysql -> mysql-5.5.22-linux2.6-i686

(2)、我们要以:mysql用户的身份来初始化数据库,要有权限操作一些文件所以要修改解压后Mysql程序的属主属组为mysql

1

[root@mysql mysql]# chown -R mysql:mysql./*

说明:安装完数据后,把属主改为:root
(3)、初始化数据库

1
2
3
4
5

[root@node1 mysql]#./scripts/mysql_install_db --datadir=/logdata/data --user=mysql
Installing MySQL system tables...
OK
Filling help tables...
OK

说明:

1
2

--datadir 指定数据库的数据目录的位置(不使用默认的位置)
--user 指定初始化数据库的用户名(使用二进制格式MySQL程序包一定要使用mysql)

(4)、根据物理机的硬件情况与实际需要选择MySQL的配置文件

1
2
3
4
5
6

[root@node1 mysql]# ll support-files/*.cnf
-rw-r--r-- 1 mysql mysql 4691 Mar 3 2012 support-files/my-huge.cnf
-rw-r--r-- 1 mysql mysql 19759 Mar 3 2012 support-files/my-innodb-heavy-4G.cnf
-rw-r--r-- 1 mysql mysql 4665 Mar 3 2012 support-files/my-large.cnf
-rw-r--r-- 1 mysql mysql 4676 Mar 3 2012 support-files/my-medium.cnf
-rw-r--r-- 1 mysql mysql 2840 Mar 3 2012 support-files/my-small.cnf

说明:
不同的配置文件,要求的内存都不一样。

复制配置文件到/etc/mysql 目录下,并命名为:my.cnf

1

[root@node1 mysql]# cp support-files/my-large.cnf /etc/mysql/my.cnf

4、启动MySQL数据库服务器之前要做的一些设置
(1)、修改MySQL的配置文件

1
2
3

[root@node1 mysql]# vim /etc/mysql/my.cnf
thread_concurrency = 4 设置线程数
datadir = /logdata/data 告诉MySQL服务器数据目录的位置

说明:
由于这些配置是作用于MySQL服务器的。要把它写在:[mysqld]段中。
(2)、复制启动MySQL数据库服务器的启动脚本,并命名为:mysqld

1

[root@node1 mysql]# cp support-files/mysql.server /etc/init.d/mysqld

检查是否执行权限

1
2

[root@node1 mysql]# ll /etc/init.d/mysqld
-rwxr-xr-x 1 root root 10650 Aug 20 15:55 /etc/init.d/mysqld

(3)、把mysqld服务启动脚本添加到chkconf的控制列表里,能够使用【server】命令控制服务的行为。 可以实现开机自动启动。

1
2
3

[root@node1 mysql]# chkconfig --add mysqld
[root@node1 mysql]# chkconfig --list mysqld
mysqld 0:off 1:off 2:on 3:on 4:on 5:on 6:off

5、启动MySQL数据库并修改设置用户
启动MySQL数据库服务器

1
2

[root@node1 mysql]# service mysqld start
Starting MySQL.. [ OK ]

查看监听端口

1
2

[root@node1 mysql]# netstat -anptl | grep mysqld
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 3041/mysqld

注意:

❸ 日志文件存放位置及配置文件有哪些

以DailyRollingFileAppender 为例:假设每天一个日志文件
有以下设置:

log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=app.log
log4j.appender.A1.DatePattern='.'yyyy-MM-dd
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d %5p - %c -%-4r [%t] - %m%n

此时生成日志文件将位于tomcat的bin目录下,如要将日志文件保存在 :根目录/web-info/logs/下,个人有以下4种解决方案:
1 绝对路径
log4j.appender.A1.File=D:\apache-tomcat-6.0.18/webapps/项目/WEB-INF/logs/app.log
但这种写法灵活性很差

以下3中使用相同的设置原理: jvm的环境变量
2:spring的Log4jConfigListener
通过以下配置:
< context-param>
<param-name>webAppRootKey</param-name>
<param-value>webApp.root</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
< listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
...
log4j.appender.logfile.File=${webApp.root}/WEB-INF/logs/app.log
...
来解决
2:使用已有jvm变量:
例如:
log4j.appender.logfile.File=${user.home}/logs/app.log
日志将位于:例如windows:C:\Documents and Settings\joe\logs\app.log

3 自己设置目录,也就是在项目启动时通过System.setProperty设置
通过实现ServletContextListener来解决:例如

public class log4jlistener implements ServletContextListener {
public static final String log4jdirkey = "log4jdir";
public void contextDestroyed(ServletContextEvent servletcontextevent) {
System.getProperties().remove(log4jdirkey);
}
public void contextInitialized(ServletContextEvent servletcontextevent) {
String log4jdir = servletcontextevent.getServletContext().getRealPath("/");
//System.out.println("log4jdir:"+log4jdir);
System.setProperty(log4jdirkey, log4jdir);
}
}
web.xml配置:

<listener>
<listener-class>com.log4j.log4jlistener</listener-class>
</listener>

log4j.prtperties 配置:
log4j.appender.A1.File=${log4jdir}/WEB-INF/logs/app1.log
来解决。

❹ Braft的日志存储引擎实现分析

日志存储引擎是用于存储raft lib产生的日志。提供的接口如下:

LogStorage只是一个抽象类,只定义了函数接口。具体的日志操作由SegmentLogStorage实现。

SegmentLogStorage实现了LogStorage的全部接口。其数据组织格式如下:

存储引擎的初始化操作主要检查文件信息,将segment的索引信息加载到内存,为读写操作做准备。

函数主要功能如下所述:

写数据到存储引擎,会涉及到两个函数:

append_entry表示追加单条Log Entry到日志存储引擎,append_entries用于同时追加多条Log Entry到日志存储引擎。两个函数主要流程相差不大,我们以append_entries为例,分析一下写入Log Entry的主要流程。函数流程图如下所示:

根据raft_index读取对应的raft Log,根据我们前面提到的索引信息,braft很容易实现,流程图如下所示:

get_entry是入口函数,get_segment函数主要是通过raft_index来定位到segment,通过之前建立的Map范围信息很容易定位到。然后根据每个segment的Vector索引数组,定位到raft_index对应的文件偏移信息。然后读取文件。

删除数据分为两类:

truncate_prefix函数先将first_index_kept保存到Log_meta文件中,这样保证了即使后续的文件删除操作失败时,也可以知道整个日志的起始raft_index是多少。保存完first_index_kept之后,将first_index_kept之前的segment文件全部删除。

主要用于raft lib中删除未达成一致的Log Entry。根据last_index_kept找到对应的文件偏移,然后截断文件。如果跨文件,还需要删除最后一个segment文件,然后再截断之前一个segment的内容。

在test/test_log.cpp文件中,包含SegmentLogStorage类中主要的接口函数的单元测试,对理解SegmentLogStorage有比较大的帮助。

Braft的日志存储引擎,主要用于存储raft log。当执行完一次snapshot操作后,就可以进行Log Compaction。将snapshot之前的raft log全部删除。这使得Braft可以将Log的索引信息全部存储在内存中,因为存储引擎中的Raft Log Entry不会太大。这样追加或读取Raft Log只需要一次磁盘操作,性能方面有保证。

❺ Oracle的日志文件存储在什么位置

1、通过sqlplus命令连接数据库,查看服务器是否已经开启归档。

❻ 深入理解kafka(五)日志存储

5.1文件目录布局
根目录下有以下5个checkpoint文件: cleaner-offset-checkpoint, log-start-offset-checkpoint, meta.properties, recovery-point-offset-checkpoint, replication-offset-checkpoint
分区目录下有以下目录: 0000xxx.index(偏移量为64位长整形,长度固定为20位), 0000xxx.log, 0000xxx.timeindex.
还有可能包含.deleted .cleaned .swap等临时文件, 以及可能的.snapshot .txnindex leader-epoch-checkpoint
5.2日志格式演变
5.2.1 v0版本
kafka0.10.0之前
RECORD_OVERHEAD包括offset(8B)和message size(4B)
RECORD包括:
crc32(4B):crc32校验值
magic(1B):消息版本号0
attributes(1B):消息属性。低3位表示压缩类型:0-NONE 1-GZIP 2-SNAPPY 3-LZ4(0.9.x引入)
key length(4B):表示消息的key的长度。-1代表null
key: 可选
value length(4B):实际消息体的长度。-1代表null
value: 消息体。可以为空,如墓碑消息
5.2.2 v1版本
kafka0.10.0-0.11.0
比v0多了timestamp(8B)字段,表示消息的时间戳
attributes的第4位也被利用起来,0表示timestamp的类型为CreateTime,1表示timestamp的类型为LogAppendTime
timestamp类型由broker端参数log.message.timestamp.type来配置,默认为CreateTime,即采用生产者创建的时间戳
5.2.3 消息压缩
保证端到端的压缩,服务端配置compression.type,默认为"procer",表示保留生产者使用的压缩方式,还可以配置为"gzip","snappy","lz4"
多条消息压缩至value字段,以提高压缩率
5.2.4 变长字段
变长整形(Varints):每一个字节都有一个位于最高位的msb位(most significant bit),除了最后一个字节为1,其余都为0,字节倒序排列
为了使编码更加高效,Varints使用ZigZag编码:sint32对应 (n<<1)^(n>>31) sint64对应 (n<<1)^(n>>63)
5.2.5 v2版本
Record Batch
first offset:
length:
partition leader epoch:
magic:固定为2
attributes:两个字节。低3位表示压缩格式,第4位表示时间戳类型,第5位表示事务(0-非事务1-事务),第6位控制消息(0-非控制1控制)
first timestamp:
max timestamp:
procer id:
procer epoch:
first sequence:
records count:
v2版本的消息去掉了crc字段,另外增加了length(消息总长度)、timestamp delta(时间戳增量)、offset delta(位移增量)和headers信息,并且弃用了attributes
Record
length:
attributes:弃用,但仍占据1B
timestamp delta:
offset delta:
headers:
5.3日志索引
稀疏索引(sparse index):每当写入一定量(broker端参数log.index.interval.bytes指定,默认为4096B),偏移量索引文件和时间索引文件分别对应一个索引项
日志段切分策略:
1.大小超过broker端参数log.segment.bytes配置的值,默认为1073741824(1GB)
2.当前日志段消息的最大时间戳与当前系统的时间戳差值大于log.roll.ms或者log.roll.hours,ms优先级高,默认log.roll.hours=168(7天)
3.索引文件或者时间戳索引文件的大小大于log.index.size.max.bytes配置的值,默认为10485760(10MB)
4.偏移量差值(offset-baseOffset)>Integer.MAX_VALUE
5.3.1 偏移量索引
每个索引项占用8个字节,分为两个部分:1.relativeOffset相对偏移量(4B) 2.position物理地址(4B)
使用kafka-mp-log.sh脚本来解析.index文件(包括.timeindex、.snapshot、.txnindex等文件),如下:
bin/kafka-mp-log.sh --files /tmp/kafka-logs/topicId-0/00……00.index
如果broker端参数log.index.size.max.bytes不是8的倍数,内部会自动转换为8的倍数
5.3.2 时间戳索引
每个索引项占用12个字节,分为两个部分:1.timestamp当前日志分段的最大时间戳(12B) 2.relativeOffset时间戳对应的相对偏移量(4B)
如果broker端参数log.index.size.max.bytes不是12的倍数,内部会自动转换为12的倍数
5.4日志清理
日志清理策略可以控制到主题级别
5.4.1 日志删除
broker端参数log.cleanup.policy设置为delete(默认为delete)
检测周期broker端参数log.retention.check.interval.ms=300000(默认5分钟)
1.基于时间
broker端参数log.retention.hours,log.retention.minutes,log.retention.ms,优先级ms>minutes>hours
删除时先增加.delete后缀,延迟删除根据file.delete.delay.ms(默认60000)配置
2.基于日志大小
日志总大小为broker端参数log.retention.bytes(默认为-1,表示无穷大)
日志段大小为broker端参数log.segment.bytes(默认为1073741824,1GB)
3.基于日志起始偏移量
DeleteRecordRequest请求
1.KafkaAdminClient的deleteRecord()
2.kafka-delete-record.sh脚本
5.4.2 日志压缩
broker端参数log.cleanup.policy设置为compact,且log.cleaner.enable设置为true(默认为true)
5.5磁盘存储
相关测试:一个由6块7200r/min的RAID-5阵列组成的磁盘簇的线性写入600MB/s,随机写入100KB/s,随机内存写入400MB/s,线性内存3.6GB/s
5.5.1 页缓存
Linux操作系统的vm.dirty_background_ratio参数用来指定脏页数量达到系统的百分比之后就触发pdflush/flush/kdmflush,一般小于10,不建议为0
vm.dirty_ratio表示脏页百分比之后刷盘,但是阻塞新IO请求
kafka同样提供同步刷盘及间断性强制刷盘(fsync)功能,可以通过log.flush.interval.messages、log.flush.interval.ms等参数来控制
kafka不建议使用swap分区,vm.swappiness参数上限为100,下限为0,建议设置为1
5.5.2 磁盘I/O流程
一般磁盘IO的场景有以下4种:
1.用户调用标准C库进行IO操作,数据流为:应用程序Buffer->C库标准IOBuffer->文件系统也缓存->通过具体文件系统到磁盘
2.用户调用文件IO,数据流为:应用程序Buffer->文件系统也缓存->通过具体文件系统到磁盘
3.用户打开文件时使用O_DIRECT,绕过页缓存直接读写磁盘
4.用户使用类似dd工具,并使用direct参数,绕过系统cache与文件系统直接读写磁盘
Linux系统中IO调度策略有4种:
1.NOOP:no operation
2.CFQ
3.DEADLINE
4.ANTICIPATORY
5.5.3 零拷贝
指数据直接从磁盘文件复制到网卡设备中,不需要经应用程序
对linux而言依赖于底层的sendfile()
java而言,FileChannal.transferTo()的底层实现就是sendfile()

❼ SSH项目中,日志如何实现,日志信息存储在何处谢谢

用log4j
log4j.rootLogger=DEBUG,CONSOLE,DATABASE,FILE
log4j.addivity.org.apache=true

# 应用于控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Threshold=INFO
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.Encoding=GBK
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

# 用于数据库
log4j.appender.DATABASE=org.apache.log4j.jdbc.JDBCAppender
log4j.appender.DATABASE.URL=jdbc:oracle:thin:@192.168.0.103:1521:ORCL
log4j.appender.DATABASE.driver=oracle.jdbc.driver.OracleDriver
log4j.appender.DATABASE.user=Nation
log4j.appender.DATABASE.password=1
log4j.appender.CONSOLE.Threshold=WARN
log4j.appender.DATABASE.sql=INSERT INTO LOG4J(stamp,thread, infolevel,class,messages) VALUES ('%d{yyyy-MM-dd HH:mm:ss}', '%t', '%p', '%l', '%m')
# INSERT INTO LOG4J (Message) VALUES ('[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n')
# 写入数据库中的表LOG4J的Message字段中,内容%d(日期)%c: 日志信息所在地(类名)%p: 日志信息级别%m: 产生的日志具体信息 %n: 输出日志信息换行
log4j.appender.DATABASE.layout=org.apache.log4j.PatternLayout
log4j.appender.DATABASE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

# 每天新建日志
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.File=C:/log4j/log
log4j.appender.A1.Encoding=GBK
log4j.appender.A1.Threshold=DEBUG
log4j.appender.A1.DatePattern='.'yyyy-MM-dd
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L : %m%n

#应用于文件
log4j.appender.FILE=org.apache.log4j.FileAppender
log4j.appender.FILE.File=C:/log4j/file.log
log4j.appender.FILE.Append=false
log4j.appender.FILE.Encoding=GBK
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

# 应用于文件回滚
log4j.appender.ROLLING_FILE=org.apache.log4j.RollingFileAppender
log4j.appender.ROLLING_FILE.Threshold=ERROR
log4j.appender.ROLLING_FILE.File=rolling.log
log4j.appender.ROLLING_FILE.Append=true
log4j.appender.CONSOLE_FILE.Encoding=GBK
log4j.appender.ROLLING_FILE.MaxFileSize=10KB
log4j.appender.ROLLING_FILE.MaxBackupIndex=1
log4j.appender.ROLLING_FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.ROLLING_FILE.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

#自定义Appender
log4j.appender.im = net.cybercorlin.util.logger.appender.IMAppender
log4j.appender.im.host = mail.cybercorlin.net
log4j.appender.im.username = username
log4j.appender.im.password = password
log4j.appender.im.recipient = [email protected]
log4j.appender.im.layout=org.apache.log4j.PatternLayout
log4j.appender.im.layout.ConversionPattern =[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

#应用于socket
log4j.appender.SOCKET=org.apache.log4j.RollingFileAppender
log4j.appender.SOCKET.RemoteHost=localhost
log4j.appender.SOCKET.Port=5001
log4j.appender.SOCKET.LocationInfo=true
# Set up for Log Facter 5
log4j.appender.SOCKET.layout=org.apache.log4j.PatternLayout
log4j.appender.SOCET.layout.ConversionPattern=[start]%d{DATE}[DATE]%n%p[PRIORITY]%n%x[NDC]%n%t[THREAD]%n%c[CATEGORY]%n%m[MESSAGE]%n%n
# Log Factor 5 Appender
log4j.appender.LF5_APPENDER=org.apache.log4j.lf5.LF5Appender
log4j.appender.LF5_APPENDER.MaxNumberOfRecords=2000

# 发送日志给邮件
log4j.appender.MAIL=org.apache.log4j.net.SMTPAppender
log4j.appender.MAIL.Threshold=FATAL
log4j.appender.MAIL.BufferSize=10
[email protected]
log4j.appender.MAIL.SMTPHost=www.wusetu.com
log4j.appender.MAIL.Subject=Log4J Message
[email protected]
log4j.appender.MAIL.layout=org.apache.log4j.PatternLayout
log4j.appender.MAIL.layout.ConversionPattern=[framework] %d - %c -%-4r [%t] %-5p %c %x - %m%n

❽ 如何实现日志的集中化存储以及使用loganalyzer做日志分析

如何实现日志的集中化存储以及使用loganalyzer做日志分析
1、下载网站日志:

流程如下:主机独立控制面板——网站情报系统分析——网站日志——下载WebLog日志——右键点击查看,链接另存为

在主机独立控制面板中,找到网站情报系统分析板块,里面就能看到网站日志了,点击下载WebLog日志,能看到最近几天的网站日志,但是点击查看进去,会发现是一堆看不懂的代码,没有关系,我们先不要进去查看,而是右键点击查看,链接另存为,下载网站日志。
——————
2、代码看不懂的话,可以使用光年日志分析软件GnAnalyzer,这是一个可以帮助我们进行网站日志分析的软件。比如蜘蛛抓取的情况,日志里面都有显示。
——————
3、光年日志分析软件的使用:

下载好网站日志后,就可以使用光年日志分析软件进行网站日志的分析了。

流程如下:光年日志分析软件文件夹中的GnAnalyzer.exe——文件菜单,新建任务——添加(类型选择所有文件)——下一步,保存——马上分析
——————
4、网站日志分析:

马上分析后,就可以查看当天:蜘蛛分析(概要分析、目录抓取、页面抓取、IP排行);搜索引擎分析(关键字分析);状态码分析(用户状态码、蜘蛛状态码)的相关信息。

❾ 日志文件的写志数据如何存储

日志记录方式可以提供我们足够多定位问题的依据。对于一些复杂系统,例如数据库,日志可以承担数据备份、同步作用,很多分布式数据库都采用“write-ahead”方案,在节点数据同步时通过日志文件恢复数据。
日志文件是不推荐和数据库存储在同一个硬盘的,因为一旦硬盘坏了就会一起死掉。当然,如果已经使用了带容错的RAID,甚至是盘柜之类的设备,那么可以放在一起没有太大问题。
如果先写数据库,后写日志,但是在刚好写了数据库而未写日志的时候崩溃了,那么根据日志恢复出来的数据库就少了一条记录

❿ 如何设计日志采集存储分析的架构

如何设计日志采集存储分析的架构
架构方面:
□ Flume OG有三种角色的节点:代理节点agent、收集节点collector、主节点master
□ agent负责从各个数据源收集日志数据、将收集到的数据集中到collector,再由collector节点汇总存入到HDFS.而master负责管理agent\collector的活动
□ agent、collector都称为node,node的角色根据配置的不同分为逻辑节点和物理节点,对于逻辑节点的区分、配置、使用非常复杂.
□ agent、collector由source、sink组成,表示当前节点的数据从source传送到sink
以上相对于Flume NG来说:
□ Flume NG只有一种角色节点:代理节点agent
□ 没有collector、master节点,这是最核心的变化.
□ 去除逻辑节点和物理节点的概念和内容
□ agent节点的组成发生变化,由source 、sink、channel三个组件组成
Zookeeper方面:
□ Flume OG的稳定性依赖zookeeper,它需要zookeeper对其多类节点的工作进行管理,虽然OG可以使用内存的方式对各类节点进行管理,但需要用户忍受机器出现故障时信息丢失的出现.
□ Flume NG的节点角色数量由原来的3个缩减为1个,不存在多类角色的问题,所以不再需要zookeeper对各类节点协调的作用,由此脱离了对zookeeper的依赖.

热点内容
汽车官方配置表如何下载 发布:2025-05-14 06:21:41 浏览:799
停车项目源码 发布:2025-05-14 06:20:05 浏览:355
htc忘记密码怎么解锁 发布:2025-05-14 06:04:42 浏览:100
3d画廊android 发布:2025-05-14 06:03:54 浏览:970
为什么文件夹有锁 发布:2025-05-14 05:53:21 浏览:945
安卓手机哪个处理器是最好的 发布:2025-05-14 05:40:23 浏览:530
java语言实现 发布:2025-05-14 05:34:43 浏览:234
数控系统主轴配置参数有哪些 发布:2025-05-14 05:25:55 浏览:819
二级缓存微服务 发布:2025-05-14 05:13:55 浏览:101
sqlserverwhencase 发布:2025-05-14 05:11:35 浏览:435