[TOC]
# 運行參數

# 配置語法
* 處理輸入的input
* 處理過濾的filter
* 處理輸出的output
完整的配置語句

**語法格式**
* 區域
* 數據類型(布爾值,字符串,數值,數組,哈希)
* 條件判斷
* 字段引用
**區域**
* logstash中,是用{}來定義區域的
* 區域內,我們可以定義插件
* 一個區域內是定義多個插件
**數據類型**

**條件判斷**


**字段引用**
logstash還支持變量內插,在字符串里使用字段引用的方法是這樣的

# logstash插件
* inputs 就是輸入
* codecs就是解碼
* filters就是過濾
* outputs輸出
插件獲取地址
https://github.com/logstash-plugins
在線安裝
`./plugin install logstash-input-jdbc`
升級插件
`./plugin update logstash-input-jdbc`
卸載插件
`./plugin uninstall logstash-input-jdbc`
淘寶源地址
https://ruby.taobao.org
替換源: 安裝gem包,`yum install -y gem`
然后`gem sources --remove http://ruby.taobao.org/`
最好運行下`gem sources -l` 看下源地址
先切換下源在安裝插件
列出插件列表
~~~
./plugin list
~~~
# inputs輸入配置
* Stdin標準輸入
* File文件輸入
* TCP/UDP輸入
* Rsyslog輸入
## File文件輸入

路徑要寫絕對路徑,不要寫相對路徑
例子,讀取elasticsearch.log

可以讀取多個日志用`*`做通配符

也可以定義多個file


這個參數是,比如你測試日志,他讀到100行,你把日志刪了,他不會從頭讀,加上這個可以從頭讀取
## TCP輸入

例子

我們來測試下
在bin下寫個文件tcp.conf
~~~
input {
tcp {
port => 9999
mode => "server"
ssl_enable=>false
}
}
output {
stdout {}
}
~~~
然后我們運行
~~~
./logstash -f tcp.conf
~~~
再開個窗口運行
~~~
# 后面是個文件
nc 127.0.0.1 9999 < original-ks.cfg
~~~
## UDP輸入

例子

## syslog輸入
rsyslog是一個syslog的多線程加強版
從centos6開始,syslog由rsyslog替代
~~~
/etc/rsyslog.conf
service rsyslog restart
~~~

# codec編碼配置
codec:解碼編碼
json,msgpack,edn...
logstash處理流程
~~~
input-->decode-->filter-->encode-->output
~~~
## plain編碼
plain是一個空的解析器,他可以讓用戶自己指定格式
例子

把這個寫到文件中然后運行
~~~
./logstash -f plain.conf
~~~
然后你輸出什么他就顯示什么
## json編碼
如果事件格式是json的話,直接 `codec=>json`
例子1:
~~~
input{
stdin{
}
}
output{
stdout{
codec=>json
}
}
~~~
例子2:
如果你的json文件比較長,需要換行那么就用到json_lines的編碼方式
~~~
input{
tcp{
port=>12388
host=>"127.0.0.1"
codec=>json_lines{
}
}
}
output{
stdout{}
}
~~~
不用json_line他會有反斜杠轉義
## rubydebug
將采用RubyAwsonePrint庫來解析日志
輸出格式

例子:
~~~
input{
stdin{
codec=>json
}
}
output{
stdout{
codec=>rubydebug
}
}
~~~
## multiline多行事件編碼
有時候有的日志會用很多行去展現,這么多行其實都是一個事件
比如java的異常日志

例子
一段日志



# filter過濾配置
* Json filter
* Grok filter
* KV filter
## Json filter
數據格式是json,那么可以通過它把數據解析成你想要的數據結構
**設置參數**

source就是來源數據,target表示解析目標字段
例子:


如果多了target就會把結果放到target指定的下面
## Grok filter
grok是目前logstash里面最好的一種解析各種非結構化的日志數據的工具
原因是里面有很多定義好的patterns

**設置參數**

例子
日志

--
配置

--
**patterns_dir**
路徑要寫絕對路徑不能寫相對路徑

**多匹配規則定義**
如果日志

可以在這個網址上測試`https://grokdebug.herokuapp.com`
可以檢驗你的pattern寫的是不是正確
## KV filter
解析處理key-value這種鍵值對數據

例子

