基于elasticsearch+kibana的日志监控管理平台

最近为了方便监控线上服务的运行情况,在centos6.7上折腾部署了一套管理查看日志的服务,

1 简要概括:

本次考虑到的统计监控的日志来源有如下几种:

a java业务系统运行过程中产生告警日志(logback产生)
b 经过nginx转发的访问日志access.log
c 通过metricbeat主动采集的服务器系统运行日志

数据收集引擎:logstash(因为有些日志需要过滤,分析等二次加工一下方便使用)

归档服务:elasticsearch(能对大容量的数据进行接近实时的存储,搜索,分析)

可视化平台:kibana (通过WEB图表方式直观展示)

我目前用到的日志采集流水线有3种:

1 logback->logstash->elasticsearch->kibana

2 nginx->filebeat->logstash->elasticsearch->kibana

3 metricbeat->elasticsearch->kibana

2  nginx 日志输出格式配置

默认nginx已经正常部署运行:

修改nginx.conf中的log_format 格式如下:

log_format  main  '$remote_addr - [$time_local] $http_host $request_method "$uri" "$query_string" '

                  '$status $request_length $body_bytes_sent $upstream_status $upstream_addr $request_time $upstream_response_time '

                  '"$http_user_agent" "$http_cookie" "$http_x_forwarded_for" "$http_referer"' ;

nginx -t 检测语法是否正确

nginx -s reload 配置刷新使之生效

 

后面步骤需要用filebeat去同步更新access.log文件

3 java中logback配置

前提是工程需要用logback来管理日志输出,我这里是用maven来管理工程中的jar包依赖,需要额外增加这个包

 

logback.xml配置如下:

 

 

增加几行配置即可,侵入性非常小,日志内容也是异步传输,对正常业务逻辑影响较小。上面的customerFields可有可无,level可按实际情况设置成WARN或者ERROR

 

4 filebeat服务程序配置部署

访问官网,目前我只用到前2个采集器

 

找到最新的下载地址,放到自己的用户目录下

https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-6.2.3-linux-x86_64.tar.gz

解压后对配置文件稍加修改就可直接使用了

修改filebeat.yml配置

 

 

1指定监控的文件路径

2 注释掉output.elasticsearch

3 填写连接output.logstash的地址(我用了普通的连接,正式环境最好考虑在连接的时候加上证书校验)

4 nohup ./filebeat -e -c filebeat.yml > nohup.log 2>&1 &

5 tail -f nohup.log 查看启动情况

5 metricbeat服务程序配置部署

https://artifacts.elastic.co/downloads/beats/metricbeat/metricbeat-6.2.3-linux-x86_64.tar.gz

修改metricbeat.xml

 

 

1 根据不同的服务器,填写不同的name和tags的值

2 采用默认的配置直接接入elasticsearch,不需要经过logstash数据分析

3 同理最好采用ssl证书方式连接

4 nohup ./metricbeat -e -c metricbeat.yml > nohup.log 2>&1 &

6 logstash服务配置及部署

 需要注意JDK版本 Java 8 is required for Logstash 6.x and 5.x

官方下载地址:https://artifacts.elastic.co/downloads/logstash/logstash-6.2.3.tar.gz

解压到自己的目录

修改logstash.conf如下:

输入流

 

说明:5044端口监听的是通过filebeat传输过来的nginx日志,5033端口监听的是logback日志框架传输过来的日志

部分字符串内容二次加工

 

说明:

1 这个地方还有点搞不懂,本来我已经设置type=nginx,但是有些服务器nginx传输过来的type内容还是log了,目前我只能加2个类型判断

2 这个grok的message内容需要和nginx.conf配置的log_format一一对应起来,这里有一个在线语法编辑工具,可以一边写格式一边对照,说实话在找到这个工具之前我写这个格式是一点头绪都没有http://grokdebug.herokuapp.com/

3 为了把客户端的IP转成城市地址和经纬度信息,方便在监控地图中直观展示用户群分布等,当然这个经纬度字典库也需要不定时去下载数据 字典下载地址,http://geolite.maxmind.com/download/geoip/database/GeoLite2-City.tar.gz

4 把一些字段转换成数字类型,方便在监控图标中统计

5 对url做了个简单的decode,方便人眼观看

输出流

 

说明:

打印到控制台

转发到本机的9200端口的elasticsearch中,index名称务必要以logstash,一开始我手贱改了默认名字前缀,而程序里只有默认的logstash前缀的文件才会对location的类型转换处理。导致最后一步地图分布图标无法展示

 

bin/logstash -f logstash.conf &

7 elasticsearch服务配置及部署

如果上面这些步骤都是以root权限操作的话,那么到这一步要碰到麻烦了,因为这个elasticsearch服务的新版本强制不能在root下面运行

如何在指定用户下运行还得大费周折:可以参考如下配置

# groupadd elsearch

# useradd elsearch -g elsearch -p elasticsearch

# vi /etc/security/limits.conf

soft nofile 65536

hard nofile 131072

soft nproc 2048

hard nproc 4096

# vi /etc/security/limits.d/90-nproc.conf

soft nproc 2048

# vi /etc/sysctl.conf 

vm.max_map_count=655360

并执行命令:

# sysctl -p

经过这样设置基本是可以用了,每个人可能还不太一样

官方下载地址:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.3.tar.gz

解压后可以酌情修改config下面的jvm.options,修改config下面的network.host: 0.0.0.0,不然其他机器无法访问,我只配置一台机器一个实例,比较简单,其实还可以以集群方式运行。

./bin/elasticsearch

还有一个相对简单的安装方法

yum -y install elasticsearch

8 kibana服务部署及日志文件配置

这已经是最后一步了,需要统计分析的数据呢都已经准备好了,就看怎么呈现,就为了这个呈现的配置也得化不少时间啊

官网下载地址:https://artifacts.elastic.co/downloads/kibana/kibana-6.2.3-linux-x86_64.tar.gz

解压到用户自己的目录

编辑config/kibana.yml 这里我只改了elasticsearch服务的地址,当然最好再加上访问的密码

 

Run bin/kibana

如果一起顺利的话就可以在浏览器上打开kibana的控制台了

http://localhost:5601/app/kibana

 

接下来就是本步骤的重头戏了,首先我是找了官网的几个小视频例子看了看

第一步 先创建index pattern来发现日志文件

 

日志文件名称是步骤6上的output设置的,我这里创建有3种来源3种类型的4个index pattern

 

表示把所有logstash-log开头的文件都合并进来放到一起

最后要做的就是尝试话各种千奇百怪的图标了

图标1:步骤5中点request_time或upstream_response_time边上的三角形可以排序查看接口耗时


  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值