本文最后更新于 320 天前,其中的信息可能已经过时,如有错误请发送邮件到wuxianglongblog@163.com
ElasticStack的应用场景及基础环境构建
一.为什么需要日志收集系统
1.企业的架构图画图说明,为引入下面的痛点
2.没有日志分析工具之前,运维工作存在哪些痛点?
-
- 痛点1:生产出现故障后,运维需要不停的查看各种不同的日志进行分析?是不是毫无头绪? - 痛点2:项目上线出现错误,如何快速定位问题?如果后端节点过多、日志分散怎么办? - 痛点3:开发人员需要实时查看日志但又不想给服务器的登陆权限,怎么办?难道每天帮开发取日志? - 痛点4:如何在海量的日志中快速的提取我们想要的数据?比如:PV、UV、TOP10的URL?如果分析的日志数据量大,那么势必会导致查询速度慢、难度增大,最终则会导致我们无法快速的获取到想要的指标。 - 痛点5:CDN公司需要不停的分析日志,那分析什么?主要分析命中率,为什么?因为我们给用户承诺的命中率是90%以上。如果没有达到90%,我们就要去分析数据为什么没有被命中、为什么没有被缓存下来。 - 痛点6:近期某影视公司周五下午频繁出现被盗链的情况,导致异常流量突增2G有余,给公司带来了损失,那又该如何分析异常流量呢?
3.使用elastic stack日志分析系统之后?
如上所有的痛点都可以使用日志分析系统ELK解决,通过ELK,将运维所有的服务器日志,业务系统日志都收集到一个平台下,然后提取想要的内容,比如错误信息,警告信息等,当过滤到这种信息,就马上告警,告警后,运维人员就能马上定位是哪台机器、哪个业务系统出现了问题,出现了什么问题。
4. 什么是Elastic Stack
The Elastic Stack, 包括Elasticsearch、Kibana、Beats和Logstash(也称为 ELK Stack)。
ElaticSearch:
简称为ES, ES是一个开源的高扩展的分布式全文搜索引擎,是整个Elastic Stack技术栈的核心。
它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。
Kibana:
是一个免费且开放的用户界面,能够让您对Elasticsearch数据进行可视化,并让您在Elastic Stack中进行导航。
您可以进行各种操作,从跟踪查询负载,到理解请求如何流经您的整个应用,都能轻松完成。
Beats:
是一个免费且开放的平台,集合了多种单一用途数据采集器。
它们从成百上千或成千上万台机器和系统向Logstash 或 Elasticsearch发送数据。
Logstash:
是免费且开放的服务器端数据处理管道,能够从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。
Elastic Stack的主要优点有如下几个:
(1)处理方式灵活:
elasticsearch是实时全文索引,具有强大的搜索功能。
(2)配置相对简单:
elasticsearch全部使用JSON 接口,logstash使用模块配置,kibana的配置文件部分更简单。
(3)检索性能高效:
基于优秀的设计,虽然每次查询都是实时,但是也可以达到百亿级数据的查询秒级响应。
(4)集群线性扩展:
elasticsearch和logstash都可以灵活线性扩展。
(5)前端操作绚丽:
kibana的前端设计比较绚丽,而且操作简单。
推荐阅读:
https://www.elastic.co/guide/index.html
https://www.elastic.co/guide/cn/elasticsearch/guide/current/index.html
https://www.elastic.co/guide/cn/kibana/current/index.html
5.使用elastic stack能收集那些日志
容器管理工具:
docker
负载均衡服务器:
lvs,haproxy,nginx
web服务器:
httpd,nginx,tomcat
数据库:
mysql,redis,MongoDB,Hbase,Kudu,ClickHouse,PgSQL
存储:
nfs,gluterfs,fastdfs,HDFS,Ceph
系统:
message,security
业务:
包括但不限于C,C++,Java,PHP,Go,Python,Shell等编程语言研发的App。
6.企业级ElasticStack技术应用
在生产环境中,当数据量比较大的时候,我们会引入消息队列来进行"数据消峰"。
二.基础环境准备
1.操作系统版本
2.修改国内的软件源
sed -e 's|^mirrorlist=|#mirrorlist=|g' \
-e 's|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.tuna.tsinghua.edu.cn|g' \
-i.bak \
/etc/yum.repos.d/CentOS-*.repo
yum makecache
推荐阅读:
https://mirrors.tuna.tsinghua.edu.cn/help/centos/
3.修改终端显示
cat <<EOF >> ~/.bashrc
PS1='[\[\e[34;1m\]\u@\[\e[0m\]\[\e[32;1m\]\H\[\e[0m\]\[\e[31;1m\] \W\[\e[0m\]]\$ '
EOF
source ~/.bashrc
4.修改sshd服务优化
[root@elk101.oldboyedu.com ~]# grep UseDNS /etc/ssh/sshd_config
#UseDNS yes
UseDNS no
[root@elk101.oldboyedu.com ~]#
[root@elk101.oldboyedu.com ~]# grep ^UseDNS /etc/ssh/sshd_config
UseDNS no
[root@elk101.oldboyedu.com ~]#
5.关闭防火墙
[root@elk101.oldboyedu.com ~]# systemctl is-enabled firewalld
enabled
[root@elk101.oldboyedu.com ~]#
[root@elk101.oldboyedu.com ~]# systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@elk101.oldboyedu.com ~]#
[root@elk101.oldboyedu.com ~]# systemctl is-enabled firewalld
disabled
[root@elk101.oldboyedu.com ~]#
6.禁用Selinux
[root@elk101.oldboyedu.com ~]# getenforce
Enforcing
[root@elk101.oldboyedu.com ~]#
[root@elk101.oldboyedu.com ~]# setenforce 0
[root@elk101.oldboyedu.com ~]#
[root@elk101.oldboyedu.com ~]# getenforce
Permissive
[root@elk101.oldboyedu.com ~]#
[root@elk101.oldboyedu.com ~]# sed -ri 's#(SELINUX=)enforcing#\1disabled#' /etc/selinux/config
[root@elk101.oldboyedu.com ~]#
7.安装常用的工具
[root@elk101.oldboyedu.com ~]# yum -y install lrzsz vim net-tools wget tree unzip
8.修改主机列表
[root@elk101.oldboyedu.com ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
# Add by Jason Yin for Elastic Statck.
10.0.0.101 elk101.oldboyedu.com
10.0.0.102 elk102.oldboyedu.com
10.0.0.103 elk103.oldboyedu.com
[root@elk101.oldboyedu.com ~]#
温馨提示:
所有节点的hosts文件内容解析要同步哟~
9.集群时间同步
推荐阅读:
https://www.cnblogs.com/yinzhengjie/p/12292549.html
10.JDK部署
JDK下载地址:
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
[root@elk101.oldboyedu.com ~]# ll
总用量 141540
-rw-r--r--. 1 root root 144935989 5月 16 11:54 jdk-8u291-linux-x64.tar.gz
[root@elk101.oldboyedu.com ~]#
[root@elk101.oldboyedu.com ~]# tar zxf jdk-8u291-linux-x64.tar.gz -C /oldboy/softwares/
[root@elk101.oldboyedu.com ~]#
[root@elk101.oldboyedu.com ~]# cd /oldboy/softwares/
[root@elk101.oldboyedu.com /oldboy/softwares]#
[root@elk101.oldboyedu.com /oldboy/softwares]# ll
总用量 0
drwxr-xr-x. 8 10143 10143 273 4月 8 03:26 jdk1.8.0_291
[root@elk101.oldboyedu.com /oldboy/softwares]#
[root@elk101.oldboyedu.com /oldboy/softwares]# ln -sv jdk1.8.0_291 jdk
"jdk" -> "jdk1.8.0_291"
[root@elk101.oldboyedu.com /oldboy/softwares]#
[root@elk101.oldboyedu.com /oldboy/softwares]# ll
总用量 0
lrwxrwxrwx. 1 root root 12 5月 16 11:56 jdk -> jdk1.8.0_291
drwxr-xr-x. 8 10143 10143 273 4月 8 03:26 jdk1.8.0_291
[root@elk101.oldboyedu.com /oldboy/softwares]#
[root@elk101.oldboyedu.com /oldboy/softwares]# vim /etc/profile.d/jdk.sh
[root@elk101.oldboyedu.com /oldboy/softwares]#
[root@elk101.oldboyedu.com /oldboy/softwares]# cat /etc/profile.d/jdk.sh
#!/bin/bash
export JAVA_HOME=/oldboy/softwares/jdk
export PATH=$PATH:$JAVA_HOME/bin
[root@elk101.oldboyedu.com /oldboy/softwares]#
[root@elk101.oldboyedu.com /oldboy/softwares]# source /etc/profile.d/jdk.sh
[root@elk101.oldboyedu.com /oldboy/softwares]#
[root@elk101.oldboyedu.com /oldboy/softwares]# java -version
java version "1.8.0_291"
Java(TM) SE Runtime Environment (build 1.8.0_291-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.291-b10, mixed mode)
[root@elk101.oldboyedu.com /oldboy/softwares]#