ElasticSearch+Filebeats+Kibana实现服务器日志分析以及性能分析

考虑到nginx日志文件太大,分割太麻烦,为了方便分析服务器性能,所以有了此文章。

安装elastic

下载 Elastic 产品 | Elastic免费下载 Elasticsearch、Logstash、Kibana 和 Beats,分分钟上手使用 Elastic APM、Elastic App Search、Elastic Workplace Search 等服务。ElasticSearch+Filebeats+Kibana实现服务器日志分析以及性能分析https://www.elastic.co/cn/downloads/

新建文件夹

mkdir -p /usr/local/elk

下载elastic

cd /usr/local/elk
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.0-linux-x86_64.tar.gz
tar xvf elasticsearch-7.6.0-linux-x86_64.tar.gz

启动elastic

cd /usr/local/elk/elasticsearch-7.6.0/bin
./elasticsearch -d

异常情况:

java.lang.RuntimeException: can not run elasticsearch as root
这种就是不能用root

解决方式

    创建elastic用户
    adduser elastic
    设置密码
    passwd elastic
    修改目录权限
    chown -R  elstic /etc/usr/elk
    切换用户
    su elastic

然后可以用curl 127.0.0.1:9200 测试,如果返回json串就是成功了。

本地可以安装一个elastic head可视化查询elastic数据,https://github.com/mobz/elasticsearch-head

npm run start 启动,本地访问9100端口,然后连接服务器地址:9200就可以了

如果外部访问不了这么排查:

1.先curl看能不能访问,如果没有拒绝那就是端口没打开

2.然后就排查端口是否开放,安全组件放了端口后,服务器的防火墙也要把端口打开

3.elastic 配置改一下 外网可以访问host:0.0.0.0

打开端口命令:/sbin/iptables -I INPUT -p tcp --dport 9200 -j ACCEPT

查看端口是否开放:/sbin/iptables -L -n

如果出现下面异常:

the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured

添加配置:

cluster.name: my-application
node.name: node-1
discovery.seed_hosts: ["127.0.0.1"]
cluster.initial_master_nodes: ["node-1"]

==================================================================

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

/etc/sysctl.conf
vm.max_map_count=262144
/sbin/sysctl -p  立即生效

==================================================================

elasticsearch-head 集群健康值: 未连接
elasticsearch.yml 配置文件加上
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-methods: OPTIONS, HEAD, GET, POST, PUT, DELETE
http.cors.allow-headers: "X-Requested-With, Content-Type, Content-Length, X-User"

安装filebeats

cd /usr/local/elk/
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.6.0-linux-x86_64.tar.gz
tar xvf filebeat-7.6.0-linux-x86_64.tar.gz
./filebeat modules list

./filebeat modules enable nginx
查询modules列表打开nginx

./filebeat modules disable nginx 关掉modules

修改modules.d里面的nginx文件 配置access.log和error.log

然后把外面配置文件里面的输入删除  设置modules

nohup ./filebeat -e -c filebeat.yml > filebeat.log &

后台启动

Exiting: Error while initializing input: required 'object', but found 'string' in field 'filebeat.inputs.0.fields' (source:'filebeat.yml')

一般配置有问题,用排除法修改配置测试

./filebeat -c filebeat.nginx.yml setup 

安装大盘表

Exiting: resource 'filebeat-7.9.3' exists, but it is not an alias
会提示这个资源已经存在,但是没有别名,因此,需要删除原本创建的filebeat索引,再重新执行上述命令让其自动创建索引即可正常地进行仪表盘安装。

删除掉后需要日志改变才会去激活,nginx 502 都会有日志 

安装kibana

cd /usr/local/elk/logstash-7.6.0/config
cp logstash-sample.conf logstash.conf
vim logstash.conf
配置日志输入,beats配置
input {
  beats {
      # beats的端口号
    port => 5044
    # 是否开启ssl加密,否
    ssl => false
  }
}

./kibana & 后台启动

上一篇:LNK2019 无法解析的外部符号 该符号在函数 _main 中被引用


下一篇:Shader_2[杂]