zabbix
http://www.ttlsa.com/zabbix/zabbix_server-conf-detail/
https://blog.csdn.net/zhs2014150551/article/details/48975931
https://segmentfault.com/a/1190000008942618
logstash
input
,常见得输入内容
1) file:从文件系统上的文件读取,与UNIX命令非常相似 tail -0F
2) syslog:在已知端口上侦听syslog消息进行解析
3) redis:使用redis通道和redis列表从redis服务器读取。Redis通常用作集中式Logstash安装中的“代理”,该安装将Logstash事件从远程Logstash“托运人”排队。
4) beats:处理 Beats发送的事件,beats包括filebeat、packetbeat、winlogbeat。
filter
,常见的过滤器
1) grok:解析并构造任意文本。Grok是目前Logstash中将非结构化日志数据解析为结构化和可查询内容的最佳方式。Logstash内置了120种模式,您很可能会找到满足您需求的模式!
2) mutate:对事件字段执行常规转换。您可以重命名,删除,替换和修改事件中的字段。
3) drop:完全删除事件,例如调试事件。
4) clone:制作事件的副本,可能添加或删除字段。
5) geoip:添加有关IP地址的地理位置的信息(也在Kibana中显示惊人的图表!)
output
输出内容
1) elasticsearch:将事件数据发送给Elasticsearch。如果您计划以高效,方便且易于查询的格式保存数据...... Elasticsearch是您的最佳选择
2) file:将事件数据写入磁盘上的文件。
3) graphite:将事件数据发送到graphite,这是一种用于存储和绘制指标的流行开源工具。http://graphite.readthedocs.io/en/latest/
4) statsd:将事件数据发送到statsd,这是一种“侦听统计信息,如计数器和定时器,通过UDP发送并将聚合发送到一个或多个可插入后端服务”的服务。如果您已经在使用statsd,这可能对您有用!
影响logstash性能因素如下:
logstash是一个pipeline,数据流从input进来,在filter进行正则解析,然后通过output传输给ES。
filebeat->logstash tcp连接
logstash->es tcp连接
logstash input
logstash filter
logstash output
logstash filter & logstash output ( 瓶颈)
升级logstash版本 1.7 -> 2.2
2.2版本之后的logstash优化了input,filter,output的线程模型。
增大 filter和output worker 数量 通过启动参数配置 -w 48 (等于cpu核数)
logstash正则解析极其消耗计算资源,而我们的业务要求大量的正则解析,因此filter是我们的瓶颈。
官方建议线程数设置大于核数,因为存在I/O等待。
考虑到我们当前节点同时部署了ES节点,ES对CPU要求性极高,因此设置为等于核数。
增大 woker 的 batch_size 150 -> 3000 通过启动参数配置 -b 3000
batch_size 参数决定 logstash 每次调用ES bulk index API时传输的数据量,考虑到我们节点机256G内存,应该增大内存消耗换取更好的性能。
增大logstash 堆内存 1G -> 16G
logstash是将输入存储在内存之中,worker数量 * batch_size = n * heap (n 代表正比例系数)
worker * batch_size / flush_size = ES bulk index api 调用次数
优化
在配置文件中可以通过配置pipeline.workers来调整filter和
output的线程数
网友的测评数据是两个点的logstah可以承受600+的连接数
pipeline.workers:
决定filter和output的线程数,官方建议大于CPU数,如果logstah节点是混用服务器,
建议等于或小于CPU数
pipeline.batch.size:
单个线程每次调用ES bulk index API时的事件数。
这些时间将被放到内存中。最好的设定值是不断地测试,测试,测试。
JVM_heap:内存堆大小,通过配置jvm_option来修改。
logstash的优化相关配置
实际output 时的线程数
默认配置 ---> pipeline.output.workers: 1
可优化为 ---> pipeline.output.workers: 不超过pipeline 线程数
每次发送的事件数
默认配置 ---> pipeline.batch.size: 125
可优化为 ---> pipeline.batch.size: 1000
发送延时
默认配置 ---> pipeline.batch.delay: 5
可优化为 ---> pipeline.batch.size: 10
总结
通过设置-w参数指定pipeline worker
数量,也可直接修改配置文件logstash.yml。这会提高filter和output的线程数
,如果需要的话,将其设置为cpu核心数的几倍是安全
的,线程在I/O上是空闲的。
默认每个输出在一个pipeline worker
线程上活动,可以在输出output
中设置workers设置,不要将该值设置大于pipeline worker
数。
还可以设置输出的batch_size
数,例如ES输出与batch size一致。
filter设置multiline
后,pipline worker会自动将为1,如果使用filebeat,建议在beat中就使用multiline,如果使用logstash作为shipper,建议在input 中设置multiline,不要在filter中设置multiline。
(3)Logstash中的JVM配置文件
Logstash是一个基于Java开发的程序,需要运行在JVM中,可以通过配置jvm.options
来针对JVM进行设定。比如内存的最大最小、垃圾清理机制
等等。JVM的内存分配不能太大不能太小,太大会拖慢操作系统。太小导致无法启动。默认如下:
-Xms256m #最小使用内存
-Xmx1g #最大使用内存
参考文档:
https://www.cnblogs.com/along21/p/8613115.html#auto_id_12
https://blog.csdn.net/weixin_34092455/article/details/91719799
https://www.cnblogs.com/along21/p/8613115.html
网友评论