小编Sid*_*kha的帖子

Logstash关闭文件描述符?

背景:

我们rsyslog创建了日志文件目录,例如:/var/log/rsyslog/SERVER-NAME/LOG-DATE/LOG-FILE-NAME 因此,多个服务器将不同日期的日志分发到中心位置.

现在阅读这些日志并将它们存储在elasticsearch中进行分析我的logstash配置文件是这样的:

file{
   path => /var/log/rsyslog/**/*.log
}
Run Code Online (Sandbox Code Playgroud)

问题 :

现在,随着目录中日志文件数量的增加,logstash会为新文件打开文件描述符(FD),并且不会为已读取的日志文件释放FD.由于日志文件是按日期生成的,因此一旦读取它,之后就没有用了,因为在该日期之后它不会被更新.

我已将文件开口限制增加到65K in /etc/security/limits.conf

我们可以在一段时间后让logstash关闭句柄,这样打开的文件句柄数量不会增加太多?

elasticsearch logstash logstash-grok logstash-file

13
推荐指数
1
解决办法
1575
查看次数

JPA实体没有主键?

我有一个实体类:

@Entity
@Table(name="CMC_MAP_SERVER_INFO")
@NamedQuery(name="CmcMapServerInfo.getMapServer", query="SELECT c FROM CmcMapServerInfo c")
public class CmcMapServerInfo implements Serializable {
    private static final long serialVersionUID = 1L;

    @Column(name="APPLICATION_NAME")
    private String applicationName;

    private String remarks;

    @Column(name="SERVER_IP")
    private String serverIp;

    @Column(name="SERVER_NAME")
    private String serverName;

    @Column(name="SERVER_PORT")
    private short serverPort;

    public CmcMapServerInfo() {
    }
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Entity class [class cdot.oss.cmsat.conf.ejb.entity.CmcMapServerInfo] has no primary key specified.
Run Code Online (Sandbox Code Playgroud)

我在线阅读并发现实体必须定义主键.但我这里的桌子只是一排桌子.它只是用来保存系统配置.

因此,我只想查询该行是否存在,然后获取该行并更新它.

我的列是serverIp,port,服务器的名称.

我该如何处理删除此错误?

java database entity jpa ejb-3.0

12
推荐指数
3
解决办法
4万
查看次数

使用Kibana3发出警报/通知?

我正在使用logstash-1.4.1,elasticsearch-1.1.1kibana-3.1.0用于分析我的日志.我能够查看和查询我的日志.

需要在特定日志/事件发生时需要警报/通知.例如:当一次又一次地发生登录失败日志时,需要警报/通知(弹出,通过邮件等).

目前我可以查询我的日志,就像失败的登录一样,但我想要它,只要出现这样的日志,就会出现一个通知/弹出窗口而不是我手动查询它.

可以用以上三种方法完成吗?怎么能实现这一目标?

alert elasticsearch logstash kibana

10
推荐指数
2
解决办法
2万
查看次数

如何使用struts2提交标签作为按钮而不提交表格?

我在我的应用程序中使用Struts2框架,我的JSP页面上有一个按钮.那是

<s:submit type="button" name="btnSave" />
Run Code Online (Sandbox Code Playgroud)

现在,我希望此按钮的行为与正常的HTML按钮类型一样,不应提交表单并在onclick事件上执行Scripting功能.该函数使用Ajax提交表单.

但是,Struts2将其转换为

<input type="submit" id="add_btnSave" name="btnSave" value="Save"/>
Run Code Online (Sandbox Code Playgroud)

我的表格已提交.

1)如果我使用HTML按钮标签,它将弄乱GUI.我的形式的主题是Ajax.

这是一个head带脚本的标签

<head>
<s:head theme="ajax"/>
<script type="text/javascript">

$("btnSave").click(function(){
alert("aaa");
$.ajax({
url:
type:"POST",
dataType: "json",
error: function(XMLHttpRequest, textStatus, errorThrown){
alert('Error ' + textStatus);
alert(errorThrown);
alert(XMLHttpRequest.responseText);
},
success: function(){
alert('SUCCESS');
}
});
});
</script>
</head>
Run Code Online (Sandbox Code Playgroud)

我的body标签是粉丝:

