rabbitmq/logstash丢失消息
我有一个rabbitmq,它成功地存储了消息,但我读取队列的日志存储忽略了我的大部分消息 RabbitMQ正常,我有一个小python脚本来显示所有消息rabbitmq/logstash丢失消息,rabbitmq,logstash,pika,Rabbitmq,Logstash,Pika,我有一个rabbitmq,它成功地存储了消息,但我读取队列的日志存储忽略了我的大部分消息 RabbitMQ正常,我有一个小python脚本来显示所有消息 import pika i=0 def on_message(channel, method_frame, header_frame, body): global i print i print("Message body", body) channel.basic_ack(delivery_tag=method
import pika
i=0
def on_message(channel, method_frame, header_frame, body):
global i
print i
print("Message body", body)
channel.basic_ack(delivery_tag=method_frame.delivery_tag)
i+=1
credentials = pika.PlainCredentials('***', '***')
parameters = pika.ConnectionParameters('***',5672,'logstash', credentials=credentials)
connection = pika.BlockingConnection(parameters)
channel = connection.channel()
channel.exchange_declare(exchange="logstash", exchange_type="topic", passive=False, durable=True, auto_delete=False)
channel.queue_declare(queue="hbbtv", auto_delete=False, durable=True)
channel.queue_bind(queue="hbbtv", exchange="logstash", routing_key="hbbtv")
channel.basic_qos(prefetch_count=1)
channel.basic_consume(on_message, 'hbbtv')
try:
channel.start_consuming()
except KeyboardInterrupt:
channel.stop_consuming()
connection.close()
我可以看到我所有的信息
12('消息正文','{“消息”:“212.95.70.118--
[25/Feb/2016:11:19:53+0100]\“获取
/services/web/index.php/OPA/categories/ARTEPLUS7/fr HTTP/1.1\“200
348
\""
\Opera/9.80(Linux armv7l;HbbTV/1.1.1(;飞利浦;;飞利浦电视台;)
CE-HTML/1.0 NETTV/4.3.1 PhilipsTV/2.1.1固件/003.015.000.001
(PhilipsTV,2.1.1,)en)Presto/2.12.362版本/12.11“
hbbtvdyn.arte.tv“,“@version:”1“,“@timestamp:”2016-02-25T10:19:53.000Z“,”路径“/”数据/日志/访问“,”主机“:”arte-hbbtvdyn-web1.sdv.fr“,”类型“:”apache访问“,”应用“:”hbbtv“,”clientip:”212.95.70.118“,”识别“,”身份“,”认证“,”时间戳“:”25/Feb/2016:11:19:53+0100”,“动词“:”获取“,”请求“/”服务/web/index.php/OPA/fr”,“httpversion”:“1.1”,“response”:“200”,“bytes”:“348”,“Referer”:“\”,“agent”:“\”Opera/9.80
(Linux armv7l;HbbTV/1.1.1(;Philips;;PhilipsTV;)CE-HTML/1.0
NETTV/4.3.1飞利浦TV/2.1.1固件/003.015.000.001(飞利浦TV,
2.1.1,)en)Presto/2.12.362 Version/12.11\”,“targethost”:“hbbtvdyn.arte.tv”,“geoip”:{“ip”:“212.95.70.118”,“国家代码2”:“FR”,“国家代码3”:“FRA”,“国家名称”:“法国”,“大陆代码”:“欧盟”,“地区名称”:“C1”,“城市名称”:“斯特拉斯堡”,“纬度”:48.60040000000001,“经度”:7.7873999991,“时区”:“欧洲/巴黎”,“真实地区名称”:阿尔萨斯,“位置”:[7.787399999991,48.60040000000001]}})
13('消息正文','{“消息”:“212.95.70.118--
[25/Feb/2016:11:19:53+0100]\“获取
/services/web/index.php/OPA/videos/highlights/6/ARTEPLUS7/de/GE
HTTP/1.1 \“500 4519
\""
\Opera/9.80(Linux armv7l;HbbTV/1.1.1(;飞利浦;;飞利浦电视台;)
CE-HTML/1.0 NETTV/4.3.1 PhilipsTV/2.1.1固件/003.015.000.001
(PhilipsTV,2.1.1,)en)Presto/2.12.362版本/12.11“
hbbtvdyn.arte.tv“,“@version:”1“,“@timestamp:”2016-02-25T10:19:53.000Z“,”路径“:”数据/日志/访问“,”主机“:”arte-hbbtvdyn-web1.sdv.fr“,”类型“:”apache访问“,”应用“:”hbbtv“,”客户端“:”212.95.70.118“,”标识“,”身份“,”认证“,”时间戳“:”25/Feb/2016:11:19:53+0100”,“动词“:”获取“,”请求“:”/services/web/index.php/OPA/videos/highlights/6/ARTEPLUS7/de/GE,“httpversion”:“1.1”,“response”:“500”,“bytes”:“4519”,“referer”:“\”,“agent”:“\”Opera/9.80
(Linux armv7l;HbbTV/1.1.1(;Philips;;PhilipsTV;)CE-HTML/1.0
NETTV/4.3.1飞利浦TV/2.1.1固件/003.015.000.001(飞利浦TV,
2.1.1,)en)Presto/2.12.362 Version/12.11\”,“targethost”:“hbbtvdyn.arte.tv”,“geoip”:{“ip”:“212.95.70.118”,“国家代码2”:“FR”,“国家代码3”:“FRA”,“国家名称”:“法国”,“大陆代码”:“欧盟”,“地区名称”:“C1”,“城市名称”:“斯特拉斯堡”,“纬度”:48.60040000000001,“经度”:7.7873999991,“时区”:“欧洲/巴黎”,“真实地区名称”:阿尔萨斯,“位置”:[7.787399999991,48.60040000000001]}})
14('消息正文','{“消息”:“212.95.70.119--
[25/Feb/2016:11:19:53+0100]\“获取
/OPA/getOPAData.php?url=videoStreams%3Flanguage%3Dfr%26协议%3dhtp%26媒体类型%3Dmp4%26质量%3DEQ%2CSQ%2CHQ%26档案amm%3D%24nin%3AAMM-YTFR-HAB%2CAMM-YTFR%2CAMM-DT%26种类%3DSHOW%26可用屏幕%3Dtv%26字段%3dprogrammaid%2Curl%2Cquality%2CaudioSlot%2CaudioCode%2CaudioLabel%2CaudioLabel%2CaudioShortLabel%26prograid%3D048353-033-26a%26平台%3DARTEPLUS7&filename=PLUS7_stream_048353-033-A_fr_fr.json
HTTP/1.1 \“2005508\”-\“Mozilla/5.0(Linux;Tizen2.3;
SmartHub;SMART-TV;SmartTV;U;Maple2012)AppleWebKit/538.1+(KHTML,
如壁虎)电视狩猎/538.1+\”
hbbtvdyn.arte.tv“,“@version:”1“,“@timestamp:”2016-02-25T10:19:53.000Z“,”路径“:”数据/日志/访问“,”主机“:”arte-hbbtvdyn-web1.sdv.fr“,”类型“:”apache访问“,”应用“:”hbbtv“,”客户端“:”212.95.70.119“,”识别“,”身份“,”认证“,”时间戳“:”25/Feb/2016:11:19:53+0100”,“动词“:”获取“,”请求“:”/OPA/getOPAData.php?url=videoStreams%3Flanguage%3Dfr%26协议%3dhtp%26媒体类型%3Dmp4%26质量%3DEQ%2CSQ%2CHQ%26档案amm%3D%24nin%3AAMM-YTFR-HAB%2CAMM-YTFR%2CAMM-DT%26种类%3DSHOW%26可用屏幕%3Dtv%26字段%3dprogrammaid%2Curl%2Cquality%2CaudioSlot%2CaudioCode%2CaudioLabel%2CaudioLabel%2CaudioShortLabel%26prograid%3D048353-033-26a%26平台%3DARTEPLUS7&filename=PLUS7\u stream\u 048353-033-A\u fr\u fr.json,“httpversion”:“1.1”,“response”:“200”,“bytes”:“5508”,“referer”:“\”-\”,“agent”:“\”Mozilla/5.0
(Linux;Tizen 2.3;SmartHub;SMART-TV;SmartTV;U;Maple2012)
AppleWebKit/538.1+(KHTML,比如Gecko)TV-Safari/538.1+
\“,”targethost:”hbbtvdyn.arte.tv“,”geoip:“{”ip:”212.95.70.119“,”国家代码2:”FR“,”国家代码3:”FRA“,”国家名称“:”法国“,”大陆代码“:”欧盟“,”地区名称“:”C1“,”城市名称“:”斯特拉斯堡“,”纬度“:”48.60040000000001“,”经度“:”7.787399999999991,“时区“:”欧洲/巴黎“,”真实地区名称“:”阿尔萨斯“,”位置“:”[7.7873999991,48.60040000000001]}}
使用高速率消息(每秒数个),我绝对没有格罗克解析失败
所以问题发生在logstash读取消息时
- 很多信息丢失了
- 即使 它是完整的
rabbitmq {
host=>"arte-elasticlog.sdv.fr"
user=>"***"
password=>"***"
queue=>"hbbtv"
vhost=>"logstash"
port=>5672
auto_delete=>false
durable=>true
type => "rabbit_hbbtv"
}
_grokparsefailure表示无法分析邮件。这意味着邮件已成功从队列中读取,但您的grok表达式有问题或无法应用于邮件内容 还有一件事是rabbitmq输入的默认编解码器是“json”,如果您的rabbitmq消息内容不是json,您应该将输入的编解码器设置为例如:
编解码器=>普通{}问题是由于我的日志存储过滤器, 我有两个apache访问权限,但模式不同,因此当logstash尝试解析消息时,有时他在ES中有良好的模式-->而有时没有-->无消息 现在,对于所有不同的日志,我添加(添加字段)
application-->"my application name"