linux学习总纲(不断更新)

  • A+
所属分类:linux实战

一、海量日志平台(filebeat、logstash、kafka、elasticsearch、kibana、supervisor)

 

1、filebeat是elastic开源beats系列采集器中的轻量级日志采集器。当我们面对海量的日志需要采集,同时又不想占用太多的机器资源,以避免影响线上服务的运行时,filebeat就是1个不错的选择。filebear监控客户端的指定目录或指定文件、跟踪文件,并将它们转发到kafka或直接发送到elasticsearch。
filebeat工作原理:启动一个或者多个prospector去配置文件中指定日志路径下的勘察文件,对于勘察到的每个文件都会启动一个harvester,每个harvester都读取一个文件,并把文件中的数据发送到libbeat,libbeat会聚合接收到的事件,并把聚合后的数据发送到配置文件中指定的output。
linux学习总纲(不断更新)

 

2、logstash能完成复杂的日志解析、数据提取等工作。同时相对于filebeat,logstash支持更多的输入输出方式。
输入:logstash支持各种数据输入,可以同时从web应用、日志、指标、数据存储等数据源采集数据,再以连续的流式传输方式发送到各个过滤器和输出端。
过滤器:logstash过滤器能够解析从输入端来的各个事件,识别已命名的字段来构建结构,并将它们转换为通用格式,以便我们轻松的分析和实现商业价值。logstash还能够转换和提取数据,不受原来的格式和复杂度影响。目前logstash的过滤器库支持40多种过滤方式,功能非常丰富。
输出:目前logstash已提供50多种输出方式供选择,我们可以灵活的把指标数据发送到指定的地方,供下游使用。
logstash工作原理,input产生数据,filter清洗数据,提取和转换我们需要的信息,output将所有的数据发送到我们需要的地方。linux学习总纲(不断更新)

 

3、kafka是开源的一个分布式流平台,是一个高性能、跨语言、分布式、发布订阅消息队列的系统,消费者通过拉取的方式消费信息。
组件概念:
broker:缓存代理,kafka集群中的一台或多台服务器统称为broker。
topic:区分kafka的消息类型,将不同的消息写到不同的kafka topic中。
partition:topic物理上的分组,一个topic可以分为多个partition,每个partition都是一个有序的队列。partition中的每条消息都会被分配一个有序id(offset)。
producer:消息的生产者。
consumer:消息的消费者。
consumer group:每一组消费者都有相同的group id,这样可以保证多个消费者不重复消费同一条消息。
基本特性:
高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟时间最低只有几毫秒,每个topic都可以分为多个partition,consumer group对partition进行消费操作。
可扩展性:kafka集群支持热扩展,在消费能力不足的情况下可以增加分区。
持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份,防止数据丢失。
容错性:允许集群中节点失败,若副本数量为n,则允许n-1个节点失败。
高并发性:由于kafka是顺序读/写磁盘的,使用nio的网络模型支持数千个客户端同时读/写。

 

4、elasticsearch是一个分布式、可扩展的、实时的搜索与数据分析引擎。通过restapi让索引和检索都变得很简单,还支持数据分片,每个分片底层都是1个lucene索引,这让elasticsearch拥有了更强的扩展性和更好的搜索性能。
1、集群:集群由1个或多个节点组成,集群保管着所有数据。
2、节点:主节点、协调节点、数据节点、ingest节点。
3、索引:把数据存放到一个或者多个索引中。如果用关系数据库模型来对比,一个索引就相当于一个库。
4、分片:是通过分片将一份数据分布到多个节点上。
5、副本:是实现集群高可用的关键。
6、segment:每个分片都包含多个segment,每个segment都是一个倒排索引,
7、文档:文档是存储数据的实体。一个文档由一个或者多个字段组成。

 

5、kibana是一个开源源码的分析和可视化平台,使用kibana,我们可以搜索,查看数据与存储在elasticsearch索引中的数据进行交互:执行数据分析,并在各种图表、表和映射中可视化数据。通过elasticsearch的聚合操作,使用kibana可以生成数据的柱形图、现状图、饼图、表格等。

 

6、supervisor,简单来说就是python编写的一个多进程的管理工具。虽然在shell下面我们可以用nohup命令的方式将程序放在后台执行,一个或几个可能还比较方便,但如果有很多重要的进程需要管理的话,那就不方便了。工作中很常见的一个问题是,比如服务器不幸出现crash奔溃问题或人为因素导致的重启,导致所有应用程序都退出了,这个时候,大家是愿意逐个输入命令启动还是用一个方便的多进程管理工具使这些程序自动启动呢。还有个集群管理工具在github上

 

、二、Prometheus文档

https://prometheus.io/download/
alertmanager报警插件
blackbox_exporter
consul_exporter
graphite_exporter
haproxy_exporter
memcached_exporter
mysqld_exporter
node_exporter
pushgateway
statsd_exporter
上述是官方提供插件
还有第三方插件
https://github.com/percona/mongodb_exporter
https://github.com/wrouesnel/postgres_exporter
https://github.com/prometheus/jmx_exporter
http://central.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_httpserver/
http://central.maven.org/maven2/io/prometheus/jmx/jmx_prometheus_javaagent/
https://github.com/oliver006/redis_exporter
https://github.com/lovoo/jenkins_exporter
https://github.com/mesosphere/mesos_exporter
https://wiki.jenkins.io/display/JENKINS/Prometheus+Plugin
https://grafana.com/dashboards/

三、暂未添加

四、暂未添加

五、暂未添加

六、暂未添加

七、暂未添加

八、暂未添加

九、暂未添加

 

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: