千家信息网

Logstash中怎么实现一个自动化运维系统

发表于:2025-02-08 作者:千家信息网编辑
千家信息网最后更新 2025年02月08日,本篇文章给大家分享的是有关Logstash中怎么实现一个自动化运维系统,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、Nginx日志配
千家信息网最后更新 2025年02月08日Logstash中怎么实现一个自动化运维系统

本篇文章给大家分享的是有关Logstash中怎么实现一个自动化运维系统,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

1、Nginx日志配置

编辑 /etc/nginx/nginx.conf 添加以下内容

   log_format json '{"@timestamp":"$time_iso8601",'        '"host":"$host",'        '"scheme":"$scheme",'        '"server_addr":"$server_addr",'        '"client_ip":"$remote_addr",'        '"server_protocol":"$server_protocol",'        '"method":"$request_method",'        '"query_string":"$query_string",'        '"body_bytes_sent":$body_bytes_sent,'        '"bytes_sent":$bytes_sent,'        '"request_length":$request_length,'        '"request_time":$request_time,'        '"upstream_time":"$upstream_response_time",'        '"upstream_host":"$upstream_addr",'        '"upstream_status":"$upstream_status",'        '"server_name":"$server_name",'        '"url":"$uri",'        '"request_url":"$request_uri",'        '"http_x_forwarded_for":"$http_x_forwarded_for",'        '"referer":"$http_referer",'        '"agent":"$http_user_agent",'        '"status":$status}';    access_log  /home/nginx/log/access.log  json;
2.2 rsyslog配置

使用rsyslog推送日志到Logstash,编辑/etc/rsyslog.d/nginx.conf,输入以下内容,完成后记得重启rsyslog服务。

$ModLoad imfile$Modload mmjsonparseaction(type="mmjsonparse")template(name="nginx-json" type="list") {    property(name="$!all-json")}$InputFileName /home/nginx/log/access.log$InputFileTag nginx-access$InputFileStateFile nginx-accessfile$InputFileSeverity info$InputFileFacility local7$InputRunFileMonitor$InputFilePersistStateInterval 1if $syslogtag startswith 'nginx' then @@10.160.209.10:514;nginx-json

3. 服务端配置

3.1 Logstash 配置

新建一个Logstash配置,名称为metric_nginx.conf,内容如下

input {    syslog {        host => "10.160.209.10"        port => "514"        codec => "json"        }}filter {      json {        source => "msg"        }      mutate {        convert => ["request_time",float]        }      mutate {        remove_field => ["msg"]        remove_field => ["@version"]        remove_field => ["port"]        remove_field => ["facility"]        remove_field => ["priority"]        remove_field => ["severity"]        remove_field => ["severity_label"]        remove_field => ["facility_label"]        }    metrics {        meter => "error.%{status}" #按不同的status值建立计数器        add_tag => "metric"        ignore_older_than => 10    }}output {  if "metric" in [tags] {      if [error.504][rate_1m] > 0.0 { # 当达504计数器到达设定的阈值则告警        stdout {            codec => line {            format => "alarm: %{[error.504][rate_1m]}" #模拟告警          }        }      }  }}

之后使用下面的命令启动Logstash服务

 logstash -f metric_nginx.conf

关于上面[rate_1m]计数器的定义请参考:https://www.elastic.co/guide/en/logstash/current/plugins-filters-metrics.html#_literal_meter_literal_values

4. 基于Logstash模型的运维自动化模型

介绍完上面的实例,相信大家可以看到Logstash的作用远不止如此,在熟悉Logstsh这套日志处理流程以后,完全可以实现一套基于日志驱动的自动化运维平台。如下图所示,可以将Mon、OSD等各类服务的日志接入Logtash,通过Logstash处理以后借助不同的output插件,可以选择性进行Alarm告警,或者是触发Ansible playbook操作,亦或是存储到redis、kafka一类的消息中间件从而打通和其他业务系统的数据通道。特别是当你的运维熟悉了Ceph的各种日志异常情况以后,完全可以做到一些线上故障的自动化处理。

以上就是Logstash中怎么实现一个自动化运维系统,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

0