当前尝试使用以下设置填充员工索引:
会议
input {
jdbc {
jdbc_driver_library => "~/sqljdbc_6.2/enu/mssql-jdbc-6.2.1.jre8.jar"
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
jdbc_connection_string => "jdbc:sqlserver://SERVER;user=USER;password=PASSWORD"
jdbc_user => "DB_USER"
jdbc_password => "DB_PASSWORD"
jdbc_validate_connection => true
jdbc_validation_timeout => -1
statement => "SELECT * FROM [dbo].Employee ORDER BY ID"
type => "employee"
}
}
filter {
}
output {
}
注意: conf 文件的过滤器和输出部分故意为空白
Linux 命令
sudo /usr/share/logstash/bin/logstash -f /home/ubuntu/Employee-pipeline.conf --path.settings /etc/logstash/ --path.data /var/lib/logstash_new
结果
看起来logstash 不知道或无权访问~/sqljdbc...*.jar
我还确认了mssql-jdbc-6.2.1.jre8.jar存在

但是,当我将路径更改为/home/ubuntu/sqljdbc_6.2/enu/mssql-jdbc-6.2.1.jre8.jar时,它运行成功。
所以~/和/home/ubuntu是一样的
这在将我们的 Elastic Stack 从 v5.5 升级到 v5.6 后开始出现。另外,请注意,如果我们使用 logstash 服务运行相同的 conf 文件,则不会发生这种情况。