logstash 长期运行一直在后台运行怎么关掉

您所在的位置: &
1.5 长期运行方式
1.5 长期运行方式
机械工业出版社
《ELK stack权威指南》第1章入门示例,该章介绍Logstash及其插件的配置安装方法,自定义配置语言的设计用途,并为不熟悉Linux系统管理的开发人员介绍了多种后台运行方式。本节为大家介绍长期运行方式。
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&
喜欢的朋友可以添加我们的微信账号:
51CTO读书频道二维码
51CTO读书频道活动讨论群:
【责任编辑: TEL:(010)】&&&&&&
关于&&的更多文章
ELK stack是以Elasticsearch、Logstash、Kibana三个开源软件为主
本书描述了黑客用默默无闻的行动为数字世界照亮了一条道路的故事。
讲师: 8人学习过讲师: 34人学习过讲师: 3人学习过
R语言是非常灵活且功能强大的,它不同于你用过的绝大
通过实际项目增强你的Python技能
通过理论和实践的结
经证实的PL/SQL优化解决方案
在《Oracle PL/SQL性能
本书是作者根据十年网站营销经验,特别是搜索引擎优化(SEO)实现营销方面的技术和实践总结。本书帮助读者建立搜索营销的概念,
51CTO旗下网站> 博客详情
摘要: 世界上的软件80%是运行在内网的,为了使得运行在客户端的软件有良好的体验,并且得到有用的数据,我们需要对这些系统产生的数据,进行统计和分析,这个过程通常包括数据采集,清洗,建模,分析,报表等。接下来在本篇文章中,将会构建一个基于logstash,elasticSearch,kibana的一套数据收集分析的系统
世界上的软件80%是运行在内网的,为了使得运行在客户端的软件有良好的体验,并且得到有用的数据,我们需要对这些系统产生的数据,进行统计和分析,这个过程通常包括数据采集,清洗,建模,分析,报表等。接下来在本篇文章中,将会构建一个基于logstash,elasticSearch,kibana的一套数据收集分析的系统
一、框架概要
logstash实时的从业务日志中数据数据(可以进行响应的过滤),然后把数据输入到redis中,redis只做消息队列不对消息做处理和存储,然后redis会把数据转给elasticSearch,elasticSearch会对数据做存储,索引(基于Lunce),再kibana中建立对elasticSearch的链接,实时的抓取索索引后的数据,这样数据就可以实时的进行展示,通过一些数据组装,查询条件,得到我们想要的结果(可以通过各种方式例如图表,表格,折线图等显示)
接下来的第二章节讲述所需软件以及安装
二、所需软件
Redis(https://www.elastic.co/)
kibana(https://download.elastic.co/kibana/kibana/kibana-4.1.3-linux-x64.tar.gz)
logstash(https://download.elastic.co/logstash/logstash/logstash-2.1.0.zip)
Elasticsearch
对于kibana,logstash,Elasticsearch 这三件套,也可以是直接去下载套装()
把软件包均上传到/opt/tools文件夹下,软件均安装在/opt文件夹下
软件的安装和运行,最好不要使用root用户,因为里面有些软件,必须要求非root用于才可以正常的运行。
1、&卸载自带的jdk 安装jdk
上传下载的jdk rpm包
rpm&–ivh&&
jdk-8u65-linux-x64.rpm
通过命令查看jdk版本是否安装成功,安装完成它会自动的配置环境变量等相关信息
java&-version
java&version&"1.8.0_65"
Java(TM)&SE&Runtime&Environment&(build&1.8.0_65-b17)
Java&HotSpot(TM)&64-Bit&Server&VM&(build&25.65-b01,&mixed&mode)
2、 安装Redis
tar&xzf&redis-3.0.5.tar.gz&/opt
$&cd&redis-3.0.5
$&make&&&&make&install
$&src/redis-server
出现以上提示,redis启动成功
客户端测试
$&src/redis-cli
redis&&set&foo&bar
redis&&get&foo
由于安装完成后,redis只能窗口化运行,当关闭server的那个shell窗口以后,服务就终端了,所以需要修改相关配置
Vi&redis.conf
daemonize yes&
appendonly yes
这样redis可以支持后台运行
同样,我们可以把Redis作为Linux服务开机启动
这里只提供一种最简单的方式,最好的是通过编写开机启动脚本来做。
如果要开机启动redis,我们需要把redis设置为daemon后台启动(如果不设置为后台启动,则linux启动后图形界面会卡在一个空白的页面),而redis只有1个启动参数,就是redis的配置文件路径。redis的默认配置文件redis.conf位于redis的安装目录下。我们可以把该文件copy到/etc目录下
Shell代码&
1[root@localhost&redis-2.6.14]#&cp&redis.conf&/etc/&
redis的默认配置文件中daemonize参数的值为no,代表为非后台启动,所以我们需要把该参数的值修改为yes。至于其它的参数在这里就不详细说了,具体可以参见:http://blog.csdn.net/htofly/article/details/7686436
修改完daemonize参数之后,redis就能够通过daemon方式启动了,那么下一步就是把redis加入到linux开机启动服务配置中了,具体步骤如下:
使用VI编辑器打开Linux开机启动服务配置文件/etc/rc.local,并在其中加入下面的一行代码:
Shell代码&
2/usr/local/redis-2.6.14/src/redis-server&/etc/redis.conf&
编辑完后保存,然后重启系统就OK了。
停止Redis服务:
Shell代码&
src/redis-cli&shutdown
3、安装elasticsearch
tar&zxvf&elasticsearch-2.1.0.tar.gz
进入elasticsearch-2.1.0文件夹,需要注意的是,elasticsearch不允许用root账户进行启动、
./bin/elasticsearch
elasticSearch建议用一个专用的用户进行操作,如果用root用户启动的话,会报错,
会报如下错误:
&Don’t run Elasticsearch as root
在以下网址文档中有详细的说明
(https://www.elastic.co/blog/scripting-security)
curl&-X&GET&http://localhost:9200/
打印出以下信息:
&&"name"&:&"Witchfire",
&&"cluster_name"&:&"elasticsearch",
&&"version"&:&{
&&&&"number"&:&"2.1.0",
&&&&"build_hash"&:&"72cd1f1a3eee146dc",
&&&&"build_timestamp"&:&"T22:40:03Z",
&&&&"build_snapshot"&:&false,
&&&&"lucene_version"&:&"5.3.1"
&&"tagline"&:&"You&Know,&for&Search"
ElasticSearch安装运行成功
4、&安装Logstash
cd&/opt/tools
unzip&logstash-2.1.0.zip
mv&logstash-2.1.0&/opt
建立服务器启动的配置文件
cd&logstash-2.10.0/
mkdir&conf&log
vi&server.conf
input&{&stdin&{&}
&&&&&&&&&redis{
&&&&&&&&&&&&&&type&=&&"redis-input"
&&&&&&&&&&&&&&data_type&=&&"list"
&&&&&&&&&&&&&&key&=&&"key_count"
&&&&&&&&&}
&&elasticsearch&{&hosts&=&&["localhost:9200"]&}
&&stdout&{&codec&=&&rubydebug&}
//reids地址是127.0.0.1.默认端口是6379 由于我都安装在了本机,所以这个就没有进行再配置,相关配置可以参考以下官网网址:
https://www.elastic.co/guide/en/logstash/current/plugins-inputs-redis.html
启动服务端
#bin/logstash&-f&&conf/server.conf&--log&logs/stdout&&&&&#&"&"为在后台执行
#bin/logstash&-f&&conf/client.conf&--log&logs/stdout&&&&&#&"&"为在后台执行
5、安装kibana
cd&/opt/tools
tar&-zxvf&kibana-4.1.3-linux-x64.tar.gz&-C&/opt
可以在kibana/conf/文件夹中,修改kibana.yml配置文件,修改 elasticsearch的访问路径为相关的访问路径,默认为:
elasticsearch_url:
由于我的elasticearc安装在了本机,这个地址和端口就暂时不做修改了
默认会有.kibana索引,如果没有的话再进行建立
curl -XPUT localhost:9200/.kibana
刚开始下载的是kibana 的版本是4.1.3,然后启动的时候报错,
{"name":"Kibana","hostname":"test-dev1","pid":15605,"level":30,"msg":"Found&kibana&index","time":"T07:49:48.672Z","v":0}
{"name":"Kibana","hostname":"test-dev1","pid":15605,"level":50,"err":{"message":{"root_cause":[{"type":"search_parse_exception","reason":"No&mapping&found&for&[buildNum]&in&order&to&sort&on"}],"type":"search_phase_execution_exception","reason":"all&shards&failed","phase":"query","grouped":true,"failed_shards":[{"shard":0,"index":".kibana","node":"uj6DUqLOSZOWghUpRlegmw","reason":{"type":"search_parse_exception","reason":"No&mapping&found&for&[buildNum]&in&order&to&sort&on"}}]},"name":"Error","stack":"Error:&[object&Object]\n&&&&at&respond&(/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/src/lib/transport.js:235:15)\n&&&&at&checkRespForFailure&(/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/src/lib/transport.js:203:7)\n&&&&at&HttpConnector.&anonymous&&(/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/src/lib/connectors/http.js:156:7)\n&&&&at&IncomingMessage.bound&(/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/node_modules/lodash-node/modern/internals/baseBind.js:56:17)\n&&&&at&IncomingMessage.emit&(events.js:117:20)\n&&&&at&_stream_readable.js:944:16\n&&&&at&process._tickCallback&(node.js:442:13)"},"msg":"","time":"T07:49:48.683Z","v":0}
{"name":"Kibana","hostname":"test-dev1","pid":15605,"level":60,"err":{"message":{"root_cause":[{"type":"search_parse_exception","reason":"No&mapping&found&for&[buildNum]&in&order&to&sort&on"}],"type":"search_phase_execution_exception","reason":"all&shards&failed","phase":"query","grouped":true,"failed_shards":[{"shard":0,"index":".kibana","node":"uj6DUqLOSZOWghUpRlegmw","reason":{"type":"search_parse_exception","reason":"No&mapping&found&for&[buildNum]&in&order&to&sort&on"}}]},"name":"Error","stack":"Error:&[object&Object]\n&&&&at&respond&(/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/src/lib/transport.js:235:15)\n&&&&at&checkRespForFailure&(/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/src/lib/transport.js:203:7)\n&&&&at&HttpConnector.&anonymous&&(/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/src/lib/connectors/http.js:156:7)\n&&&&at&IncomingMessage.bound&(/opt/kibana-4.1.3-linux-x64/src/node_modules/elasticsearch/node_modules/lodash-node/modern/internals/baseBind.js:56:17)\n&&&&at&IncomingMessage.emit&(events.js:117:20)\n&&&&at&_stream_readable.js:944:16\n&&&&at&process._tickCallback&(node.js:442:13)"},"msg":"","time":"T07:49:48.683Z","v":0}
经过搜索得知,原来是版本问题,重新下载了4.3版本。重新启动,正常
启动kibana,默认端口为5601
默认是没有任何日志的,当我们访问nginx的时候,会产生一些访问日志,回头再看kibana,日志将会实时的显示到kibana中,深入的去学习kibana的使用,将会做出来我们想要的数据。
人打赏支持
码字总数 47789
这个是不需要的,只需要一个serever就行了
这个看你怎么部署了,也可以不部署到业务系统的机器上,因为业务系统的机器通常不是一台,可以采用同步或者异步的方式把业务系统的日志发送到另外一的一个部署了logstash的机器上。
支付宝支付
微信扫码支付
打赏金额: ¥
已支付成功
打赏金额: ¥
& 开源中国(OSChina.NET) |
开源中国社区(OSChina.net)是工信部
指定的官方社区一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:}

我要回帖

更多关于 logstash 运行日志 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信