<body>
<table border="1" width="80%" align="center">
<tr>
<td width="100%">
<s:tabbedPanel id="EmpDetail" useSelectedTabCookie="true">
<s:div id="one" label="Emp Reg." theme="ajax" tabindex="0" labelposition="top">
<center>
<s:form name="frmEmpReg" namespace="/" method="post">
EMPLOYEE REGISTRATIOM TAB<br>
<s:actionmessage …
Run Code Online (Sandbox Code Playgroud)

javascript java ajax jsp struts2

9
推荐指数
1
解决办法
3万
查看次数

两个相关的枚举映射?

我有两个相关的枚举.

Enum1:

public enum HttpMethodName 
{
    GET, POST, PUT, DELETE; 
}
Run Code Online (Sandbox Code Playgroud)

Enum2:

public enum ProtocolOperation {
    CREATE(1), RETRIEVE(2), UPDATE(3), DELETE(4), NOTIFY(5);


    private BigInteger operationId;

    public BigInteger getOperationId() {
        return operationId;
    }

    private ProtocolOperation(int operationId) {
        this.operationId = BigInteger.valueOf(operationId);
    }
}
Run Code Online (Sandbox Code Playgroud)

枚举值的映射为:

Create--> POST
Retrieve--> GET
Update--> PUT
Delete--> DELETE
Notify---> POST
Run Code Online (Sandbox Code Playgroud)

因此,值之间存在一对一的映射,除了仅POST可以具有两个值CreateNotify基于条件的情况.

