使用kibana可视化报表实时监控你的应用程序,从日志中找出问题,解决问题 - 一线码农 - 博客园

标签: | 发表时间:2019-07-29 18:05 | 作者:
出处:https://www.cnblogs.com

   先结果导向,来看我在kibana dashborad中制作的几张监控图。

 

一:先睹为快

dashboard1:监控几个维度的日志,这么点日志量是因为把无用的清理掉了,而且只接入了部分应用。

          <1>  每日日志总数。

          <2>  每日日志错误数,从log4net中level=ERROR抠出来的。

          <3>  每个应用贡献的日志量(按照应用程序分组)

          <4>  今日错误日志时间分布折线图。

          <5>  今日全量日志时间分布折线图。

   

dashboard2:这个主要用来监控某日智能精准触发的短信数和邮件数以及通道占比情况。

 

dashboard3: 某日发送的营销活动概况,一目了然。

 

        

二:采集注意事项

      接下来我们聊聊这个流程中注意的问题。

 

1.  使用fileBeat 清洗掉垃圾日志

      采集端使用的是filebeat,一个应用程序配置一个prospectors探测器。

#=========================== Filebeat prospectors =============================

filebeat.prospectors:

# Each - is a prospector. Most options can be set at the prospector level, so
# you can use different prospectors for various configurations.
# Below are the prospector specific configurations.



################## 1. IntelligentMarketing.Service3  ##################
- 
  enabled: true
  paths:
    D:\Services\channel3\log\*.log
  exclude_lines: ['^----------','重新排队,暂停 100。$']
  fields:
    appname: IntelligentMarketing.Service3
    ipnet: 10.153.204.199
    ippub: 121.41.176.41
  encoding: gbk
  multiline.pattern: ^(\s|[A-Z][a-z]|-)
  multiline.match: after


################## 2. IntelligentMarketing.Service4  ##################
- 
  enabled: true
  paths:
    D:\Services\channel4\log\*.log
  exclude_lines: ['^----------','重新排队,暂停 100。$']
  fields:
    appname: IntelligentMarketing.Service4
    ipnet: 10.153.204.199
    ippub: 121.41.176.41
  encoding: gbk
  multiline.pattern: ^(\s|[A-Z][a-z]|-)
  multiline.match: after

 

《1》 exclude_lines

            这个用来过滤掉我指定的垃圾日志,比如说以 ----------- 开头的 和  “重新排队,暂停100。”结尾的日志,反正正则怎么用,这里就怎么配吧,有一点注意,

尽量不要配置 contain模式的正则,比如: '.*暂未获取到任何mongodb记录*.'   这样会导致filebeat cpu爆高。

 

《2》 fields

        这个用于配置应用程序专属的一些信息,比如我配置了appname,内网ip,外网ip,方便做后期的日志检索,检索出来就是下面这样子。

    

 

《3》 multiline

         有时候应用程序会抛异常,就存在着如何合并多行信息的问题,我这里做的配置就是如果当前行是以‘空格’,‘字母‘ 和 ‘-’开头的,那么就直接合并到上

一行,比如下面这个Mongodb的FindALL异常堆栈。

 

2. logstash解析日志

      主要还是使用 grok 正则,比如下面这条日志,我需要提取出‘date’,‘threadID’,和 “ERROR” 这三个重要信息。

2017-11-13 00:00:36,904 [65] ERROR [xxx.Monitor.Worker:83] Tick [(null)] - 这是一些测试数据。。

   那么就可以使用如下的grok模式。

match => { "message" => "%{TIMESTAMP_ISO8601:logdate} \[%{NUMBER:threadId}\] %{LOGLEVEL:level}"}

   

    上面这段话的意思就是:提取出的时间给logdate,65给threadId,ERROR给level,然后整个内容整体给默认的message字段,下面是完整的logstash.yml。

input {
    beats {
       port => 5044
    }
}

filter {
    grok {
          match => { "message" => "%{TIMESTAMP_ISO8601:logdate} \[%{NUMBER:threadId}\] %{LOGLEVEL:level}"}
    }
    if ([message] =~ "^----------") {
      drop {}
    }
    date {
        match => ["logdate", "yyyy-MM-dd HH:mm:ss,SSS"]
      # target => "@timestamp"
        timezone => "Asia/Shanghai"
    }
    ruby {
       code => "event.timestamp.time.localtime"
    }
}

output {
  stdout {
   codec => rubydebug { }
  }

   elasticsearch {
       hosts => "10.132.166.225"
       index => "log-%{+YYYY.MM.dd}"
   }
  
}       

 

 

三: kibana制作

 1. 今日全量日志吞吐走势图

 

这个比较简单。因为本质上是一个聚合计算,aggreration按照 Date Histogram聚合即可。

 

2. 今日错误日志走势图

 

  这个相当于在上面那个按时间聚合分组之后,然后在每一个bucket中再做一个 having level=‘ERROR’的筛选即可。

 

3. 今日普通营销活动发送

  这个就是在bucket桶中做了一个  having message like '%【第四步】 leaflet发送成功%'  ,为什么这么写是因为只要发送成功,我都会追加这么一条日志,

所以大概就是这么个样子,性能上大家应该也知道,对吧。

 

4. 今日应用程序日志吞吐量

 

    这个不想上面那三张图按照时间聚合,而是按照appname 聚合就可以了,还记得我在filebeat的fileld中添加的appname字段吗?

 

四:使用nginx给kibana做权限验证

  为了避开x-pack 的复杂性,大家可以使用nginx给kibana做权限验证。

1.  安装 yum install -y httpd-tools。

 

