目录
Filebeat安装、使用(如果只有一个数据流,则不需要使用filebeat,直接上logstash即可)
ES下载 Kibana下载 Logstash下载 FileBeat下载 NSSM下载(用来注册系统服务)
跳转到bin目录,执行下面的代码将es注册为系统服务
elasticsearch-service.bat install
执行成功后,可以在系统服务中查看到相应的服务,直接【启动】服务即可(可以根据需要设置自启)

服务启动成功后访问https://127.0.0.1:9200(注意协议是https,如果想要使用http协议,可以修改【config\elasticsearch.yml】,将xpack.security.http.ssl:enable设置为【false】然后重启)
第一次访问需要用户名、密码,默认的用户名是【elastic】,可以通过下面的命令重置密码(切换到bin目录下执行)
elasticsearch-reset-password --username elastic -i
kibana需要从elasticsearch中读取数据,所以在启动时需要连接elasticsearch,可以通过【kibana\config\kibana.yml】中的【elasticsearch.hosts】来指定elasticsearch地址(由于elasticsearch开启了身份验证,所以连接时需要提供用户名、密码或者token,上面提到过elasticsearch默认用户是elastic,但是elastic是超级管理员,不允许直接连接,所以这里可以新建一个用户供kibana使用或者使用token的方式),下面提供的是生成token的命令(切换到【elasticsearch\bin】下执行,namespace、service、token_name自行替换)
elasticsearch-service-tokens create /
下载NSSM,然后将nssm.exe(结合操作系统位数选择相应的exe)复制到【kibana\bin】目录下,然后在bin目录下执行
nssm install kibana

执行成功后,可以在系统服务中查看到相应的服务,直接【启动】服务即可(可以根据需要设置自启)

服务启动成功后访问http://127.0.0.1:5601(用户名、密码与elasticsearch用户名、密码一致)
- kibana.yml
-
- # 中文显示
- i18n.locale: "zh-CN"
logstash主要用input、filter、output三个模块,其中input负责数据录入、output负责数据输出、filter负责数据处理
- #log-example.conf
-
- input {
- # 从filebeats读取数据
- # beats {
- # host => xxxx
- # port => 5044
- # ssl => false
- # }
-
- # 从指定位置的文件读取数据
- file {
- # 注意这里文件分隔符不能使用'\'
- path => ['D:/logs/project1/*.log', 'D:/logs/project2/*.log']
- start_position => 'beginning'
- type => 'logs'
- # 将多行日志转换为一条记录(比如异常栈)
- codec => multiline {
- charset => 'GB2312'
- pattern => '^\d{4}'
- negate => true
- what => 'previous'
- }
- }
- }
-
- filter {
- grok {
- # 解析输入记录转换为json格式并为每个字段命名
- match => {"message" => "%{TIMESTAMP_ISO8601:timestamp} %{DATA:level} %{DATA:thread} %{DATA:class} %{DATA:ip} %{DATA:username} %{GREEDYDATA:msg}"}
- }
-
-
- date {
- match => ['timestamp', 'yyyy-MM-dd HH:mm:ss.SSS']
- # 使用grok中解析出来的timestamp替换@timestamp
- target => '@timestamp'
- # 删除grok中解析出来的timestamp字段
- remove_field => ['timestamp']
- }
-
- }
-
- output {
- # 输出到ES
- elasticsearch {
- hosts => ["http://xxxx:9200"]
- index => "log-%{+YYYY.MM.dd}"
- user => "xxx"
- password => "xxx"
- }
- # debug模式下启用,可以将数据输出到控制台
- stdout {
- codec => json
- }
- }
将nssm.exe(结合操作系统位数选择相应的exe)复制到【logstash\bin】目录下,然后在bin目录下执行(注意Arguments需要指定配置文件,比如上面给出来的log-example.conf)
nssm install logstash

执行成功后,可以在系统服务中查看到相应的服务,直接【启动】服务即可(可以根据需要设置自启)
话不多说,直接提供一个filebeat.yml模板
- # ============================== Filebeat inputs ===============================
-
- filebeat.inputs:
- - type: log
-
- # Unique ID among all inputs, an ID is required.
- id: log
- enabled: true
- tail_file: true
- encoding: GB2312
- # 将多行日志转换为一条记录(比如异常栈)
- multiline.pattern: '^\d{4}'
- multiline.negate: true
- multiline.match: after
- paths:
- - D:\logs\project1\*.log
- - D:\logs\project2\*.log
-
- # ============================== Filebeat modules ==============================
-
- filebeat.config.modules:
- path: ${path.config}/modules.d/*.yml
-
- reload.enabled: false
-
- # ================================== Outputs ===================================
-
- # ------------------------------ Logstash Output -------------------------------
- output.logstash:
- # The Logstash hosts
- enabled: true
- hosts: ["xxxx:5044"]
-
- # ================================= Processors =================================
- processors:
- - add_host_metadata:
- when.not.contains.tags: forwarded
- - add_cloud_metadata: ~
- - add_docker_metadata: ~
- - add_kubernetes_metadata: ~
- - add_fields:
- target: '@metadata'
- fields:
- source: 'log'
- - drop_fields:
- fields: ['agent', 'ecs', 'host', 'mac', 'hostname', 'architecture', 'os', 'input', '@timestamp', 'log']
-