ELK+Zabbix+TimesacleDB+Grafana 搭建(下)

网友投稿 1777 2022-05-29

vim /etc/zabbix/zabbix_proxy.conf

开启主动模式

ProxyMode=0

zabbix-server端IP

Server=10.206.230.146

zabbix-server端口

ServerPort=10051

填写本机的主机名称或者ip,在zabbix web添加保持一致

Hostname=10.217.37.188

#HostnameItem=10.217.37.188

proxy端监听端口,也就是proxy对server访问用的端口

ListenPort=10051

代理使用本地的数据库进行存储

DBHost=10.217.37.188

DBName=zabbix_proxy

DBUser=zabbix_proxy

DBPassword=xxxx

DBPort=3306

ProxyLocalBuffer数据保留的时间,小时为单位

ProxyLocalBuffer=12

ProxyOfflineBuffer连不上Server数据要保留多久,小时为单位

ProxyOfflineBuffer=1

预分配子进程数量。数量越多服务端吞吐能力越强,系统资源消耗越大,zabbix proxy的进程数server端拉取agent端的items

StartPollers=500

系统初始化时,预分配的使用ipmi协议获取主机硬件状态的进程数量。StartIPMIPollers=10

预处理程序启动数目

StartPreprocessors=3

对不可达主机拉取数据

StartPollersUnreachable=20

陷阱机制,即对于中途加入的主机主动发送的数据进行保存

StartTrappers=15

使用ICMP协议的ping对网络中主机进行在线状态检测

StartPingers=20

对网络中的主机主动扫描发现,对中途加入的主机进行上线。注意:主动发现很消耗带宽系统初始化时,预分配的自动发现主机的线程数量。若单台代理所管理机器超过500台,可以考虑加大此数值(仅适用于AGENT场景)

StartDiscoverers=50

分配多少共享内存用于存储配置信息,HOST,ITEM,TRIGGER数据,视监控主机数量和监控项调整,因为代理和数据库在一台设备上,数据库配置了6G,总内存8G

CacheSize=4G

数据库同步实例数将采集数据从CACHE同步到数据库线程数量,视数据库服务器I/O繁忙情况,和数据库写能力调整。数值越大,写能力越强。对数据库服务器I/O压力越大

StartDBSyncers=10

设置划分多少共享内存用于存储采集的历史数据,此数值越大,数据库读压力越小HistoryCacheSize=512M

历史数据索引缓存

HistoryIndexCacheSize=128M

与AGNET、SNMP设备和其它外部设备通信超时设置,单位为秒;若采集数据不完整或网络繁忙,或从管理页面发现客户端状态变化频繁,可以考虑加大此数值。

Timeout=30

定义主机不可达的超时时间

UnreachablePeriod=180

在主机不可用期间,定期检查主机的时间

UnavailableDelay=60

zabbix proxy从zabbix server取得配置数据的频率

ConfigFrequency=3600

代理将每N秒将收集的数据发送到服务器。 对于被动模式下的代理,该参数将被忽略

DataSenderFrequency=1

systemctl restart zabbix-proxy

vim /etc/zabbix/zabbix_agentd.conf

填写zabbix-proxy的IP

Server=10.217.37.188

ServerActive是指定Agentd收集的数据往哪里发送,发送到本机的代理

ServerActive=10.217.37.188

ListenPort=10050

Hostname=10.217.37.188

#HostnameItem=10.217.37.188

是否使用自定义脚本监控1是开启

UnsafeUserParameters=1

systemctl restart zabbix-agent.service

systemctl enable zabbix-agent.service

五. zabbix web配置

http://10.206.230.146/zabbix/

默认用户名 Admin  默认密码 zabbix

因为使用时序数据库进行了分区,数据库定期清理数据,关闭zabbix提供的

给代理服务器创建个组进行一些监控

Zabbix有自带的模板,把刚创建的组进行绑定,也可以自己定义

添加proxy

六.添加Zabbix监控

首先添加主机群组,为了日后主机更好的分类

主机群组—创建主机群组—填写名称