2. 设置用户名和密码:admin abcdefg

htpasswd -bc /data/myapp/nginx/conf/htpasswd.users damin  abcdefg

3. 修改nginx的配置。

server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;
        #access_log  logs/host.access.log  main;

       auth_basic "Restricted Access";
       auth_basic_user_file /data/myapp/nginx/conf/htpasswd.users;      #登录验证
       location / {

           proxy_pass http://10.122.166.225:5601;     #转发到kibana
           proxy_http_version 1.1;
           proxy_set_header Upgrade $http_upgrade;
           proxy_set_header Connection 'upgrade';
           proxy_set_header Host $host;
           proxy_cache_bypass $http_upgrade;
           allow 222.68.71.185;  #允许的IP
           allow 118.133.47.76; #允许的IP
           deny all;
       }

 

4. 重启nginx

[root@localhost conf]# /data/myapp/nginx/sbin/nginx -s reload

 

然后绑定域名到你的ip之后,登陆就会有用户名密码验证了。

 

好了,本篇就说这么多,希望对你有帮助。

 

相关 [kibana 可视化 实时] 推荐:

使用kibana可视化报表实时监控你的应用程序,从日志中找出问题,解决问题 - 一线码农 - 博客园

- -
   先结果导向,来看我在kibana dashborad中制作的几张监控图. dashboard1:监控几个维度的日志,这么点日志量是因为把无用的清理掉了,而且只接入了部分应用.           <1>  每日日志总数.           <2>  每日日志错误数,从log4net中level=ERROR抠出来的.

ELK(ElasticSearch, Logstash, Kibana)搭建实时日志分析平台

- - 编程语言 - ITeye博客
在搜索ELK资料的时候,发现这篇文章比较好,于是摘抄一小段:. 以下内容来自: http://baidu.blog.51cto.com/71938/1676798. 日志主要包括系统日志、应用程序日志和安全日志. 系统运维和开发人员可以通过日志了解服务器软硬件信息、检查配置过程中的错误及错误发生的原因.

开源分布式搜索平台ELK(Elasticsearch+Logstash+Kibana)+Redis+Syslog-ng实现日志实时搜索

- - C1G军火库
ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎. 设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便. 支持通过HTTP使用JSON进行数据索引. logstash是一个应用程序日志、事件的传输、处理、管理和搜索的平台. 你可以用它来统一对应用程序日志进行收集管理,提供 Web 接口用于查询和统计.

用Kibana和logstash快速搭建实时日志查询、收集与分析系统

- - 开源软件 - ITeye博客
Logstash是一个完全开源的工具,他可以对你的日志进行收集、分析,并将其存储供以后使用(如,搜索),您可以使用它. 说到搜索,logstash带有一个web界面,搜索和展示所有日志. kibana 也是一个开源和免费的工具,他可以帮助您汇总、分析和搜索重要数据日志并提供友好的web界面. 他可以为 Logstash 和 ElasticSearch 提供的日志分析的 Web 界面.

Elasticsearch、Kibana数据导出实战

- -
以下两个导出问题来自Elastic中文社区. 问题1、kibana怎么导出查询数据. 问题2:elasticsearch数据导出. 就像数据库数据导出一样,elasticsearch可以么. 或者找到它磁盘上存放数据的位置,拷贝出来,放到另一个es服务器上或者转成自己要的数据格式. 实际业务实战中,大家或多或少的都会遇到导入、导出问题.

Filebeat + Elasticsearch + Kibana 轻量日志收集与展示系统

- - wzyboy’s blog
有个段子是说现在创业公司招人的如果说自己是「大数据」(Big Data),意思其实是说他们会把日志收集上来,但是从来不看. 段子归段子,近些年所谓「微服务」「容器化」等「热门技术」的发展,的确促进了日志收集等技术的发展. 而 ELK ( Elasticsearch +. Kibana) 也不再是日志收集与展示系统的铁三角了.

利用kibana学习 elasticsearch restful api (DSL) - Ruthless - 博客园

- -
利用kibana学习 elasticsearch restful api (DSL). 1、了解elasticsearch基本概念. PUT 创建索引,eg:PUT /movie_index 新建movie_index索引. GET 用于检索数据,eg:GET movie_index/movie/1.

Elasticsearch 與 Kibana 也變成非 Open Source 軟體

- - Gea-Suan Lin's BLOG
從 Nuzzel 上看到的消息, Elasticsearch 與 Kibana 也變成非 Open Source 軟體了:「 Elasticsearch and Kibana are now business risks」,官方的公告在「 Upcoming licensing changes to Elasticsearch and Kibana」這邊.

使用ELK(Elasticsearch + Logstash + Kibana) 搭建日志集中分析平台实践

- - SegmentFault 最新的文章
Logstash:负责日志的收集,处理和储存. Elasticsearch:负责日志检索和分析. Kibana:负责日志的可视化. 2015年08月31日 - 初稿. 阅读原文 - http://wsgzao.github.io/post/elk/. CentOS 7.x安装ELK(Elasticsearch+Logstash+Kibana) - http://www.chenshake.com/centos-install-7-x-elk-elasticsearchlogstashkibana/.

市面上流行的 ELK 就是 ElasticSearch + Logstash + Kibana 索引 收集 圖表化

- - SSORC.tw
Elasticsearch 是專門數據儲存、分析、索引. Kibana 是專門 Web 介面,讓 Elasticsearch 內容來圖表化. Logstash 是專門資料收集、過濾、儲存到 Elasticsearch. 現今多出了 Beats 家族,主要是來當作輕量化 Logstash 的角色, Beats 是用 Golang 寫的,佔用資源更少.