我在考虑将映射保持为List:

    public enum HttpMethodName 
    {

        POST(new List(ProtocolOperation.CREATE, ProtocolOperation.NOTIFY)) ,GET ( new List(ProtocolOperation.RETRIEVE) ) ,
PUT (new List(ProtocolOperation.UPDATE) ,DELETE(new List(ProtocolOperation.DELETE) ; …
Run Code Online (Sandbox Code Playgroud)

java enums

9
推荐指数
1
解决办法
1402
查看次数

LISTEN/NOTIFY pgconnection关闭java?

我正在使用PostgreSQL DB并应用它的LISTEN/NOTIFY功能.所以我的监听器在我的AS(应用服务器)上,并且我在我的数据库上配置了触发器,这样当在表上执行CRUD操作时,NOTIFY在AS上发送请求.

java中的LISTENER类:

        @Singleton
        @Startup
    NotificationListenerInterface.class)
        public class NotificationListener extends Thread implements NotificationListenerInterface {

            @Resource(mappedName="java:/RESOURCES") 
            private DataSource ds;

            @PersistenceContext(unitName = "one")
            EntityManager em;

            Logger logger = Logger.getLogger(NotificationListener.class);

            private Connection Conn;
            private PGConnection pgConnection = null;
            private NotifyRequest notifyRequest = null;

            @PostConstruct
            public void notificationListener() throws Throwable {

                System.out.println("Notification****************");
                try
                {


                    Class.forName("com.impossibl.postgres.jdbc.PGDriver");
                    String url = "jdbc:pgsql://192.xx.xx.126:5432/postgres";


                    Conn = DriverManager.getConnection(url,"postgres","password");
                    this.pgConnection = (PGConnection) Conn;

                    System.out.println("PG CONNECTON: "+ pgConnection);
                    Statement listenStatement = Conn.createStatement();
                    listenStatement.execute("LISTEN notify_channel");
                    listenStatement.close();

                    pgConnection.addNotificationListener(new …
Run Code Online (Sandbox Code Playgroud)

java postgresql database-connection connection-pooling pg-jdbc

9
推荐指数
1
解决办法
2158
查看次数

JAXB编辑列表getter?

我有XSD文件形式的数据模型,然后从中xjc使用命令行生成相应的Java文件.

当我从XSD生成JAXB类时,List类型元素获取为它们生成的getter方法(没有相应的setter方法),如下所示:

public List<Type> getElement3() {
    if (element3 == null) {
        element3 = new ArrayList<Type>();
    }
    return this.element3;
}
Run Code Online (Sandbox Code Playgroud)

我在几乎所有从XSD List类型生成的文件中都有很多字段.

使用案例:

现在,我不希望通过null检查生成getter .我的应用程序代码具有逻辑,其中每个字段的getter经常被调用,这导致它们的初始化为 List.

然后在编组时我必须停止空列表以传递有效负载,以避免通过线路发送大量空列表.

PS:我有一个用例明确Empty List设置的用例,服务器必须删除后端的某些项目.因此,区分值是由用户显式设置还是仅因为在访问字段期间调用了getter而设置.List

那么,如何让JAXB生成一个没有null检查的getter ?

因为在编译之后编辑生成的java文件会很麻烦,因为它存在于很多文件中,我们有XSD版本需要更新,每次新版本出现时都必须执行编辑.

java jaxb xjc getter-setter moxy

9
推荐指数
1
解决办法
429
查看次数

Syslog时间戳没有年份?

我正在将我的日志回填到Elasticsearch中.因此,为了按日期的时间戳创建索引,我使用这样的date过滤器:

date {
                "locale" => "en"
                match => ["timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss", "ISO8601"]
                target => "@timestamp"
        }
Run Code Online (Sandbox Code Playgroud)

我正在使用来自syslog的日志,而syslog时间戳格式的doest没有年份:

# Syslog Dates: Month Day HH:MM:SS
SYSLOGTIMESTAMP %{MONTH} +%{MONTHDAY} %{TIME}
Run Code Online (Sandbox Code Playgroud)

因此,在使用日期过滤器之后,创建的索引就像logstash-2015.12.26 是在阅读2014年12月26日的日志.因此,由于时间戳在日志中不可用,所以它默认选择当前年份.

知道如何制作正确的索引吗?

elasticsearch logstash kibana

8
推荐指数
1
解决办法
4248
查看次数

自定义Json序列化器而不是Jersey的默认值?

我正在使用Jersey来实现RESTful webservice.现在我返回数据的MediaType是JSON.

@GET
@Produces({MediaType.APPLICATION_JSON })
public Response service() {
    return Response
            .ok(entity)
            .header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
            .build();
}
Run Code Online (Sandbox Code Playgroud)

在这里,我设置CONTENT_TYPE为json,我的实体将被Jersey框架转换为json.

现在我想自定义我的json响应.

例如:我想删除空元素或更改我的Json对象的键名.默认泽西岛的Json转换:

{
   "cinter" : {
     "state" : 1,
     "checks" : 10,
   }
}
Run Code Online (Sandbox Code Playgroud)

我想要的是:

{
   "cin" : {
     "st" : 1,
     "cs" : 10,
   }
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以ObjectMapper根据自己的需要使用杰克逊图书馆来自定义我的Json.

但是,如果我想以不同于Jersey默认转换的方式进行JSON转换,这是否是标准方法?

或者我可以在Jersey的ObjectMapper中更改参数吗?

我应该使用自己的ObjectMapper吗?

java json jax-rs jersey jackson

8
推荐指数
1
解决办法
5212
查看次数

动态根元素JAXB?

我正在尝试与第三方系统集成,并且根据对象的类型,返回的XML文档的根元素会发生变化。我正在使用JAXB库进行编组/解组。

根1:

<?xml version="1.0" encoding="UTF-8"?>
<root1 id='1'>
   <MOBILE>9831138683</MOBILE>
   <A>1</A>
   <B>2</B>
</root1>
Run Code Online (Sandbox Code Playgroud)

根2:

<?xml version="1.0" encoding="UTF-8"?>
<root2 id='3'>
   <MOBILE>9831138683</MOBILE>
   <specific-attr1>1</specific-attr1>
   <specific-attr2>2</specific-attr2>
</root2>
Run Code Online (Sandbox Code Playgroud)

我正在使用所有不同的XML将它们映射到通用对象

 @XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(name = "ROW")
public class Row {

    @XmlAttribute
    private int id;
    @XmlElement(name = "MOBILE")
    private int mobileNo;

    @XmlMixed
    @XmlAnyElement
    @XmlJavaTypeAdapter(MyMapAdapter.class)
    private Map<String, String> otherElements;
}
Run Code Online (Sandbox Code Playgroud)

还有用于将未知值转换为映射适配器

import org.w3c.dom.Document;
import org.w3c.dom.Element;

import javax.xml.bind.annotation.adapters.XmlAdapter;
import javax.xml.parsers.DocumentBuilderFactory;
import java.util.HashMap;
import java.util.Map;

public class MyMapAdapter extends XmlAdapter<Element, Map<String, String>> {

    private Map<String, String> hashMap = …
Run Code Online (Sandbox Code Playgroud)

java xml xsd jaxb marshalling

8
推荐指数
1
解决办法
140
查看次数