logstash配置
官方文檔:https://www.elastic.co/guide/en/logstash/current/index.htmlhtml
http://www.javashuo.com/article/p-rchibiya-nh.htmlnginx
在config/logstash.yml中redis
http.host: "192.168.31.102"json
xpack.monitoring.enabled: truebootstrap
xpack.monitoring.elasticsearch.username: "logstash_system"vim
xpack.monitoring.elasticsearch.password: "mPpO8ceIo14Z7k0ZQIHJ"ruby
xpack.monitoring.elasticsearch.hosts: ["http://localhost:9200"]bash
在bin文件下面新建logstash.confelasticsearch
logstash pipeline 包含兩個必須的元素:input和output,和一個可選元素:filter。從input讀取事件源,(通過filter解析和處理以後),從output輸出到目標存儲庫(elasticsearch或其餘)。ide
input{
輸入插件
}
filter{
過濾器插件
}
outer{
輸出插件
}
一、input
能夠接收來自任何地方的源數據:
https://www.elastic.co/guide/en/logstash/current/input-plugins.html
事件源能夠是從stdin屏幕輸入讀取,能夠從file指定的文件,也能夠從es,filebeat,kafka,redis等讀取
file{ path => ['/var/log/nginx/access.log'] #要輸入的文件路徑 type => 'nginx_access_log' start_position => "beginning" } # path 能夠用/var/log/*.log,/var/log/**/*.log,若是是/var/log則是/var/log/*.log # type 通用選項. 用於激活過濾器 # start_position 選擇logstash開始讀取文件的位置,begining或者end。 還有一些經常使用的例如:discover_interval,exclude,sincedb_path,sincedb_write_interval等能夠參考官網
syslog{ port =>"514" type => "syslog" } # port 指定監聽端口(同時創建TCP/UDP的514端口的監聽) #從syslogs讀取須要實現配置rsyslog: # cat /etc/rsyslog.conf 加入一行 *.* @172.17.128.200:514 #指定日誌輸入到這個端口,而後logstash監聽這個端口,若是有新日誌輸入則讀取 # service rsyslog restart #重啓日誌服務
beats { port => 5044 #要監聽的端口 } # 還有host等選項 # 從beat讀取須要先配置beat端,從beat輸出到logstash。 # vim /etc/filebeat/filebeat.yml .......... output.logstash: hosts: ["localhost:5044"]
kafka{ bootstrap_servers=> "kafka01:9092,kafka02:9092,kafka03:9092" topics => ["access_log"] group_id => "logstash-file" codec => "json" } kafka{ bootstrap_servers=> "kafka01:9092,kafka02:9092,kafka03:9092" topics => ["weixin_log","user_log"] codec => "json" } # bootstrap_servers 用於創建羣集初始鏈接的Kafka實例的URL列表。 # topics 要訂閱的主題列表,kafka topics # group_id 消費者所屬組的標識符,默認爲logstash。kafka中一個主題的消息將經過相同的方式分發到Logstash的group_id # codec 通用選項,用於輸入數據的編解碼器。
二、filter
Filter數據中轉層,主要進行格式處理,數據類型轉換,數據過濾,字段添加,修改等,經常使用的過濾器:
https://www.elastic.co/guide/en/logstash/current/filter-plugins.html
三、output
Output是logstash工做的最後一個階段,負責將數據輸出到指定位置,兼容大多數應用:
https://www.elastic.co/guide/en/logstash/current/output-plugins.html
rabbitmq同步
https://www.elastic.co/guide/en/logstash/current/plugins-inputs-rabbitmq.html
input { rabbitmq { host => "127.0.0.1" port=>5672 vhost=>"CRM" subscription_retry_interval_seconds => "5" codec => "plain" exchange => "log.msg.direct" queue => "CRM_LOG" durable => true key => "rk.log.direct" user => "admin" password => "admin" } } output { elasticsearch { hosts => ["localhost:9200"] #flush_size=> 10 #workers => 5 #document_id => "%{jobid}" #document_type => "BaseSysLog" index => "position-%{+YYYYMMdd}" user => "elastic" password => "caKBawShu0Pm7BsjSFbd" } stdout { codec => rubydebug } }
input說明:
host IP地址
port rabbitmq端口
queue 數據源隊列名稱
key 交換機key
exchange 交換機
durable 持續性
subscription_retry_interval_seconds 出現錯誤時5秒後重試
start_position 從隊列開始處讀寫
vhost 虛擬機
use rabbitma用戶名
password rabbitma用戶密碼
https://pro.leanote.com/p/5a98b1bc28389bfc454a6d10
logstash安裝
官網:https://www.elastic.co/cn/downloads/logstash
bin目錄
建立一個run.bat 內容以下
logstash -f logstash.conf 或者 logstash -f config\logstash.conf
md 運行 nssm install logstash 在彈出的界面設置 Path爲run.bat,Details選項卡設置顯示名,Dependencies選項卡設置依賴服務 elasticsearch-service-x64 最後點擊install service 安裝成功