写点什么

极客时间运维进阶训练营第六周作业

作者:好吃不贵
  • 2022-12-05
    浙江
  • 本文字数:1336 字

    阅读完需:约 4 分钟

1.基于 logstash filter 功能将 nginx 默认的访问日志及 error log 转换为 json 格式并写入 elasticsearch

https://github.com/jianywu/cloud_learn/blob/main/ELK/logstash/basic_examples/nginxlog_to_es.conf

其中 nginx 的 log 中的 grok 是正则表达式。

2.基于 logstash 收集 json 格式的 nginx 访问日志

https://github.com/jianywu/cloud_learn/blob/main/ELK/logstash/basic_examples/nginx-json-log-to-es.conf

3.基于 logstash 收集 java 日志并实现多行合并

https://github.com/jianywu/cloud_learn/blob/main/ELK/logstash/basic_examples/es-log-to-es.conf

先安装 jdbc 的插件:

/usr/share/logstash/bin/logstash-plugin --help

/usr/share/logstash/bin/logstash-plugin list

/usr/share/logstash/bin/logstash-plugin install logstash-output-jdbc

此例子的 java 程序,直接使用 elastic search 的 log 即可。

需要用到 logstash 自带的 multiline 插件,因为 java 的错误 log 是分多行的。

multiline 可以识别,并合并成一行。pattern 是年-月-日。negate 是 true,表示匹配成功 pattern。what 是 prev 表示和之前的合并。

codec => multiline {  pattern => "^\[[0-9]{4}\-[0-9]{2}\-[0-9]{2}"  negate => "true"  what => "previous"
复制代码

4.基于 logstash 收集 syslog 类型日志(以 haproxy 替代网络设备)

https://github.com/jianywu/cloud_learn/tree/main/ELK/examples/haproxy

先安装 haproxy,从而产生 syslog,供 logstash 读取。

一般网络设备会产生 syslog。

选择 syslog,然后监听某个端口。

syslog { port => "514" },就会收集到 log。

5.logstash 收集日志并写入 Redis、再通过其它 logstash 消费至 elasticsearch 并保持 json 格式日志的解析

https://github.com/jianywu/cloud_learn/blob/main/ELK/examples/redis/magedu-log-to-redis.conf

安装 Redis

apt install redis -y

修改/etc/redis/redis.conf 文件,bind 0.0.0.0,requirepass 的密码修改一下,示例为 123456,实际使用建议 4 选 3(大写,小写,数字,特殊字符)。


本地登录使用 redis-cli 很方便,命令会有提示。

要先输入 AUTH $password,否则没法查看内部数据。

KEYS *可以显示详细的内容。

远程登录还可以通过 telnet $ip 6379,也支持本地登录。

telnet 退出是 ctrl + ]按钮,其中^表示 ctrl 键。

写入 Redis

redis {  data_type => "list"  key => "magedu-nginx-accesslog"  host => "10.11.154.8"  port => "6379"  db => "0"  password => "magedu123"}
复制代码

日志可以用 grok 正则表达式匹配一下,然后再 logstash 写入数据库。

grok {  match => { "message" => ["(?<timestamp>%{YEAR}[./]%{MONTHNUM}[./]%{MONTHDAY} %{TIME}) \[%{LOGLEVEL:loglevel}\] %{POSINT:pid}#%{NUMBER:threadid}\: \*%{NUMBER:connectionid} %{GREEDYDATA:message}, client: %{IPV4:clientip}, server: %{GREEDYDATA:server}, request: \"(?:%{WORD:request-method} %{NOTSPACE:request-uri}(?: HTTP/%{NUMBER:httpversion}))\", host: %{GREEDYDATA:domainname}"]}  remove_field => "message" #删除源日志}
复制代码

再写入 es 即可。

6.基于 docker-compose 部署单机版本 ELK

https://github.com/jianywu/cloud_learn/tree/main/ELK/docker-compose

部署后,输入 elastic 用户名和密码,就可以进入 ELK 的 elasticsearch。

和 kibana 系统。


用户头像

好吃不贵

关注

还未添加个人签名 2018-11-20 加入

还未添加个人简介

评论

发布
暂无评论
极客时间运维进阶训练营第六周作业_好吃不贵_InfoQ写作社区