├── 1 客户端所需jar包 ├── TestLog1.jar ├── json-simple-1.1.1.jar ├── log4j-1.2.15.jar ├── logstash-gelf-1.6.0.jar └── 客户端安装说明.md ├── 2 keepalived+lvs ├── Keepalived + Lvs 安装说明.md ├── LVS三种工作模式和10种调度算法介绍.txt ├── keepalived.conf └── udp_check.sh ├── 3 logstash ├── logstash 安装说明.md ├── logstash.conf └── realserver.sh ├── 4 elasticsearch ├── clear.sh └── elasticsearch 安装说明.md ├── 5 kibana └── kibana安装说明.md ├── Axure版 日志系统说明图.rp ├── ELK参考资料集合.md └── README.md /1 客户端所需jar包/TestLog1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renhua91/ELK_Tutorial/5a44fe580e237f09d740fc4232a92f743c7714b0/1 客户端所需jar包/TestLog1.jar -------------------------------------------------------------------------------- /1 客户端所需jar包/json-simple-1.1.1.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renhua91/ELK_Tutorial/5a44fe580e237f09d740fc4232a92f743c7714b0/1 客户端所需jar包/json-simple-1.1.1.jar -------------------------------------------------------------------------------- /1 客户端所需jar包/log4j-1.2.15.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renhua91/ELK_Tutorial/5a44fe580e237f09d740fc4232a92f743c7714b0/1 客户端所需jar包/log4j-1.2.15.jar -------------------------------------------------------------------------------- /1 客户端所需jar包/logstash-gelf-1.6.0.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renhua91/ELK_Tutorial/5a44fe580e237f09d740fc4232a92f743c7714b0/1 客户端所需jar包/logstash-gelf-1.6.0.jar -------------------------------------------------------------------------------- /1 客户端所需jar包/客户端安装说明.md: -------------------------------------------------------------------------------- 1 | #客户端安装说明 2 | 客户端即为模拟产生日志的一方 3 | 4 | 该目录下的jar包需要放在同一个目录下 5 | 6 | 请打开```TestLog1.jar``` 中的```log4j.properties```,修改其中的中文部分 7 | 8 | 最后运行 ```java -jar TestLog1.jar <运行时间,单位分钟> <日志频率,单位毫秒> ```命令来启动程序 9 | -------------------------------------------------------------------------------- /2 keepalived+lvs/Keepalived + Lvs 安装说明.md: -------------------------------------------------------------------------------- 1 | # Keepalived + Lvs 安装说明 2 | 3 | Keepalived + Lvs 主要是用于负载均衡 4 | 5 | 安装步骤: 6 | 7 | ```yum -y install ipvsadm``` 8 | 9 | ```yum -y install keepalived``` 10 | 11 | ```service iptables stop``` 12 | 13 | ```vi /etc/sysctl.conf``` 打开后修改里面```“net.ipv4.ip_forward = 1”``` 14 | 15 | 保存退出,执行如下命令使设置立即生效 ```sysctl -p``` 16 | 17 | 将```keepalived.conf、udp_check.sh``` 拷贝到```/etc/keepalived```目录下,修改```keepalived.conf``` 中对应的中文注释 18 | 19 | ```chmod 755 udp_check.sh``` 20 | 21 | ```chkconfig keepalived on``` 22 | 23 | ```service keepalived start``` 24 | 25 | 通过```ipvsadm -ln``` 查看目前lvs集群状态 26 | -------------------------------------------------------------------------------- /2 keepalived+lvs/LVS三种工作模式和10种调度算法介绍.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renhua91/ELK_Tutorial/5a44fe580e237f09d740fc4232a92f743c7714b0/2 keepalived+lvs/LVS三种工作模式和10种调度算法介绍.txt -------------------------------------------------------------------------------- /2 keepalived+lvs/keepalived.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renhua91/ELK_Tutorial/5a44fe580e237f09d740fc4232a92f743c7714b0/2 keepalived+lvs/keepalived.conf -------------------------------------------------------------------------------- /2 keepalived+lvs/udp_check.sh: -------------------------------------------------------------------------------- 1 | /usr/bin/nc -uz -w1 $1 $2 | grep succeeded >/dev/null 2 | exit $? -------------------------------------------------------------------------------- /3 logstash/logstash 安装说明.md: -------------------------------------------------------------------------------- 1 | # logstash 安装说明 2 | 3 | ```logstash``` 为后端实际处理日志的服务器,需要配置虚拟IP 4 | 5 | 故先将```realserver.sh``` 拷贝到```/etc/init.d/```下,修改其中的中文注释 6 | 7 | 执行 ```service iptables stop``` 8 | 9 | ```service realserver start``` 命令,后通过```ifconfig``` 查看```lo:0 ```网卡的```inet addr``` 是否已经是虚拟IP的地址 10 | 11 | 最后将```logstash.conf``` 拷贝到```logstash/bin```目录下,修改其中的中文注释 12 | 13 | 执行 ```nohup ./logstash -f logstash.conf > /dev/null 2>&1 &```来启动logstash应用 14 | 15 | 16 | **注意**:```logstash```集群中的每台机器的系统时间要求全部一致,不然从```kibana```中查询日志时会出现顺序出错的情况,甚至会在当天的数据中搜索不到。 17 | -------------------------------------------------------------------------------- /3 logstash/logstash.conf: -------------------------------------------------------------------------------- 1 | input { 2 | 3 | gelf { } 4 | } 5 | 6 | output { 7 | 8 | elasticsearch { 9 | cluster => "elasticsearch名字" 10 | host => "127.0.0.1" 11 | } 12 | 13 | } 14 | -------------------------------------------------------------------------------- /3 logstash/realserver.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renhua91/ELK_Tutorial/5a44fe580e237f09d740fc4232a92f743c7714b0/3 logstash/realserver.sh -------------------------------------------------------------------------------- /4 elasticsearch/clear.sh: -------------------------------------------------------------------------------- 1 | 2 | #!/bin/sh 3 | 4 | # 5 | #elasticsearch的清理+优化倒排索引脚本 6 | # 7 | # 8 | 9 | curator --host 127.0.0.1 delete indices --index .logstash- --older-than 7 --time-unit days --timestring %Y.%m.%d // 这一行就是删除7天前的数据 10 | 11 | curator --timeout 36000 --host 127.0.0.1 optimize --max_num_segments 1 indices --older-than 1 --time-unit days --timestring '%Y.%m.%d' --prefix logstash- //这一行是优化当天的倒排索引文件,提高搜索效率 12 | 13 | echo "delete successed!" 14 | -------------------------------------------------------------------------------- /4 elasticsearch/elasticsearch 安装说明.md: -------------------------------------------------------------------------------- 1 | # elasticsearch 安装说明 2 | 3 | ```elasticsearch``` 即为后端存储日志的地方 4 | 5 | 环境需要**jdk1.7** 6 | 7 | 修改```config/elasticsearch.yml``` 8 | 9 | 1.cluster_name //保证elasticsearch 集群在本网段是唯一的 10 | 11 | 2.discovery.zen.ping.timeout: 10s //修改心跳频率为10s 12 | 13 | 通过执行bin目录下的```nohup ./elasticsearch &``` 命令来启动程序 14 | -------------------------------------------------------------------------------- /5 kibana/kibana安装说明.md: -------------------------------------------------------------------------------- 1 | #kibana 安装说明 2 | 3 | ```kibana``` 即为最后观察日志的**web**程序 4 | 5 | 通过执行bin目录下的```nohup ./kibana &``` 来启动程序 6 | 7 | kibana的默认端口是5601,如果需要改kibana的启动端口,则需要去config目录下修改kibana.yml配置文件 ```port:改为你想要的端口既可``` 8 | 9 | 更详细的使用教程也可以参考[ELKstack中文指南](https://www.gitbook.com/book/chenryn/kibana-guide-cn/details) 10 | -------------------------------------------------------------------------------- /Axure版 日志系统说明图.rp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/renhua91/ELK_Tutorial/5a44fe580e237f09d740fc4232a92f743c7714b0/Axure版 日志系统说明图.rp -------------------------------------------------------------------------------- /ELK参考资料集合.md: -------------------------------------------------------------------------------- 1 | ##参考资料 2 | 1. [ELKstack 中文指南](https://www.gitbook.com/book/chenryn/kibana-guide-cn/details) 3 | 2. [Elasticsearch服务器开发(第二版)](http://www.ituring.com.cn/tupubarticle/1620#) 4 | 3. [Elasticsearch+Logstash+Kibana教程](http://www.cnblogs.com/xing901022/p/4704319.html) 5 | 4. 新浪:我们如何扛下32亿条实时日志的分析处理 6 | 5. 携程:ELK日志分析平台深耕之路 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ELK_Tutorial 2 | ELK日志收集(UDP+LVS)集群的部署教程 3 | 4 | 为了更好的收集线上服务器的应用日志,迅速定位集群中的问题服务器,我们采用了```logstash + elasticsearch + kibana``` 的方案, 5 | 利用```log4j``` 的```appender``` 将远程服务器的日志以UDP协议实时发送到日志服务器,并通过```LVS+Keepalived``` 方式做负载均衡,建立一个可横向扩展的高可用日志分析系统。我们利用这个系统,排查出很多在生产环境下出现的应用错误,并通过对ELK的调优,使得单台机器支持亿级别的日志全文搜索。同时还编写自动程序定期从elasticsearch中获取数据,当某一时段内错误数达到一定的值时,统计错误类型,绘制相关图表,汇总集群服务器出错情况,会执行邮件报警通知相关人员,并给出快速的解决方案。 6 | 7 | 集群架构图如下: 8 | 9 | ![](http://renhua91.github.io/images/jiagoutu.jpg) 10 | 11 | 集群搭建方法请参考ELK_Tutorial项目各文件夹中的**安装说明.md** 12 | 13 | 最终的系统使用效果图如下: 14 | ![](http://renhua91.github.io/images/tongji.png) 15 | 16 | 客户端应用接入步骤:打开应用的**log4j.properties**文件,加入下面的配置: 17 | ```java 18 | log4j.rootLogger=ERROR,fileout,gelf 19 | log4j.appender.gelf=biz.paluch.logging.gelf.log4j.GelfLogAppender 20 | log4j.appender.gelf.Threshold=ERROR 21 | log4j.appender.gelf.Host=udp:日志收集服务器ip 22 | log4j.appender.gelf.Port=12201 23 | log4j.appender.gelf.Version=1.0 24 | log4j.appender.gelf.Facility=您的应用名#您的负责人名(拼音,将用于邮件通知,多人用英文逗号隔开) 25 | log4j.appender.gelf.TimestampPattern=yyyy-MM-dd HH:mm:ss,SSSS 26 | log4j.appender.gelf.MaximumMessageSize=8192 27 | log4j.appender.gelf.extractStackTrace=true 28 | ``` 29 | 30 | 依赖包 **logstash-gelf-1.6.0.jar**、**json-simple-1.1.1.jar** 可以从**客户端所需jar包**文件夹中下载,也可以从maven仓库中下载 31 | ```maven 32 | 33 | biz.paluch.logging 34 | logstash-gelf 35 | 1.6.0 36 | 37 | ``` 38 | ELK官方下载地址:[Elasticsearch下载](https://www.elastic.co/downloads/elasticsearch)、[Logstash下载](https://www.elastic.co/downloads/logstash)、[Kibana下载](https://www.elastic.co/downloads/kibana) 39 | --------------------------------------------------------------------------------