我正在使用Grok和Logstash将访问日志从Nginx发送到Elastic搜索.我给Logstash所有的访问日志(使用通配符,效果很好),我想得到文件名(确切地说是其中的一部分)并将其用作字段.
我的配置如下:
input {
file {
path => "/var/log/nginx/*.access.log"
type => "nginx_access"
}
}
filter {
if [type] == "nginx_access" {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
match => { "path" => "%{GREEDYDATA}/%{GREEDYDATA:app}.access.log" }
add_field => { "app" => "%{app}" }
}
}
}
output{
# whatever
}
Run Code Online (Sandbox Code Playgroud)
但它似乎不起作用:该app字段已添加,但具有%{app}(未替换)的值.
我尝试了不同的东西但无济于事.我可能会遗漏一些东西......有什么想法?
非常感谢
我正在尝试异步加载Nokia Maps javascript API:
var oScript = document.createElement('script');
oScript.type = 'text/javascript';
oScript.async = true;
oScript.src = "http://api.maps.nokia.com/2.2.3/jsl.js?with=maps,positioning,placesdata";
document.body.appendChild(oScript);
Run Code Online (Sandbox Code Playgroud)
按照预期,它不会马上工作,所以我尝试重写document.write认为可能是问题,无济于事(例如,我做了这个/sf/answers/551908521/) .
我遇到的错误是基本上没有定义nokia.maps.map(因此,我无法使用以下方法创建地图:
new nokia.maps.map.Display();
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点,或有人曾经设法这样做?我可能会遗漏一些东西
编辑:我实际上是尝试在页面中异步编写脚本,而不是异步创建映射(当然这不是问题)
谢谢,
我已经使用Kibana设置了一个Elasticsearch服务器来收集一些日志.
Elasticsearch是Nginx的反向代理,这里是conf:
server {
listen 8080;
server_name myserver.com;
error_log /var/log/nginx/elasticsearch.proxy.error.log;
access_log off;
location / {
# Deny Nodes Shutdown API
if ($request_filename ~ "_shutdown") {
return 403;
break;
}
# Pass requests to ElasticSearch
proxy_pass http://localhost:9200;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
# For CORS Ajax
proxy_pass_header Access-Control-Allow-Origin;
proxy_pass_header Access-Control-Allow-Methods;
proxy_hide_header Access-Control-Allow-Headers;
add_header Access-Control-Allow-Headers 'X-Requested-With, Content-Type';
add_header Access-Control-Allow-Credentials true;
}
}
Run Code Online (Sandbox Code Playgroud)
一切运作良好,我可以curl -XGET "myserver.com:8080"检查,我的日志进来.
但每分钟左右,在nginx错误日志中,我得到了:
2014/05/28 12:55:45 [error] …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用FOSElastica Bundle进行全局索引搜索返回高亮显示.
我的配置中有一个全局索引查找器(yml文件):
fos_elastica:
clients:
default: { host: %elastic_host%, port: %elastic_port% }
indexes:
myIndex:
client: default
finder: ~
types:
# different types here
Run Code Online (Sandbox Code Playgroud)
我根据doc(这里)使用它:
$finder = $this->container->get('fos_elastica.finder.myIndex');
// Returns a mixed array of any objects mapped
$results = $finder->find('whatever');
Run Code Online (Sandbox Code Playgroud)
这完美地工作并返回预期的结果.现在我想强调使用例如ES 的快速矢量荧光笔在结果中找到的单词.但我没有找到任何示例或任何文档来这样做.
我想我需要用以下内容定义一个更合适的\ Query对象:
$query = new \Elastica\Query();
$query->setHighlights(array("whatever"));
$query->setTerm("whatever");
$results = $finder->find($query);
Run Code Online (Sandbox Code Playgroud)
但我找不到任何信息.任何提示?
非常感谢 !!
frameworks ×1
hacklang ×1
here-api ×1
highlighting ×1
javascript ×1
kibana ×1
logstash ×1
nginx ×1
php ×1
regex ×1
search ×1