使用elk beats的packetbeat 來進行mysql的網絡抓包審計


由於之前使用插件類型的方式來進行了mysql的審計,一是有兩例mysql的實例崩潰,二是對性能影響比較大,故在尋求其他的解決方案。
后來發現elk beats項目,便拿來試了下,后上線了200個實例,運行了2個月,沒有出現問題,故和大家簡單分享一下,如需詳細了解的話,可以查看官方文檔。

packetbeat 支持多種協議的網絡抓包,可以將抓包結果發送到es存儲起來,非常方便。

 

性能測試:

24核 64G單機mysql sysbench測試:

查詢寫入性能影響約5%,無磁盤io影響,網絡流量相比原來上升20%,beat進程cpu占用單核40%-70%

缺點:

1.內容因為是網絡抓包故沒有賬號的信息 

2.數據庫庫表定位字段path會有信息丟失的情況,估計和使用的orm框架有關

 

官方地址:
beats項目:https://www.elastic.co/products/beats
packetbeat子項文檔:https://www.elastic.co/guide/en/beats/packetbeat/current/index.html

1.rpm安裝:
centos:

sudo yum install libpcap
curl -L -O https://artifacts.elastic.co/downloads/beats/packetbeat/packetbeat-5.5.1-x86_64.rpm
sudo rpm -vi packetbeat-5.5.1-x86_64.rpm

 

2.編輯配置文件:

vim /etc/packetbeat/packetbeat.yml

 

packetbeat.protocols.mysql:
ports: [3306,3307,3308,3309]
output.elasticsearch:
hosts: ["es地址:端口"]
index: "mysqlaudit-%{+yyyy.MM.dd}"
name: 1.1.1.1

注:
- index如果不設置,在es中的默認名稱是packetbeat-2017.08.16 這樣,若要設定自己需要名稱,需要改成 customer_name-%{+yyyy.MM.dd},這樣也能和默認一樣保持每天一個索引文件
- name話 不設置的話是機器的hostname,推薦設置成ip 這樣不同機器 127.0.0.1的抓包 也可以進行分析,在es里的對應字段是 beat.name


3.啟動packetbeat:
!!重要!!
啟動第一個beat前需要在es里load 對應的template。后面的beat啟動就不需要了:

curl -H 'Content-Type: application/json' -XPUT 'http://es地址:端口/_template/packetbeat' -d@/etc/packetbeat/packetbeat.template.json

!!如果忘記這一步,先到es里把當天的index刪除,再重啟啟動beat!!

!!如果自定義了index名稱,需要修改/etc/packetbeat/packetbeat.template.json 中最后一行的對應的名稱再post
啟動:

/etc/init.d/packetbeat start 或 systemctl start packetbeat

 

4.可選:導入dashboard
如果需要官方制作的dashboard圖,可以導入圖的模板:

/usr/share/packetbeat/scripts/import_dashboards -es es地址:端口 -i mysqlaudit-*

注:如果是自定義的index name 則要加上-i參數,否則圖用的默認index為packetbeat-*


5.打開kibana -> Management -> Index Pattern -> +Add New -> packetbeat/自定義名稱-* -> 勾選Index contains time-based events -> 選擇@timestamp -> Create

示意圖:

 

 

6.單條數據內容:

 

7.index 和 dashboard

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM