《ELK Stack权威指南(第2版)》一1.5 长期运行方

简介:

本节书摘来自华章出版社《ELK Stack权威指南(第2版)》一书中的第1章,第1.5节,作者 饶琛琳  更多章节内容可以访问云栖社区“华章计算机”公众号查看。 


1.5 长期运行方式

完成上一节的初次运行后,你可能会发现一点:一旦你按下Ctrl+C,停下标准输入输出,Logstash进程也就随之停止了。作为一个肯定要长期运行的程序,应该怎么处理呢?

本章节问题对于一个运维来说应该属于基础知识,鉴于ELK用户很多其实不是运维,添加这段内容。

办法有很多种,下面介绍四种最常用的办法。

1.标准的service方式

采用RPM、DEB发行包安装的读者,推荐采用这种方式。发行包内,都自带有sysV或者systemd风格的启动程序/配置,你只需要直接使用即可。以RPM为例,/etc/init.d/logstash脚本中,会加载/etc/init.d/functions库文件,利用其中的daemon函数,将Logstash 进程作为后台程序运行。

所以,你只需把自己写好的配置文件统一放在/etc/logstash/目录下(注意目录下所有配置文件都应该是.conf结尾,且不能有其他文本文件存在,因为logstash agent启动的时候是读取全文件夹的),然后运行service logstash start命令即可。

2.最基础的nohup方式

这是最简单的方式,也是Linux新手们很容易搞混淆的一个经典问题:

command

command > /dev/null

command > /dev/null 2>&1

command &

command > /dev/null &

command > /dev/null 2>&1 &

command &> /dev/null

nohup command &> /dev/null

请回答以上命令的异同……

具体不一一解释了。直接说答案,想要维持一个长期后台运行的Logstash,你需要同时在命令前面加nohup,后面加&。

3.更优雅的screen方式

screen算是Linux运维一个中高级技巧。通过screen命令创建的环境下运行的终端命令,其父进程不是sshd登录会话,而是screen。这样就可以既避免用户退出进程消失的问题,又随时能重新接管回终端继续操作。

创建独立的screen命令如下:

screen -dmS elkscreen_1

连接进入已创建的elkscreen_1的命令如下:

screen -r elkscreen_1

然后你可以看到一个一模一样的终端,运行Logstash之后,不要按Ctrl+C,而是按Ctrl+A+D键,断开环境。想重新接管,依然用screen -r elkscreen_1即可。

如果创建了多个screen,查看列表命令如下:

screen -list

4. 最推荐的daemontools方式

不管是nohup还是screen,都不是可以很方便管理的方式,在运维管理一个ELK集群的时候,必须寻找一种尽可能简洁的办法。所以,对于需要长期后台运行的大量程序(注意大量,如果就一个进程,还是学习一下怎么写init脚本吧),推荐大家使用一款daemontools工具。

daemontools是一个软件名称,不过配置略复杂。所以这里我其实是用其名称来指代整个同类产品,包括但不限于Python实现的supervisord,Perl实现的ubic,Ruby实现的god等。

以supervisord为例,因为这个出来得比较早,可以直接通过EPEL仓库安装。

yum -y install supervisord --enablerepo=epel

在/etc/supervisord.conf配置文件里添加内容,定义你要启动的程序,如下所示:

[program:elkpro_1]

environment=LS_HEAP_SIZE=5000m

directory=/opt/logstash

command=/opt/logstash/bin/logstash -f /etc/logstash/pro1.conf -w 10 -l /var/log/logstash/pro1.log

[program:elkpro_2]

environment=LS_HEAP_SIZE=5000m

directory=/opt/logstash

command=/opt/logstash/bin/logstash -f /etc/logstash/pro2.conf -w 10 -l /var/

log/logstash/pro2.log

然后启动service supervisord start 即可。

Logstash会以supervisord子进程的身份运行,你还可以使用supervisorctl命令,单独控制一系列 Logstash 子进程中某一个进程的启停操作:

supervisorctl stop elkpro_2

 

 

 

 