# output
如何讓數據經過logstash的解析和處理后,把結果輸出出來
* 輸出到file
* 以tcp/udp方式輸出
* 輸出到elasticsearch
## 輸出到file
把解析過濾的結果,輸出到file文件里
比如放到一個txt文件里
例子1

還可以定義輸出的文件是被壓縮的,message指定輸出的字段

## tcp/udp方式輸出
tcp

udp

## 輸出到elasticsearch
elasticsearch就是數據庫
把logstash解析過濾的結果輸入到elasticsearch里
方可存儲以及檢索

這邊host一般寫主節點,你也可以把集群名字寫進去
index是索引名稱,type是在input里面定義的,引用這個字段
也可以讓logstash的結果輸出到redis中
- SQL
- 名詞
- mysql
- 初識mysql
- 備份和恢復
- 存儲引擎
- 數據表損壞和修復
- mysql工具
- 數據庫操作
- 增
- 刪
- 改
- 查
- 數據類型
- 整數類型
- 小數類型
- 日期時間類型
- 字符和文本型
- enum類型
- set類型
- 時間類型
- null與not null和null與空值''的區別
- 數據表操作
- 創建
- 索引
- 約束
- 表選項列表
- 表的其他語句
- 視圖
- sql增刪改查
- sql增
- sql刪
- sql改
- sql查
- sql語句練習
- 連接查詢和更新
- 常用sql語句集錦
- 函數
- 字符函數
- 數值運算符
- 比較運算符與函數
- 日期時間函數
- 信息函數
- 聚合函數
- 加密函數
- null函數
- 用戶權限管理
- 用戶管理
- 權限管理
- pdo
- 與pdo相關的幾個類
- 連接數據庫
- 使用
- pdo的錯誤處理
- pdo結果集對象
- pdo結果集對象常用方法
- pdo預處理
- 常用屬性
- mysql編程
- 事務
- 語句塊
- mysql中的變量
- 存儲函數
- 存儲過程
- 觸發器
- mysql優化
- 存儲引擎
- 字段類型
- 三范式和逆范式
- 索引
- 查詢緩存
- limit分頁優化
- 分區
- 介紹
- 分區算法
- list分區
- range范圍
- Hash哈希
- key鍵值
- 分區管理
- 特別注意
- 分表
- 數據碎片與維護
- innodb表壓縮
- 慢查詢
- explain執行計劃
- count和max,groupby優化
- 子查詢優化
- mysql鎖機制
- 介紹
- 演示
- 總結
- 樂觀鎖和悲觀鎖
- 扛得住的mysql
- 實例和故事
- 系統參數優化
- mysql體系結構
- mysql基準測試
- 索引
- mysql的復制
- win配置MySQL主從
- mysql5.7新特性
- 常見問題
- general log
- 忘記密碼
- uodo log與redo log
- 事務隔離級別
- mysql8密碼登錄
- explain
- 高效的Tree表
- on delete cascade 總結
- mongod
- 簡介
- 集合文檔操作語句
- 增刪改查
- 索引
- 數據導入和導出
- 主從復制
- php7操作mongod
- 權限管理
- redis
- redis簡介
- 3.2版本配置文件
- 3.0版本配置文件
- 2.8版本配置文件
- 配置文件總結
- 外網連接
- 持久化
- RDB備份方式保存數據
- AOF備份方式保存數據
- 總結
- win安裝redis和sentinel部署
- 事務
- Sentinel模式配置
- 分布式鎖
- 管道
- php中redis代碼
- 發布訂閱
- slowlog
- Redis4.0
- scan和keys
- elasticsearch
- 配置說明
- 啟動
- kibana
- kibana下載
- kibana配置文件
- kibana常用功能
- 常用術語
- Beats
- Beats簡介
- Filebeat
- Packetbeat
- Logstash
- 配置
- elasticsearch架構
- es1.7
- head和bigdesk插件
- 插件大全
- 倒排索引
- 單模式下API增刪改查
- mget獲取多個文檔
- 批量操作bulk
- 版本控制
- Mapping映射
- 基本查詢
- Filter過濾
- 組合查詢
- es配置文件
- es集群優化和管理
- logstash
- kibana
- es5.2
- 安裝
- 沖突處理
- 數據備份
- 缺陷不足
- 集群管理api
- 分布式事務
- CAP理論
- BASE模型
- 兩階段提交(2PC)
- TCC (Try-Confirm-Cancle)
- 異步確保型
- 最大努力通知型
- 總結