这里先介绍宏和正则表达式是因为我们后续创建模板的时候需要使用,进行过滤和引用

管理---一般---宏

添加了snmp的团体变量{$SNMP_COMMUNITY} 赋值读的团体

{$IF.UTIL.MAX}变量是用来带宽告警设置的阈值,我们这里配置的60,也就是接口带宽超过百分之60就告警

管理---一般---正则表达式

这里是过滤交换机的接口类型使用的,因为监控交换机接口会发现非常多,但是我只需要物理接口的.

配置---模板  创建名称和添加主机群组

这里展示的是模板单独的宏和调用全局的宏变量

下图是我们添加icmp的连通性 丢包率 延迟

ICMP丢包率添加

ICMP延迟添加,默认单位是秒,我们这里改成ms,更新时间改为30s,进程增加自动变量1000,这样我们在图形展示的时候就会看到ms为单位的抖动情况

触发器使用了zabbix自带的

因为网络里有太多的网络设备,我们没有必要对全部的接口进行监控,我们更关心的是网络设备之前互联的接口,对于数据中心的交换机,网络模型非常标准,我们可以根据接口名称过滤,或者通过lldp的方式进行过滤,但是园区网不标准,我的网络里认为所有的trunk口就是网络设备互联接口.下面的示例是对trunk口进行添加流量监控

这里非常重要的是键值,我定义了一个变量trunk,1.3.6.1.4.1.25506.8.35.5.1.3.1.1用来识别是否为trunk口,这个oid是个私有属性,我们后续要给zabbix加mib库