相关文章
|
3月前
|
存储 Prometheus 监控
Prometheus vs. ELK Stack:容器监控与日志管理工具的较量
随着容器化技术的广泛应用,容器监控与日志管理成为了关键任务。本文将对两种常用工具进行比较与选择,分别是Prometheus和ELK Stack。Prometheus是一款开源的监控系统,专注于时序数据的收集和告警。而ELK Stack则是一套完整的日志管理解决方案,由Elasticsearch、Logstash和Kibana三个组件组成。通过比较它们的特点、优势和适用场景,读者可以更好地了解如何选择适合自己需求的工具。
|
3月前
|
Go 数据处理 Docker
elk stack部署自动化日志收集分析平台
elk stack部署自动化日志收集分析平台
80 0
|
3月前
|
Prometheus 监控 Cloud Native
Prometheus VS ELK Stack:容器监控与日志管理工具的比较与选择
在容器化时代,有效的容器监控与日志管理工具对于确保应用程序的可靠性和可维护性至关重要。本文将比较两个主流工具,Prometheus和ELK Stack,探讨它们在容器监控和日志管理方面的特点、优势和适用场景,帮助读者做出明智的选择。
|
10月前
|
存储 监控 安全
【Elastic Stack-初识篇】 ELK介绍、搭建最新 ELK 日志分析系统
【Elastic Stack-初识篇】 ELK介绍、搭建最新 ELK 日志分析系统
681 0
|
11月前
|
消息中间件 缓存 负载均衡
【日志架构】ELK Stack + Kafka 端到端练习
【日志架构】ELK Stack + Kafka 端到端练习
|
11月前
|
消息中间件 监控 固态存储
带你读《Elastic Stack 实战手册》之71:——4.1.3.企业ELK日志搜索引擎
带你读《Elastic Stack 实战手册》之71:——4.1.3.企业ELK日志搜索引擎
BXA
|
11月前
|
Prometheus Kubernetes 监控
搭建高效微服务架构:Kubernetes、Prometheus和ELK Stack的完美组合
微服务架构是一种软件设计模式,它将单个应用程序拆分成一组更小、更独立的服务。每个服务在自己的进程中运行,并使用轻量级通信机制进行通信。由于每个服务都是独立的,因此可以独立部署、扩展和更新,从而使开发和运维更加容易。
BXA
300 0
|
消息中间件 监控 NoSQL
ELK搭建(十三):搭建Nginx资源访问率、丢包率、读写率等运行性能监控平台
Nginx是一款轻量级、高性能的流量分发和反向代理的web服务。随着市场业务量的增加,普通的web容器,如tomcat的并发量已经远不能满足我们的业务量,同时随着分布式架构的普及,我们需要一款反向代理服务的支持,于是Nginx应运而生。 Nginx已经在大多数业务中普遍使用,因此针对Nginx的性能监控十分必要,这样我们才能实时掌握服务器请求情况和运行效率 所以今天,我们的目标就是搭建一个Nginx运行性能监控平台
396 0
ELK搭建(十三):搭建Nginx资源访问率、丢包率、读写率等运行性能监控平台
|
存储 运维 监控
ELK搭建(十一):搭建MongoDB运行情况监控平台
mongoDB作为基于磁盘的非关系型数据库,JSON格式数据存储方式,具有优秀的查询效率。越来越多的场景使用到了MongoDB。在生产运维中,更需要我们能够实时的掌握mongo的运行情况,以方便我们数据库运行问题做出及时的调整和补救。
269 0
ELK搭建(十一):搭建MongoDB运行情况监控平台
|
消息中间件 缓存 弹性计算
ELK搭建(十):搭建redis运行指标监控平台
Redis作为基于内存的非关系型数据库,常常被应用于热点数据缓存,它很大程度上为我们关系性数据库提供了性能补充。保证redis的高可用,对应整个应用程序的运行至关重要,一个直观的监控redis运行情况的数据看板可以为我们实时了解redis运行情况提供极大的便利。
174 0
ELK搭建(十):搭建redis运行指标监控平台