logstach安装
解压 配环境变量
#运行 logstach 必须手写conf配置文件
logstach作为日志收集工具
1.支持多种数据源输入
2.支持多种过滤器
3.支持多种数据输出目的地
实例1:
input {
file{
path =>["/etc/passwd","/var/log/messages"]
start_position =>“beginning”
sincedb_path =>"/dev/null"
}
}
filter{}
output {
stdout{}
}
输入源:file
1.path:目录为两个目录 多个目录中用逗号分隔
2.start_position=>beginning 从起始位置开始输入
sincedb_path=>/dev/null 指定输入后产生的临时日志文件的垃圾回收路径
#正常情况下输入会产生缓存日志,如果没有垃圾回收,或者未删除缓存日志,下次读取则会从
#已经读取过的位置来开始读取 缓存日志存放路径 /opt/logstash/data/plugins/inputs/file
过滤器:空
输出源:控制台打印
实例2:
input {
file{
path => “/root/stu.json”
start_position =>“beginning”
sincedb_path =>"/dev/null"
codec =>“json”
}
}
filter{}
output {
stdout{codec =>“rubydebug”}
}
1.codec => “json” 指定输入源文件格式为json
2.stdout{codec =>“rubydebug”} 指定控制台输出代码风格为rubydebug
实例3:
input {
stdin{}
}
filter{
grok{
match=>{“message”=>"%{NUMBER:duration} %{IP:client}"}
}
mutate{convert=>[“duration”,“integer”]}
}
output{
if [duration]<100{
stdout{codec=>rubydebug}
}
}
1.filter 指定过滤器类型为grok match 匹配中"message"为固定格式 后面跟的%{NUMBER:duration} %{IP:client}
这些都是grok类型过滤器中自行设定好的变量, NUMBER类型标识数字, IP类型识别IP
2.mutate类型也是filter过滤器的一种,可以对字段进行重命名,修改
3.output中可以给定条件判断进行输出
实例4:
input{
stdin{}
}
filter{
grok{
match=>{“message”=>"(?\d*[./-]\d*[./-]\d* \d*:\d*:\d*) %{NUMBER:duration} %{IP:client}"}
}
}
output{stdout{codec=>rubydebug}}
1.grok中可以自行定义正则表达式去匹配,如上述定义了date类型的正则
实例5(重点练习):
input {
file{
path =>"/root/logstash/student.csv"
start_position =>“beginning”
sincedb_path => “/dev/null”
}
}
filter {
csv {
separator => “,”
columns => [“userid” ,“username” ,“age”,“score”]
}
mutate {
convert => {
“userid” => “integer”
“username” => “string”
“age” => “integer”
“score” => “float”
}
}
}
output {
elasticsearch{
hosts =>[“192.168.56.100:9200”]
index =>“student”
document_type => “userinfos”
}
}
1.过滤器中可以指定对csv文件进行的过滤 其中分隔符为, 分割后的字段为上述columns中的内容
2.mutate convert进行类型指定
3.输出中指定输出源为es,主机地址映射9200,索引名为student,类型名为userinfos
案例6(重点练习):
input {
jdbc {
jdbc_connection_string => “jdbc:mysql://localhost:3306/log”
jdbc_user => “root”
jdbc_password => “ok”
jdbc_driver_library => “/root/workspace/download/mysql-connector-java-5.1.44-bin.jar”
jdbc_driver_class => “com.mysql.jdbc.Driver”
jdbc_paging_enabled => “true”
jdbc_page_size => “1000”
statement => “select * from logs_20171206”
schedule => “* * * * *”
type => “jdbc”
}
}
output {
elasticsearch {
hosts => [“192.168.56.100:9200”]
index => “behivour-logs”
document_type => “logs_20171206”
document_id => “%{id}”
}
}
1.输入源 指定类型为jdbc 将数据库中的表导入es
jdbc固定格式,连接地址,用户名,密码,指定jdbc驱动,查询语句
2.指定输出index名 type名,并且将数据库中id作为 type的指定id