discovery[{#IFOPERSTATUS},1.3.6.1.2.1.2.2.1.8,{#IFADMINSTATUS},1.3.6.1.2.1.2.2.1.7,{#IFNAME},1.3.6.1.2.1.2.2.1.2,{#IFDESCR},1.3.6.1.2.1.2.2.1.2,{#IFTYPE},1.3.6.1.2.1.2.2.1.3,{#TRUNK},1.3.6.1.4.1.25506.8.35.5.1.3.1.1]

过滤器,我监控H3C物理接口

添加接口流量,键值的变量使用trunk,因为我只监控trunk口流量,oid使用默认即可,在新的应用集加上Liuliang这个名称,这是为了单独把接口流量独立成一个应用集,图形展示的时候方便。监控接口流量的oid必须用64位的,32位的超过4G会出现图像断层

到H3C官网下载mib库文件解压,里面有.txt文件

把文件导入到zabbix-server的cd /usr/share/snmp/mibs目录下

重启zabbix-server进程

systemctl restart zabbix-server

这个案例的动作没有自动加模板,因为目前笔者的模板做的并不是很好,所以省去着一步,笔者目前会根据不同的型号,不同的区域,不同的角色来手工批量加模板

一共两个方式:一共是使用公司的smtp,一个是需要自己搭建smtp,我们这里只介绍使用公司已有的.SMTP HELO一般是根域名,写成和SMTP服务器一样就行

我们这里使用一个第三方的工具expect结合shell使用

安装交互式工具

ELK+Zabbix+TimesacleDB+Grafana 搭建(下)

yum install expect

创建备份目录switchbackup 赋予权限

mkdir –p var/lib/switchbackup/

chmod 777 var/lib/switchbackup/

下面是shell脚本调用expect工具,进行配置备份

添加linux脚本的定时任务,每天夜里22点30分开始执行

cd /var/lib/switchbackup

根据实际情况填写

vim crontab-Backup-Switch.txt

#backup-Switch

30 22 * * * /var/lib/switchbackup/backup.sh

新创建的定时任务生效,查看定时任务,保证服务器重启后任务可以自动启动

crontab crontab-Backup-Switch.txt

crontab -l

systemctl start crond.service

systemctl enable crond.service

service crond status

linux登录一些设备报错,因为交换机是server,openssh版本太老了,Linux验证不进行支持了

老版本交换机开启sshv1

h3c交换机命令

ssh server compatible-ssh1x enable

修改linux client配置文件,支持sshv1

vim /etc/ssh/ssh_config

rm -rf ./root/.ssh/known_hosts

七.Grafana平台安装进行展示

wget https://dl.grafana.com/oss/release/grafana-6.2.1-1.x86_64.rpm

yum localinstall grafana-6.2.1-1.x86_64.rpm -y

systemctl enable grafana-server

systemctl start grafana-server

grafana-cli plugins install alexanderzobnin-zabbix-app

systemctl restart grafana-server

http://10.206.230.146:3000/login

默认用户名密码 admin admin  需要先进行修改

点击进行enable

增加数据源zabbix,Trends必须勾选读取历史数据可以加速

八.维护

yum -y install net-snmp-utils

snmpwalk -v 2c -c 团体 OID

失败查看日志

tail -f /var/log/zabbix/zabbix_server.log

tail -f /var/log/zabbix/zabbix_proxy.log

tail -f /var/log/zabbix/zabbix_agentd.log

修改配置文件

vim /etc/zabbix/zabbix_agentd.conf

systemctl restart zabbix-agentd.

vim /etc/zabbix/zabbix_server.conf

systemctl restart zabbix-server

vim /etc/zabbix/zabbix_proxy.conf

systemctl restart zabbix-proxy

ELK系统搭建

Elasticsearch 是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。详细可参考Elasticsearch权威指南

Kibana 也是一个开源和免费的工具,Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助汇总、分析和搜索重要数据日志。

Beats在这里是一个轻量级日志采集器,其实Beats家族有6个成员,早期的ELK架构中使用Logstash收集、解析日志,但是Logstash对内存、cpu、io等资源消耗比较高。

一.ELK集群安装

服务器使用4核16G内存500G硬盘Centos 7  ELK 7.3.0,这个版本有破解的白金会员

可以使用全功能的ELK.

ELK7.4.0版本logstash不支持netflow了,必须用filebeat,但是filebeat对asa的日志识别异常,官网提示产品bug

我们这次使用到的集群是两台设备,要先搞集群,之后每台node点都要破解x-pack,在主节点进行x-pack设置会自动同步到其他节点

关闭火墙并增加实体数为655360

vim /etc/sysctl.conf

SELINUX=disable

vm.max_map_count=655360

安装jave8  jdk1.8版本

yum install –y jdk

查看java进程

jps

安装elasticsearch kibana logstash 7.3.2到中文社区下载rpm包

https://elasticsearch.cn/download/

cd var/lib

mkdir elk

cd elk

rpm –hiv elasticsearch-7.3.2-x86_64.rpm

rpm –hiv kibana-7.3.2-x86_64.rpm

rpm –hiv logstash-7.3.2.rpm

rpm –hiv filebeat-7.3.2-x86_64.rpm

安装完成后进行两台elasticsearch配置文件修改,内容基本相同,设置参数如下:

vim /etc/elasticsearch/elasticsearch.yml

同一个集群的集群名称必须一致

cluster.name: ELK

集群成员的名称

node.name: ELK-1

配置是否可以竞选master设备

node.master: true

配置是否可以作为数据节点

node.data: true

配置数据存储路径

path.data: /var/lib/elasticsearch

配置日志存储路径

path.logs: /var/log/elasticsearch

配置监听IP为本机所有IP

network.host: 0.0.0.0

配置监听端口号

http.port: 9200

配置单播方式进行集群

discovery.zen.ping.unicast.hosts: ["10.143.202.79:9300", "10.174.221.227:9300"]

需要最少几台设备同意该设备为master节点

cluster.initial_master_nodes: ["10.143.202.79","10.174.221.227"]

配置允许跨域,当有多个集群需要互通的时候,允许跨域访问

http.cors.enabled: true

http.cors.allow-origin: "*"

控制集群在达到多少个节点之后才会开始数据恢复,通过这个设置可以避免集群自动相互发现的初期,shard分片不全的问题,假如es集群内一共有5个节点,就可以设置为5,那么这个集群必须有5个节点启动后才会开始数据分片,如果设置为3,就有可能另外两个节点没存储数据分片

gateway.recover_after_nodes: 2

这个设置使删除只限于特定名称指向的数据,而不允许通过指定 _all 或通配符来删除指定索引库

action.destructive_requires_name: true

因为要破解xpack,所以我们先关闭xpack安全功能

xpack.security.enabled: false

xpack.security.transport.ssl.enabled: false

启动elasticsearch

systemctl start elasticsearch

systemctl enable elasticsearch

验证启动成功

curl -X GET "10.143.202.79:9200"

curl -X GET "10.174.221.227:9200"

安装调试插件,在chrome扩展插件中直接拖拽安装

星号代表Master

二.ELK白金会员破解使用x-pack全功能

停止两台node的elasticsearch程序,分别开始破解x-pack插件,下面的操作完全一致

systemctl stop elasticsearch

找到x-pack-core-7.3.0.jar路径

/usr/share/elasticsearch/modules/x-pack-core/x-pack-core-7.3.0.jar

找个路径创建一个文件夹,我这里找的下面的路径,文件夹名字我起的xpack

/var/lib/elk/xpack

复制x-pack-core-7.3.0.jar到/var/lib/elk/xpack

cp x-pack-core-7.3.0.jar /var/lib/elk/xpack

在/var/lib/elk/xpack解压缩 x-pack并删除

jar -xvf x-pack-core-7.3.0.jar

rm -rf x-pack-core-7.3.0.jar

用已经破解好的文件,并覆盖到原文件

LicenseVerifier.class 路径在 /org/elasticsearch/license/LicenseVerifier.class

XPackBuild.class 路径在 /org/elasticsearch/xpack/core/XPackBuild.class

/var/lib/elk/xpack目录下重新打包x-pack

jar cvf x-pack-core-7.3.0.jar *

用新生成的x-pack覆盖源路径下的文件

原路径 /usr/share/elasticsearch/modules/x-pack-core/x-pack-core-7.3.0.jar

启动elasticsearch

systemctl start elasticsearch

在cd var/lib/elk/xpack/目录下上传破解后的license,并在当前目录进行导入,密码不用写

出现true就是破解成功

curl -XPUT -u elastic 'http://127.0.0.1:9200/_xpack/license' -H "Content-Type: application/json" -d @license.json

查看破解后的license

curl -XGET -u elastic:tWbWZc7NE3wYqS6DvSu4 http://127.0.0.1:9200/_license

三.ELK开启安全防护

使用SSL证书,使ES内部交互更加安全,在master节点生成证书,停止全部node

Systemctl stop elasticsearch

cd /usr/share/elasticsearch/

文件目录下执行,创建ca证书,第一个回车,第二个设置密码123456

bin/elasticsearch-certutil ca

文件目录下执行,创建客户端证书,第一个密码123456,第二个回车,第三个设置密码123456

bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12

执行下面命令并输入第一步输入的密码123456

bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password

执行下面命令并输入第一步输入的密码123456

bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password

将生成的elastic-certificates.p12和elastic-stack-ca.p12放在master节点的/etc/elasticsearch目录下

把master节点的/etc/elasticsearch目录下的elastic-certificates.p12和elastic-stack-ca.p12和elasticsearch.keystore传递到其他node的/etc/elasticsearch下

所有node的elasticsearch.yml修改,最后重启

xpack.security.enabled: true

xpack.security.transport.ssl.enabled: true

xpack.security.transport.ssl.verification_mode: certificate

xpack.security.transport.ssl.keystore.path: /etc/elasticsearch/elastic-certificates.p12

xpack.security.transport.ssl.truststore.path: /etc/elasticsearch/elastic-certificates.p12

systemctl restart elasticsearch

所有node完成集群后,在master上配置用户密码,我设置的都一样123456

cd /usr/share/elasticsearch/

./bin/elasticsearch-setup-passwords interactive

修改kibana配置文件

vim /etc/kibana/kibana.yml

server.port: 5601

server.host: "0.0.0.0"

elasticsearch.hosts: ["http://10.143.202.79:9200"]

elasticsearch.username: "elastic"

elasticsearch.password: "123456"

systemctl start kibana

systemctl enable kibana

systemctl status kibana

netstat -nltp|grep 5601

四.   ELK syslog分析

因为要收集syslog,开启udp514监控并创建elasticsearch索引

配置里我们对h3c cisco junier的日志进行格式标准化和分级

创建/etc/logstash/syslog/conf.d目录,修改pipelines.yml配置

cd /etc/logstash

修改logstash启动账户为root,默认账户是logstash,因为udp514用默认账户无法开启

vim /etc/systemd/system/logstash.service

User=root

Group=root

配置本地服务器的日志吐到logstash上测试

vim etc/rsyslog.conf

*.* @@10.143.202.79:514

systemctl restart rsyslog

配置后台运行

nohup /usr/share/logstash/bin/logstash --path.settings /etc/logstash/ -f /etc/logstash/conf.d/syslog-network.conf &

验证logstash的syslog的索引是否在elasticsearch生效

curl

http://10.143.202.79:9200/_cat/indices

删除索引的命令,不用操作

curl -XDELETE 'http://10.143.202.79:9200/syslog-2020.03.15'

五.ELK sflow大数据分析

我们使用sflowtool进行sflow转换转成netflow,之后用logstash进行调用

/var/lib/elk

mkdir sflowtool

cd sflowtool

yum whatprovides autoconf automake

yum install automake

yum install git

git clone https://github.com/sflow/sflowtool

cd sflowtool/

./boot.sh

./configure

make

sudo make install

cd /var/lib/elk/sflowtool/sflowtool/src

nohup ./sflowtool -p 6543 -c 10.143.202.79 -d 6542 -S &

tcpdump  -i lo port 6542

设置java的内存,ElastiFlow利用了许多Logstash插件中可用的缓存和排队功能

cd etc/logstash/

vim jvm.options

-Xms4g

-Xmx4g

安装logstash插件

/usr/share/logstash/bin/logstash-plugin install logstash-codec-sflow

/usr/share/logstash/bin/logstash-plugin install logstash-codec-netflow

/usr/share/logstash/bin/logstash-plugin install logstash-input-udp

/usr/share/logstash/bin/logstash-plugin install logstash-input-tcp

/usr/share/logstash/bin/logstash-plugin install logstash-filter-dns

创建/etc/logstash/netflow/conf.d目录,修改pipelines.yml配置

cd /etc/logstash

下面基于ELK6.7.2是第三方插件SFLOW的安装方法

下载elastiflow3.4.2版本和ELK的6.7.2对应

https://github.com/robcowart/elastiflow

unzip elastiflow-master.zip

cd /etc/logstash/elastiflow-master/logstash

cp -a elastiflow/ /etc/logstash/

配置环境变量,没用的选项都注释掉,保留全局配置和netflow配置,注意修改监听端口号

cp -a /etc/logstash/elastiflow-master/logstash.service.d /etc/systemd/system

cd /etc/systemd/system/logstash.service.d

vim elastiflow.conf

请记住,要使更改生效,必须发出systemctl daemon-reload命令

启动日志判断是否正常

cd /var/log/logstash/

六.ELK Grafana监控ES sflow

如果grafana要访问ES需要在elasticsearch.yml增加允许.

http.cors.enabled: true

http.cors.allow-origin: "*"

当grafana需要读取大量数据的时候,elasticsearch有个聚合查询限制默认是10000,超过1wElasticsearch就会挂死,在elasticsearch.yml增加聚合桶,(这个参数对后面监控有作用)

search.max_buckets: 50000

在grafana添加数据源

添加筛选项,过滤sflow的交换机

附件: ELK+Zabbix+TimesacleDB+Grafana.docx 4.53MB 下载次数:7次

Zabbix 数据库

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Wazuh-开源安全平台
下一篇:《TCP/IP详解卷3:TCP事务协议、HTTP、NNTP和UNIX域协议》
相关文章