一、介绍
packetbeat是一个实时的网络数据包分析器,可以使用Elasticsearch提供应用程序监控和性能分析系统。packetbeat可通过提供你的网络服务器之间的可见性。
packetbeat通过捕捉你的应用服务器之间的网络流量,解码的应用层协议(HTTP,mysql,redis等等),将请求与响应相关联,并记录每个事务的字段。
packetbeat可以帮助您轻松地通知你的后端应用程序的问题,如错误或性能问题进行故障排查,而且他们因此更快的进行问题定位。
packetbeat探嗅服务器之间的流量,动态分析的应用层协议,并将消息关联到事务中。目前packetbeat支持以下协议:
ICMP (v4 and v6)
DNS
HTTP
AMQP 0.9.1
Cassandra
Mysql
PostgreSQL
Redis
Thrift-RPC
MongoDB
Memcache
TLS
packetbeat可以插入相关的事务直接进入到一个中央队列elasticsearch、redis或logstash进行创建。
packetbeat可以运行在与应用程序进程相同的服务器上,也可以在自己的服务器上单独运行。当在专用服务器上运行时,Packetbeat可以从交换机的镜像端口或窃听设备获得流量。在这样的部署中监视应用程序上的开销为零。详情请参阅设置流量捕获选项。在解码了第7层消息之后,请求与我们所称的事务中的响应相关联。对于每个事务,packetbeat将插入一个JSON文档到Elasticsearch。有关哪些字段被索引的详细信息,请参见导出字段部分。相同的ElasticSearch和Kibana实例用于分析Packetbeat收集的网络流量,可以用于分析Logstash收集的日志文件。通过这种方式,您可以在同一系统中进行网络通信和日志分析。
二、部署packetbeat及在elasticsearch中加载packetbeat索引模板
curl -L -O https://artifacts.elastic.co/downloads/beats/packetbeat/packetbeat-6.1.2-x86_64.rpm
rpm -ivh packetbeat-6.1.2-x86_64.rpm
egrep -v "#|^$" /etc/packetbeat/packetbeat.yml
packetbeat.interfaces.device: any packetbeat.flows: timeout: 30s period: 10s packetbeat.protocols: - type: amqp ports: [5672] - type: cassandra ports: [9042] include_authorities: true include_additionals: true - type: http ports: [80, 8080, 8000, 5000, 8002] - type: memcache ports: [11211] - type: mysql ports: [3306] - type: pgsql ports: [5432] - type: redis ports: [6379] - type: thrift ports: [9090] - type: mongodb ports: [27017] - type: nfs ports: [2049] - type: tls ports: [443] setup.template.settings: index.number_of_shards: 3 setup.kibana: output.elasticsearch: hosts: ["172.29.36.187:9200"] |
开启packetbeat服务:
service packetbeat start
创建/etc/yum.repos.d/elasticsearch.repo,并添加如下内容:
[elasticsearch-6.x] name=Elasticsearch repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md |
通过yum源安装elasticsearch
yum install elasticsearch
配置/etc/elasticsearch/elasticsearch.yml中相关参数
path.data: /home/elasticsearch
network.host: 172.29.36.187
开启elasticsearch服务
/etc/init.d/elasticsearch start
在Elasticsearch中索引模板用于定义设置和映射,这些设置和映射决定如何分析字段。
Packetbeat的推荐索引模板文件是由Packetbeat包安装的。如果您接受packetbeat.yml配置文件中的默认配置,则Packetbeat在成功连接到elasticsearch之后将自动加载模板。如果模板已经存在,除非您配置Packetbeat否则它不会被覆盖。 可以通过在Packetbeat配置文件中配置模板加载选项来禁用自动加载模板或加载自定义的模板。 还可以设置选项以更改索引和索引模板的名称。
注:加载索引模板需要连接到Elasticsearch。如果输出是Logstash,则必须手动加载模板。
默认情况如果启用了Elasticsearch输出,Packetbeat会自动加载推荐的模板文件fields.yml。可以将packetbeat.yml配置文件中的默认值更改为:
setup.template.name: “packetbeat" setup.template.fields: "/etc/packetbeat/fields.yml" |
如果模板已经存在,它不会覆盖配置packetbeat
覆盖现有模板
setup.template.overwrite:true
禁用自动模板加载
setup.template.enabled:false
手动加载模板(代替方法) 如果运行PacketBate的主机没有与Elasticsearch的直接连接,则可以将索引模板导出到文件中,将其移动到已经连接性的机器上,然后手动安装该模板。
packetbeat export template > packetbeat.template.json curl -XDELETE 'http://172.29.36.187:9200/packetbeat-*' curl -XPUT -H 'Content-Type: application/json' 'http://172.29.36.187:9200/_template/packetbeat' -d@paacketbeat.template-es.json {"acknowledged":true} curl -XGET 'http://172.29.36.187:9200/packetbeat-*/_search?pretty' |
三、部署kibana及相关配置
创建/etc/yum.repos.d/kibana.repo,并添加如下内容:
[kibana-5.x] name=Kibana repository for 5.x packages baseurl=https://artifacts.elastic.co/packages/5.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md |
通过yum源安装kibana
yum install kibana
配置/etc/kibana/kibana.yml文件中的如下参数
server.host: “172.29.36.187"
elasticsearch.url: "http://172.29.36.187:9200”
开启kibana服务
/etc/init.d/kibana start
Packetbeat附带了例如Kibana仪表板、可视化和搜索Kibana中的Packetbeat数据。在使用仪表板之前,您需要创建索引模式packetbeat-*,并将仪表板加载到Kibana。为此您可以运行安装命令(如这里所述),也可以在packetbeat.yml配置文件中配置仪表板加载。
# packetbeat setup --dashboards Loaded dashboards |
kibana效果展示如下
使用nginx访问,添加kibana-nginx.conf配置如下内容:
worker_processes 1; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 80; server_name localhost; auth_basic "Restricted Access"; auth_basic_user_file /usr/local/openresty/nginx/conf/htpasswd.users; location / { proxy_pass http://172.29.36.187:5601; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } } |
参考链接:
Packetbeat quick start: installation and configuration | Packetbeat Reference [8.15] | Elastic
Configure traffic capturing options | Packetbeat Reference [master] | Elastic
Q&A
启elasticsearch报错 elasticsearch 5.6.6版本
[2] bootstrap checks failed
[1]: max number of threads [1024] for user [elasticsearch] is too low, increase to at least [2048]
[2]: system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk
解决:
在elasticsearch.yml中配置bootstrap.system_call_filter为false,注意要在Memory下面:
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
编辑limits.conf 添加类似如下内容
vi /etc/security/limits.conf
添加如下内容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
对于第二条错误同意需要切换到root用户,进入limits.d目录下修改配置文件。
vi /etc/security/limits.d/90-nproc.conf
修改如下内容:
* soft nproc 1024
#修改为
* soft nproc 2048
第三条错误需要切换到root用户修改配置sysctl.conf
vi /etc/sysctl.conf
添加下面配置:
vm.max_map_count=655360
并执行命令:
sysctl -p重新启动elasticsearch,即可启动成功。