1. ELK 系统是什么

ELK 是一套日志中心解决方案,其三个字母分别表示:

  • Elasticsearch:负责日志存储及检索
  • Logstash:负责日志收集、过滤及格式化
  • Kibana:数据看板,负责日志展示及数据可视化

Elasticsearch 是自带搜索引擎的数据库。

2. ELK 系统常见用途

1. 网络监控

可以用来监控网络设备。

2. 应用监控

实时监控业务:如访问量、终端类型

分析业务:可以调取日志分析平均每秒请求数、峰谷请求数、API 请求数等,用于系统扩容的参考。

3. 特殊用途

分析用户画像。

3. Docker 容器化应用日志中心

除了应用镜像外,ELK 对应的镜像分别是 logstashelasticsearchkibana 三个。

1. 开启 Docker 宿主机的 rsyslog 服务

编辑服务的配置文件:

vi /etc/rsyslog.conf

开启下面的三个参数,让 rsyslog 加载 imtcp 模块并监听 514 端口,然后将 rsyslog 收集到的数据转发到 4560 端口:

$ModLoad imtcp
$InputTcpServerRun 514
*.* @@localhost:4560

重启 rsyslog 服务,并查看 514 端口是否监听成功:

systemctl restart rsyslog
netstat -ntpl

2. 部署 ELK

部署 ElasticSearch 服务

docker run -d -p 9200:9200 -v \
~/elasticsearch/data:/usr/share/elasticsearch/data \
--name elasticsearch elasticsearch

部署完成后可以访问宿主机的 9200 端口验证服务是否部署成功。成功时会输出 JSON 格式的版本信息。

部署 Logstash 服务

~/logstash/ 目录下创建 logstash.conf 配置文件,将 Logstash 服务配置为从本地的 rsyslog 服务获取应用日志数据,然后转发到 Elasticsearch 数据库。配置文件内容如下:

input {
syslog {
type => "rsyslog"
prot => 4560
}
}
output {
elasticsearch {
hosts => [ "elasticsearch:9200" ]
}
}

启动 Logstash 容器:

docker run -d -p 4560:4560 \
-v ~/logstash/logstash.conf:/etc/logstash.conf \
--link elasticsearch:elasticsearch \
--name logstash logstash \
logstash -f /etc/logstash.conf

部署 Kibana 服务

docker run -d -p 5601:5601 \
--link elasticsearch:elasticsearch \
-e ELASTICSEARCH_URL=http://elasticsearch:9200 \
--name kibana kibana

启动应用程序产生日志

注意,启动应用程序的容器时,需要设置将日志转发到 syslog 服务中。

docker run -d -p 80:80 \
--log-driver syslog \
--log-opt syslog-address=tcp://localhost:514 \
--log-opt tag="nginx" \
--name nginx
nginx

3. 测试

产生应用日志

打开浏览器,并多次访问 localhost:80 来让应用程序生产日志。

打开 Kibana 可视化界面

在 localhost:5601 页面中,查看日志信息。可以在查询框中输入 program=nginx 查询特定日志。

最新文章

  1. Js控制Div在浏览器中的高度
  2. 快速理解Java中的五种单例模式
  3. CodeForces 450B (矩阵快速幂模板题+负数取模)
  4. TYVJ P1068 STR Label:KMP匹配 不懂
  5. Selenium2Library系列 keywords 之 _SelectElementKeywords 之 select_from_list_by_value(self, locator, *values)
  6. IIS 7.0 and Web Farms
  7. eclipse内使用tomcat项目究竟被部署到了哪里
  8. Sql中的datetime类型的空值和c#中的DateTime的空值的转换方法
  9. VLC测试IPv4 IGMP/IPv6 MLD协议
  10. 51单片机模拟I2C总线的C语言实现
  11. npm install 本地安装与全局安装
  12. 普林斯顿大学算法课 Algorithm Part I Week 3 排序算法复杂度 Sorting Complexity
  13. 关于iOS中用AudioFile相关API解码或播放AAC_HE_V2时仅仅能识别单声首22.05k採样率的问题
  14. UIButton防止被重复点击
  15. PHP----------php封装的一些简单实用的方法汇总
  16. HTML5新规范和CSS3新特性
  17. 给servlet类添加源代码
  18. java 偏向锁、轻量级锁及重量级锁synchronized原理
  19. Tqdm 进度条可视化模块
  20. servlet(1)request常用方法

热门文章

  1. C#中Func与Action的理解
  2. loading 加载工具
  3. python为什么人们喜欢学习呢?
  4. [BZOJ2829] 信用卡 (凸包)
  5. 2.golang应用目录结构和GOPATH概念
  6. 2019 Multi-University Training Contest 7 - 1006 - Snowy Smile - 线段树
  7. Log4Net 之将自定义属性记录到文件中 (三)
  8. 基本SQL查询语句
  9. Memcache--02 源码安装nginx,php
  10. LNMP集群架构篇