β

KIDS安装以及配置

第四城社区 180 阅读
KIDS介绍 https://github.com/zhihu/kids
知乎开源的分布式日志聚合系统kids。「kids」是「Kids Is Data Stream」的递归缩写,采用 Scribe 的消息聚合模型和 Redis 的 pub/sub 模型。
1.实时订阅
2.分布式收集,集中存储
3.多线程模型
4.使用 Redis 协议
5.无第三方依赖
1.安装
编译 kids 需要 C++11 支持,如 GCC 4.7 或更高版本或 [Clang]( http://clang.llvm.org )
因此需要安装新版GCC、autoinfo以及automake。
yum install gcc gcc-c++ glibc-static -y
wget http://ftp.gnu.org/gnu/gcc/gcc-4.9.2/gcc-4.9.2.tar.gz
(wget http://ftp.gnu.org/gnu/gcc/gcc-4.8.4/gcc-4.8.4.tar.gz
cd gcc-4.9.2
./contrib/download_prerequisites
cd gmp ;mkdir build ;cd build
../configure –prefix=/usr/local/gcc/gmp-4.3.2
make && make install

cd ../../mpfr ;mkdir build ;cd build
../configure –prefix=/usr/local/gcc/mpfr-2.4.2 –with-gmp=/usr/local/gcc/gmp-4.3.2
make && make install

cd ../../mpc ;mkdir build ; cd build
../configure –prefix=/usr/local/gcc/mpc-0.8.1 –with-mpfr=/usr/local/gcc/mpfr-2.4.2 –with-gmp=/usr/local/gcc/gmp-4.3.2
make && make install

添加共享库路径,vim /etc/ld.so.conf文件,添加如下内容到文件中:
/usr/local/gcc/gmp-4.3.2/lib
/usr/local/gcc/mpfr-2.4.2/lib
/usr/local/gcc/mpc-0.8.1/lib
执行
ldconfig

cd ../.. ; mkdir build ; cd build
../configure –prefix=/usr/local/gcc –enable-threads=posix –disable-checking –enable-languages=c,c++ –disable-multilib
make && make install

卸载旧版本
yum -y remove gcc
yum -y remove gcc-c++
updatedb

链接到新版本
cd /usr/bin
ln -s /usr/local/gcc/bin/gcc gcc
ln -s /usr/local/gcc/bin/g++ g++
添加man帮助
vi /etc/man.config
添加gcc的man路径到配置文件中
MANPATH /usr/local/gcc/share/man

修改libstdc++.so.6软链

strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
发现不是最新的,查找
find  / -name “libstdc++.so.*”
cp /usr/local/gcc/lib64/libstdc++.so.6.0.20 /usr/lib64/
cd /usr/lib64
rm -f libstdc++.so.6
ln -s libstdc++.so.6.0.20 libstdc++.so.6
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

autoconf升级
wget http://tel19.cdn.119g.com/19/AE9E1AB046822007F25C88E1D8F2166E065DA8C2/autoconf-2.65.tar.gz
whereis autoconf #查看autoconf的路径
rpm -qf /usr/bin/autoconf #查看autoconf的版本
rpm -e –nodeps autoconf-2.59-12 #卸载原来版本
tar -zxf autoconf-2.65.tar.gz
cd autoconf-2.65
./configure –prefix=/usr
make && make install
rpm -qf /usr/bin/autoconf
rpm -qa | grep autoconf
/usr/bin/autoconf –help
/usr/bin/autoconf -V #查看是否安装成功

automake升级
wget http://down1.chinaunix.net/distfiles/automake-1.12.5.tar.xz
xz -d automake-1.12.5.tar.xz ;tar -xvf automake-1.12.5.tar
./configure && make && make install

kids安装

wget https://codeload.github.com/zhihu/kids/tar.gz/1.0.0
tar -zxvf 1.0.0
cd kids-1.0.0/
./autogen.sh
./configure # –prefix=/your/path
make
make test #optional
make install

默认情况下,kids 会被安装至 `/usr/local/bin/kids`,使用 `–prefix` 选项设置指定的安装位置,运行 `./configure –help` 获取更多设置选项。

测试启动kids
备份配置文件
mkdir /usr/local/kids
cp kids-1.0.0/samples/*.conf /usr/local/kids/
启动kids -c /usr/local/kids/service.conf
2.文件配置
[root@vm4 conf]# cat server.conf
nlimit pubsub 32MB 16MB 10min;
worker_threads 3;
#Worker 线程的数量,server除此之外会有 1 个负责调度的 master 线程和 1 个 storer 线程,对于 agent 一般只需要一个工作线程,将其设为 CPU 核数 – 1 能最大化 server 的处理能力。
max_clients  20;
#每个 host 的最大连接数,当 host 的连接数超过该值后,新建立的连接会被强制 close
log {
level info;
# Kids 自身的 log 等级,Level 可以根据以下状态设置debug, info, warning, error, critical, fatal。Debug 模式需要在编译时定义 LOGDEBUG
file /var/log/kids/kids-server.log;
#日志文件的存放位置, 设置为 stderr 会直接输出至命令行
}
listen {
#kids 的监听设置
host 192.168.0.225;
port 3388;
socket /var/run/kids.sock;
#host 和port为kids监听的域名和端口,socket为kids监听的sock文件
}
store file {
#日志的存储方式
path /data/logs/[topic]/[date];
name [time].log;
rotate 1hour;  # 时间单位支持hour与min
采用该配置后,kids 会将日志按照 /topic/date/time.log 的形式存储,每小时进行一次文件的切分
}
store network{
#网络存储,将日志通过网络转发至指定机器
host 192.168.0.230;
port 3388;
}
store null{
#空存储,不会对指定的日志进行任何存储,可与其它存储组合对指定日志进行过滤
topic kids.inoretopic;
}
store priority {
store null {
topic kids.ignoretopic1;
topic kids.ignoretopic2;
}
store network {
host kidsserver;
port 3388;
}
store file {
path /path/to/logs/[topic]/[date];
name [time].log;
rotate 1hour;
}
#日志按照配置文件中的顺序尝试存储,如果某一存储方式存储成功,则不再继续对该日志进行后续存储
#采用该配置后 kids 会忽略 kids.ignoretopic1 与 kids.ignoretopic2 的存储,对于其他 topic,会转发至 kidsserver:3388,若转发失败,会保存到指定文件中。
}
store buffer {
store network primary { # primary
host kidsserver;
port 3388;
}
store file secondary { # secondary
path /data/kidsbuf;
rotate 5min;
}
#BufferStore 使用 Primary 与 Secondary 两级存储, 当 Primary 存储出现异常时,会将日志缓存至 Secondary 存储中,当 Primary 恢复后,会将 Secondary 中的缓存重新存储至 Primary
}
store multiple {
success any;
# master
store buffer {
store network primary {
host kidsserver;
port 3388;
}
store file secondary {
path /tmp/kidsbuf;
rotate 10min;
}
}
# backup
store buffer {
store network primary {
host kidsbackup;
port 3388;
}
store file secondary {
path /tmp/kidsbuf2;
rotate 10min;
}
#MultipleStore 会将日志存储至多个位置,通过定义 success 的类型,判断存储的成功与失败
#success 的值可选 any 或者 all。
}
}
[root@vm3 conf]# cat agent.conf
ignore_case on;

nlimit pubsub 32MB 16MB 10min;

worker_threads 3;

log {
level info;
file /var/log/kids/kids-agent.log;
}

listen {
host 192.168.0.224;
port 3388;
socket /tmp/kids.sock;
}

store multiple {
success any;
# master
store buffer {
store network primary {
host 192.168.0.225;
port 3389;
}
store file secondary {
path /tmp/kidsbuf;
rotate 10min;
}
}

# backup
store buffer {
store network primary {
host 192.168.0.225;
port 3340;
}
store file secondary {
path /tmp/kidsbuf2;
rotate 10min;
}
}
}

作者:第四城社区
专注、思考、创新
原文地址:KIDS安装以及配置, 感谢原作者分享。

发表评论